:root{color-scheme:light;--bg: #f0f2f5;--bg-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--bg-gradient-subtle: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 100%);--panel: #ffffff;--panel-glass: rgba(255, 255, 255, .85);--text: #1a1a2e;--text-secondary: #4a4a68;--muted: #8b8ba3;--line: rgba(0, 0, 0, .06);--accent: #6366f1;--accent-hover: #4f46e5;--accent-light: #eef2ff;--accent-2: #8b5cf6;--accent-gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--danger: #ef4444;--danger-light: #fef2f2;--ok: #10b981;--ok-light: #ecfdf5;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow: 0 4px 24px rgba(0, 0, 0, .06);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .1);--shadow-glow: 0 0 20px rgba(99, 102, 241, .15);--radius: 12px;--radius-sm: 8px;--radius-xs: 6px;--transition: .2s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}#app{min-height:100vh}html,body{margin:0;padding:0}html{background:var(--bg)}body{min-height:100vh;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit}header{border-bottom:1px solid var(--line);background:var(--panel-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);position:sticky;top:0;z-index:10}.wrap{width:min(1220px,calc(100vw - 32px));margin:0 auto}.topbar{min-height:72px;padding:16px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}h1{margin:0;font-size:24px;font-weight:800;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.sub{margin-top:4px;color:var(--muted);font-size:13px;font-weight:400}h2{margin:0;font-weight:700;letter-spacing:-.01em}h3,p{margin:0}main{padding:28px 0 40px}.provider-bar{display:flex;flex-wrap:wrap;gap:6px;padding:12px 0 16px}.provider-chip{border:1.5px solid rgba(0,0,0,.06);border-radius:999px;background:#f8f9fc;color:var(--text-secondary);padding:6px 14px;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all var(--transition);min-height:auto}.provider-chip small{font-size:10px;color:var(--muted);background:#0000000a;padding:1px 5px;border-radius:999px}.provider-chip:hover{border-color:var(--accent);background:var(--accent-light);color:var(--accent);transform:none;box-shadow:none}.provider-chip.active{border-color:var(--accent);background:var(--accent);color:#fff;font-weight:600}.provider-chip.active small{color:#ffffffb3;background:#ffffff26}.grid-main{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.grid-main>.grid-col-left{grid-column:1}.admin-layout{width:min(1180px,calc(100vw - 32px));margin:24px auto 40px;display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px;align-items:start}.admin-right-column{display:flex;flex-direction:column;gap:20px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;transition:box-shadow var(--transition)}.panel:hover{box-shadow:var(--shadow-lg)}.panel h2{padding:18px 18px 12px;font-size:15px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-weight:700}.provider-list{padding:0 10px 12px;display:grid;gap:4px}.provider-btn{width:100%;min-height:48px;border:1px solid transparent;background:transparent;border-radius:var(--radius-sm);padding:10px 12px;text-align:left;cursor:pointer;color:var(--text);display:flex;justify-content:space-between;gap:12px;align-items:center;transition:all var(--transition)}.provider-btn:hover{background:var(--accent-light);transform:translate(2px)}.provider-btn.active{background:var(--accent-light);border-color:#6366f14d;box-shadow:inset 3px 0 0 var(--accent)}.provider-btn strong{display:block;font-size:14px;font-weight:600}.provider-btn span{color:var(--muted);font-size:12px}.count{color:var(--accent-2);font-size:11px;white-space:nowrap;font-style:normal;font-weight:600;background:#8b5cf614;padding:2px 8px;border-radius:999px}.form{padding:0 18px 18px;display:grid;gap:16px}label{display:grid;gap:6px;color:var(--text-secondary);font-size:13px;font-weight:600}textarea,input{width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);background:#fafbfc;color:var(--text);padding:11px 14px;outline:none;font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;transition:all var(--transition)}input{min-height:44px}textarea{min-height:80px;resize:vertical}textarea:focus,input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px #6366f11a}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}button,a.action{border:0;border-radius:var(--radius-sm);background:var(--accent-gradient);color:#fff;min-height:42px;padding:0 18px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-size:14px;transition:all var(--transition);position:relative;overflow:hidden}button:hover,a.action:hover{transform:translateY(-1px);box-shadow:0 4px 12px #6366f14d}button:active,a.action:active{transform:translateY(0)}button.secondary,a.secondary{background:#f1f3f9;color:var(--text-secondary);box-shadow:none}button.secondary:hover,a.secondary:hover{background:#e5e8f0;box-shadow:var(--shadow-sm)}button.danger:hover{background:#fde2e2;box-shadow:0 4px 12px #ef444426}button.compact{min-height:34px;padding:0 12px;font-size:12px;border-radius:var(--radius-xs)}.text-link{border:none;width:fit-content;padding:0;min-height:auto;background:transparent;color:var(--accent);font-weight:600;font-size:13px}.text-link:hover{color:var(--accent-hover);transform:none;box-shadow:none;text-decoration:underline}.state-indicators{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;align-items:center}button.danger{background:var(--danger-light);color:var(--danger)}button.compact{min-height:34px;padding:0 12px;font-size:12px}.help-text{color:var(--muted);font-size:12px;line-height:1.6;margin-top:2px}.help-text code{font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;background:#6366f10f;border-radius:4px;padding:2px 6px;font-size:11px;color:var(--accent)}.notice-warn{margin:0 18px 10px;border:1px solid rgba(245,158,11,.2);background:linear-gradient(135deg,#fffbeb,#fef3c7);border-radius:var(--radius-sm);padding:12px 14px;color:#92400e;font-size:13px;line-height:1.6;display:flex;align-items:center;justify-content:space-between;gap:12px}.status{min-height:22px;font-size:13px;color:var(--muted);padding:0 18px;font-weight:500}.status.ok{color:var(--ok)}.status.err{color:var(--danger)}.result{border-top:1px solid var(--line);padding:18px;display:none;gap:12px}.result.show{display:grid}.result strong{font-size:14px;color:var(--text-secondary)}.token-box{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start}.token{font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere;white-space:pre-wrap;background:#f8f9fc;border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;min-height:42px;font-size:12px;line-height:1.6;color:var(--text-secondary)}.callout{margin-top:16px;padding:14px 16px;border:1px solid rgba(99,102,241,.15);background:linear-gradient(135deg,#6366f10a,#8b5cf60a);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;line-height:1.6}.provider-token-note{margin:-6px 0 0}.provider-token-note code{font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;background:#92400e14;border-radius:4px;padding:2px 5px;font-size:12px}.callout code{font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;background:#6366f114;border-radius:4px;padding:2px 6px;font-size:11px;color:var(--accent)}.guide{padding:0 18px 18px;display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1.1fr);gap:16px;align-items:start}.steps{margin:0;padding-left:22px;color:var(--text-secondary);line-height:1.8;font-size:13px}.steps li::marker{color:var(--accent);font-weight:700}.guide-hint{margin-top:12px;color:var(--muted);font-size:13px;line-height:1.6}.shot{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#f0f2f5;box-shadow:var(--shadow)}.shot img{width:100%;display:block;background:#fff;cursor:zoom-in;transition:transform var(--transition)}.shot img:hover{transform:scale(1.01)}.shot.has-image .mock-shot{display:none}.browser{height:32px;background:linear-gradient(180deg,#e8ecf1,#dce1e8);display:flex;align-items:center;gap:6px;padding:0 12px}.dot{width:10px;height:10px;border-radius:50%;background:#c4c9d4}.dot:first-child{background:#ff5f57}.dot:nth-child(2){background:#ffbd2e}.dot:nth-child(3){background:#28ca42}.screen{display:grid;grid-template-columns:38% 62%;min-height:210px;background:#fff}.site{padding:18px;border-right:1px solid var(--line);background:#f8f9fc}.site-title{width:70%;height:18px;border-radius:4px;background:var(--accent-gradient);margin-bottom:18px}.site-line{height:9px;border-radius:999px;background:#e5e8f0;margin:10px 0}.devtools{padding:14px;font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;color:var(--text)}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:10px}.tab{border-radius:var(--radius-xs);background:#f1f3f9;padding:4px 10px;font-size:11px;font-weight:500}.tab.active{background:var(--accent-light);color:var(--accent);font-weight:600}.storage-row{display:grid;grid-template-columns:120px 1fr;gap:8px;padding:6px;border-bottom:1px solid #f0f2f5}.storage-row.mark{background:#6366f10f;outline:1px solid rgba(99,102,241,.2);border-radius:4px}.model-note{padding:0 18px 10px;color:var(--muted);font-size:13px;line-height:1.6}.model-note code{font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;background:#6366f10f;border-radius:4px;padding:2px 6px;font-size:11px;color:var(--accent)}.models{padding:0 18px 18px;display:flex;flex-wrap:wrap;gap:8px}.chip{border:1.5px solid rgba(0,0,0,.06);border-radius:999px;padding:7px 14px;background:#f8f9fc;color:var(--text-secondary);font-size:12px;font-weight:500;display:inline-grid;gap:2px;cursor:pointer;position:relative;transition:all var(--transition)}.chip:hover{border-color:var(--accent);background:var(--accent-light);color:var(--accent);transform:translateY(-1px);box-shadow:0 2px 8px #6366f126}.chip:after{content:"点击复制";position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);white-space:nowrap;background:var(--text);color:#fff;border-radius:var(--radius-xs);padding:4px 8px;font-size:11px;opacity:0;pointer-events:none;transition:opacity var(--transition)}.chip:hover:after{opacity:1}.chip small{color:var(--muted);font-size:10px}.ima-model-map{margin:-4px 18px 18px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden;box-shadow:var(--shadow-sm)}.ima-model-map-title{padding:10px 12px;border-bottom:1px solid var(--line);color:var(--text-secondary);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.ima-model-map-grid{display:grid;gap:0}.ima-model-row{display:grid;grid-template-columns:minmax(120px,1.1fr) minmax(100px,.8fr) minmax(150px,1fr) minmax(150px,1fr);gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid #f0f2f5;font-size:12px;transition:background var(--transition)}.ima-model-row:hover{background:#f8f9fc}.ima-model-row:last-child{border-bottom:0}.ima-model-row span{color:var(--muted)}.ima-model-row code{overflow-wrap:anywhere;color:var(--text-secondary);background:#f8f9fc;border:1px solid var(--line);border-radius:var(--radius-xs);padding:4px 8px;font-size:11px}.endpoint-list{padding:0 10px 12px;display:grid;gap:8px}.endpoint{border:1px solid var(--line);border-radius:var(--radius-sm);background:#f8f9fc;padding:10px 12px;display:grid;grid-template-columns:1fr auto auto;gap:6px 8px;font-size:12px;align-items:center;transition:all var(--transition)}.endpoint:hover{background:#f0f2f5;border-color:#0000001a}.endpoint strong{color:var(--text);grid-column:1 / -1;font-weight:600}.endpoint code{overflow-wrap:anywhere;background:transparent;padding:0;min-width:0;color:var(--muted);font-size:11px}.endpoint button{border:1.5px solid rgba(0,0,0,.06);border-radius:var(--radius-xs);background:#fff;color:var(--text-secondary);min-height:32px;padding:0 12px;cursor:pointer;white-space:nowrap;font-size:12px;font-weight:500;transition:all var(--transition)}.endpoint button:hover{border-color:var(--accent);color:var(--accent)}.endpoint button.primary-mini{border-color:#6366f14d;background:var(--accent-light);color:var(--accent)}.endpoint button.primary-mini:hover{background:var(--accent);color:#fff}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:none;align-items:center;justify-content:center;padding:28px;z-index:40;animation:fadeIn .2s ease}.lightbox.show{display:flex}.lightbox img{max-width:min(1120px,96vw);max-height:90vh;border-radius:var(--radius);background:#fff;box-shadow:0 24px 70px #0006;animation:scaleIn .25s ease}.lightbox button{position:absolute;top:18px;right:18px;width:40px;height:40px;border:0;border-radius:50%;background:#ffffffe6;color:var(--text);font-size:20px;line-height:1;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all var(--transition)}.lightbox button:hover{background:#fff;transform:scale(1.1)}.modal-example{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;padding:28px;z-index:21;animation:fadeIn .2s ease}.modal-example.show{display:flex}.modal-panel{width:min(760px,96vw);max-height:86vh;overflow:auto;background:#fff;border-radius:var(--radius);box-shadow:0 24px 70px #0003;border:1px solid var(--line);animation:scaleIn .25s ease}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-head strong{font-size:16px;color:var(--text)}.modal-head button{width:36px;height:36px;border:0;border-radius:50%;background:#f1f3f9;color:var(--text-secondary);font-size:18px;cursor:pointer;transition:all var(--transition)}.modal-head button:hover{background:#e5e8f0}.modal-body{padding:20px;display:grid;gap:14px}.modal-panel header{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}.register-modal p{margin:0;color:var(--muted);line-height:1.7;padding:18px 20px}.register-modal .link{width:fit-content;margin:0 20px 20px}.modal-panel .icon{width:36px;height:36px;border:0;border-radius:50%;background:#f1f3f9;color:var(--text-secondary);font-size:18px;cursor:pointer;padding:0;transition:all var(--transition)}.modal-panel .icon:hover{background:#e5e8f0}.login-page{min-height:100vh;display:grid;place-items:center;padding:28px 16px;background:var(--bg-gradient-subtle);position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at 30% 40%,rgba(99,102,241,.06) 0%,transparent 50%),radial-gradient(circle at 70% 60%,rgba(139,92,246,.06) 0%,transparent 50%);pointer-events:none}.login-card{width:min(440px,100%);display:grid;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lg);padding:36px 32px;position:relative;z-index:1}.login-brand{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:8px}.login-logo{display:flex;align-items:center;justify-content:center;margin-bottom:4px}.login-card h1{font-size:26px;text-align:center}.login-card p{color:var(--muted);font-size:13px;line-height:1.7;text-align:center}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:#f1f3f9;border-radius:var(--radius-sm)}.segmented button{background:transparent;color:var(--muted);font-weight:500;min-height:38px;border-radius:var(--radius-xs);transition:all var(--transition)}.segmented button:hover{color:var(--text-secondary)}.segmented button.active{background:#fff;color:var(--text);box-shadow:0 1px 4px #10182814;font-weight:600}.state{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.state span{padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;font-weight:500}.state span.on{color:var(--ok);border-color:#10b98133;background:var(--ok-light)}.state span.warn,.state-indicators span.warn{color:var(--danger);border-color:#ef444433;background:var(--danger-light)}.state-indicators span{padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px;font-weight:500;transition:all var(--transition)}.state-indicators span.on{color:var(--ok);border-color:#10b98133;background:var(--ok-light)}.top{min-height:72px;padding:16px max(22px,calc((100vw - 1240px)/2));background:var(--panel-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;position:sticky;top:0;z-index:10}.top h1{font-size:24px}.top p{margin-top:4px;color:var(--muted);font-size:13px}.admin-create{display:grid;gap:16px}.admin-users{display:grid;gap:12px}.empty{color:var(--muted);font-size:13px;padding:20px;background:#f8f9fc;border:1px dashed rgba(0,0,0,.1);border-radius:var(--radius);text-align:center}.user-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);background:#f8f9fc;transition:all var(--transition)}.user-row:hover{background:#f0f2f5;border-color:#0000001a}.user-row strong,.user-row code{display:block}.user-row strong{font-weight:600}.user-row code{margin-top:6px;color:var(--text-secondary);font-size:12px;overflow-wrap:anywhere}.account-meta{display:inline-flex;margin-top:8px;color:var(--muted);font-size:12px;font-weight:500}.account-meta.active{color:var(--ok)}.account-meta.expired,.account-meta.disabled{color:var(--danger)}.mini-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.admin-logs{grid-column:1 / -1;display:grid;gap:12px}.log-filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto auto auto;gap:10px}.password-row{display:flex;gap:8px;align-items:center}.password-row input{flex:1;min-width:0}.log-row{border:1px solid var(--line);border-radius:var(--radius);background:#f8f9fc;padding:14px 16px;display:grid;gap:8px;transition:all var(--transition)}.log-row:hover{background:#f0f2f5;border-color:#0000001a}.log-main,.log-grid,.pager{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.log-main strong{font-weight:600}.log-main .ok{color:var(--ok);font-weight:600}.log-main .err{color:var(--danger);font-weight:600}.log-main small{color:var(--muted)}.log-grid{color:var(--muted);font-size:12px}.log-row code,.log-row pre{margin:0;font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;overflow-wrap:anywhere;white-space:pre-wrap}.log-row code{padding:8px 12px;border-radius:var(--radius-sm);background:#fff;border:1px solid var(--line)}.log-row pre{color:var(--danger);background:var(--danger-light);border:1px solid rgba(239,68,68,.15);border-radius:var(--radius-sm);padding:8px 12px}.pager{justify-content:flex-end;color:var(--muted);font-size:13px}.inline-check{grid-template-columns:auto 1fr;align-items:center;color:var(--text)}.inline-check input{width:18px;min-height:18px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.admin-tabs{width:min(1180px,calc(100vw - 32px));margin:16px auto 0;display:flex;gap:4px;background:#f1f3f9;border-radius:var(--radius-sm);padding:4px}.admin-tabs button{flex:1;background:transparent;color:var(--muted);font-weight:500;min-height:42px;border-radius:var(--radius-xs);transition:all var(--transition);font-size:13px}.admin-tabs button:hover{color:var(--text-secondary);background:#ffffff80}.admin-tabs button.active{background:#fff;color:var(--text);box-shadow:0 1px 4px #10182814;font-weight:600}.dashboard-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);transition:box-shadow var(--transition)}.stat-card:hover{box-shadow:var(--shadow-lg)}.stat-card .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.stat-card .value{font-size:32px;font-weight:800;margin-top:8px;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.2}.stat-card .sub-value{font-size:12px;color:var(--muted);margin-top:4px}.dashboard-details{display:grid;grid-template-columns:1fr 1fr;gap:20px}.dashboard-table{width:100%;border-collapse:collapse}.dashboard-table th,.dashboard-table td{padding:10px 12px;text-align:left;font-size:13px;border-bottom:1px solid #f0f2f5}.dashboard-table th{color:var(--muted);font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.04em}.dashboard-table td:last-child{text-align:right;font-weight:700;color:var(--accent)}.dashboard-bar{height:6px;border-radius:999px;background:#f0f2f5;margin-top:4px;overflow:hidden}.dashboard-bar-fill{height:100%;border-radius:999px;background:var(--accent-gradient);transition:width .6s ease}.toast-container{position:fixed;top:20px;right:20px;z-index:100;display:grid;gap:8px;pointer-events:none}.toast{pointer-events:auto;min-width:240px;max-width:380px;padding:12px 18px;border-radius:var(--radius-sm);background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow-lg);font-size:13px;font-weight:500;animation:slideInRight .25s ease}.toast.ok{border-color:#10b9814d;color:var(--ok);background:var(--ok-light)}.toast.err{border-color:#ef44444d;color:var(--danger);background:var(--danger-light)}@keyframes slideInRight{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.confirm-dialog .modal-body{text-align:center;padding:28px 24px}.confirm-dialog .modal-body strong{font-size:16px;display:block;margin-bottom:8px}.confirm-dialog .modal-body p{color:var(--muted);font-size:13px;margin-bottom:20px;line-height:1.6}button:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.chat-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:22;animation:fadeIn .2s ease}.chat-modal{width:min(560px,100%);height:min(600px,85vh);background:var(--panel);border-radius:var(--radius);box-shadow:0 24px 70px #00000040;border:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;animation:scaleIn .25s ease}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);flex-shrink:0}.chat-head strong{font-size:15px}.chat-head small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.chat-actions{display:flex;align-items:center;gap:8px}.chat-head .chat-close{width:32px;height:32px;border:0;border-radius:50%;background:#f1f3f9;color:var(--text-secondary);font-size:18px;cursor:pointer;transition:all var(--transition)}.chat-head .chat-close:hover{background:#e5e8f0}.chat-head .chat-reset{min-height:32px;border-radius:var(--radius-sm);padding:0 10px;font-size:12px;background:#f1f3f9;color:var(--text-secondary);box-shadow:none}.chat-head .chat-reset:disabled{opacity:.45;cursor:not-allowed}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.chat-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--muted);font-size:13px}.chat-msg{display:flex}.chat-msg.user{justify-content:flex-end}.chat-msg.assistant,.chat-msg.error{justify-content:flex-start}.chat-bubble{max-width:85%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.chat-msg.user .chat-bubble{background:var(--accent);color:#fff;border-bottom-right-radius:4px}.chat-msg.assistant .chat-bubble{background:#f1f3f9;color:var(--text);border-bottom-left-radius:4px}.chat-msg.error .chat-bubble{background:var(--danger-light);color:var(--danger);border-bottom-left-radius:4px}.chat-cursor{display:inline-block;width:6px;height:14px;background:var(--accent);margin-left:2px;vertical-align:text-bottom;animation:blink .8s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.chat-input-bar{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--line);flex-shrink:0}.chat-input-bar input{flex:1;min-height:40px;border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:0 14px;font-size:13px;outline:none;transition:all var(--transition)}.chat-input-bar input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #6366f11a}.chat-input-bar button{min-width:64px;min-height:40px;border-radius:var(--radius-sm);font-size:13px;font-weight:600}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media(max-width:900px){.grid,.grid-main,.guide,.admin-layout,.log-filters,.dashboard-grid,.dashboard-details,.config-grid{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column;padding:16px 0}.token-box{grid-template-columns:1fr}.admin-tabs{flex-direction:column}}@media(max-width:640px){.top{align-items:flex-start;flex-direction:column}.login-card{padding:28px 20px;border-radius:var(--radius)}}.upload-results{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.upload-result-row{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--bg);border-radius:var(--radius-xs);font-size:.85rem}.upload-result-row .provider-name{font-weight:600;min-width:80px}.upload-result-row .status-tag{padding:2px 8px;border-radius:4px;font-size:.75rem;font-weight:600}.upload-result-row .status-tag.valid{background:var(--ok-light);color:var(--ok)}.upload-result-row .status-tag.expired{background:#fef3c7;color:#d97706}.upload-result-row .status-tag.error{background:var(--danger-light);color:var(--danger)}.upload-result-row .error-msg{color:var(--muted);font-size:.75rem;flex:1;text-align:right}.notice-ok{background:var(--ok-light);color:var(--ok);border:1px solid rgba(16,185,129,.2)}.user-tokens-list{padding:0 18px 18px}.user-token-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-xs);margin-bottom:8px;transition:all var(--transition)}.user-token-row:hover{border-color:var(--accent);box-shadow:0 2px 8px #6366f11a}.token-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.provider-badge{background:var(--accent-gradient);color:#fff;padding:3px 10px;border-radius:4px;font-size:.75rem;font-weight:600;white-space:nowrap}.token-preview{font-family:monospace;font-size:.8rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.live-badge{padding:2px 8px;border-radius:4px;font-size:.7rem;font-weight:600;white-space:nowrap}.live-badge.live{background:var(--ok-light);color:var(--ok)}.live-badge.dead{background:var(--danger-light);color:var(--danger)}.live-badge.unknown{background:var(--bg);color:var(--muted)}.token-actions{display:flex;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}button.compact{padding:6px 12px;font-size:.8rem}.auto-config-row{display:flex;flex-wrap:wrap;align-items:center;gap:18px;padding:0 18px 12px}.auto-toggle,.auto-threshold{display:inline-flex;align-items:center;gap:6px;font-size:.85rem}.auto-toggle input[type=checkbox]{width:13px;height:13px;margin:0;cursor:pointer}.auto-threshold input{width:80px;padding:4px 8px;border:1px solid var(--line);border-radius:var(--radius-xs)}.auto-status{font-size:.8rem}.auto-models-list{padding:0 18px 12px;display:flex;flex-direction:column;gap:8px}.auto-model-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-xs);background:var(--bg);transition:all var(--transition)}.auto-model-row:hover{border-color:var(--accent);box-shadow:0 2px 8px #6366f11a}.auto-model-options{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;flex:1;min-width:0}.auto-radio{display:inline-flex;align-items:center;gap:5px;padding:2px 4px;border-radius:var(--radius-xs);font-size:.85rem;cursor:pointer;transition:background var(--transition)}.auto-radio:hover{background:#6366f10f}.auto-radio input[type=radio]{width:13px;height:13px;margin:0;cursor:pointer}.auto-model-row{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius-xs)}.auto-model-row label{display:inline-flex;align-items:center;gap:8px;flex:1;cursor:pointer}.auto-model-name{font-family:monospace;font-size:.85rem;color:var(--text)}.auto-model-pos{font-size:.75rem;color:var(--accent);font-weight:600}.provider-chip{position:relative}.provider-chip.has-token:not(.active){border-color:var(--ok);background:var(--ok-light)}.provider-chip.has-token:not(.active):hover{background:#10b98126}.token-dot{position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:var(--ok);border-radius:50%;border:2px solid var(--panel);z-index:1}.guide-modal{max-width:980px!important;max-height:90vh;overflow-y:auto}.guide-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:20px}.guide-step{display:flex;gap:12px;padding:16px;background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--line)}.guide-steps-visual{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.visual-step{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:start}.guide-image{grid-column:1 / -1;aspect-ratio:16 / 10;margin:-4px -4px 4px;border:1px solid var(--line);border-radius:var(--radius-xs);overflow:hidden;background:#fff}.guide-image img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.step-num{width:32px;height:32px;background:var(--accent-gradient);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;flex-shrink:0}.step-body h3{margin:0 0 6px;font-size:.9rem;font-weight:600;color:var(--text)}.step-body p{margin:0;font-size:.82rem;color:var(--text-secondary);line-height:1.5}.step-detail{margin-top:8px;padding:8px 10px;background:var(--panel);border-radius:var(--radius-xs);font-family:monospace;font-size:.78rem;color:var(--accent);border:1px solid var(--line)}.guide-tips{padding:16px;background:var(--accent-light);border-radius:var(--radius-sm);border:1px solid rgba(99,102,241,.2)}.guide-config{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.guide-config h3{margin:0;font-size:.9rem;color:var(--text)}.guide-config p{color:var(--text-secondary);font-size:.84rem;line-height:1.6}.guide-config code{font-family:SF Mono,Fira Code,ui-monospace,SFMono-Regular,Consolas,monospace;background:#6366f10f;border-radius:4px;padding:2px 5px;color:var(--accent)}.config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.config-block{display:grid;gap:10px;align-content:start;min-width:0}.config-block strong{font-size:.86rem;color:var(--text)}.config-rows{display:grid;gap:8px}.config-rows div{display:grid;grid-template-columns:68px minmax(0,1fr);gap:10px;align-items:start}.config-rows span{color:var(--muted);font-size:.78rem;font-weight:700;line-height:1.8}.config-rows code{overflow-wrap:anywhere;border:1px solid var(--line);background:#f8f9fc;color:var(--text-secondary);border-radius:var(--radius-xs);padding:6px 8px;font-size:11px}.guide-tips h3{margin:0 0 10px;font-size:.85rem;color:var(--accent)}.guide-tips ul{margin:0;padding-left:20px}.guide-tips li{font-size:.82rem;color:var(--text-secondary);margin-bottom:6px;line-height:1.4}.rate-warning{margin-top:12px;padding:10px 12px;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius-xs);background:var(--danger-light);color:var(--danger);font-size:.84rem;font-weight:700;line-height:1.5}.dot-demo{display:inline-block;width:8px;height:8px;background:var(--ok);border-radius:50%;vertical-align:middle;margin:0 2px}.qq-group-popup{position:fixed;left:20px;bottom:20px;z-index:50;pointer-events:none}.qq-group-popup .qq-group-card,.qq-group-popup .qq-group-bubble{pointer-events:auto}.qq-group-card{position:relative;width:260px;padding:14px 14px 12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg),var(--shadow-glow);animation:qqGroupSlideIn .5s cubic-bezier(.34,1.56,.64,1);transform-origin:bottom left}.qq-group-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius);padding:1px;background:var(--accent-gradient);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.4}.qq-group-header{display:flex;align-items:center;gap:8px;margin-bottom:10px}.qq-group-tag{font-size:.7rem;font-weight:700;letter-spacing:.5px;padding:2px 8px;border-radius:999px;background:var(--accent-gradient);color:#fff}.qq-group-header strong{font-size:.9rem;color:var(--text)}.qq-group-img-wrap{position:relative;width:100%;aspect-ratio:1 / 1;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-gradient-subtle);cursor:zoom-in;border:1px solid var(--line)}.qq-group-img-wrap img{width:100%;height:100%;object-fit:contain;display:block;transition:transform var(--transition)}.qq-group-img-wrap:hover img{transform:scale(1.04)}.qq-group-tip{margin-top:8px;font-size:.75rem;color:var(--text-secondary);text-align:center;line-height:1.4}.qq-group-divider{height:1px;margin:12px -2px 10px;background:linear-gradient(90deg,transparent,var(--line) 20%,var(--line) 80%,transparent)}.qq-group-nav-title{font-size:.72rem;font-weight:700;letter-spacing:.6px;color:var(--muted);text-transform:uppercase;margin-bottom:6px;padding-left:2px}.qq-group-nav{display:flex;flex-direction:column;gap:2px}.qq-group-nav-link{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-xs);color:var(--text-secondary);font-size:.78rem;text-decoration:none;transition:background var(--transition),color var(--transition),transform var(--transition)}.qq-group-nav-link:hover{background:var(--accent-light);color:var(--accent-hover);transform:translate(2px)}.qq-group-nav-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-gradient);flex-shrink:0;box-shadow:0 0 0 3px #6366f11f}.qq-group-nav-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qq-group-close,.qq-group-min{position:absolute;top:6px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:#0000000d;color:var(--text-secondary);cursor:pointer;font-size:14px;line-height:1;transition:background var(--transition),color var(--transition),transform var(--transition)}.qq-group-close{right:6px}.qq-group-min{right:32px;font-size:12px}.qq-group-close:hover{background:var(--danger);color:#fff;transform:rotate(90deg)}.qq-group-min:hover{background:var(--accent);color:#fff}.qq-group-bubble{position:relative;display:flex;align-items:center;gap:8px;padding:10px 16px 10px 14px;border:none;border-radius:999px;background:var(--accent-gradient);color:#fff;font-weight:600;font-size:.85rem;cursor:pointer;box-shadow:var(--shadow-lg),0 0 24px #6366f159;animation:qqGroupFloat 3s ease-in-out infinite;transition:transform var(--transition),box-shadow var(--transition)}.qq-group-bubble:hover{transform:translateY(-2px) scale(1.04);box-shadow:var(--shadow-lg),0 0 32px #6366f180}.qq-group-bubble-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#fff3;font-size:.7rem;font-weight:800;letter-spacing:-.5px}.qq-group-bubble-pulse{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;border:2px solid var(--accent);opacity:0;animation:qqGroupPulse 2s ease-out infinite;pointer-events:none}@keyframes qqGroupSlideIn{0%{opacity:0;transform:translateY(20px) scale(.85)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes qqGroupFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes qqGroupPulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.4)}}@media(max-width:640px){.qq-group-popup{left:12px;bottom:12px}.qq-group-card{width:220px}}.admin-batch-create{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-left:4px solid var(--accent);margin-bottom:20px}.admin-batch-create h2{color:var(--accent)}.batch-result{margin-top:24px;padding:20px;background:#fff;border-radius:var(--radius-sm);box-shadow:var(--shadow);border:1px solid var(--line)}.batch-result h3{margin:0 0 16px;color:var(--ok);font-size:16px;display:flex;align-items:center;gap:8px}.batch-preview{max-height:400px;overflow-y:auto;margin-top:16px;border:1px solid var(--line);border-radius:var(--radius-xs)}.batch-preview table{width:100%;font-size:13px;border-collapse:collapse}.batch-preview thead{position:sticky;top:0;background:var(--bg);z-index:1}.batch-preview th{padding:10px 12px;text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:2px solid var(--line)}.batch-preview td{padding:10px 12px;border-bottom:1px solid var(--line)}.batch-preview tr:hover{background:var(--accent-light)}.batch-preview code{font-size:11px;padding:2px 6px;background:var(--bg);border-radius:4px;font-family:Monaco,Menlo,Consolas,monospace}.batch-preview .token-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}
