.text-image-workbench{max-width:1220px;margin:auto}.text-image-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}.text-image-card{padding:22px;border:1px solid var(--color-border,#d8cabe);border-radius:14px;background:var(--color-card,#fff);min-width:0}.text-image-card h2{font-size:20px;margin:0 0 14px}.text-image-label,.text-image-styles legend{font-size:18px;font-weight:600}.text-image-workbench button,.text-image-workbench select{min-height:44px;font:inherit;cursor:pointer}.text-image-workbench button:disabled{opacity:.6;cursor:wait}.text-image-workbench button:focus-visible,.text-image-workbench textarea:focus-visible,.text-image-workbench select:focus-visible{outline:3px solid var(--color-primary,#974d37);outline-offset:2px}.text-image-workbench select,.text-image-workbench textarea{width:100%;border:1px solid var(--color-border,#d8cabe);border-radius:8px;padding:10px;background:var(--color-bg,#fffaf4);color:var(--color-ink,#382f29);box-sizing:border-box;font-size:16px}.text-image-workbench textarea{resize:vertical;line-height:1.8;margin-top:10px}.text-image-presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.text-image-presets button,.text-image-styles button,.text-image-result-actions button,.text-image-history-heading button,#text-image-reconnect{border:1px solid var(--color-border,#d8cabe);border-radius:8px;background:var(--color-bg,#fffaf4);padding:8px 12px;color:var(--color-ink,#382f29)}.text-image-helper{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;font-size:14px;color:var(--color-text-secondary,#6a5e54)}.text-image-styles{border:0;padding:0;margin:20px 0}.text-image-styles>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:10px}.text-image-styles button{padding:8px 2px;font-size:15px}.text-image-styles button[aria-pressed=true]{border:2px solid var(--color-primary,#974d37);font-weight:600}.text-image-settings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.text-image-settings label{display:flex;flex-direction:column;gap:8px;font-size:16px}.text-image-model-settings{margin:18px 0}.text-image-model-settings summary{cursor:pointer;min-height:44px;display:flex;align-items:center;text-decoration:underline}.text-image-model-settings label{display:block;margin:8px 0}.text-image-model-settings p,.text-image-note{font-size:14px;line-height:1.8;color:var(--color-text-secondary,#6a5e54);overflow-wrap:anywhere}.text-image-primary{width:100%;font-size:18px!important;min-height:48px!important}#text-image-status{font-size:16px;line-height:1.8;overflow-wrap:anywhere}#text-image-status[data-kind=error]{color:var(--color-danger,#a73526)}.text-image-output{align-self:start}#text-image-empty{padding:70px 10px;text-align:center;line-height:2;color:var(--color-text-secondary,#6a5e54)}.text-image-preview{display:block;width:100%;border:0;padding:0;background:transparent;cursor:zoom-in}.text-image-preview img{max-width:100%;max-height:520px;object-fit:contain;border-radius:9px}.text-image-result-actions{display:flex;flex-wrap:wrap;gap:8px}#text-image-result-description{font-size:16px;line-height:1.8;overflow-wrap:anywhere}#text-image-result-meta{font-size:14px;color:var(--color-text-secondary,#6a5e54)}.text-image-history{margin-top:20px}.text-image-history-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.text-image-history-heading h2{margin:0}#text-image-history{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.text-image-history-item{border:1px solid var(--color-border,#d8cabe);border-radius:10px;padding:12px;background:var(--color-bg,#fffaf4);text-align:left;color:var(--color-ink,#382f29);overflow-wrap:anywhere;display:flex;flex-direction:column;gap:8px}.text-image-history-item img{width:100%;height:140px;object-fit:contain;border-radius:6px}.text-image-history-item span{font-size:15px;line-height:1.6}.text-image-history-item small{font-size:13px;color:var(--color-text-secondary,#6a5e54)}.text-image-lightbox{position:fixed;inset:0;background:#000d;z-index:200001;display:flex;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.text-image-lightbox>div{max-width:100%;max-height:95dvh;overflow:auto;text-align:center;color:#fff}.text-image-lightbox img{max-width:100%;max-height:78dvh;object-fit:contain}.text-image-lightbox button{min-height:44px;padding:8px 22px;font-size:18px;border:0;border-radius:8px}.text-image-lightbox p{font-size:16px;line-height:1.8}
@media(max-width:900px){.text-image-columns{grid-template-columns:1fr}#text-image-history{grid-template-columns:repeat(2,minmax(0,1fr))}.text-image-card{padding:16px}.text-image-styles>div{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:420px){.text-image-settings{grid-template-columns:1fr}.text-image-result-actions button{flex:1 1 45%}.text-image-history-item img{height:110px}}

.image-creation-modes{display:flex;gap:8px;margin-bottom:20px}
.image-creation-modes .i2i-mode-btn{flex:1;min-height:48px;font-size:17px;padding:10px 12px;white-space:normal}
.image-creation-modes .i2i-mode-btn:focus-visible{outline:3px solid var(--color-primary,#974d37);outline-offset:2px}
#ws-image2image>.tw-tool-header{margin-bottom:14px}

/* Indeterminate animation follows server phases, never a fabricated percentage. */
.text-image-waiting{text-align:center;padding:24px 12px;border:1px solid var(--color-border,#d8cabe);border-radius:12px;background:var(--color-bg,#fffaf4);margin-bottom:16px}.text-image-waiting[hidden],.text-image-image-loading[hidden]{display:none}.text-image-waiting h3{font-size:20px;margin:18px 0 8px}.text-image-waiting p{line-height:1.8;margin:8px 0}.text-image-painting{position:relative;margin:auto;width:150px;height:104px;overflow:hidden;border:3px solid var(--color-border,#d8cabe);border-radius:12px;background:linear-gradient(160deg,#fff3d8,#eee5d9)}.paint-sun{position:absolute;width:26px;height:26px;border-radius:50%;background:#dca665;top:16px;right:25px;animation:paint-glow 3s ease-in-out infinite}.paint-hill{position:absolute;width:120px;height:80px;border-radius:50% 50% 0 0;background:#95a38c;left:-8px;bottom:-28px;transform:rotate(-18deg)}.paint-hill:after{content:'';position:absolute;width:100px;height:80px;background:#738c80;border-radius:50%;left:72px;top:2px}.paint-brush{position:absolute;color:#a45739;font-size:34px;left:40px;top:28px;animation:paint-draw 3s ease-in-out infinite}.text-image-wait-track{height:5px;max-width:260px;margin:18px auto;background:#d8cabe55;border-radius:8px;overflow:hidden}.text-image-wait-track span{display:block;width:40%;height:100%;background:var(--color-primary,#974d37);border-radius:8px;animation:paint-track 2s ease-in-out infinite}#text-image-elapsed{font-variant-numeric:tabular-nums;color:var(--color-text-secondary,#6a5e54);font-size:15px}.text-image-image-stage{position:relative;display:grid;place-items:center;min-height:180px;max-height:520px;border-radius:10px;overflow:hidden;background:var(--color-bg,#fffaf4)}.text-image-image-stage .text-image-preview{grid-area:1/1;line-height:0}.text-image-image-stage img{transition:opacity .2s}.text-image-image-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:20px;box-sizing:border-box;text-align:center;background:linear-gradient(100deg,#f2e9df,#fffcf6,#f2e9df);background-size:200% 100%;animation:image-shimmer 2s ease-in-out infinite}.text-image-spinner{width:28px;height:28px;border:3px solid #d8cabe;border-top-color:var(--color-primary,#974d37);border-radius:50%;animation:paint-spin 1s linear infinite}#text-image-image-retry{position:absolute;padding:10px 20px;border:1px solid var(--color-border,#d8cabe);border-radius:8px;background:var(--color-bg,#fffaf4);color:inherit}.text-image-image-stage:has(#text-image-image-retry:not([hidden])):after{content:'预览暂未加载成功，原图仍可保存';position:absolute;bottom:15px;left:10px;right:10px;font-size:14px;text-align:center}.text-image-history-item img{aspect-ratio:1;content-visibility:auto}
@keyframes paint-draw{0%,100%{transform:translate(-15px,7px) rotate(-15deg)}50%{transform:translate(40px,-6px) rotate(15deg)}}@keyframes paint-glow{50%{opacity:.55}}@keyframes paint-track{0%{transform:translateX(-110%)}100%{transform:translateX(360%)}}@keyframes paint-spin{to{transform:rotate(360deg)}}@keyframes image-shimmer{to{background-position:-200% 0}}
#text-image-generate[aria-busy=true]:before,.image-processing-active:before{content:'';display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:10px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:paint-spin 1s linear infinite}
@media(prefers-reduced-motion:reduce){.text-image-painting span,.text-image-wait-track span,.text-image-image-loading,.text-image-spinner,#text-image-generate[aria-busy=true]:before,.image-processing-active:before{animation:none}.text-image-image-stage img{transition:none}}

.text-image-memoir{padding:16px;background:var(--color-bg,#fffaf4);border:1px solid var(--color-border,#d8cabe);border-radius:10px;margin-bottom:22px}.text-image-memoir h3{margin:0;font-size:20px}.text-image-memoir label{display:block;margin:12px 0 6px}.text-image-memoir button{padding:8px 12px;border:1px solid var(--color-border,#d8cabe);border-radius:8px;background:var(--color-card,#fff);color:inherit;margin-top:12px}.text-image-scene{border-top:1px solid var(--color-border,#d8cabe);margin-top:14px;padding-top:4px}.text-image-scene p{font-size:15px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}

/* Book-first choices share the current chapter, while advanced controls stay optional. */
.book-visual-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.book-visual-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.book-visual-choices button{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px!important;margin:0!important;text-align:left}.book-visual-choices strong{font-size:18px}.book-visual-choices span{font-size:14px;line-height:1.6}.book-visual-choices [aria-pressed=true]{border:2px solid var(--color-primary,#974d37);background:var(--color-card,#fff)}.book-visual-advice{font-size:16px;line-height:1.9;border-left:3px solid var(--color-primary,#974d37);padding-left:12px}.book-visual-advice:empty{display:none}.book-visual-direction summary,.book-visual-advanced summary{min-height:44px;cursor:pointer;align-content:center;line-height:1.6}.book-visual-advanced{margin:18px 0}#book-visual-scheme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.book-visual-scheme{display:grid!important;grid-template-columns:auto 1fr;gap:8px;padding:14px;border:1px solid var(--color-border,#d8cabe);border-radius:9px}.book-visual-scheme input{width:20px;height:20px;accent-color:var(--color-primary,#974d37)}.book-visual-scheme span{grid-column:1/-1;font-size:14px;line-height:1.7}.book-visual-scheme.documentary{background:#f1eee6}.book-visual-scheme.family{background:#f9eee5}.book-visual-scheme.biography{background:#edf0ed}.book-visual-scheme:has(input:checked){outline:2px solid var(--color-primary,#974d37)}.book-visual-photo-heading{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.book-visual-photo-heading label{min-width:180px;flex:1}.book-visual-photo-heading button,#book-visual-more,.book-visual-selected button,#book-visual-compare button{min-height:44px;padding:10px 14px;border:1px solid var(--color-border,#d8cabe);background:var(--color-bg,#fffaf4);border-radius:8px;color:inherit}.book-visual-photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}.book-visual-photo-grid button{display:flex;flex-direction:column;text-align:left;gap:6px;overflow:hidden;min-width:0;padding:8px;border:1px solid var(--color-border,#d8cabe);background:var(--color-bg,#fffaf4);border-radius:10px;color:inherit}.book-visual-photo-grid img{width:100%;height:150px;object-fit:contain}.book-visual-photo-grid span,.book-visual-photo-grid small{overflow-wrap:anywhere;font-size:14px;line-height:1.6}.book-visual-photo-grid [aria-pressed=true]{outline:2px solid var(--color-primary,#974d37)}.book-visual-selected{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;padding-top:20px;border-top:1px solid var(--color-border,#d8cabe)}.book-visual-selected>img{width:100%;max-height:380px;object-fit:contain}.book-visual-selected h3{overflow-wrap:anywhere}.book-visual-selected textarea{margin:10px 0 16px}.book-visual-compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.book-visual-compare-grid figure{margin:0;text-align:center}.book-visual-compare-grid img{width:100%;height:300px;object-fit:contain}.book-visual-compare-grid figcaption{padding:10px;font-size:16px}#book-visual-status{line-height:1.8;font-size:16px;overflow-wrap:anywhere}#book-visual-status[data-kind=error]{color:var(--color-danger,#a73526)}#text-image-book-scenes{margin-bottom:20px}#text-image-book-scenes h3{margin:0 0 12px}.text-image-scene.selected{outline:2px solid var(--color-primary,#974d37);padding:12px;border-radius:8px}.text-image-scene small{display:block;font-size:14px;line-height:1.7;color:var(--color-text-secondary,#6a5e54)}.book-visual-hub button:focus-visible,.book-visual-photo-grid button:focus-visible{outline:3px solid var(--color-primary,#974d37);outline-offset:3px}
.text-image-columns[hidden],#text-image-book-scenes[hidden],#text-image-book-history[hidden],#book-visual-photos[hidden],#book-visual-selected[hidden],#book-visual-compare[hidden]{display:none!important}
@media(max-width:900px){.book-visual-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.book-visual-photo-grid img{height:120px}}@media(max-width:600px){.book-visual-fields,.book-visual-selected{grid-template-columns:1fr}.book-visual-choices{grid-template-columns:1fr;gap:8px}.book-visual-choices button{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}.book-visual-choices strong{font-size:17px}.book-visual-choices span{font-size:13px;text-align:right}.book-visual-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#book-visual-scheme-options{grid-template-columns:1fr}.book-visual-compare-grid img{height:180px}.book-visual-photo-heading button{flex:1}}

@media(max-width:600px){.book-visual-photo-heading label{flex:1 0 100%;min-width:0}.book-visual-photo-heading button{flex:1 1 calc(50% - 6px);white-space:nowrap}}
