.uploader[data-v-cad9454e]{display:flex;flex-direction:column;gap:6px}.drop[data-v-cad9454e]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 16px;min-height:200px;border:1px dashed #999;background:#fafafa;color:#888;cursor:pointer;transition:border-color .15s,background .15s}.drop[data-v-cad9454e]:hover{border-color:#1a1a1a;background:#f5f5f3}.drop input[data-v-cad9454e]{display:none}.plus[data-v-cad9454e]{font-size:32px;font-weight:200;color:#999;line-height:1}.hint[data-v-cad9454e]{font-size:12px;color:#888;letter-spacing:.5px}.compact .drop[data-v-cad9454e]{min-height:110px;padding:14px 8px}.compact .plus[data-v-cad9454e]{font-size:22px}.compact .hint[data-v-cad9454e]{font-size:11px}.square .drop[data-v-cad9454e]{aspect-ratio:1;min-height:0}.preview[data-v-cad9454e]{position:relative;background:#fafafa}.preview img[data-v-cad9454e]{display:block;width:100%;max-height:320px;object-fit:contain}.compact .preview img[data-v-cad9454e]{max-height:130px}.square .preview img[data-v-cad9454e]{aspect-ratio:1;object-fit:cover;max-height:none}.remove[data-v-cad9454e]{position:absolute;top:6px;right:6px;width:24px;height:24px;padding:0;border:none;border-radius:50%;background:#0000008c;color:#fff;font-size:16px;line-height:24px}.remove[data-v-cad9454e]:hover{background:#c0392be6}.err[data-v-cad9454e]{font-size:11px;color:#c0392b;letter-spacing:.3px}.login-page[data-v-7c7e94bf]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#fafafa;padding:20px}.login-card[data-v-7c7e94bf]{background:#fff;width:100%;max-width:420px;padding:56px 48px;border:1px solid #ebebeb}h1[data-v-7c7e94bf]{font-family:var(--serif);font-size:32px;font-weight:500;letter-spacing:.5px;text-align:center;margin:0 0 12px;color:#1a1a1a}.lead[data-v-7c7e94bf]{text-align:center;font-style:italic;color:#888;font-size:13px;margin:0 0 36px}.form[data-v-7c7e94bf]{display:flex;flex-direction:column;gap:20px}.field[data-v-7c7e94bf]{display:flex;flex-direction:column;gap:6px}.field span[data-v-7c7e94bf]{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:#888}.field input[data-v-7c7e94bf]{padding:10px 12px;font-size:14px;border:1px solid #d4d4d4;background:#fff;color:#1a1a1a}.field input[data-v-7c7e94bf]:focus{outline:none;border-color:#1a1a1a}.error[data-v-7c7e94bf]{padding:10px;background:#fdedec;color:#c0392b;font-size:12px;letter-spacing:.3px}.btn-submit[data-v-7c7e94bf]{margin-top:8px;background:#1a1a1a;color:#fff;font-size:14px;font-weight:400;letter-spacing:3px;padding:14px 0;border:none;border-radius:0}.btn-submit[data-v-7c7e94bf]:hover:not(:disabled){background:#000}.btn-submit[data-v-7c7e94bf]:disabled{background:#ccc;cursor:not-allowed}.page[data-v-f87ea3e9]{max-width:1200px;margin:0 auto;padding:0 24px 80px}.hero[data-v-f87ea3e9]{text-align:center;padding:60px 0 40px;border-bottom:1px solid #ebebeb}.hero h1[data-v-f87ea3e9]{font-family:var(--serif);font-size:44px;font-weight:500;letter-spacing:.5px;color:var(--ink);margin:0 0 16px}.lead[data-v-f87ea3e9]{font-style:italic;color:#666;font-size:15px;margin:0 auto;max-width:600px}.logout-btn[data-v-f87ea3e9]{position:absolute;top:24px;right:24px;font-size:11px;letter-spacing:1px;text-transform:uppercase;background:transparent;border:none;color:#888;cursor:pointer;padding:4px 8px}.logout-btn[data-v-f87ea3e9]:hover{color:var(--ink)}.hero[data-v-f87ea3e9]{position:relative}.layout[data-v-f87ea3e9]{display:grid;grid-template-columns:1fr 360px;gap:48px;margin-top:48px}@media (max-width: 980px){.layout[data-v-f87ea3e9]{grid-template-columns:1fr}}.step[data-v-f87ea3e9]{margin-bottom:56px}.step-title[data-v-f87ea3e9]{display:flex;align-items:center;gap:14px;margin-bottom:20px}.num[data-v-f87ea3e9]{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--ink);border-radius:50%;font-family:var(--serif);font-size:14px;color:var(--ink)}.step h2[data-v-f87ea3e9]{font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:2.5px;color:var(--ink);margin:0}.sub[data-v-f87ea3e9]{font-size:13px;font-style:italic;color:#888;margin:-8px 0 16px 42px}.flow-toggle[data-v-f87ea3e9]{display:flex;gap:28px;margin-bottom:16px}.flow-toggle label[data-v-f87ea3e9]{display:flex;align-items:center;gap:8px;font-size:13px;letter-spacing:.5px;color:var(--ink-soft);cursor:pointer}.flow-toggle input[data-v-f87ea3e9]{accent-color:var(--ink)}.pair-grid[data-v-f87ea3e9]{display:grid;grid-template-columns:1fr 1fr;gap:14px}.builder-hint[data-v-f87ea3e9]{font-size:13px;font-style:italic;color:#888;margin:0 0 18px;letter-spacing:.3px}.req[data-v-f87ea3e9]{color:var(--danger);font-weight:500}.hint-inline[data-v-f87ea3e9]{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--danger)}.body-hint[data-v-f87ea3e9]{font-size:12px;font-style:italic;color:#888;margin:0 0 10px;letter-spacing:.3px}.modules[data-v-f87ea3e9]{display:flex;flex-direction:column;gap:1px;background:#ebebeb;border:1px solid #ebebeb}.mod[data-v-f87ea3e9]{background:#fff}.mod.required .mod-head[data-v-f87ea3e9],.mod.enabled .mod-head[data-v-f87ea3e9]{border-left:3px solid var(--ink);padding-left:13px}.mod.enabled.collapsed .mod-head[data-v-f87ea3e9],.mod.required.collapsed.has-data .mod-head[data-v-f87ea3e9]{border-left-color:#888}.mod.required:not(.has-data):not(.collapsed) .mod-head[data-v-f87ea3e9]{border-left-color:var(--danger)}.mod.locked[data-v-f87ea3e9]{opacity:.5}.dot-marker[data-v-f87ea3e9]{display:inline-flex;width:10px;height:10px;border:1.5px solid #999;border-radius:50%;background:#fff;flex-shrink:0}.dot-marker.filled[data-v-f87ea3e9]{background:var(--ink);border-color:var(--ink)}.mod-head[data-v-f87ea3e9]{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.mod-head[data-v-f87ea3e9]:hover{background:#fafafa}.check[data-v-f87ea3e9]{display:inline-flex;align-items:center;cursor:pointer}.check input[data-v-f87ea3e9]{display:none}.check-box[data-v-f87ea3e9]{width:16px;height:16px;border:1.5px solid #999;background:#fff;position:relative}.check input:checked+.check-box[data-v-f87ea3e9]{background:var(--ink);border-color:var(--ink)}.check input:checked+.check-box[data-v-f87ea3e9]:after{content:"";position:absolute;left:3px;top:0;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.check input:disabled+.check-box[data-v-f87ea3e9]{opacity:.3}.mod-label[data-v-f87ea3e9]{font-family:var(--serif);font-size:16px;letter-spacing:1.5px;flex:1;color:var(--ink);text-transform:uppercase}.tail-text[data-v-f87ea3e9]{font-family:var(--serif);font-size:13px;color:var(--ink);letter-spacing:1px;padding:2px 10px;background:#f5f5f3;border:1px solid #ddd}.tail-token[data-v-f87ea3e9]{position:relative;display:inline-flex;align-items:center;gap:3px;cursor:help;padding:0 4px}.tail-token .dot[data-v-f87ea3e9]{width:8px;height:8px;background:var(--ink);border-radius:50%}.tail-token .bar[data-v-f87ea3e9]{width:14px;height:2px;background:var(--ink)}.tip-num[data-v-f87ea3e9]{font-size:10px;color:#666}.tip[data-v-f87ea3e9]{display:none;position:absolute;top:calc(100% + 8px);right:0;z-index:30;background:#fff;border:1px solid #d4d4d4;padding:8px;box-shadow:0 6px 24px #00000014;min-width:140px;max-width:320px}.tail-token:hover .tip[data-v-f87ea3e9]{display:block}.tip img[data-v-f87ea3e9]{max-width:120px;max-height:120px;display:block}.tip img+img[data-v-f87ea3e9]{margin-top:6px}.tip.text[data-v-f87ea3e9]{font-size:13px;line-height:1.6;color:#333;white-space:pre-wrap}.lock-text[data-v-f87ea3e9]{font-size:11px;color:var(--danger);letter-spacing:.5px}.caret[data-v-f87ea3e9]{color:#999;font-size:18px;font-weight:300;width:16px;text-align:center}.mod-body[data-v-f87ea3e9]{padding:18px 24px 24px;background:#fafafa;border-top:1px solid #ebebeb;display:flex;flex-direction:column;gap:18px}.presets[data-v-f87ea3e9]{display:flex;flex-direction:column;gap:10px}.presets-hint[data-v-f87ea3e9]{font-size:13px;color:#888;font-style:italic;letter-spacing:.3px}.preset-grid[data-v-f87ea3e9]{display:flex;flex-wrap:wrap;gap:8px}.preset[data-v-f87ea3e9]{display:block;padding:0;width:100px;height:130px;background:transparent;border:1.5px solid transparent;cursor:pointer;transition:border-color .15s;overflow:hidden}.preset[data-v-f87ea3e9]:hover{border-color:#aaa}.preset.active[data-v-f87ea3e9]{border-color:var(--ink)}.preset img[data-v-f87ea3e9]{width:100%;height:100%;object-fit:cover;display:block}.preset-fallback[data-v-f87ea3e9]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:#ececec;font-family:var(--serif);font-size:13px;line-height:1.3;color:#888;text-align:center;padding:8px;letter-spacing:.3px}.preset:hover .preset-fallback[data-v-f87ea3e9]{color:#555;background:#e4e4e0}.preset.active .preset-fallback[data-v-f87ea3e9]{color:var(--ink);background:#f5f5f3}.ref-grid[data-v-f87ea3e9]{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;max-width:320px}.sample-row[data-v-f87ea3e9]{display:flex;flex-direction:column;gap:8px;margin-top:4px}.sample-hint[data-v-f87ea3e9]{font-size:12px;color:#888;letter-spacing:.3px}.sample-grid[data-v-f87ea3e9]{display:flex;flex-wrap:wrap;gap:6px}.sample-cell[data-v-f87ea3e9]{width:64px;height:84px;padding:0;border:1.5px solid transparent;background:transparent;cursor:pointer;overflow:hidden;transition:border-color .15s}.sample-cell[data-v-f87ea3e9]:hover{border-color:#aaa}.sample-cell.active[data-v-f87ea3e9]{border-color:var(--ink)}.sample-cell img[data-v-f87ea3e9]{width:100%;height:100%;object-fit:cover;display:block}.prompt-field[data-v-f87ea3e9]{display:flex;flex-direction:column;gap:6px}.prompt-field label[data-v-f87ea3e9]{font-family:var(--serif);font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted)}textarea[data-v-f87ea3e9]{width:100%;padding:10px 12px;font-size:13px;line-height:1.6;border:1px solid #d4d4d4;background:#fff;border-radius:0;resize:vertical;font-family:var(--sans);color:var(--ink-soft)}textarea[data-v-f87ea3e9]:focus{outline:none;border-color:var(--ink)}.global-block[data-v-f87ea3e9]{display:flex;flex-direction:column;gap:8px}.btn-link[data-v-f87ea3e9]{align-self:flex-start;font-size:11px;letter-spacing:1px;text-transform:uppercase;background:transparent;border:none;padding:0;color:var(--ink);text-decoration:underline}.btn-link[data-v-f87ea3e9]:hover{color:var(--ink-soft)}.cta-section[data-v-f87ea3e9]{text-align:center;padding-top:24px}.slot-bar[data-v-f87ea3e9]{display:flex;justify-content:center;gap:24px;align-items:center;margin-bottom:20px;font-size:12px;letter-spacing:.5px;color:#888}.slot-count.warn[data-v-f87ea3e9]{color:var(--danger)}.timer[data-v-f87ea3e9]{color:var(--ink);font-variant-numeric:tabular-nums}.btn-cta[data-v-f87ea3e9]{display:inline-block;background:var(--ink);color:#fff;font-family:var(--serif);font-size:15px;font-weight:400;letter-spacing:4px;padding:16px 56px;border:none;border-radius:0;transition:background .15s}.btn-cta[data-v-f87ea3e9]:hover:not(:disabled){background:#000}.btn-cta[data-v-f87ea3e9]:disabled{background:#ccc;cursor:not-allowed}.result-aside[data-v-f87ea3e9]{position:sticky;top:24px;align-self:start;padding:24px;background:var(--bg-soft);border:1px solid var(--line-soft)}.result-aside h3[data-v-f87ea3e9]{font-size:16px;font-weight:500;letter-spacing:3px;margin:0 0 16px;color:var(--ink);text-align:center}.placeholder[data-v-f87ea3e9],.loading[data-v-f87ea3e9]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:280px;border:1px dashed #ccc;background:#fff;text-align:center}.placeholder-text[data-v-f87ea3e9]{font-family:var(--serif);font-size:14px;color:#999;font-style:italic;letter-spacing:.5px;line-height:1.8}.loading-spinner[data-v-f87ea3e9]{width:28px;height:28px;border:1.5px solid #e0e0e0;border-top-color:var(--ink);border-radius:50%;animation:spin-f87ea3e9 1s linear infinite;margin-bottom:12px}@keyframes spin-f87ea3e9{to{transform:rotate(360deg)}}.loading-text[data-v-f87ea3e9]{font-size:12px;color:#666;letter-spacing:.5px}.result img[data-v-f87ea3e9]{width:100%;display:block}.meta[data-v-f87ea3e9]{display:flex;justify-content:space-between;margin-top:12px;font-size:11px;letter-spacing:.5px}.muted[data-v-f87ea3e9]{color:#999}.dl-group[data-v-f87ea3e9]{display:inline-flex;gap:10px}.dl[data-v-f87ea3e9]{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:1px;text-transform:uppercase;font-size:11px;letter-spacing:.5px}.dl[data-v-f87ea3e9]:hover{color:#000}.history[data-v-f87ea3e9]{margin-top:24px;padding-top:16px;border-top:1px solid #e0e0e0}.history-head[data-v-f87ea3e9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.history-head .serif[data-v-f87ea3e9]{font-size:12px;letter-spacing:3px;color:var(--ink)}.history-grid[data-v-f87ea3e9]{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.history-cell[data-v-f87ea3e9]{padding:0;border:1px solid transparent;background:transparent;cursor:pointer;overflow:hidden;aspect-ratio:3/4}.history-cell[data-v-f87ea3e9]:hover{border-color:var(--ink)}.history-cell img[data-v-f87ea3e9]{width:100%;height:100%;object-fit:cover;display:block}.error[data-v-f87ea3e9]{padding:12px;background:#fdedec;color:var(--danger);font-size:12px;line-height:1.5;margin-bottom:16px}.prompt-detail[data-v-f87ea3e9]{margin-top:20px}.prompt-detail summary[data-v-f87ea3e9]{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:#888;cursor:pointer;padding:8px 0}.prompt-detail pre[data-v-f87ea3e9]{background:#fff;padding:12px;border:1px solid #ebebeb;font-size:11px;line-height:1.6;color:#444;white-space:pre-wrap;max-height:280px;overflow:auto;font-family:var(--sans)}:root{--serif: "Cormorant Garamond", "Times New Roman", "Songti SC", serif;--sans: -apple-system, BlinkMacSystemFont, "system-ui", "PingFang SC", "Microsoft YaHei", Arial, sans-serif;--ink: #1a1a1a;--ink-soft: #2c3e50;--muted: #888;--line: #d4d4d4;--line-soft: #ebebeb;--bg: #ffffff;--bg-soft: #fafafa;--bg-tone: #f5f5f3;--danger: #c0392b;font-family:var(--sans);color:var(--ink-soft);background:var(--bg);font-size:15px;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;padding:0}button{cursor:pointer;font:inherit}button:disabled{cursor:not-allowed;opacity:.5}input,textarea{font:inherit}.serif{font-family:var(--serif)}
