.shell[data-v-bf675c4b]{display:flex;min-height:100vh}.sidebar[data-v-bf675c4b]{width:var(--sidebar-w);flex-shrink:0;background:var(--sidebar-bg);color:var(--sidebar-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand[data-v-bf675c4b]{display:flex;align-items:center;gap:11px;padding:18px 18px 16px;border-bottom:1px solid var(--sidebar-line)}.brand-mark[data-v-bf675c4b]{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;display:grid;place-items:center;font-family:var(--font-mono);font-weight:700;font-size:18px;box-shadow:0 6px 16px color-mix(in srgb,var(--brand) 34%,transparent)}.brand-name[data-v-bf675c4b]{font-family:var(--font-serif);font-weight:700;font-size:21px;letter-spacing:-.01em;display:inline-flex;align-items:baseline;gap:6px}.brand-name small[data-v-bf675c4b]{font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--brand-2)}.nav[data-v-bf675c4b]{flex:1;padding:12px 10px;overflow-y:auto}.nav-item[data-v-bf675c4b]{display:flex;align-items:center;gap:11px;padding:11px 12px;border-radius:var(--radius-sm);color:var(--sidebar-mute);text-decoration:none;font-size:14px;font-weight:500;margin-bottom:2px;transition:background var(--transition),color var(--transition)}.nav-item[data-v-bf675c4b]:hover{background:color-mix(in srgb,#ffffff 6%,transparent);color:var(--sidebar-ink)}.nav-item.router-link-active[data-v-bf675c4b]{background:var(--sidebar-active-bg);color:var(--sidebar-active-ink);font-weight:600}.nav-item .ic[data-v-bf675c4b]{width:18px;height:18px;flex-shrink:0;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}.sidebar-foot[data-v-bf675c4b]{padding:14px 18px;border-top:1px solid var(--sidebar-line)}.who-name[data-v-bf675c4b]{font-size:14px;font-weight:600;color:var(--sidebar-ink)}.who-sub[data-v-bf675c4b]{font-family:var(--font-mono);font-size:11px;color:var(--sidebar-mute);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main[data-v-bf675c4b]{flex:1;min-width:0;display:flex;flex-direction:column}.topbar[data-v-bf675c4b]{position:sticky;top:0;z-index:30;height:var(--topbar-h);display:flex;align-items:center;gap:10px;padding:0 18px;background:var(--surface);border-bottom:1px solid var(--line)}@supports (backdrop-filter: blur(12px)){.topbar[data-v-bf675c4b]{background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px)}}.topbar h1[data-v-bf675c4b]{font-size:17px;margin:0;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .spacer[data-v-bf675c4b]{flex:1}.icon-btn[data-v-bf675c4b],.hamburger[data-v-bf675c4b]{flex-shrink:0;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;padding:0;background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:none;color:var(--ink-mute);transition:color var(--transition),background var(--transition),border-color var(--transition)}.icon-btn[data-v-bf675c4b]:hover,.hamburger[data-v-bf675c4b]:hover{color:var(--brand-ink);background:var(--surface-2);border-color:var(--brand);transform:none;box-shadow:none}.icon-btn .ic[data-v-bf675c4b],.hamburger .ic[data-v-bf675c4b]{width:19px;height:19px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}.hamburger[data-v-bf675c4b]{display:none}.content[data-v-bf675c4b]{flex:1;padding:22px;max-width:1280px;width:100%}.drawer-mask[data-v-bf675c4b]{display:none}@media(max-width:860px){.hamburger[data-v-bf675c4b]{display:inline-flex}.sidebar[data-v-bf675c4b]{position:fixed;z-index:60;left:0;top:0;transform:translate(-100%);transition:transform var(--transition);box-shadow:var(--shadow-md)}.shell.drawer-open .sidebar[data-v-bf675c4b]{transform:translate(0)}.shell.drawer-open .drawer-mask[data-v-bf675c4b]{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#140c046b}.content[data-v-bf675c4b]{padding:16px}}@media(max-width:480px){.content[data-v-bf675c4b]{padding:12px}.topbar h1[data-v-bf675c4b]{font-size:16px}}:root{--font-serif: "Source Han Serif SC", "Noto Serif SC", "Songti SC", Georgia, "Times New Roman", serif;--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "SF Mono", "JetBrains Mono", "IBM Plex Mono", Menlo, Consolas, monospace;--radius-xs: 6px;--radius-sm: 8px;--radius: 10px;--radius-lg: 14px;--sidebar-w: 232px;--topbar-h: 58px;--transition: .18s cubic-bezier(.4, 0, .2, 1)}:root,[data-theme=warm]{--bg: #fdfbf3;--bg-soft: #f8f1e3;--surface: #ffffff;--surface-2: #fcf6ea;--ink: #3a2410;--ink-soft: #6b5740;--ink-mute: #7a6c50;--ink-faint: #9c8e75;--line: #ece0cb;--brand: #e8731c;--brand-2: #f0913f;--brand-soft: #fdebd8;--brand-ink: #b1530a;--gold: #a88030;--accent: #c2410c;--danger: #d4351c;--danger-bg: #fdeceb;--danger-ink: #a82a16;--ok: #1f8a4c;--ok-bg: #e8f5ec;--warn: #b06a00;--warn-bg: #fdf0db;--sidebar-bg: #2a1c0e;--sidebar-ink: #f0e3cf;--sidebar-mute: #b69c78;--sidebar-line: #4a3620;--sidebar-active-bg: color-mix(in srgb, var(--brand) 22%, transparent);--sidebar-active-ink: #ffd9b0;--hero-grad: radial-gradient(120% 90% at 80% -10%, #fde3c5 0%, #fdfbf3 55%);--cta-bg: var(--brand);--cta-ink: #ffffff;--shadow-sm: 0 1px 2px rgba(58, 36, 16, .05), 0 2px 8px rgba(58, 36, 16, .05);--shadow-md: 0 8px 30px rgba(58, 36, 16, .08)}[data-theme=ink]{--bg: #0e0f12;--bg-soft: #15171c;--surface: #181b21;--surface-2: #1f232b;--ink: #f4f2ec;--ink-soft: #b8b6ae;--ink-mute: #93918a;--ink-faint: #7c7a72;--line: #2a2e37;--brand: #f5a524;--brand-2: #fbbf24;--brand-soft: #2c2410;--brand-ink: #f7b733;--gold: #d4a843;--accent: #f97316;--danger: #f4524d;--danger-bg: #2a1716;--danger-ink: #ff7a72;--ok: #34d399;--ok-bg: #11261c;--warn: #f5b942;--warn-bg: #2a2210;--sidebar-bg: #14161b;--sidebar-ink: #e9e6dd;--sidebar-mute: #8a8980;--sidebar-line: #272b33;--sidebar-active-bg: color-mix(in srgb, var(--brand) 18%, transparent);--sidebar-active-ink: #fbbf24;--hero-grad: radial-gradient(120% 90% at 80% -10%, #23211a 0%, #0e0f12 55%);--cta-bg: var(--brand);--cta-ink: #1a1206;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 10px rgba(0, 0, 0, .35);--shadow-md: 0 10px 36px rgba(0, 0, 0, .55)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:1.6;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}h1,h2,h3,h4{font-family:var(--font-serif);color:var(--ink);font-weight:600;line-height:1.3}#app{min-height:100vh;background:var(--bg)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px;margin-bottom:16px}.card h3{font-size:17px;letter-spacing:-.01em;margin:0 0 14px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}.page-head h2{margin:0;font-size:23px;letter-spacing:-.01em}.page-head .sub{color:var(--ink-mute);font-size:13px;margin-top:4px}label.field{display:block;margin-bottom:14px}label.field>span{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:6px}input,select,textarea{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--radius-sm);font-size:15px;font-family:var(--font-sans);background:var(--surface);color:var(--ink);outline:none;transition:border-color var(--transition),box-shadow var(--transition)}textarea{line-height:1.6;resize:vertical}input::placeholder,textarea::placeholder{color:var(--ink-faint)}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 16%,transparent)}button{cursor:pointer;border:1.5px solid transparent;border-radius:999px;padding:11px 22px;font-size:15px;font-weight:600;font-family:var(--font-sans);line-height:1;background:var(--cta-bg);color:var(--cta-ink);box-shadow:0 6px 18px color-mix(in srgb,var(--brand) 28%,transparent),0 1px 4px #00000014;transition:transform var(--transition),box-shadow var(--transition),background var(--transition),color var(--transition),border-color var(--transition)}button:hover{transform:translateY(-2px);box-shadow:0 10px 26px color-mix(in srgb,var(--brand) 38%,transparent),0 2px 6px #0000001f}button:active{transform:translateY(0)}button:disabled{background:var(--surface-2);color:var(--ink-faint);border-color:var(--line);box-shadow:none;cursor:not-allowed;transform:none}button.ghost{background:transparent;color:var(--ink);border-color:var(--line);box-shadow:none}button.ghost:hover{color:var(--brand-ink);border-color:var(--brand);background:var(--surface-2);box-shadow:none}button.ghost:disabled{color:var(--ink-faint);border-color:var(--line);background:transparent}button.sm{padding:7px 14px;font-size:13px}button.danger{background:var(--danger);color:#fff;box-shadow:0 6px 18px color-mix(in srgb,var(--danger) 28%,transparent)}button.danger:hover{box-shadow:0 10px 26px color-mix(in srgb,var(--danger) 38%,transparent)}input[type=checkbox],input[type=radio]{accent-color:var(--brand)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-family:var(--font-mono);font-size:12px;font-weight:600;white-space:nowrap;letter-spacing:.01em}.badge.gray{background:var(--surface-2);color:var(--ink-mute);border:1px solid var(--line)}.badge.blue{background:var(--brand-soft);color:var(--brand-ink)}.badge.orange{background:var(--warn-bg);color:var(--warn)}.badge.green{background:var(--ok-bg);color:var(--ok)}.badge.red{background:var(--danger-bg);color:var(--danger)}.alert{padding:11px 14px;border-radius:var(--radius-sm);font-size:13.5px;line-height:1.5;margin-bottom:14px;border:1px solid transparent}.alert.warn{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.alert.error{background:var(--danger-bg);color:var(--danger-ink);border-color:color-mix(in srgb,var(--danger) 28%,transparent)}.alert.info{background:var(--brand-soft);color:var(--brand-ink);border-color:color-mix(in srgb,var(--brand) 26%,transparent)}.muted{color:var(--ink-mute);font-size:13px}.state{text-align:center;color:var(--ink-mute);padding:52px 16px;font-size:14px}.state h3{color:var(--ink);margin:0 0 6px}.spinner{width:26px;height:26px;margin:0 auto 12px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.row-flex{display:flex;align-items:center;gap:10px}.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}.grow{flex:1;min-width:0}.wrap{flex-wrap:wrap}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:14px;margin-bottom:16px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px 18px;position:relative;overflow:hidden}.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--brand)}.stat .k{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-mute)}.stat .v{font-family:var(--font-mono);font-size:30px;font-weight:700;color:var(--ink);margin-top:4px;line-height:1.1}.stat.accent:before{background:var(--danger)}.stat.accent .v{color:var(--danger)}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius);border:1px solid var(--line)}table.data{border-collapse:collapse;width:100%;font-size:13.5px;background:var(--surface)}table.data th,table.data td{border-bottom:1px solid var(--line);padding:11px 14px;text-align:left;white-space:nowrap;color:var(--ink);vertical-align:middle}table.data thead th{background:var(--surface-2);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mute);font-weight:600;position:sticky;top:0}table.data tbody tr:hover{background:var(--surface-2)}table.data tbody tr:last-child td{border-bottom:none}table.data td.num{font-family:var(--font-mono);text-align:right}table.data td.actions{white-space:nowrap}table.data td.actions button{margin-left:6px}table.data td.actions button:first-child{margin-left:0}a.link{color:var(--brand-ink);text-decoration:none;font-weight:600;transition:color var(--transition)}a.link:hover{color:var(--accent)}.pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:14px;font-size:13px;color:var(--ink-mute)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#140c0475;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:560px;padding:22px}.modal.wide{max-width:720px}.modal h3{margin:0 0 16px;font-size:19px}.modal .modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.toast{position:fixed;left:50%;bottom:36px;transform:translate(-50%);background:color-mix(in srgb,var(--ink) 92%,transparent);color:var(--bg);padding:11px 20px;border-radius:999px;font-size:14px;font-weight:500;z-index:9999;max-width:80%;text-align:center;box-shadow:var(--shadow-md)}
