.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg-main);padding:20px}.login-card{width:100%;max-width:400px;background:var(--bg-card);border-radius:var(--radius-lg);padding:48px 40px}.login-header{text-align:center;margin-bottom:36px}.login-title{font-size:28px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.login-subtitle{font-size:14px;color:var(--primary);font-weight:500;letter-spacing:2px}.login-form{display:flex;flex-direction:column;gap:20px}.form-field{display:flex;flex-direction:column;gap:8px}.form-field label{font-size:14px;font-weight:500;color:var(--text-secondary)}.form-field input{height:48px;padding:0 16px;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:15px;transition:border-color .2s}.form-field input:focus{border-color:var(--primary)}.form-field input::placeholder{color:var(--text-muted)}.login-error{font-size:13px;color:var(--error);background:var(--error-bg);padding:10px 14px;border-radius:var(--radius-sm)}.login-btn{height:48px;background:var(--primary);color:#fff;font-size:16px;font-weight:700;border-radius:var(--radius-md);border:none;transition:background .2s;margin-top:4px}.login-btn:hover:not(:disabled){background:var(--primary-hover)}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-icp{position:fixed;bottom:20px;text-align:center;width:100%}.login-icp a{font-size:13px;color:var(--text-muted);text-decoration:none;transition:color .2s}.login-icp a:hover{color:var(--text-secondary)}.dashboard-page{padding-top:var(--topbar-height);min-height:100vh}.hero-banner{background:var(--hero-gradient);padding:60px 0;text-align:center}.hero-content{max-width:var(--content-width);margin:0 auto;padding:0 24px}.hero-title{font-size:36px;font-weight:700;color:#fff;margin-bottom:24px}.hero-cta{display:inline-block;padding:12px 40px;background:#fff;color:var(--bg-main);font-size:16px;font-weight:700;border-radius:var(--radius-xl);transition:transform .2s}.hero-cta:hover{transform:scale(1.05)}.stats-section{max-width:var(--content-width);margin:0 auto;padding:32px 24px 60px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.section-title-row{display:flex;align-items:center;gap:10px}.section-indicator{width:4px;height:24px;background:var(--primary);border-radius:3px}.section-title-row h2{font-size:24px;font-weight:700}.filter-row{display:flex;align-items:center;gap:12px}.date-range{display:flex;align-items:center;gap:8px}.date-range input[type=date]{height:40px;padding:0 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px}.date-range input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.6)}.date-sep{color:var(--text-secondary);font-size:14px}.query-btn{height:40px;padding:0 20px;background:var(--primary);color:#fff;font-size:14px;font-weight:700;border-radius:var(--radius-md);transition:background .2s}.query-btn:hover{background:var(--primary-hover)}.loading-text{text-align:center;color:var(--text-secondary);padding:40px 0}.stat-cards{display:flex;gap:16px;margin-bottom:32px}.stat-card{flex:1;background:var(--bg-card);border-radius:var(--radius-lg);padding:28px 24px;min-width:0}.stat-card-label{font-size:14px;color:var(--text-secondary);margin-bottom:12px}.stat-card-value{font-size:32px;font-weight:700;color:var(--text-primary)}.stat-card--purple .stat-card-value{color:var(--primary)}.chart-area{background:var(--bg-card);border-radius:var(--radius-lg);padding:24px;margin-bottom:32px}.chart-title{font-size:16px;font-weight:700;margin-bottom:20px;color:var(--text-primary)}.bar-chart{display:flex;align-items:flex-end;gap:12px;height:200px;padding-top:20px}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.bar-value{font-size:11px;color:var(--text-secondary);white-space:nowrap}.bar-track{width:100%;max-width:40px;height:140px;background:#a06fef14;border-radius:6px 6px 0 0;display:flex;align-items:flex-end;overflow:hidden}.bar-fill{width:100%;background:var(--primary-gradient);border-radius:6px 6px 0 0;transition:height .4s ease;min-height:2px}.bar-label{font-size:12px;color:var(--text-secondary)}.bar-count{font-size:11px;color:var(--text-muted)}.table-section{margin-top:8px}.table-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.tab-group{display:flex;gap:8px}.tab-btn{padding:10px 15px;font-size:16px;font-weight:350;color:var(--text-secondary);background:transparent;border:1px solid var(--border-light);border-radius:var(--radius-md);transition:all .2s}.tab-btn:hover{color:var(--text-primary);border-color:var(--primary)}.tab-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:700}.data-table-wrap{border:2px solid var(--bg-card);border-radius:var(--radius-lg);overflow:hidden}.data-table{width:100%;border-collapse:collapse;font-size:16px}.data-table thead{background:var(--bg-card)}.data-table th{text-align:left;padding:15px 20px;font-weight:400;color:var(--text-secondary);text-transform:uppercase;font-size:14px}.data-table td{padding:14px 20px;border-bottom:1px solid var(--bg-card);font-size:15px}.data-table tbody tr:hover{background:#1c1c214d}.empty-row{text-align:center;color:var(--text-muted);padding:32px 20px!important}.cost-cell{color:var(--primary);font-weight:500}.type-badge{display:inline-block;padding:4px 9px;background:var(--balance-yellow-bg);color:var(--balance-yellow);font-size:14px;border-radius:var(--radius-sm)}.vt-wrapper{width:100%;overflow-x:auto}.vt-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.vt-table thead th{position:sticky;top:0;z-index:2;padding:11px 14px;background:var(--bg-main);color:var(--text-secondary);font-weight:500;font-size:12px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border);letter-spacing:.02em}.vt-row{cursor:pointer;transition:background .12s}.vt-row:hover{background:var(--bg-card-hover)}.vt-table tbody td{padding:16px 14px;border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text-primary)}.vt-id{font-family:Courier New,monospace;font-size:12px;color:var(--text-secondary);background:var(--bg-button-secondary);padding:2px 6px;border-radius:4px}.vt-preview{width:96px;height:60px;border-radius:6px;overflow:hidden;background:var(--bg-button-secondary)}.vt-preview video,.vt-preview img{width:100%;height:100%;object-fit:cover;display:block}.vt-preview-empty{width:100%;height:100%}.vt-prompt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.6;font-size:13px;color:var(--text-primary);max-width:360px}.vt-model{font-size:12px;color:var(--text-secondary)}.vt-status{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:600;color:#fff;white-space:nowrap}.vt-status.completed{background:#34d399d9}.vt-status.processing{background:#a06fefd9;animation:vt-pulse 2s infinite}@keyframes vt-pulse{0%,to{opacity:1}50%{opacity:.65}}.vt-status.pending{background:#a06fef8c}.vt-status.queued{background:#fb923cd9}.vt-status.failed{background:#ef4444d9}.vt-status.cancelled{background:#6e6e83bf}.vt-project-tag{display:inline-block;padding:2px 8px;background:#a06fef1f;border:1px solid rgba(160,111,239,.25);border-radius:4px;font-size:12px;color:var(--primary-light);white-space:nowrap;max-width:110px;overflow:hidden;text-overflow:ellipsis}.vt-username{font-size:13px;color:var(--text-secondary)}.vt-datetime{display:flex;flex-direction:column;gap:1px;font-size:12px;color:var(--text-secondary)}.vt-time{color:var(--text-muted)}.vt-tokens,.vt-cost{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.vt-error{color:var(--error);font-size:12px;display:block;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vt-muted{color:var(--text-muted)}.vt-empty-row{text-align:center;padding:60px 0!important;color:var(--text-muted);font-size:14px}.vt-actions{display:flex;align-items:center;gap:5px;flex-wrap:nowrap}.vt-act-btn{display:inline-flex;align-items:center;padding:6px 12px;background:var(--bg-button-secondary);border:none;border-radius:6px;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background .12s,color .12s}.vt-act-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.vt-act-btn.edit{background:#a06fef26;color:var(--primary-light)}.vt-act-btn.edit:hover{background:#a06fef40}.vt-act-btn.download{background:#a06fef26;color:var(--primary-light)}.vt-act-btn.download:hover{background:#a06fef40}.vt-act-btn.cancel{color:var(--warning)}.vt-act-btn.cancel:hover{background:var(--warning-bg)}.vt-act-btn.delete{color:var(--error)}.vt-act-btn.delete:hover{background:var(--error-bg)}.detail-modal{width:680px;max-height:85vh}.detail-title-row{display:flex;align-items:center;gap:12px}.detail-body{overflow-y:auto;padding:0 24px 16px;display:flex;flex-direction:column;gap:20px}.detail-preview{width:100%;border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-main);aspect-ratio:16 / 9}.detail-video,.detail-thumb{width:100%;height:100%;object-fit:contain}.detail-placeholder{width:100%;height:100%;background:var(--bg-button-secondary)}.detail-info{display:flex;flex-direction:column;gap:10px}.info-row{display:flex;align-items:flex-start;gap:16px}.info-label{min-width:80px;font-size:14px;color:var(--text-secondary);flex-shrink:0}.info-value{font-size:14px;color:var(--text-primary);word-break:break-all}.info-value.cost{color:var(--primary);font-weight:600}.info-value.error{color:var(--error)}pre.error-detail{margin:0;padding:8px 12px;background:var(--bg-secondary, #1a1a2e);border-radius:6px;font-size:12px;line-height:1.5;color:var(--error);white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.detail-prompt-section{display:flex;flex-direction:column;gap:8px}.detail-prompt-text{font-size:14px;line-height:1.7;color:var(--text-secondary);background:var(--bg-main);padding:14px;border-radius:var(--radius-md);max-height:150px;overflow-y:auto;white-space:pre-wrap}.detail-actions{display:flex;gap:10px;padding:16px 24px;border-top:1px solid var(--border);flex-wrap:wrap}.detail-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;border-radius:var(--radius-md);font-size:14px;font-weight:500;transition:all .2s;text-decoration:none;border:none;cursor:pointer}.detail-btn.secondary{background:var(--bg-button-secondary);color:var(--text-primary)}.detail-btn.secondary:hover{background:var(--bg-card-hover)}.detail-btn.primary{background:var(--primary);color:#fff}.detail-btn.primary:hover{background:var(--primary-hover)}.detail-btn.cancel{background:transparent;color:var(--error);border:1px solid var(--error)}.detail-btn.cancel:hover{background:var(--error-bg)}.media-area{min-height:80px;position:relative;border-radius:var(--radius-lg);border:2px solid transparent;transition:border-color .2s,background .2s}.media-area-dragover{border-color:var(--primary);background:#6366f10f}.media-drop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#6366f114;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;z-index:10;pointer-events:none}.media-drop-hint{color:var(--primary);font-size:13px;font-weight:500}.media-grid{display:flex;flex-wrap:wrap;gap:8px}.media-thumb{width:66px;height:66px;border-radius:var(--radius-lg);position:relative;overflow:hidden;cursor:pointer}.thumb-img{width:100%;height:100%;object-fit:cover;border-radius:var(--radius-lg);display:block}.thumb-asset-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:28px;background:var(--bg-card-hover);border-radius:var(--radius-lg);color:var(--text-muted)}.thumb-video{width:100%;height:100%;position:relative;border-radius:var(--radius-lg);overflow:hidden}.thumb-video-el{width:100%;height:100%;object-fit:cover;display:block}.thumb-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:18px;text-shadow:0 1px 4px rgba(0,0,0,.6);pointer-events:none}.thumb-audio{width:100%;height:100%;background:var(--primary-gradient);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.thumb-audio-icon{font-size:18px;color:#fff}.thumb-audio-label{font-size:11px;color:#fff;text-align:center}.media-replace{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#0009;color:#fff;font-size:12px;border-radius:50%;display:none;align-items:center;justify-content:center;border:none;cursor:pointer;z-index:2}.media-thumb:hover .media-replace{display:flex}.media-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;background:#0009;color:#fff;font-size:12px;border-radius:50%;display:none;align-items:center;justify-content:center;border:none;cursor:pointer;z-index:2}.media-thumb:hover .media-remove{display:flex}.media-label{position:absolute;bottom:0;left:0;right:0;padding:2px 0;background:#000000a6;color:#fff;font-size:10px;text-align:center;pointer-events:none}.media-add{width:66px;height:66px;background:var(--bg-card);border:1px dashed var(--border-light);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s,border-color .2s}.media-add:hover{background:var(--bg-card-hover);border-color:var(--primary)}.media-add-icon{font-size:24px;color:var(--text-secondary)}.preview-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:1000;display:flex;align-items:center;justify-content:center}.preview-modal{position:relative;max-width:90vw;max-height:90vh;display:flex;align-items:center;justify-content:center}.preview-close{position:absolute;top:-32px;right:-8px;width:28px;height:28px;background:#00000080;color:#fff;font-size:16px;border:none;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}.preview-image{max-width:90vw;max-height:85vh;border-radius:8px;object-fit:contain}.preview-video{max-width:90vw;max-height:85vh;border-radius:8px}.preview-audio-wrap{background:#27272d;border-radius:12px;padding:32px 40px;display:flex;flex-direction:column;align-items:center;gap:12px;min-width:320px}.preview-audio-icon{font-size:40px;color:var(--primary)}.preview-audio-name{font-size:14px;color:var(--text-secondary);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-audio-wrap audio{width:100%}.char-trigger{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:var(--bg-button-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.char-trigger:hover{background:var(--bg-card-hover);border-color:var(--primary);color:var(--primary-light)}.char-trigger.active{background:#6c5ce71f;border-color:var(--primary);color:var(--primary-light)}.char-trigger-icon{font-size:14px}.char-trigger-arrow{font-size:10px;opacity:.6}.char-side-panel{width:240px;height:100vh;background:var(--bg-card);display:flex;flex-direction:column;border-right:1px solid var(--border);box-shadow:-2px 0 12px #0000004d;margin-right:-240px;transition:margin-right .2s ease;will-change:margin-right;overflow:hidden;flex-shrink:0}.char-side-panel.open{margin-right:0}.char-side-header{display:flex;align-items:center;justify-content:space-between;padding:20px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.char-side-title{font-size:14px;font-weight:600;color:var(--text-primary);white-space:nowrap}.char-side-close{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:var(--bg-button-secondary);border:none;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:12px;cursor:pointer;flex-shrink:0}.char-side-close:hover{background:var(--bg-card-hover);color:var(--text-primary)}.char-side-filter{padding:8px 12px 0;flex-shrink:0}.char-group-select{width:100%;padding:6px 10px;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:12px;outline:none;cursor:pointer;box-sizing:border-box}.char-group-select:focus{border-color:var(--primary)}.char-group-select option{background:var(--bg-card)}.char-side-search{padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.char-search-input{width:100%;padding:6px 10px;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:12px;outline:none;box-sizing:border-box}.char-search-input::placeholder{color:var(--text-muted)}.char-search-input:focus{border-color:var(--primary)}.char-side-body{flex:1;overflow-y:auto;padding:12px}.char-side-empty{padding:24px 0;text-align:center;color:var(--text-muted);font-size:12px;white-space:nowrap}.char-side-grid{display:flex;flex-direction:column;gap:8px}.char-card{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,background .15s}.char-card:hover{border-color:var(--primary);background:var(--bg-card-hover)}.char-thumb{width:40px;height:40px;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0}.char-name{font-size:12px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.prompt-editor-wrap{position:relative;width:100%}.prompt-editable{width:100%;min-height:160px;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:inherit;font-size:14px;line-height:1.6;padding:14px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;max-height:35vh;overflow-y:auto;outline:none;transition:border-color .15s;cursor:text}.prompt-editable:focus{border-color:var(--primary)}.prompt-editable:empty:before{content:attr(data-placeholder);color:var(--text-muted);pointer-events:none}.prompt-mention{color:#a78bfa;font-weight:700;-webkit-user-select:all;user-select:all}.prompt-mention-tags{display:flex;flex-wrap:wrap;gap:6px;padding:6px 4px 0;max-height:58px;overflow-y:auto}.prompt-mention-tag{background:#a78bfa26;color:#a78bfa;font-size:12px;font-weight:600;padding:2px 8px;border-radius:4px}.prompt-mention-menu{position:absolute;left:14px;bottom:calc(100% - 4px);z-index:10;background:#27272d;border:1px solid #3a3a44;border-radius:8px;padding:4px 0;box-shadow:0 6px 20px #0006;min-width:120px;max-height:200px;overflow-y:auto}.prompt-mention-item{display:block;width:100%;padding:8px 14px;text-align:left;background:transparent;border:none;color:#a78bfa;font-size:13px;font-weight:600;cursor:pointer;transition:background .1s}.prompt-mention-item:hover,.prompt-mention-item.active{background:#33333a}.ctm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:flex-end;z-index:200}.ctm-panel{width:480px;height:100vh;background:var(--bg-card);display:flex;flex-direction:column;box-shadow:-4px 0 24px #00000080}.ctm-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border);flex-shrink:0}.ctm-title{font-size:16px;font-weight:600;color:var(--text-primary)}.ctm-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-button-secondary);border:none;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:14px;cursor:pointer;transition:background .15s}.ctm-close:hover{background:var(--bg-card-hover);color:var(--text-primary)}.ctm-body{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:14px}.ctm-body>*{flex-shrink:0}.ctm-model-tag{display:inline-flex;align-items:center;padding:6px 14px;background:var(--bg-main);border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--primary-light);align-self:flex-start}.ctm-prompt{width:100%;min-height:160px;padding:14px;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;line-height:1.6;resize:vertical;transition:border-color .15s}.ctm-prompt:focus{border-color:var(--primary)}.ctm-prompt::placeholder{color:var(--text-muted)}.ctm-field{display:flex;flex-direction:column;gap:6px}.ctm-label{font-size:13px;color:var(--text-secondary);font-weight:500}.ctm-required{color:var(--error);margin-left:2px}.ctm-project-row{display:flex;gap:8px}.ctm-select{flex:1;height:36px;padding:0 10px;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;outline:none;cursor:pointer;transition:border-color .15s}.ctm-select:focus{border-color:var(--primary)}.ctm-select option{background:var(--bg-card)}.ctm-select-empty{color:var(--text-muted)}.ctm-new-project-btn{height:36px;padding:0 12px;background:var(--bg-button-secondary);border:none;border-radius:var(--radius-md);color:var(--primary-light);font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s}.ctm-new-project-btn:hover{background:var(--bg-card-hover)}.ctm-new-project-form{display:flex;gap:8px;margin-top:2px}.ctm-input{flex:1;height:34px;padding:0 10px;background:var(--bg-main);border:1px solid var(--primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:13px;outline:none}.ctm-confirm-btn{height:34px;padding:0 14px;background:var(--primary);border:none;border-radius:var(--radius-sm);color:#fff;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.ctm-confirm-btn:hover:not(:disabled){background:var(--primary-hover)}.ctm-confirm-btn:disabled{opacity:.5;cursor:not-allowed}.ctm-field-error{font-size:12px;color:var(--error)}.ctm-params-inline{display:flex;flex-direction:column;gap:16px}.ctm-section{display:flex;flex-direction:column;gap:8px}.ctm-section-label{font-size:13px;color:var(--text-secondary);font-weight:500}.ctm-ref-modes{display:flex;gap:8px}.ctm-ref-btn{flex:1;padding:8px 0;text-align:center;font-size:13px;color:var(--text-secondary);background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.ctm-ref-btn:hover{border-color:var(--primary);color:var(--text-primary)}.ctm-ref-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.ctm-ratio-grid{display:flex;flex-wrap:wrap;gap:6px}.ctm-ratio-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;width:calc((100% - 18px)/4);background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s}.ctm-ratio-btn:hover{border-color:var(--primary);color:var(--text-primary)}.ctm-ratio-btn.active{background:#6c5ce726;border-color:var(--primary);color:#fff}.ctm-slider-row{display:flex;align-items:center;gap:12px}.ctm-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:var(--border-light);border-radius:2px;outline:none}.ctm-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--primary);cursor:pointer}.ctm-slider-val{min-width:44px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-primary);text-align:center;background:var(--bg-main)}.ctm-res-tabs{display:flex;background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.ctm-res-tab{flex:1;padding:8px 0;text-align:center;font-size:13px;color:var(--text-secondary);background:transparent;border:none;cursor:pointer;transition:all .15s}.ctm-res-tab.active{background:var(--primary);color:#fff;border-radius:var(--radius-sm)}.ctm-toggles{display:flex;flex-direction:column;gap:12px}.ctm-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-size:13px;color:var(--text-primary)}.ctm-toggle input{display:none}.ctm-toggle-switch{position:relative;width:36px;height:20px;background:var(--border);border-radius:10px;transition:background .2s;flex-shrink:0}.ctm-toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.ctm-toggle input:checked+.ctm-toggle-switch{background:var(--primary)}.ctm-toggle input:checked+.ctm-toggle-switch:after{transform:translate(16px)}.ctm-error{font-size:13px;color:var(--error);background:var(--error-bg);padding:8px 12px;border-radius:var(--radius-sm)}.ctm-hint{font-size:12px;color:var(--text-tertiary);margin-top:4px}.ctm-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--border);flex-shrink:0}.ctm-cancel-btn{padding:10px 20px;background:var(--bg-button-secondary);border:none;border-radius:var(--radius-md);color:var(--text-secondary);font-size:14px;cursor:pointer;transition:background .15s}.ctm-cancel-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.ctm-submit-btn{padding:10px 24px;background:var(--primary);border:none;border-radius:var(--radius-md);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}.ctm-submit-btn:hover:not(:disabled){background:var(--primary-hover)}.ctm-submit-btn:disabled{opacity:.5;cursor:not-allowed}.vs-page{padding-top:var(--topbar-height);height:100vh;display:flex;flex-direction:column;overflow:hidden}.vs-toolbar{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg-main)}.vs-toolbar-left{display:flex;align-items:center;gap:14px}.vs-page-title{font-size:18px;font-weight:600;color:var(--text-primary)}.vs-concurrent-badge{display:inline-flex;align-items:center;padding:3px 10px;background:#a06fef26;border-radius:20px;font-size:12px;color:var(--primary-light)}.vs-toolbar-right{display:flex;align-items:center;gap:10px}.vs-retry-banner{display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 28px;background:#faad141f;border-bottom:1px solid rgba(250,173,20,.25);flex-shrink:0;font-size:13px;color:#d48806}.vs-retry-btn{padding:4px 14px;background:#faad14;color:#fff;border:none;border-radius:var(--radius-md);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s}.vs-retry-btn:hover:not(:disabled){background:#d48806}.vs-retry-btn:disabled{opacity:.6;cursor:not-allowed}.vs-filters{display:flex;align-items:center;gap:10px;padding:10px 28px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg-main);flex-wrap:wrap}.vs-filter-select{height:34px;padding:0 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;cursor:pointer;outline:none;transition:border-color .15s}.vs-filter-select:hover,.vs-filter-select:focus{border-color:var(--primary)}.vs-filter-select option{background:var(--bg-card)}.vs-date-range{display:flex;align-items:center;gap:6px}.vs-date-input{height:34px;padding:0 10px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:13px;outline:none;transition:border-color .15s;color-scheme:dark}.vs-date-input:hover,.vs-date-input:focus{border-color:var(--primary)}.vs-date-sep{color:var(--text-muted);font-size:13px}.vs-total-count{margin-left:auto;font-size:13px;color:var(--text-secondary)}.vs-create-btn{height:36px;padding:0 18px;background:var(--primary);border:none;border-radius:var(--radius-md);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;white-space:nowrap}.vs-create-btn:hover{background:var(--primary-hover)}.vs-table-area{flex:1;overflow-y:auto;padding:0 28px 28px}.vs-loading{display:flex;align-items:center;justify-content:center;height:200px;color:var(--text-secondary);font-size:14px}.vs-loading-more{text-align:center;padding:16px 0;color:var(--text-muted);font-size:13px}.vs-no-more{text-align:center;padding:16px 0;color:var(--text-muted);font-size:12px}vt-*/ctm-* 基础样式 ========== */ .vs-secondary-btn{height:36px;padding:0 18px;background:var(--bg-button-secondary);border:1px solid var(--border-light);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}.vs-secondary-btn:hover{background:var(--bg-card-hover);border-color:var(--primary);color:var(--primary-light)}.ca-search-input{width:180px!important;min-width:180px!important}.ca-search-btn{height:34px;padding:0 16px;background:var(--primary);border:none;border-radius:var(--radius-md);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.ca-search-btn:hover{background:var(--primary-hover)}.ca-thumb{width:56px;height:56px;cursor:pointer;transition:opacity .2s}.ca-thumb:hover{opacity:.8}.vt-prompt-text{font-size:13px;color:var(--text-primary)}.ca-st-pending{background:#fb923cd9!important}.ca-st-submitting{background:#a06fefd9!important;animation:vt-pulse 2s infinite}.ca-st-approved{background:#34d399d9!important}.ca-st-rejected{background:#ef4444d9!important}.ca-pagination{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 0;font-size:14px;color:var(--text-secondary)}.ca-pagination button{padding:6px 14px;font-size:13px;background:var(--bg-button-secondary);color:var(--text-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .2s}.ca-pagination button:disabled{opacity:.4;cursor:not-allowed}.ca-pagination button:hover:not(:disabled){background:var(--bg-card-hover)}.ca-detail-img{width:100%;border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-main);margin-bottom:20px}.ca-detail-img img{width:100%;display:block;object-fit:contain;max-height:360px}.ca-detail-info{display:flex;flex-direction:column;gap:10px}.ca-upload-hint{font-size:12px;color:var(--text-secondary);margin-bottom:12px;line-height:1.6}.ca-file-list{display:flex;flex-direction:column;gap:10px}.ca-file-item{display:flex;align-items:center;gap:10px;padding:8px;background:var(--bg-elevated);border-radius:var(--radius-md)}.ca-file-thumb{width:48px;height:48px;border-radius:6px;overflow:hidden;flex-shrink:0;background:var(--bg-button-secondary)}.ca-file-thumb img{width:100%;height:100%;object-fit:cover;display:block}.ca-file-name{flex:1;height:34px}.ca-file-status{font-size:12px;color:var(--primary);white-space:nowrap}.ca-file-error{font-size:12px;color:var(--error);white-space:nowrap}.ca-file-remove{width:28px;height:28px;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:14px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;transition:all .2s;flex-shrink:0}.ca-file-remove:hover{background:var(--error-bg);color:var(--error)}.ca-file-add{width:48px;height:48px;border:2px dashed var(--border);border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);font-size:24px;transition:all .2s}.ca-file-add:hover{border-color:var(--primary);color:var(--primary)}.ca-edit-preview{width:120px;height:120px;border:2px dashed var(--border);border-radius:var(--radius-md);overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:13px;transition:all .2s}.ca-edit-preview:hover{border-color:var(--primary)}.ca-edit-preview img{width:100%;height:100%;object-fit:cover}.ca-preview-overlay{cursor:zoom-out}.ca-preview-full{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:var(--radius-lg);box-shadow:0 8px 32px #00000080}.topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-height);background:#0a0a0feb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border);z-index:100}.topbar-inner{max-width:var(--content-width);margin:0 auto;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.topbar-left{display:flex;align-items:center;gap:24px}.topbar-logo{height:28px;width:auto;object-fit:contain}.topbar-nav{display:flex;gap:4px}.nav-link{padding:8px 16px;border-radius:var(--radius-md);font-size:15px;font-weight:500;color:var(--text-secondary);transition:all .2s}.nav-link:hover,.nav-link.active{color:var(--text-primary);background:var(--bg-card)}.topbar-right{display:flex;align-items:center;gap:16px}.balance-btn{display:flex;align-items:center;gap:8px;padding:6px 14px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);transition:all .2s}.balance-btn:hover{background:var(--bg-card);border-color:var(--primary)}.balance-label{font-size:13px;color:var(--text-secondary)}.balance-value{font-size:15px;font-weight:700;color:var(--balance-yellow)}.balance-btn.insufficient .balance-value{color:var(--error)}.balance-warning{font-size:12px;color:var(--error);font-weight:500;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.topbar-consumed{font-size:14px;color:var(--text-secondary)}.topbar-user{font-size:14px;color:var(--primary);font-weight:500}.logout-btn{padding:6px 14px;font-size:13px;color:var(--text-secondary);background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);transition:all .2s}.logout-btn:hover{color:var(--text-primary);border-color:var(--text-secondary)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200}.modal-card{background:var(--bg-card);border-radius:var(--radius-lg);max-height:80vh;overflow:hidden;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.modal-header h3{font-size:18px;font-weight:700}.modal-close{width:32px;height:32px;background:transparent;color:var(--text-secondary);font-size:18px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:all .2s}.modal-close:hover{background:var(--bg-button-secondary);color:var(--text-primary)}.logs-modal{width:720px}.logs-info{display:flex;gap:24px;padding:14px 24px;font-size:14px;color:var(--text-secondary);border-bottom:1px solid var(--border)}.logs-table-wrap{overflow-y:auto;max-height:50vh;padding:0 24px 16px}.logs-table{width:100%;border-collapse:collapse;font-size:14px}.logs-table th{text-align:left;padding:12px 8px;font-weight:500;color:var(--text-secondary);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg-card)}.logs-table td{padding:10px 8px;border-bottom:1px solid rgba(28,28,33,.5)}.logs-empty{text-align:center;color:var(--text-muted);padding:32px 0!important}.log-type{font-size:12px;padding:2px 8px;border-radius:var(--radius-sm)}.log-type.consume{background:var(--balance-yellow-bg);color:var(--balance-yellow)}.log-type.recharge{background:var(--success-bg);color:var(--success)}.amount-negative{color:var(--balance-yellow)}.amount-positive{color:var(--success)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--primary: #A06FEF;--primary-hover: #8B5CD6;--primary-light: #C7A5FF;--primary-gradient: linear-gradient(180deg, #C7A5FF 0%, #A06FEF 100%);--hero-gradient: linear-gradient(135deg, #200D42 0%, #4F21A1 50%, #A46EDB 100%);--balance-yellow: #FDB600;--balance-yellow-bg: rgba(253, 182, 0, .1);--success: #34d399;--success-bg: rgba(52, 211, 153, .12);--warning: #fb923c;--warning-bg: rgba(251, 146, 60, .12);--error: #ef4444;--error-bg: rgba(239, 68, 68, .12);--bg-main: #0A0A0F;--bg-card: #1C1C21;--bg-card-hover: #25252B;--bg-elevated: #141414;--bg-input: #1C1C21;--bg-button-secondary: #33333A;--text-primary: #FFFFFF;--text-secondary: #6E6E83;--text-muted: #6E6E83;--border: #1C1C21;--border-light: #6E6E83;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 35px;--font-sans: "Source Han Sans CN", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--content-width: 1220px;--topbar-height: 56px}html,body{height:100%;overflow-x:hidden}body{font-family:var(--font-sans);background:var(--bg-main);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;font-family:inherit}input,textarea,select{font-family:inherit;outline:none}.page-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--text-secondary);font-size:16px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-button-secondary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.toast-container{position:fixed;top:36px;left:50%;transform:translate(-50%);z-index:99999;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast-item{padding:10px 24px;border-radius:8px;background:#000000bf;color:#fff;font-size:14px;line-height:1.5;white-space:nowrap;pointer-events:auto;opacity:0;transform:translateY(-12px);transition:opacity .25s ease,transform .25s ease}.toast-item.toast-visible{opacity:1;transform:translateY(0)}.toast-item.toast-exit{opacity:0;transform:translateY(-12px)}
