:root{color-scheme:dark;--bg: #0f141c;--panel: #171e29;--border: #2a3446;--text: #e8edf5;--muted: #9aa5b5;--primary: #3d7eff;--accent: #00b86c;--danger: #ff6b6b}*{box-sizing:border-box}.hidden{display:none!important}body{margin:0;font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:radial-gradient(circle at top,#1a2433 0%,var(--bg) 55%);color:var(--text);min-height:100vh;overflow-y:auto;overscroll-behavior-y:auto}#app{max-width:1680px;margin:0 auto;padding:20px 16px 32px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.brand h1{margin:0;font-size:1.5rem;color:#a0183a}.brand-sub{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:4px}.brand-sub p{margin:0;color:var(--muted);font-size:.9rem}.brand-sub .workspace-csv-btn,.brand-sub .workspace-back-btn{flex-shrink:0}.topbar-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.client-credits{font-size:.85rem;color:var(--muted);padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:#ffffff08;white-space:nowrap;font:inherit;display:inline-flex;align-items:center}.client-credits.is-blocked{color:#ffb4b4;border-color:#ff6b6b73;background:#ff6b6b1a}.account-name-btn{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-modal{max-width:420px}.account-display-center{margin:0 0 10px;text-align:center;font-size:1.05rem;font-weight:700;color:var(--text);line-height:1.35;word-break:break-word}.account-meta-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 10px;margin:0 0 4px;font-size:.82rem;color:var(--muted)}.account-meta-line strong{color:var(--text);font-weight:600}.account-uuid-hint{margin-left:8px;font-size:.8rem}.account-id-value{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.8rem;word-break:break-all;font-weight:600}.account-grid{display:grid;gap:10px;margin-top:10px}.account-grid-2x2{grid-template-columns:1fr 1fr;gap:10px 12px}.account-field{display:grid;gap:4px;font-size:.82rem;color:var(--muted);min-width:0}.account-field input{width:100%;box-sizing:border-box;padding:7px 9px;border-radius:8px;border:1px solid var(--border);background:#ffffff0a;color:var(--text);font:inherit}.account-field-ro strong{color:var(--text);font-weight:600;font-size:.95rem;line-height:1.35;min-height:1.35em}.account-field-ro strong.account-val-credits{color:#f0c27a}.account-field-ro strong.account-val-usage{color:#7a8494;font-weight:500}.account-modal-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}.account-foot-left{display:flex;gap:8px;flex-wrap:wrap}.account-password-block{margin-top:10px;padding-top:8px;border-top:1px solid var(--border);display:grid;gap:6px}.account-password-tip{margin:0;font-size:.8rem}.btn-success{background:#00b86c;color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.08)}.btn-success:disabled{opacity:.55;cursor:not-allowed}#account-save-password-btn{justify-self:start}.recharge-modal{max-width:420px}.recharge-balance{margin:0 0 12px;font-size:.9rem}.recharge-packages{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.recharge-pkg{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#ffffff08;color:var(--text);cursor:pointer;text-align:left;font:inherit}.recharge-pkg:hover{border-color:#3d7eff73}.recharge-pkg.is-selected{border-color:#3d7effb3;background:#3d7eff1f}.recharge-pkg-points{font-size:1.1rem;font-weight:600}.recharge-pkg-price{color:#f0c27a;font-size:.92rem}.recharge-channels-wrap{margin:0 0 12px}.recharge-channels-label{margin:0 0 8px;font-size:.85rem}.recharge-channels{display:flex;flex-wrap:wrap;gap:8px}.recharge-channel{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text);cursor:pointer;font:inherit;font-size:.85rem}.recharge-channel:hover:not(:disabled){border-color:#3d7eff73}.recharge-channel.is-selected{border-color:#3d7effb3;background:#3d7eff1f}.recharge-channel:disabled,.recharge-channel.is-disabled{opacity:.45;cursor:not-allowed}.recharge-channel-tag{font-size:.72rem;color:var(--muted)}.recharge-pay-panel{margin:0 0 12px;padding:12px;border:1px dashed var(--border);border-radius:10px;text-align:center}.recharge-qr-wrap{margin:10px 0}.recharge-qr-wrap img{display:inline-block;border-radius:8px;background:#fff;padding:8px}.recharge-poll-status{margin:8px 0 0;font-size:.82rem}.workspace-auth{display:inline-flex;align-items:center;gap:6px}.workspace-auth-email{font-size:.82rem;color:var(--muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:20px;background:#080c12b8}.auth-backdrop.hidden{display:none!important}.auth-modal{width:min(400px,100%);background:var(--panel, #171e29);border:1px solid var(--border, #2a3446);border-radius:14px;box-shadow:0 18px 48px #00000073}.auth-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 0}.auth-modal-head h3{margin:0;font-size:1.05rem}.auth-modal-body{display:grid;gap:8px;padding:12px 16px 16px}.auth-tip{margin:0 0 4px;font-size:.84rem}.auth-label{font-size:.8rem;color:var(--muted)}.auth-login-mode-row{display:flex;gap:8px;margin-bottom:4px}.auth-login-mode-row .tier-tab{border:1px solid var(--border);border-radius:999px;background:#ffffff08;color:var(--muted);padding:5px 12px;cursor:pointer;font-size:.82rem}.auth-login-mode-row .tier-tab.is-active{border-color:#3d7eff8c;color:#cfe0ff;background:#3d7eff29}.auth-code-row{display:flex;gap:8px;align-items:center}.auth-code-row input{flex:1;min-width:0}.auth-code-row .btn{flex-shrink:0;white-space:nowrap}.auth-modal-body input{width:100%;padding:9px 11px;border-radius:8px;border:1px solid var(--border);background:#0f141c;color:var(--text);font-size:.92rem}.auth-error{min-height:1.2em;margin:0;color:#ffb4b4;font-size:.84rem}.auth-modal-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:6px}.auth-actions{display:flex;gap:8px;margin-left:auto}.queue-status-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.84rem;color:var(--text);padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:#3d7eff14;max-width:min(560px,52vw)}.queue-status-bar.is-started{border-color:#00b86ca6;background:#00b86c29}.queue-status-bar.hidden{display:none}.queue-status-main{white-space:nowrap}.queue-started-label{color:var(--accent);font-weight:700}.queue-status-tip{color:#ffb86c;white-space:nowrap}.queue-status-tip.hidden{display:none}.train-modal-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}.train-modal-actions-right{display:flex;gap:10px;margin-left:auto}.train-priority-wrap{display:flex;align-items:center;gap:8px}.train-priority-select{min-width:118px;background:var(--panel);color:#e8c547;border:1px solid var(--border);border-radius:8px;padding:6px 8px}.train-priority-select:not(.is-priority-active){color:var(--muted)}.layout{display:block}.chart-panel-full{width:100%}.panel-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.load-meta{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.panel-head h2{margin:0;font-size:1rem}.panel-head-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.match-compare-btn{font-size:.84rem;padding:5px 12px;white-space:nowrap}.match-compare-btn:disabled{opacity:.5;cursor:not-allowed}.tag{font-size:.75rem;padding:4px 8px;border-radius:999px;background:#3d7eff26;color:#9ec0ff}.muted{color:var(--muted);font-size:.85rem}.chart-box{width:100%;height:380px;touch-action:none}.chart-wrap{position:relative}.sim-correction-toggle{position:absolute;top:8px;left:56px;z-index:3;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:.72rem;white-space:nowrap;color:var(--text);background:#141a24e0;border:1px solid var(--border);border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.sim-correction-toggle input{accent-color:#5aa2ff;cursor:pointer}.chart-empty-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px 32px;text-align:center;pointer-events:none}.chart-empty-placeholder.hidden{display:none}.chart-empty-brand{margin:0;font-size:2rem;font-weight:700;letter-spacing:.14em;color:#ff9a3c}.chart-empty-hint{margin:0;font-size:.88rem;line-height:1.6;color:var(--muted);white-space:nowrap}.chart-empty-hint-sub{margin-top:4px}.chart-wrap.is-empty .chart-zoom-bar{opacity:.35;pointer-events:none}.chart-wrap.is-empty:after{content:"";position:absolute;left:56px;right:24px;bottom:44px;height:1px;background:#5a6478;pointer-events:none;z-index:1}.chart-zoom-bar{position:absolute;top:10px;right:24px;z-index:2;display:flex;gap:6px}.chart-wrap-detail{position:relative}.node-sim-toggle{position:absolute;top:8px;left:10px;z-index:3;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-size:.72rem;white-space:nowrap;color:var(--text);background:#141a24e0;border:1px solid var(--border);border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.node-sim-toggle.hidden{display:none}.node-sim-toggle input{accent-color:#ffd700;cursor:pointer}.node-sim-toggle.is-loading{opacity:.65;pointer-events:none}.node-sim-quota{color:var(--muted);font-size:.68rem}.node-sim-quota.is-empty{color:#ffb4b4}.chart-wrap-detail .chart-zoom-bar-detail{top:4px;right:88px;left:auto}.chart-wrap-detail.detail-has-compare .chart-zoom-bar-detail{right:158px}.chart-zoom-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:8px;background:#0f141cd1;color:var(--text);font-size:1.15rem;line-height:1;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}.chart-reset-btn svg,.chart-focus-btn svg{display:block}.chart-focus-btn:disabled{opacity:.35;cursor:not-allowed}.chart-focus-btn:disabled:hover{border-color:var(--border);color:var(--text)}.chart-focus-btn.is-active{color:#4da3ff;border-color:#4da3ffa6;background:#3d7eff38}.chart-focus-btn.is-active:hover{color:#9ec0ff;border-color:#4da3ff}.chart-stitch-btn{font-size:.78rem;letter-spacing:-.06em}.chart-stitch-btn:disabled{opacity:.35;cursor:not-allowed}.chart-stitch-btn:disabled:hover{border-color:var(--border);color:var(--text)}.chart-stitch-btn.is-active{color:#ff9f43;border-color:#ff9f43b3;background:#ff9f432e}.chart-stitch-btn.is-active:hover{color:#ffc078;border-color:#ff9f43}.chart-zoom-btn:hover{border-color:#4da3ff;color:#9ec0ff}.chart-box-main{height:520px}.chart-box-detail{height:440px}.detail-chart-section{margin-top:16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 16px 16px}.detail-chart-hint{margin:8px 0 0;font-size:.78rem}.detail-chart-hint .compare-meta{display:inline-block;margin-right:8px;margin-left:0}.chart-hint{margin:6px 0 0;font-size:.78rem}.compare-meta{margin-left:auto}.hint-inline{font-size:.78rem;color:var(--muted)}.targets-section{margin-top:16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px}.targets-section.hidden{display:none}.targets-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}@media(max-width:1100px){.targets-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.targets-grid{grid-template-columns:1fr}}.target-card{border:1px solid var(--border);border-radius:10px;padding:10px;background:#121822;transition:border-color .15s ease,box-shadow .15s ease;position:relative}.target-card:has(input:checked){border-color:#1b8a4a;box-shadow:0 0 0 1px #1b8a4a8c,0 0 14px #22a05a59}.target-rank-badge{position:absolute;top:8px;right:8px;z-index:2;display:inline-flex;align-items:center;justify-content:center;min-width:1.35em;height:1.35em;padding:0 5px;border-radius:999px;font-size:.72rem;font-weight:700;line-height:1;color:#04140a;background:#3ecf7a;pointer-events:none}.target-card.match-rank-1 .target-rank-badge{background:#1b8a4a;color:#e8fff0}.target-card.match-rank-2 .target-rank-badge{background:#6ecf95;color:#06210f}.target-card.match-rank-rest .target-rank-badge{background:#3a4555;color:#c5ced9;font-weight:600}.target-card:has(input:checked) .target-rank-badge{background:#1b8a4a;color:#e8fff0}.target-match-metrics{display:block;margin:2px 0 6px;font-size:.72rem;line-height:1.35;color:var(--muted)}.match-rank-summary{display:none}.target-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-right:1.75em;cursor:pointer;font-size:.82rem}.target-title{line-height:1.3}.mini-chart{width:100%;height:120px}.simulate-bar{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}.simulate-bar #train-btn{min-width:120px;padding-left:32px;padding-right:32px}.sim-history-wrap{margin-left:auto;display:flex;align-items:center;gap:8px}.sim-history-wrap.hidden{display:none}.sim-history-label{color:var(--muted);font-size:.85rem;white-space:nowrap}.sim-history-select{min-width:280px;max-width:min(520px,56vw);padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:#0f141cd9;color:var(--text);font-size:.85rem;cursor:pointer}.sim-history-select:focus{outline:none;border-color:var(--primary)}.sim-export-btn{white-space:nowrap}.train-progress{margin-top:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#0f141ca6}.simulate-progress{margin-top:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#0f141ca6;display:flex;flex-direction:column;gap:12px}.progress-bar-head{display:flex;align-items:center;gap:10px;margin-bottom:6px;font-size:.85rem}.progress-bar-name{color:var(--text);font-weight:600;min-width:4.5em}.progress-bar-status{flex:1;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-bar-meta{color:var(--muted);white-space:nowrap;font-size:.8rem}.progress-bar-track{width:100%;height:8px;border-radius:999px;background:#101a28;border:1px solid #2a3a52;overflow:hidden}.progress-bar-fill{height:100%;width:0;border-radius:999px;transition:width .25s ease}.progress-bar--train .progress-bar-fill,.progress-bar--train.is-active .progress-bar-fill,.progress-bar--train.is-done .progress-bar-fill{background:linear-gradient(90deg,#00a85f,#00d47a)}.progress-bar--train.is-error .progress-bar-fill{background:linear-gradient(90deg,#c0392b,#ff6b6b)}.progress-bar--train.is-error .progress-bar-status{color:#ffb4b4}.progress-bar--forecast .progress-bar-fill{background:linear-gradient(90deg,#2a4cff,#5b7fff)}.progress-bar--forecast.is-waiting .progress-bar-fill{background:#1e2a3d}.progress-bar--forecast.is-waiting .progress-bar-status{color:#6b7a90}.progress-bar--forecast.is-active .progress-bar-fill,.progress-bar--forecast.is-done .progress-bar-fill{background:linear-gradient(90deg,#2a4cff,#5b7fff)}.progress-bar--forecast.is-error .progress-bar-fill{background:linear-gradient(90deg,#c0392b,#ff6b6b)}.progress-bar--forecast.is-error .progress-bar-status{color:#ffb4b4}.train-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:.85rem}.train-progress-label{color:var(--text)}.train-progress-meta{color:var(--muted);white-space:nowrap}.train-progress-track{width:100%;height:10px;border-radius:999px;background:#101a28;border:1px solid #2a3a52;overflow:hidden}.train-progress-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#00a85f,#00d47a);transition:width .25s ease}.train-progress.is-active .train-progress-fill{background:linear-gradient(90deg,#2a4cff,#5b7fff)}.train-progress.is-done .train-progress-fill{background:linear-gradient(90deg,#00a85f,#00d47a)}.train-progress.is-error .train-progress-fill{background:linear-gradient(90deg,#c0392b,#ff6b6b)}.train-progress.is-error .train-progress-label{color:#ffb4b4}.train-modal-card{width:min(532px,92vw);max-height:min(82vh,760px);display:flex;flex-direction:column;overflow:auto}.train-modal-loading{padding:28px 8px 20px;text-align:center}.train-modal-loading-text{margin:0 0 14px;color:var(--muted);font-size:.9rem}.train-modal-loading-track{width:100%;height:6px;border-radius:999px;background:#101a28;border:1px solid #2a3a52;overflow:hidden}.train-modal-loading-fill{width:42%;height:100%;border-radius:999px;background:linear-gradient(90deg,#3d7eff,#5b9aff);animation:train-modal-loading-slide 1.2s ease-in-out infinite}@keyframes train-modal-loading-slide{0%{transform:translate(-120%)}to{transform:translate(320%)}}.train-modal-body.is-loading,.train-modal-actions .btn.hidden{display:none}#train-modal{z-index:1100}#feature-modal{z-index:1150}#modal,#train-preset-name-modal{z-index:1500}.feature-modal-card{width:min(560px,92vw);max-height:min(78vh,680px);display:flex;flex-direction:column;overflow:hidden}.feature-modal-card .modal-head{flex-shrink:0;margin-bottom:10px}.load-form{display:flex;flex-direction:column;gap:14px;margin-bottom:8px}.load-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.load-label{min-width:72px;font-weight:600;color:var(--text-muted, #9aa3b2)}.load-file-path{flex:1 1 120px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.load-file-status{flex:0 0 auto;font-size:.88rem;font-weight:600;white-space:nowrap}.load-file-status.is-ok{color:var(--accent, #00b86c)}.load-file-status.is-bad{color:var(--danger, #ff6b6b)}.load-level-tag{display:inline-flex;align-items:center;padding:4px 12px;border-radius:6px;background:#4caf5033;color:#8fd99a;font-weight:600;font-size:.9rem}.load-level-hint{font-size:.82rem}.load-field{display:flex;flex-direction:column;gap:6px;min-width:200px}.load-field select{padding:8px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.12);background:#00000040;color:var(--text);min-width:4.5em;color-scheme:dark}.load-field select option{color:#1a2433;background:#e8edf5}.load-field select option:checked,.load-field select option:hover{color:#1a4fb8;background:#d4e4ff}.load-tips{margin-top:2px;padding:10px 12px;border-radius:8px;border:1px solid rgba(255,193,7,.28);background:#ffc10714}.load-tips-title{margin:0 0 6px;font-size:.84rem;font-weight:600;color:#f0c674}.load-tips-list{margin:0;padding-left:1.15em;font-size:.8rem;line-height:1.5;color:var(--muted)}#load-modal .load-tips-title{font-size:.78rem}#load-modal .load-tips-list{font-size:.74rem}.load-tips-list li+li{margin-top:4px}.load-tips-list strong{color:#e8edf5;font-weight:600}.load-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:12px}.compare-modal-card{width:min(560px,92vw)}.compare-modal-body{display:flex;flex-direction:column;gap:14px}.compare-pick-row{display:flex;align-items:flex-start;gap:12px}.compare-pick-row .btn-primary{flex:0 0 auto;align-self:flex-start}.file-source-actions{display:flex;flex-wrap:wrap;gap:8px;flex:0 0 auto;align-self:flex-start}.load-row-file .file-source-actions{margin-left:auto}#user-csv-pick-modal{z-index:1450}.user-csv-pick-card{width:min(520px,94vw);max-height:84vh;display:flex;flex-direction:column}.user-csv-pick-hint{margin:0 0 10px;font-size:.86rem}.user-csv-pick-list{flex:1 1 auto;min-height:120px;max-height:48vh;overflow:auto;border:1px solid var(--border);border-radius:10px;background:#0003}.user-csv-pick-item{display:flex;width:100%;align-items:center;gap:10px;padding:10px 12px;margin:0;border:none;border-bottom:1px solid rgba(42,52,70,.85);border-radius:0;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}.user-csv-pick-item:hover{background:#ffffff0a}.user-csv-pick-item:last-child{border-bottom:none}.user-csv-pick-meta{flex:1 1 auto;min-width:0}.user-csv-pick-name{display:block;font-size:.9rem;word-break:break-all}.user-csv-pick-sub{display:block;margin-top:2px;font-size:.78rem;color:var(--muted)}.user-csv-pick-msg{min-height:1.2em;margin:10px 0 0;font-size:.85rem}.user-csv-pick-msg.is-error{color:var(--danger)}.compare-file-status{flex:1 1 auto;min-width:0;min-height:2.4em;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:#121820;font-size:.86rem;line-height:1.45;white-space:normal;word-break:break-word}.compare-file-status.is-warn{color:#ffd28a;border-color:#ffb04073;background:#ffb04014}.compare-file-status.is-error{color:#ffb4b4;border-color:#ff6b6b73;background:#ff6b6b14}.compare-modal-tips{margin-top:0}.train-modal-head{flex-wrap:nowrap;gap:16px;margin-bottom:10px}.train-modal-head h3{flex:1 1 auto;min-width:0;white-space:nowrap;font-size:1.05rem}.train-model-badge{flex-shrink:0;font-size:.82rem;font-weight:600;color:#9ec0ff;padding:5px 10px;border-radius:999px;border:1px solid rgba(61,126,255,.35);background:#3d7eff1f;white-space:nowrap}.train-field-locked .train-locked-value{display:inline-block;padding:6px 10px;border-radius:6px;border:1px solid var(--border);background:#121820;color:var(--muted);min-width:4.5em}.train-field-locked .train-locked-value:after{content:"（固定）";margin-left:6px;font-size:.78rem;color:#6b7a90}.train-auto-row{display:flex;justify-content:center;align-items:center;gap:8px;margin:2px 0 10px;flex-wrap:wrap}.train-default-row{margin-top:2px;margin-bottom:8px}.train-save-row{margin-top:0;margin-bottom:12px}.train-default-label{color:var(--muted);font-size:.88rem;white-space:nowrap;margin-right:2px}.train-auto-btn{flex:0 1 auto;max-width:108px;min-width:72px;padding:6px 12px;white-space:nowrap;background:#f5c518;color:#1a1200;border:1px solid #d4a80f;font-weight:600;font-size:.84rem}.train-auto-btn:hover:not(:disabled){background:#ffd84a;border-color:#e8bc1a;color:#1a1200}.config-name-highlight{color:#ffd84a;font-weight:700}.train-save-config-btn{flex:0 1 auto;max-width:108px;min-width:84px;padding:6px 12px;white-space:nowrap;background:var(--primary);color:#fff;border:1px solid #2f6de0;font-weight:600;font-size:.84rem}.train-save-config-btn:hover:not(:disabled){background:#5a94ff;border-color:#4a86f5;color:#fff}.train-preset-group{display:flex;align-items:center;gap:6px;flex:1 1 180px;min-width:160px;max-width:220px}.train-preset-select{flex:1;min-width:0;padding:6px 10px;border-radius:8px;border:1px solid var(--border);background:#0f141c;color:var(--text);font-size:.84rem}.train-preset-select:focus{outline:none;border-color:var(--primary)}.train-preset-select:disabled{opacity:.55;cursor:not-allowed}.train-preset-delete-btn{flex:0 0 auto;padding:6px 10px;white-space:nowrap;font-size:.82rem;color:#ffb4b4;border:1px solid #5a3030;background:#2a1818}.train-preset-delete-btn:hover:not(:disabled){color:#ffd0d0;border-color:#7a4040;background:#3a2020}.train-preset-delete-btn:disabled{opacity:.45;cursor:not-allowed}.train-preset-name-card{max-width:360px}.train-preset-name-hint{margin:0 0 12px;font-size:.88rem}.train-preset-name-input{width:100%;box-sizing:border-box;padding:8px 10px;margin-bottom:16px;border-radius:8px;border:1px solid var(--border);background:#0f141c;color:var(--text);font-size:.92rem}.train-preset-name-input:focus{outline:none;border-color:var(--primary)}.train-preset-name-actions{justify-content:flex-end}.train-form{display:flex;flex-direction:column;gap:12px}.train-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.train-field{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.88rem}.train-field input,.train-field select{padding:6px 8px;border-radius:6px;border:1px solid var(--border);background:#0f141c;color:var(--text)}.train-field input[type=number]{width:72px}.train-inline{color:var(--muted);font-size:.82rem}.train-check{display:flex;align-items:center;gap:8px;font-size:.88rem;color:var(--muted)}.feature-panel{flex:1;min-height:0;border:1px solid var(--border);border-radius:8px;padding:10px;overflow:auto;background:#0f141c73}.feature-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.feature-tab{border:1px solid var(--border);background:transparent;color:var(--muted);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:.82rem}.feature-tab.active{color:var(--text);border-color:#3d7eff;background:#3d7eff1f}.tsdna-time-toolbar{margin-bottom:8px}.tsdna-time-hint{margin:0 0 8px;font-size:.8rem;color:var(--muted);line-height:1.45}.tsdna-time-categories{display:flex;flex-direction:column;gap:8px}.tsdna-time-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tsdna-time-cat{border:1px solid var(--border);border-radius:8px;padding:6px 8px;background:#3d7eff0f}.tsdna-time-cat-label{display:block;font-size:.78rem;margin-bottom:4px}.tsdna-time-cat-actions{display:flex;gap:6px}.btn-cat-mini{padding:3px 10px;font-size:.72rem;line-height:1.3;border-radius:6px}.btn-cat-select.btn-cat-all{border-color:#00b86ca6;background:#00b86c2e;color:#7dffc4}.btn-cat-select.btn-cat-partial{border-color:#ffc107a6;background:#ffc10724;color:#ffe08a}.feature-panel-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.85rem}.feature-bulk-actions{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0}.feature-cascade-toggle{display:inline-flex;align-items:center;gap:4px;margin-right:4px;font-size:.78rem;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.feature-cascade-toggle input{margin:0;accent-color:var(--primary);cursor:pointer}.feature-cascade-toggle:has(input:checked){color:#9ec0ff}#feature-all-btn.btn-cat-all{border-color:#00b86ca6;background:#00b86c2e;color:#7dffc4}#feature-all-btn.btn-cat-partial{border-color:#ffc107a6;background:#ffc10724;color:#ffe08a}.tsdna-time-group h4{margin:10px 0 6px;font-size:.82rem;color:#9ec0ff}.train-field select{min-width:88px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:#0f141c;color:var(--text)}.feature-list label{display:flex;align-items:center;gap:8px;font-size:.82rem;padding:4px 0}.simulate-bar label,.output-days-readout{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.9rem}.output-days-value{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.output-days-value.is-invalid{color:var(--danger)}.days-stepper{display:inline-flex;align-items:center;gap:4px}.days-stepper-btn{width:28px;height:32px;padding:0;border:1px solid var(--border);border-radius:6px;background:#0f141cd1;color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation;-webkit-user-select:none;user-select:none}.days-stepper-btn:hover:not(:disabled){border-color:#4da3ff;color:#9ec0ff}.days-stepper-btn:disabled{opacity:.38;cursor:not-allowed}.days-stepper-tri{display:block;width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent}.days-stepper-tri-left{border-right:7px solid currentColor}.days-stepper-tri-right{border-left:7px solid currentColor}.simulate-bar input[type=number]{width:70px;padding:8px 6px;border-radius:8px;border:1px solid var(--border);background:#0f141c;color:var(--text);text-align:center;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.simulate-bar input[type=number]::-webkit-inner-spin-button,.simulate-bar input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btn{border:none;border-radius:8px;padding:10px 16px;font-size:.9rem;cursor:pointer}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-accent{background:var(--accent);color:#04140d;font-weight:600}.btn-danger{background:#e04b4b;color:#fff;font-weight:600}.btn-danger:disabled{opacity:.45}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border);padding:6px 12px;font-size:.82rem}.btn-sm{padding:5px 10px;font-size:.8rem}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:#4a5a72}.btn-ghost:disabled{opacity:.4}.file-btn{display:inline-flex;align-items:center}.table-wrap{max-height:420px;overflow:auto;border:1px solid var(--border);border-radius:8px}.placeholder{padding:24px 16px;margin:0;color:var(--muted);text-align:center}.data-table{width:100%;border-collapse:collapse;font-size:.82rem}.data-table th,.data-table td{border-bottom:1px solid var(--border);padding:8px 10px;text-align:left;white-space:nowrap}.data-table th{position:sticky;top:0;background:#1d2635}.preview-note{padding:8px 12px;margin:0}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:1400;padding:16px}.modal.hidden{display:none}.modal-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px}#modal>.modal-card{width:min(340px,92vw);padding:18px 20px;border-radius:10px}#modal>.modal-card h3{margin:0 0 10px;font-size:1rem}#modal>.modal-card p{margin:0 0 14px;font-size:.92rem;line-height:1.55}#modal>.modal-card>#modal-close{width:100%;padding:8px 12px;font-size:.9rem}.modal-card.load-modal-card{width:min(629px,92vw)}.modal-card-wide{width:min(920px,100%);max-height:min(82vh,760px);display:flex;flex-direction:column}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.modal-head h3{margin:0}.preview-modal-meta{margin:0 0 10px}.preview-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}.preview-tab{border:1px solid var(--border);background:#ffffff0a;color:var(--muted)}.preview-tab.is-active{border-color:var(--primary);background:#3d7eff2e;color:var(--text)}.preview-modal-body{flex:1;min-height:240px;max-height:calc(82vh - 180px)}.modal-card h3{margin:0 0 10px}.modal-card p{margin:0 0 16px;color:var(--muted);line-height:1.6}.modal-actions{display:flex;justify-content:flex-end;gap:10px}.modal-actions .btn{min-width:88px}body:not(.is-csv-editor) .workspace-back-btn{display:none}body.is-csv-editor .workspace-csv-btn,body.is-csv-editor .workspace-load-btn{display:none}.csv-editor-view{margin-top:8px;padding:4px 0 24px}.csv-editor-gate{text-align:center;padding:64px 24px;border:1px dashed var(--border);border-radius:12px;background:#171e2999}.csv-editor-gate-title{margin:0 0 8px;font-size:1.15rem}.csv-editor-gate .btn{margin-top:18px}.csv-editor-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:8px}.csv-editor-toolbar h2{margin:0 0 4px;font-size:1.15rem}.csv-editor-limits{margin:0;font-size:.85rem}.csv-editor-toolbar-actions{display:flex;flex-wrap:wrap;gap:8px}.csv-editor-hint{margin:0 0 14px;font-size:.86rem;line-height:1.55}.csv-editor-table-wrap,.csv-preview-table-wrap{overflow:auto;border:1px solid var(--border);border-radius:10px;background:var(--panel);max-height:min(62vh,560px)}.csv-editor-table{width:100%;border-collapse:collapse;font-size:.88rem}.csv-editor-table th,.csv-editor-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}.csv-editor-table th{position:sticky;top:0;background:#1c2431;z-index:1;color:var(--muted);font-weight:600}.csv-col-name{word-break:break-all;max-width:280px}.csv-file-actions{display:flex;flex-wrap:wrap;gap:6px}.csv-lock-btn.is-locked{color:#f0c674;border-color:#f0c67473}#app button.csv-lock-btn.is-locked,body button.csv-lock-btn.is-locked{color:#f0c674!important;border-color:#f0c67473!important}.csv-editor-msg{margin:12px 0 0;min-height:1.2em;font-size:.88rem;color:var(--muted)}.csv-editor-msg.is-error{color:var(--danger)}.csv-preview-card{width:min(960px,96vw)}.csv-preview-pager{display:flex;align-items:center;gap:12px;margin-top:12px}.csv-edit-card{width:min(1100px,98vw);max-height:92vh;display:flex;flex-direction:column;padding:16px;overflow:visible}.csv-edit-actions{display:flex;flex-wrap:wrap;gap:8px;position:relative;z-index:2}.csv-edit-actions .btn-ghost{color:var(--text);border-color:var(--border);text-shadow:none;box-shadow:none}.csv-edit-actions .btn-ghost:hover{color:#fff;border-color:#e8edf573}#csv-edit-maximize{color:var(--text);background:transparent}#csv-edit-maximize.is-active{color:#fff;background:#3d7eff47;border-color:var(--primary)}.luckysheet-host{flex:1;min-height:420px;height:calc(92vh - 120px);position:relative;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff;z-index:1}#csv-edit-modal.is-maximized{padding:0;align-items:stretch;justify-content:stretch;background:#000000b8}#csv-edit-modal.is-maximized .csv-edit-card{width:100%;max-width:none;height:100%;max-height:none;border-radius:0;border:none;padding:12px 16px 16px}#csv-edit-modal.is-maximized .luckysheet-host{min-height:0;height:auto;flex:1;border-radius:0}#csv-edit-modal,#csv-preview-modal,#csv-create-modal{z-index:1600}body.temflow-csv-editing .luckysheet-cols-menu,body.temflow-csv-editing .luckysheet-rightclick-menu,body.temflow-csv-editing .luckysheet-filter-options,body.temflow-csv-editing .luckysheet-filter-menu,body.temflow-csv-editing .luckysheet-modal-dialog-slider,body.temflow-csv-editing .luckysheet-modal-dialog,body.temflow-csv-editing .luckysheet-wa-editor,body.temflow-csv-editing .luckysheet-input-box,body.temflow-csv-editing #luckysheet-icon-more-menu,body.temflow-csv-editing .luckysheet-toolbar-menu-button{z-index:3200!important}body.temflow-csv-editing #luckysheet-icon-more,body.temflow-csv-editing .luckysheet-icon-more,body.temflow-csv-editing #luckysheet-icon-more-menu{display:none!important;visibility:hidden!important;pointer-events:none!important}#csv-create-modal input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#0f141c;color:var(--text)}#csv-dirty-modal,#csv-saved-modal{z-index:3400}#app button.btn,body button.btn{border-radius:8px!important;height:auto!important;min-height:0!important;line-height:1.25!important;font-size:.9rem!important;font-weight:500!important;margin:0!important;padding:10px 16px!important;vertical-align:middle!important;cursor:pointer!important;list-style:none!important;outline:none}#app button.btn-ghost,body button.btn-ghost{padding:6px 12px!important;font-size:.82rem!important;background:transparent!important;color:var(--muted)!important;border:1px solid var(--border)!important;border-style:solid!important;border-width:1px!important}#app button.btn-ghost.workspace-csv-btn,body button.btn-ghost.workspace-csv-btn,#app button.btn-ghost.workspace-back-btn,body button.btn-ghost.workspace-back-btn{color:#f0c674!important;border-color:#f0c67473!important}#app button.btn-ghost.workspace-csv-btn:hover:not(:disabled),body button.btn-ghost.workspace-csv-btn:hover:not(:disabled),#app button.btn-ghost.workspace-back-btn:hover:not(:disabled),body button.btn-ghost.workspace-back-btn:hover:not(:disabled){color:#f5d78a!important;border-color:#f0c674b3!important}#app button.btn-sm,body button.btn-sm{padding:5px 10px!important;font-size:.8rem!important}#app button.btn-primary,body button.btn-primary{background:var(--primary)!important;color:#fff!important;border:none!important;border-width:0!important}#app button.btn-accent,body button.btn-accent{background:var(--accent)!important;color:#04140d!important;font-weight:600!important;border:none!important;border-width:0!important}#app button.btn-danger,body button.btn-danger{background:#e04b4b!important;color:#fff!important;font-weight:600!important;border:none!important}@font-face{font-family:Noto Sans SC Local;src:url(/fonts/noto-sans-sc-regular.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Noto Sans SC Local;src:url(/fonts/noto-sans-sc-bold.otf) format("opentype");font-weight:700;font-style:normal;font-display:swap}:root{--site-ink: #071019;--site-ink-2: #0d1a24;--site-mist: #9eb0c0;--site-paper: #e8f0f4;--site-line: rgba(120, 190, 200, .22);--site-teal: #2ec4b6;--site-teal-dim: rgba(46, 196, 182, .15);--site-copper: #d4a373;--site-brand: #a0183a;--site-font-brand: "Noto Sans SC Local", "PingFang SC", "Microsoft YaHei", sans-serif;--site-font-body: "Noto Sans SC Local", "PingFang SC", "Microsoft YaHei", sans-serif}html[data-route=app] #site-landing,html[data-route=site] #app{display:none!important}.site-landing{min-height:100vh;display:flex;flex-direction:column;color:var(--site-paper);font-family:var(--site-font-body);background:radial-gradient(ellipse 90% 60% at 70% 10%,rgba(46,196,182,.12),transparent 55%),radial-gradient(ellipse 70% 50% at 10% 80%,rgba(212,163,115,.08),transparent 50%),linear-gradient(165deg,var(--site-ink) 0%,var(--site-ink-2) 48%,#061018 100%);position:relative;overflow-x:hidden}.site-landing:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--site-line) 1px,transparent 1px),linear-gradient(90deg,var(--site-line) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.55),transparent 70%);mask-image:linear-gradient(180deg,rgba(0,0,0,.55),transparent 70%);pointer-events:none;opacity:.45;animation:site-grid-drift 28s linear infinite}.site-landing.site-motion-reset:before{animation:none!important}@keyframes site-grid-drift{0%{background-position:0 0}to{background-position:48px 48px}}.site-nav{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px clamp(20px,4vw,48px);max-width:1120px;margin:0 auto;width:100%}.site-nav-brand{font-family:var(--site-font-brand);font-size:1.35rem;font-weight:700;letter-spacing:.12em;color:var(--site-brand);text-decoration:none;border:none;background:none;cursor:pointer;padding:0}.site-nav-links{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap;justify-content:flex-end}.site-nav-links a,.site-nav-links button.site-link{color:var(--site-mist);text-decoration:none;font-size:.92rem;background:none;border:none;cursor:pointer;padding:4px 0;font-family:inherit}.site-nav-links a:hover,.site-nav-links button.site-link:hover{color:var(--site-teal)}.site-auth-cluster{display:inline-flex;align-items:center;gap:12px}.site-auth-email{color:var(--site-mist);font-size:.88rem;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-link.is-disabled,.site-link:disabled{opacity:.45;cursor:not-allowed}.site-btn{display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:1px solid transparent;font-family:inherit;font-weight:500;cursor:pointer;text-decoration:none;transition:transform .25s ease,background .25s ease,border-color .25s ease,box-shadow .25s ease}.site-btn-primary{background:var(--site-teal);color:#04201c;padding:.7rem 1.35rem;font-size:.95rem}.site-btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 28px #2ec4b640}.site-btn-ghost{background:transparent;color:var(--site-paper);border-color:#9eb0c059;padding:.65rem 1.2rem}.site-btn-ghost:hover{border-color:var(--site-teal);color:var(--site-teal)}.site-home{position:relative;z-index:1;flex:1;display:flex;flex-direction:column}.site-hero{min-height:min(88vh,820px);display:grid;align-items:end;padding:clamp(32px,8vh,72px) clamp(20px,4vw,48px) clamp(40px,8vh,80px);max-width:1120px;margin:0 auto;width:100%;position:relative}.site-hero-visual{position:absolute;top:8%;right:0;bottom:0;left:0;pointer-events:none;opacity:0;animation:site-fade-in 1.1s ease .15s forwards}.site-hero-visual svg{width:100%;height:100%;max-height:520px}.site-hero-copy{position:relative;z-index:1;max-width:36rem;opacity:0;transform:translateY(16px);animation:site-rise .9s ease .05s forwards}@keyframes site-fade-in{to{opacity:1}}@keyframes site-rise{to{opacity:1;transform:translateY(0)}}.site-hero-brand{margin:0 0 1rem;font-family:var(--site-font-brand);font-size:clamp(2.8rem,8vw,4.6rem);font-weight:700;letter-spacing:.14em;line-height:1.1;color:var(--site-paper)}.site-hero-title{margin:0 0 .85rem;font-family:var(--site-font-brand);font-size:clamp(1.25rem,3vw,1.65rem);font-weight:500;letter-spacing:.06em;color:var(--site-copper)}.site-hero-lead{margin:0 0 .85rem;font-size:1.05rem;line-height:1.65;color:var(--site-mist);max-width:28rem}.site-hero-boast{margin:0 0 1.75rem;max-width:34rem;font-size:.92rem;line-height:1.55;letter-spacing:.02em;color:var(--site-teal)}.site-hero-cta{display:flex;flex-wrap:wrap;gap:12px}.site-section{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:56px clamp(20px,4vw,48px) 72px;width:100%;border-top:1px solid rgba(158,176,192,.12)}.site-section h2{margin:0 0 .75rem;font-family:var(--site-font-brand);font-size:1.55rem;font-weight:700;letter-spacing:.08em}.site-tech-boast{margin:0 0 1.35rem!important;max-width:40rem;line-height:1.75;color:var(--site-paper)!important;font-size:1.02rem!important}.site-section p{margin:0;max-width:40rem;line-height:1.7;color:var(--site-mist);font-size:1rem}.site-section-note{margin-top:1.25rem!important;font-size:.9rem!important;color:#9eb0c0d9!important}.site-term-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.1rem;max-width:40rem}.site-term-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .85rem;padding-bottom:1rem;border-bottom:1px solid rgba(158,176,192,.12)}.site-term-name{font-family:var(--site-font-brand);font-weight:700;font-size:1.05rem;color:var(--site-paper);letter-spacing:.04em}.site-term-code{font-size:.85rem;color:var(--site-teal);letter-spacing:.06em}.site-term-en{flex-basis:100%;font-size:.86rem;color:#9eb0c0bf}.site-legal{position:relative;z-index:1;flex:1;max-width:720px;margin:0 auto;padding:40px clamp(20px,4vw,48px) 64px;width:100%}.site-legal h1{margin:0 0 1.25rem;font-family:var(--site-font-brand);font-size:1.75rem;letter-spacing:.08em}.site-legal-body{white-space:pre-wrap;line-height:1.75;color:var(--site-mist);font-size:.95rem}.site-legal-back{margin-bottom:1.5rem}.site-footer{position:relative;z-index:1;margin-top:auto;border-top:1px solid rgba(158,176,192,.14);padding:28px clamp(20px,4vw,48px) 36px;background:#00000038}.site-footer-inner{max-width:1120px;margin:0 auto;display:flex;flex-wrap:wrap;gap:16px 28px;align-items:center;justify-content:space-between}.site-footer-links{display:flex;flex-wrap:wrap;gap:10px 20px}.site-footer-links a,.site-footer-links button.site-link{color:var(--site-mist);font-size:.88rem;text-decoration:none;background:none;border:none;cursor:pointer;font-family:inherit;padding:0}.site-footer-links a:hover,.site-footer-links button.site-link:hover{color:var(--site-teal)}.site-footer-copy{margin:0;font-size:.82rem;color:#9eb0c0b3}.workspace-home-btn{flex-shrink:0}@media(max-width:720px){.site-nav{flex-direction:column;align-items:flex-start}.site-hero{align-items:center;min-height:78vh}.site-hero-visual{opacity:.55}}
