.input{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:var(--radius);font-size:calc(13 * 1rem / 16);font-family:var(--font);transition:border-color .15s,box-shadow .14s ease,transform .14s ease;outline:none}
.input:focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 10%,transparent);transform:none}
select.input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23525e74' stroke-width='1.5' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
[data-theme="light"] select.input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239a9590' stroke-width='1.5' fill='none'/%3E%3C/svg%3E")}
[data-theme="light"] .input:hover:not(:focus){border-color:color-mix(in srgb,var(--border) 55%,var(--accent) 45%);box-shadow:0 2px 8px rgba(14,18,24,.04),0 1px 0 rgba(255,255,255,.75) inset;transform:translateY(-0.5px)}
.chip-group{display:flex;flex-wrap:wrap;gap:6px}
.chip{padding:5px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg3);color:var(--text2);font-size:calc(12 * 1rem / 16);cursor:pointer;transition:all .15s;white-space:nowrap}
.chip:hover{border-color:var(--accent);color:var(--text)}
.chip.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent);font-weight:500}
[data-theme="light"] .chip{transition:transform .14s ease,box-shadow .14s ease,border-color .15s,background .15s,color .15s}
[data-theme="light"] .chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(14,18,24,.05),0 1px 0 rgba(255,255,255,.82) inset}
[data-theme="light"] .chip.active:hover{box-shadow:0 2px 10px color-mix(in srgb,var(--accent) 12%,transparent),0 1px 0 rgba(255,255,255,.55) inset}
.range-wrap{display:flex;align-items:center;gap:12px}
.range-wrap input[type=range]{flex:1;-webkit-appearance:none;appearance:none;height:4px;background:var(--bg4);border-radius:2px;outline:none}
.range-wrap input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg2);box-shadow:0 0 6px color-mix(in srgb,var(--accent) 35%,transparent)}
.range-val{min-width:32px;text-align:center;font-size:calc(13 * 1rem / 16);color:var(--accent);font-weight:600}
.toggle-row{display:flex;align-items:center;justify-content:space-between}
.toggle{width:40px;height:22px;background:var(--bg4);border-radius:11px;cursor:pointer;position:relative;transition:background .2s;border:none}
.toggle::after{content:'';position:absolute;left:2px;top:2px;width:18px;height:18px;background:var(--text2);border-radius:50%;transition:all .2s}
.toggle.on{background:var(--accent)}.toggle.on::after{left:20px;background:#fff}
.btn{padding:8px 20px;border:none;border-radius:var(--radius);cursor:pointer;font-size:calc(13 * 1rem / 16);font-weight:600;transition:all .15s;font-family:var(--font)}
.btn-accent{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#080b12;box-shadow:0 2px 12px color-mix(in srgb,var(--accent) 32%,transparent)}
[data-theme="light"] .btn-accent{color:#fff}
.btn-accent:hover{opacity:.9;box-shadow:0 2px 20px color-mix(in srgb,var(--accent) 42%,transparent)}
.btn-ghost{background:var(--bg3);color:var(--text2);border:1px solid var(--border)}
.btn-ghost:hover{background:var(--bg4);color:var(--text)}
[data-theme="light"] .btn{transition:transform .14s ease,box-shadow .14s ease,opacity .14s ease,background .14s ease,border-color .14s ease,color .14s ease,filter .14s ease}
[data-theme="light"] .btn:hover:not(:disabled){transform:translateY(-1px)}
[data-theme="light"] .btn-accent:hover:not(:disabled){opacity:1;box-shadow:0 6px 18px color-mix(in srgb,var(--accent) 26%,transparent),0 0 0 1px rgba(255,255,255,.4) inset}
[data-theme="light"] .btn-ghost:hover:not(:disabled){box-shadow:0 3px 10px rgba(14,18,24,.05),0 1px 0 rgba(255,255,255,.92) inset}
[data-theme="light"] .btn:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 4px rgba(14,18,24,.04)}
.btn-sm{padding:5px 12px;font-size:calc(11 * 1rem / 16)}
.progress-bar{height:4px;background:var(--bg4);border-radius:2px;overflow:hidden}
.progress-bar .fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--blue));border-radius:2px;transition:width .3s}
.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.status-dot.pending{background:var(--yellow)}.status-dot.generating,.status-dot.submitted,.status-dot.running,.status-dot.post_processing,.status-dot.finalizing{background:var(--blue)}.status-dot.success,.status-dot.succeeded{background:var(--green)}.status-dot.failed{background:var(--red)}
.progress-bar .fill.animated{animation:progressPulse 1.5s ease-in-out infinite}
@keyframes progressPulse{0%,100%{opacity:1}50%{opacity:.65}}

