:root{--bg: #f5f7fa;--panel: #ffffff;--line: #e5e7eb;--text: #1a1a2e;--muted: #6b7280;--primary: #2563eb;--danger: #dc2626;--ok: #16a34a;--warn: #d97706;--radius: 12px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.65 -apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.topnav{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;height:56px;padding:0 20px;background:var(--panel);border-bottom:1px solid var(--line)}.topnav .brand{font-weight:600;white-space:nowrap}.topnav .links{display:flex;gap:4px;flex:1;overflow-x:auto}.topnav .links a{padding:6px 12px;border-radius:999px;color:var(--muted);white-space:nowrap}.topnav .links a:hover{background:#f3f4f6;text-decoration:none}.topnav .links a.router-link-active{background:#2563eb1f;color:var(--primary)}.topnav .right{display:flex;align-items:center;gap:10px}.card-head .head-links{display:flex;align-items:center;gap:14px}.topnav .admin-link{font-size:13px;color:var(--muted)}.container{max-width:720px;margin:24px auto 48px;padding:0 16px}.container.wide{max-width:1400px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:16px}.card>h2{font-size:18px;margin-bottom:4px}.card .desc{color:var(--muted);font-size:13px;margin:0 0 18px}.card+.card{margin-top:16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}label.field{display:block;margin-bottom:14px}label.field>span{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}input{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:inherit;color:var(--text);background:#fff}input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1f}button{padding:10px 18px;border:none;border-radius:10px;background:var(--primary);color:#fff;font-size:14px;font-family:inherit;cursor:pointer}button:hover{filter:brightness(1.06)}button:disabled{opacity:.5;cursor:not-allowed;filter:none}button.ghost{background:#fff;color:var(--primary);border:1px solid var(--primary)}button.ghost:hover{background:#2563eb14}.actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:6px}.msg{font-size:13px;margin:12px 0 0;min-height:20px}.msg.ok{color:var(--ok)}.msg.err{color:var(--danger)}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;background:var(--muted);color:#fff}.badge.ok{background:var(--ok)}.badge.warn{background:var(--warn)}.code{display:inline-block;padding:8px 16px;border-radius:10px;background:#f3f4f6;border:1px dashed var(--line);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:26px;letter-spacing:6px;color:var(--text)}.tip{font-size:12px;color:var(--muted);margin-top:12px;line-height:1.7}.profile-line{display:flex;align-items:center;gap:14px;margin-bottom:16px}.profile-line .avatar{width:64px;height:64px;border-radius:50%;object-fit:cover;background:#f0f2f5;border:1px solid var(--line)}.profile-line .kv{font-size:13px;color:var(--muted)}.profile-line .kv b{color:var(--text);font-weight:600}.frame{width:100%;height:calc(100vh - 168px);min-height:480px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}@media(max-width:560px){.container{margin:16px auto 32px}.card{padding:18px}}
