.toast-host[data-v-a5aba7c5]{position:fixed;top:70px;right:20px;z-index:3000;display:flex;flex-direction:column;gap:10px;align-items:flex-end}.toast-item[data-v-a5aba7c5]{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:10px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow-lg);font-size:13px;color:var(--text);max-width:360px}.toast-success[data-v-a5aba7c5]{color:var(--success)}.toast-error[data-v-a5aba7c5]{color:var(--danger)}.toast-warning[data-v-a5aba7c5]{color:var(--warning)}.toast-item span[data-v-a5aba7c5]{color:var(--text)}.toast-enter-active[data-v-a5aba7c5],.toast-leave-active[data-v-a5aba7c5]{transition:all .25s ease}.toast-enter-from[data-v-a5aba7c5],.toast-leave-to[data-v-a5aba7c5]{opacity:0;transform:translate(16px)}.confirm-body[data-v-0476e4af]{display:flex;gap:14px;align-items:flex-start}.confirm-icon[data-v-0476e4af]{flex:0 0 auto;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--info-soft);color:var(--info)}.confirm-icon.danger[data-v-0476e4af]{background:var(--danger-soft);color:var(--danger)}.confirm-title[data-v-0476e4af]{font-size:15px;font-weight:600;margin-bottom:6px}.confirm-message[data-v-0476e4af]{font-size:13px;color:var(--text-secondary);line-height:1.6}:root{--brand: #0066FF;--brand-2: #0052D9;--brand-3: #3385FF;--brand-red: #0066FF;--brand-red-soft: #E6F0FF;--brand-soft: #E6F0FF;--nav-bg: #FFFFFF;--nav-selected: #E6F0FF;--bg: #F5F6F7;--surface: #FFFFFF;--border: #E8E8E8;--border-strong: #D6D8DC;--text: #333333;--text-secondary: #666666;--text-muted: #999999;--success: #52C41A;--success-soft: #F0F9EB;--warning: #FAAD14;--warning-soft: #FFF7E6;--danger: #FF4D4F;--danger-soft: #FFF1F0;--info: #0066FF;--info-soft: #E6F0FF;--radius: 4px;--radius-lg: 8px;--radius-pill: 999px;--shadow-drop: 0 2px 8px rgba(0, 0, 0, .06);--shadow-modal: 0 6px 16px rgba(0, 0, 0, .08);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow: 0 2px 8px rgba(0, 0, 0, .06);--shadow-lg: 0 6px 16px rgba(0, 0, 0, .08);--font-sans: "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--font-serif: Georgia, "Times New Roman", "Songti SC", "SimSun", serif}*{box-sizing:border-box}html,body,#app{height:100%;margin:0;padding:0}body{font-family:var(--font-sans);font-size:14px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-weight:600;margin:0}a{color:inherit;text-decoration:none}ul,ol{list-style:none;margin:0;padding:0}.brand-serif{font-family:var(--font-serif);letter-spacing:.02em}.page{padding:24px}.page-title{font-size:20px;font-weight:700;line-height:1.3}.page-desc{color:var(--text-secondary);font-size:13px;margin-top:4px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.page-head-actions{display:flex;align-items:center;gap:8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.card-pad{padding:16px 24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:hover{border-color:var(--brand);color:var(--brand)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn-sm{height:28px;padding:0 10px;font-size:12px}.btn-lg{height:40px;padding:0 22px;font-size:14px}.btn-primary{border:1px solid var(--brand);color:#fff;background:var(--brand)}.btn-primary:hover{background:var(--brand-2);border-color:var(--brand-2);color:#fff}.btn-primary:disabled{background:var(--brand)}.btn-danger{border-color:var(--danger);color:var(--danger);background:#fff}.btn-danger:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.btn-danger-solid{border:none;color:#fff;background:var(--danger)}.btn-danger-solid:hover{background:#d9363e}.btn-text{border:none;background:transparent;color:var(--text-secondary);padding:0 8px}.btn-text:hover{color:var(--brand);background:var(--brand-soft)}.btn-text.danger{color:var(--danger)}.btn-text.danger:hover{color:var(--danger);background:var(--danger-soft)}.btn-outline-red{border-color:var(--brand);color:var(--brand)}.btn-outline-red:hover{background:var(--brand-soft)}.form-item{margin-bottom:16px}.form-label{display:block;font-size:13px;color:var(--text);margin-bottom:6px;font-weight:500}.form-label .req{color:var(--brand-red);margin-left:2px}.form-hint{font-size:12px;color:var(--text-muted);margin-top:4px}.input,.select,.textarea{width:100%;height:36px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:13px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-red);box-shadow:0 0 0 3px var(--brand-red-soft)}.textarea{height:auto;min-height:84px;padding:9px 12px;resize:vertical}.input[disabled],.select[disabled]{background:#f3f4f6;color:var(--text-muted);cursor:not-allowed}.input.invalid,.select.invalid{border-color:var(--danger)}.form-error{color:var(--danger);font-size:12px;margin-top:4px}.input-group{display:flex;align-items:center}.input-group .input-affix{height:36px;display:inline-flex;align-items:center;padding:0 12px;border:1px solid var(--border-strong);border-right:none;border-radius:var(--radius) 0 0 var(--radius);background:#f7f8fa;color:var(--text-secondary)}.input-group .input{border-radius:0 var(--radius) var(--radius) 0}.filter-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:14px}.filter-bar .input,.filter-bar .select{width:auto;min-width:150px}.filter-bar .spacer{flex:1}.table-wrap{overflow:auto;border-radius:var(--radius-lg)}.table{width:100%;border-collapse:collapse;background:var(--surface);font-size:13px}.table th{text-align:left;height:48px;padding:0 16px;color:var(--text-secondary);font-weight:500;background:#f7f8fa;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:1}.table td{height:48px;padding:0 16px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.table tbody tr:hover{background:#fafbfc}.table tbody tr:last-child td{border-bottom:none}.table .num{font-variant-numeric:tabular-nums}.table .cell-actions{display:flex;align-items:center;gap:2px;white-space:nowrap}.table .cell-strong{font-weight:600}.table .cell-sub{color:var(--text-muted);font-size:12px}.pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg);border-top:none}.pagination .total{color:var(--text-secondary);font-size:13px}.pagination .pages{display:flex;align-items:center;gap:4px}.pagination .page-btn{min-width:28px;height:28px;padding:0 6px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface);color:var(--text);font-size:12px;cursor:pointer}.pagination .page-btn:hover{border-color:var(--brand-red);color:var(--brand-red)}.pagination .page-btn.active{background:var(--brand-red);border-color:var(--brand-red);color:#fff}.pagination .page-btn:disabled{opacity:.4;cursor:not-allowed}.pagination .page-size{height:28px;border:1px solid var(--border-strong);border-radius:6px;padding:0 6px;font-size:12px}.tag{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 10px;border-radius:var(--radius);font-size:12px;font-weight:500;line-height:1;white-space:nowrap}.tag-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.tag-red{background:var(--brand-red-soft);color:var(--brand-red)}.tag-green{background:var(--success-soft);color:var(--success)}.tag-orange{background:var(--warning-soft);color:var(--warning)}.tag-blue{background:var(--info-soft);color:var(--info)}.tag-gray{background:#eef0f4;color:var(--text-secondary)}.tag-red-solid{background:var(--brand-red);color:#fff}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#10182873;display:flex;align-items:center;justify-content:center;padding:24px}.modal{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);width:560px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;animation:modal-in .18s ease}.modal-lg{width:720px}.modal-sm{width:400px}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-title{font-size:15px;font-weight:600}.modal-close{border:none;background:transparent;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:6px;display:flex}.modal-close:hover{background:#f3f4f6;color:var(--text)}.modal-body{padding:20px;overflow:auto}.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}.state-box{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 20px;color:var(--text-muted);text-align:center}.state-box .state-icon{width:52px;height:52px;margin-bottom:12px;color:var(--border-strong)}.state-box .state-title{font-size:14px;color:var(--text-secondary);margin-bottom:4px}.state-box .state-desc{font-size:12px;color:var(--text-muted)}.state-box .state-action{margin-top:16px}.loading-box{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--text-muted);gap:8px}.spinner{width:18px;height:18px;border:2px solid var(--border-strong);border-top-color:var(--brand-red);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.admin-shell{display:flex;flex-direction:column;height:100vh}.topnav{height:56px;flex:0 0 56px;display:flex;align-items:center;background:var(--nav-bg);color:var(--text);padding:0 16px;border-bottom:1px solid var(--border);z-index:100;gap:8px}.topnav-brand{display:flex;align-items:center;gap:10px;margin-right:24px;flex-shrink:0}.topnav-brand .brand-text{display:flex;flex-direction:column;line-height:1.15}.topnav-brand .brand-zh{font-size:15px;font-weight:700;letter-spacing:.02em;color:var(--text)}.topnav-brand .brand-en{font-family:var(--font-serif);font-size:11px;color:var(--text-muted)}.topnav-nav{display:flex;align-items:center;gap:4px;flex:1;overflow-x:auto;scrollbar-width:none}.topnav-nav::-webkit-scrollbar{display:none}.topnav-item{height:36px;padding:0 18px;border-radius:var(--radius-pill);display:flex;align-items:center;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s;position:relative;flex-shrink:0}.topnav-item:hover{color:var(--brand);background:var(--brand-soft)}.topnav-item.active{color:var(--brand);background:var(--brand-soft);font-weight:600}.topnav-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.notify-btn{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);cursor:pointer;position:relative;transition:all .15s;border:none;background:transparent}.notify-btn:hover{color:var(--brand);background:var(--brand-soft)}.notify-btn .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 2px var(--nav-bg)}.notify-wrap{position:relative}.notify-dot{position:absolute;top:0;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:#fff;font-size:9.5px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--nav-bg)}.notify-drop{position:absolute;right:0;top:42px;width:360px;max-height:460px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);z-index:60;display:flex;flex-direction:column;overflow:hidden}.notify-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600;color:var(--text);flex:none}.notify-actions{display:flex;gap:10px}.notify-actions button{border:none;background:transparent;color:var(--text-muted);font-size:11px;cursor:pointer}.notify-actions button:hover{color:var(--brand)}.notify-list{overflow-y:auto;padding:6px}.notify-empty{padding:24px 12px;text-align:center;color:var(--text-muted);font-size:12px}.notify-item{display:flex;gap:8px;padding:9px;border-radius:6px;cursor:pointer;position:relative}.notify-item:hover{background:#f7f8fa}.notify-item.unread{background:var(--brand-soft)}.notify-type{flex:none;height:18px;padding:0 6px;border-radius:4px;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);font-size:9.5px;line-height:16px}.notify-main{flex:1;min-width:0}.notify-title{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notify-sub{margin-top:2px;font-size:11px;line-height:1.5;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notify-time{margin-top:3px;font-size:10px;color:var(--text-muted)}.notify-unread{width:6px;height:6px;border-radius:50%;background:var(--danger);flex:none;margin-top:4px}.notify-detail{border-top:1px solid var(--border);padding:10px 14px;overflow-y:auto;font-size:12px;color:var(--text-secondary)}.notify-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;color:var(--text)}.notify-detail-head button{border:none;background:transparent;color:var(--text-muted);font-size:11px;cursor:pointer}.notify-detail p{margin:0 0 8px;line-height:1.7;white-space:pre-wrap}.notify-detail img,.notify-detail video{max-width:100%;border-radius:6px;display:block}.topnav-user{display:flex;align-items:center;gap:8px;padding:5px 12px;border-radius:var(--radius-pill);cursor:pointer;color:var(--text);font-size:13px}.topnav-user:hover{background:#f3f4f6}.topnav-user .avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:600}.admin-body{display:flex;flex:1;min-height:0}.sidebar{flex:0 0 200px;width:200px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:flex-basis .2s ease,width .2s ease;overflow:visible}.sidebar.collapsed{flex-basis:56px;width:56px}.sidebar-scroll{flex:1;overflow-y:auto;overflow-x:visible;padding:10px 8px 20px}.sidebar-toggle{flex:0 0 44px;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:color .15s}.sidebar-toggle:hover{color:var(--brand)}.sidebar-toggle .lbl{margin-left:8px;font-size:12px}.sidebar.collapsed .sidebar-toggle .lbl{display:none}.side-group{margin-bottom:6px;position:relative}.side-group-title{display:flex;align-items:center;gap:6px;padding:10px 12px 6px;font-size:12px;color:var(--text-muted);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;-webkit-user-select:none;user-select:none}.side-group-title:hover{color:var(--text-secondary)}.side-group-title .grp-arrow{transition:transform .2s ease;flex:0 0 auto;display:inline-flex}.side-group.collapsed-grp .grp-arrow{transform:rotate(-90deg)}.side-group.collapsed-grp .side-item{display:none}.sidebar.collapsed .side-group-title{justify-content:center;padding:10px 0 6px}.sidebar.collapsed .side-group-title .grp-arrow{display:none}.side-item{display:flex;align-items:center;gap:10px;height:38px;padding:0 12px;margin-bottom:2px;border-radius:var(--radius);color:var(--text);font-size:13px;cursor:pointer;white-space:nowrap;position:relative;transition:all .12s ease}.side-item .side-icon{flex:0 0 auto;color:var(--text-muted);display:flex}.side-item:hover{background:#f3f4f6}.side-item.active{background:var(--brand-soft);color:var(--brand);font-weight:600}.side-item.active .side-icon{color:var(--brand)}.sidebar.collapsed .side-item{justify-content:center;padding:0}.sidebar.collapsed .side-item .side-label{display:none}.collapsed .side-item-flyout{position:absolute;left:calc(100% + 6px);top:0;z-index:120;min-width:160px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-drop);padding:6px;display:flex;flex-direction:column;gap:2px}.main{flex:1;min-width:0;overflow-y:auto}.main-inner{min-width:960px}@media (max-width: 720px){.page{padding:16px}}.money{font-variant-numeric:tabular-nums;font-weight:600}.money:before{content:"¥";font-weight:500;margin-right:1px}.muted{color:var(--text-muted)}.secondary{color:var(--text-secondary)}.mono{font-variant-numeric:tabular-nums}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow-sm)}.stat-card .stat-label{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.stat-card .stat-value{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.stat-card .stat-extra{font-size:12px;color:var(--text-muted);margin-top:6px}.stat-card.accent .stat-value{color:var(--brand-red)}.mock-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-pill);background:var(--warning-soft);color:var(--warning);font-size:11px;font-weight:500}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.progress-track{height:8px;border-radius:var(--radius-pill);background:#eef0f4;overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-pill);background:var(--brand);transition:width .2s ease}.tree-node{padding:4px 0}.tree-row{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--text)}.tree-row:hover{background:#f3f4f6}.tree-row.active{background:var(--brand-red-soft);color:var(--brand-red);font-weight:500}.tree-row .tree-count{margin-left:auto;color:var(--text-muted);font-size:12px}.tabs{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--border);margin-bottom:14px;flex-wrap:wrap}.tab{padding:10px 16px;font-size:13px;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--brand-red);font-weight:600;border-bottom-color:var(--brand-red)}.tab .tab-count{font-size:12px;color:var(--text-muted);margin-left:4px}@media (max-width: 1200px){.stat-cards{grid-template-columns:repeat(2,1fr)}}.view-switch{display:inline-flex;align-items:center;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden;background:#fff;flex:none}.view-switch button{height:30px;padding:0 12px;border:none;background:transparent;color:var(--text-muted);font-size:12px;transition:.15s}.view-switch button+button{border-left:1px solid var(--border)}.view-switch button:hover:not(.on){background:var(--brand-soft);color:var(--brand)}.view-switch button.on{background:var(--brand);color:#fff;font-weight:600}.thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:14px;padding:16px}.thumb-card{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;display:flex;flex-direction:column;transition:.15s;min-width:0}.thumb-card:hover{box-shadow:0 6px 18px #1018281a;border-color:var(--brand-soft)}.thumb-media{position:relative;aspect-ratio:1/1;background:#f5f6f8;display:flex;align-items:center;justify-content:center;overflow:hidden;color:var(--text-muted);font-size:12px}.thumb-media img{width:100%;height:100%;object-fit:cover;display:block}.thumb-media .tag{position:absolute;top:8px;left:8px}.thumb-body{padding:10px 12px;display:flex;flex-direction:column;gap:4px;min-width:0}.thumb-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thumb-meta{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thumb-actions{display:flex;flex-wrap:wrap;margin-top:4px;padding-top:6px;border-top:1px dashed var(--border)}