/* Toast */
.toast{position:fixed;top:24px;left:50%;transform:translateX(-50%);padding:10px 24px;border-radius:var(--radius);font-size:calc(13 * 1rem / 16);color:#fff;z-index:200;animation:toastIn .3s;box-shadow:var(--shadow)}
.toast.ok{background:var(--green);color:#080b12}.toast.err{background:var(--red)}.toast.info{background:var(--blue)}.toast.warn{background:#e6a817;color:#000}
@keyframes toastIn{from{opacity:0;transform:translateX(-50%) translateY(-12px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}

/* Login */
.login-overlay{display:none}
.acct-login-section{display:flex;align-items:center;justify-content:center;min-height:320px;padding:40px 20px}
.acct-login-box{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-lg);padding:40px 32px;max-width:480px;width:100%;text-align:center;display:flex;flex-direction:column;align-items:center}
.login-error{color:var(--red);font-size:calc(12 * 1rem / 16);display:none}

/* 发送前检查：编辑区开关 + 确认弹层 */
.pre-send-toolbar{margin:0 0 8px;font-size:calc(12 * 1rem / 16);color:var(--text3);display:flex;flex-wrap:wrap;align-items:center;column-gap:12px;row-gap:4px;flex:1;min-width:0}
.pre-send-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none;flex-shrink:0}
.task-cost-estimate{font-size:calc(11 * 1rem / 16);color:var(--text2);line-height:1.4;flex:1 1 160px;min-width:0}
.prompt-area-foot .pre-send-toolbar{margin:0}
.pre-send-toggle input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
#pre-send-modal{position:fixed;inset:0;z-index:215;display:none;align-items:center;justify-content:center;padding:20px 16px;box-sizing:border-box}
#pre-send-modal .pre-send-dim{position:absolute;inset:0;background:color-mix(in srgb,#0a0c10 52%,transparent)}
#pre-send-modal .pre-send-panel{position:relative;z-index:1;width:min(520px,calc(100vw - 32px));max-height:min(78vh,640px);border-radius:14px;border:1px solid var(--border);background:var(--bg2);box-shadow:0 20px 50px color-mix(in srgb,#000 42%,transparent);display:flex;flex-direction:column;overflow:hidden}
.pre-send-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.pre-send-head h3{margin:0;font-size:calc(16 * 1rem / 16);font-weight:700;color:var(--text)}
.pre-send-x{width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--text3);font-size:calc(20 * 1rem / 16);cursor:pointer;line-height:1}
.pre-send-x:hover{background:var(--bg3);color:var(--text)}
.pre-send-body{padding:12px 16px;overflow-x:hidden;overflow-y:auto;flex:1;font-size:calc(12 * 1rem / 16)}
.pre-send-line{display:grid;grid-template-columns:minmax(88px,32%) 1fr;gap:8px 12px;padding:8px 0;border-bottom:1px solid var(--border)}
.pre-send-line:last-child{border-bottom:none}
.pre-send-k{color:var(--text3);font-weight:500}
.pre-send-v{color:var(--text);word-break:break-word;white-space:pre-wrap;font-family:var(--font)}
.pre-send-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;background:var(--bg3)}
