:root{--color-bg: #f6f7f9;--color-surface: #ffffff;--color-surface-muted: #f1f5f9;--color-text: #111827;--color-muted: #667085;--color-border: #e4e7ec;--color-primary: #2563eb;--color-primary-soft: #eff6ff;--color-success: #16a34a;--color-success-soft: #ecfdf3;--color-warning: #d97706;--color-warning-soft: #fffaeb;--color-danger: #dc2626;--color-danger-soft: #fef3f2;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--sidebar-width: 256px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--color-text);background:var(--color-bg)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--color-bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.68}.appShell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-width) 1fr}.sidebar{position:sticky;top:0;height:100vh;border-right:1px solid var(--color-border);background:var(--color-surface);padding:18px}.brandBlock{display:flex;align-items:center;gap:12px;margin-bottom:28px}.brandMark{width:40px;height:40px;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;display:grid;place-items:center;font-weight:700}.brandTitle{font-size:16px;font-weight:700}.brandSub{color:var(--color-muted);font-size:12px;margin-top:2px}.navList{display:grid;gap:8px}.navItem{border:0;background:transparent;color:var(--color-muted);display:flex;align-items:center;gap:10px;width:100%;border-radius:var(--radius-md);padding:11px 12px;text-align:left}.navItem.active,.navItem:hover{background:var(--color-primary-soft);color:var(--color-primary)}.mainContent{min-width:0;padding:28px;width:100%}.page{width:100%;max-width:none;margin:0}.pageHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.pageHeader h1,.summaryPanel h1{font-size:26px;line-height:1.2;margin:0}.pageHeader p,.summaryPanel p{color:var(--color-muted);margin:7px 0 0}.formPanel,.panel,.summaryPanel,.jobCard,.resultCard{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.formPanel{display:grid;gap:18px;padding:20px}.fieldGroup{display:grid;gap:8px}.fieldGroup>span{font-size:14px;font-weight:650}input,select,textarea{min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 12px;background:var(--color-surface);color:var(--color-text);width:100%}input:focus,select:focus,textarea:focus,button:focus-visible{outline:3px solid rgba(37,99,235,.18);outline-offset:2px}textarea{padding:12px;line-height:1.5;resize:vertical}.formPanel.flat{border:0;box-shadow:none;padding:0}.jobFormGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.compactJobForm{display:grid;grid-template-columns:minmax(320px,.42fr) minmax(0,.58fr);gap:14px}.formSection{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);padding:18px;display:grid;gap:16px}.compactSection{padding:14px;gap:12px;align-content:start}.wideFormSection,.submitBar{grid-column:1 / -1}.sectionTitle h2{font-size:17px;margin:0}.sectionTitle p{color:var(--color-muted);margin:6px 0 0;font-size:13px}.variableHelp{color:var(--color-muted);line-height:1.6;font-size:13px}.variableHelp code{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-muted);padding:2px 5px;color:var(--color-text)}.submitBar{display:flex;justify-content:flex-end}.countGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.advancedPanel{display:grid;gap:12px;border-top:1px solid var(--color-border);padding-top:12px}.segmentedGrid,.checkGrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.ratioGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px}.ratioCard{min-height:78px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:grid;justify-items:center;align-content:center;gap:3px;padding:8px;color:var(--color-text)}.ratioCard.active{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-soft)}.ratioCard small{color:var(--color-muted);text-align:center;font-size:11px}.ratioPreview{display:block;width:28px;border:2px solid currentColor;border-radius:var(--radius-sm);background:#2563eb14}.ratio-1-1{aspect-ratio:1 / 1}.ratio-3-4{aspect-ratio:3 / 4}.ratio-4-5{aspect-ratio:4 / 5}.ratio-9-16{aspect-ratio:9 / 16}.ratio-16-9{width:38px;aspect-ratio:16 / 9}.compactChoices{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.choice{min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;overflow-wrap:anywhere}.choice.active{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-soft)}.primaryButton,.secondaryButton,.iconTextButton{min-height:44px;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;text-decoration:none;white-space:nowrap}.primaryButton{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff;font-weight:650}.secondaryButton,.iconTextButton{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text)}.compact{width:fit-content}.toolbar{margin-bottom:16px}.searchBox{max-width:420px;display:flex;align-items:center;gap:8px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:0 12px}.searchBox input{border:0;padding-left:0}.inlineSearch{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.productSearchResults{max-height:260px;overflow:auto;display:grid;gap:8px;padding-right:4px}.productPickCard{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:10px;padding:8px;text-align:left}.productPickCard.active{border-color:var(--color-primary);background:var(--color-primary-soft)}.productPickImage{width:58px;height:58px;border-radius:var(--radius-sm);object-fit:cover;background:var(--color-surface-muted)}.productPickCard span,.referenceImageCard span{min-width:0;display:grid;gap:3px}.productPickCard strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.productPickCard small{color:var(--color-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.referenceImageGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}.referenceImageCard{position:relative;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden;display:grid;cursor:pointer}.referenceImageCard.active{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb24}.referenceImageCard input{position:absolute;top:7px;left:7px;width:18px;height:18px;min-height:18px;z-index:2;accent-color:var(--color-primary)}.referenceImage{width:100%;aspect-ratio:4 / 5;object-fit:cover;background:var(--color-surface-muted)}.imageFallback{display:inline-flex;align-items:center;justify-content:center;color:var(--color-muted)}.referenceImageCard span{display:flex;align-items:center;justify-content:center;gap:5px;min-height:32px;color:var(--color-muted);font-size:12px}.referenceImageCard.active span{color:var(--color-primary);font-weight:650}.jobList{display:grid;gap:12px}.jobCard{width:100%;padding:16px;text-align:left}.jobTopLine,.detailHeader,.resultTitle,.panelTitle,.textBlockHead{display:flex;align-items:center;justify-content:space-between;gap:12px}.jobTopLine strong{font-size:16px;overflow-wrap:anywhere}.jobMeta{display:flex;flex-wrap:wrap;gap:10px;color:var(--color-muted);font-size:13px;margin:8px 0 14px}.progressBlock{display:grid;gap:7px}.progressText{color:var(--color-muted);display:flex;justify-content:space-between;font-size:13px}.progressTrack{height:8px;border-radius:999px;position:relative;overflow:hidden;background:var(--color-surface-muted)}.progressDone,.progressFailed{position:absolute;top:0;bottom:0}.progressDone{left:0;background:var(--color-success)}.progressFailed{background:var(--color-danger)}.statusBadge{min-height:28px;display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:650;white-space:nowrap}.status-pending,.status-cancelled{color:var(--color-muted);background:var(--color-surface-muted)}.status-running,.status-selecting_product,.status-generating_prompt,.status-submitting_ai_task,.status-waiting_ai_result,.status-uploading,.status-generating_caption{color:var(--color-primary);background:var(--color-primary-soft)}.status-completed{color:var(--color-success);background:var(--color-success-soft)}.status-failed,.status-partial_failed{color:var(--color-danger);background:var(--color-danger-soft)}.detailHeader{margin-bottom:14px}.summaryPanel{display:grid;gap:16px;padding:18px;margin-bottom:18px}.resultGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.compactResults{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px}.resultCard{overflow:hidden}.compactResultCard{display:grid}.imageFrame{border:0;padding:0;width:100%;aspect-ratio:4 / 5;overflow:hidden;background:var(--color-surface-muted)}.compactImageFrame{cursor:zoom-in}.imageFrame img{width:100%;height:100%;object-fit:cover;display:block}.imagePlaceholder{height:100%;display:grid;place-items:center;align-content:center;gap:8px;color:var(--color-muted)}.resultBody{padding:14px;display:grid;gap:12px}.compactResultBody{padding:10px;gap:8px}.compactResultTitle{align-items:flex-start;min-height:54px}.compactActionGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.compactActionGrid .iconTextButton{min-height:34px;padding:0 8px;font-size:12px}.captionBlocks{display:grid;gap:10px}.textBlock{background:var(--color-surface-muted);border-radius:var(--radius-md);padding:10px}.textBlockHead{margin-bottom:6px;font-size:13px;font-weight:650}.textBlockHead button{width:32px;height:32px;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm)}.textBlock p{margin:0;color:var(--color-muted);font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.cardActions{display:flex;flex-wrap:wrap;gap:8px}.errorText{color:var(--color-danger);background:var(--color-danger-soft);border-radius:var(--radius-md);padding:8px;margin:0;font-size:13px;overflow-wrap:anywhere}.compactErrorText{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.resultPreviewBackdrop{place-items:stretch}.resultPreviewPanel{width:min(1120px,calc(100vw - 32px));max-height:calc(100vh - 32px);margin:auto;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:0 18px 50px #1018283d;padding:16px;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr)}.previewHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.previewHeader h2{font-size:18px;margin:0 0 8px}.previewLayout{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,360px);gap:14px}.previewImageStage{min-height:0;border-radius:var(--radius-md);background:var(--color-surface-muted);display:grid;place-items:center;overflow:hidden}.previewImageStage img{max-width:100%;max-height:100%;object-fit:contain}.previewInfoPanel{min-height:0;overflow:auto;display:grid;align-content:start;gap:10px;padding-right:4px}.referenceThumb{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:8px;display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:10px;color:var(--color-text);text-decoration:none}.referenceThumb img{width:58px;height:58px;border-radius:var(--radius-sm);object-fit:cover}.settingsGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.templateLayout{display:grid;grid-template-columns:minmax(420px,.9fr) minmax(0,1.1fr);gap:16px}.twoColumnFields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.templateList{display:grid;gap:12px}.templateCard{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:12px;display:grid;gap:10px}.templateCard p{color:var(--color-muted);line-height:1.5;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.dangerButton{color:var(--color-danger)}.dangerPrimary{background:var(--color-danger);border-color:var(--color-danger)}.modalBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:20px;background:#1118276b}.modalPanel{width:min(420px,100%);background:var(--color-surface);border-radius:var(--radius-md);padding:18px;box-shadow:0 18px 50px #1018283d}.modalPanel h2{font-size:18px;margin:0 0 8px}.modalPanel p{color:var(--color-muted);line-height:1.5;margin:0 0 16px}.panel{padding:16px}.widePanel{grid-column:1 / -1}.panelTitle{justify-content:flex-start;margin-bottom:12px}.panelTitle h2{font-size:17px;margin:0}.settingRows,.modelList{display:grid;gap:10px;margin-bottom:14px}.settingRow{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--color-border)}.settingRow span,.mutedText,.modelRow span,.modelRow p{color:var(--color-muted)}.settingRow strong{text-align:right;overflow-wrap:anywhere}.modelRow{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:12px;display:grid;gap:5px}.modelRow span,.modelRow p{font-size:13px;margin:0;overflow-wrap:anywhere}.toastStack{position:fixed;right:18px;top:18px;z-index:50;display:grid;gap:10px;width:min(380px,calc(100vw - 32px))}.toast{min-height:44px;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);background:var(--color-surface);display:flex;align-items:center;gap:10px;padding:10px 12px;font-size:14px}.toast-success{color:var(--color-success)}.toast-error{color:var(--color-danger)}.toast-warning{color:var(--color-warning)}.toast-info{color:var(--color-primary)}.emptyState,.skeletonCard{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.emptyState{min-height:240px;display:grid;place-items:center;align-content:center;gap:12px;color:var(--color-muted);text-align:center;padding:24px}.cardGrid{display:grid;gap:12px}.skeletonCard{padding:16px;display:grid;gap:12px}.skeletonLine{height:14px;border-radius:999px;background:linear-gradient(90deg,#eef2f7,#f8fafc,#eef2f7)}.skeletonLine.wide{width:72%}.skeletonLine.short{width:36%}.spin{animation:spin .8s linear infinite}.mobileNav{display:none}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 860px){.appShell{display:block}.sidebar{display:none}.mainContent{padding:18px 14px 86px}.pageHeader{display:grid}.pageHeader h1,.summaryPanel h1{font-size:22px}.settingsGrid,.templateLayout,.jobFormGrid,.compactJobForm,.resultGrid{grid-template-columns:1fr}.compactResults{grid-template-columns:repeat(2,minmax(0,1fr))}.previewLayout{grid-template-columns:1fr}.previewImageStage{max-height:52vh}.mobileNav{position:fixed;left:0;right:0;bottom:0;z-index:10;height:64px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--color-border);background:#fffffff5}.mobileNav button{border:0;background:transparent;color:var(--color-muted);display:grid;place-items:center;align-content:center;gap:2px;font-size:12px}.mobileNav button.active{color:var(--color-primary)}.toastStack{top:auto;bottom:78px;left:12px;right:12px;width:auto}.jobTopLine,.resultTitle{align-items:flex-start;flex-direction:column}}@media (max-width: 520px){.segmentedGrid,.checkGrid,.ratioGrid,.twoColumnFields{grid-template-columns:1fr}.formPanel,.formSection,.panel,.summaryPanel{padding:14px}.detailHeader{display:grid;grid-template-columns:1fr 1fr}.primaryButton,.secondaryButton,.iconTextButton{width:100%}.compactActionGrid,.inlineSearch{grid-template-columns:1fr}}
