/* 衣境 · a single visual system for the photography workspace. */
:root {
  font-family:"Segoe UI","Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif;
  color:#26313f;background:#f5f6f8;font-size:13px;line-height:1.5;
  --ink:#26313f;--muted:#657184;--faint:#8a94a3;--canvas:#eceef1;--surface:#fff;
  --line:#e2e6ec;--blue:#4564df;--blue-soft:#eff3ff;--radius:8px;
  --shadow:0 16px 48px #202c441c;--header:60px;
  font-synthesis:none;-webkit-font-smoothing:antialiased;
}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit;color:inherit}
button{border:0;background:none;cursor:pointer;padding:0;line-height:1.5}button:disabled{opacity:.48;cursor:not-allowed}
a{color:inherit;text-decoration:none}img{display:block;max-width:100%}svg{display:block}h1,h2,h3,p{margin:0}
button,a,input,select,textarea,summary,[tabindex]{-webkit-tap-highlight-color:transparent}
:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--blue);outline-offset:3px}
button,summary,a{touch-action:manipulation}input{accent-color:var(--blue)}input[type=checkbox]{width:17px;height:17px;margin:0;flex:none}
button,summary{transition:background .15s,border-color .15s,color .15s,box-shadow .15s}
[hidden]{display:none!important}.ui-icon{width:19px;height:19px;flex:none;pointer-events:none}
.muted,.tiny{color:var(--muted);font-size:12px;line-height:1.75}.tiny{margin:10px 0}
.button,.asset-select,.asset-replace,.history-use,.selection-button{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;
  padding:8px 13px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  color:#48566b;font-size:13px;font-weight:500;white-space:nowrap;
}
.button:hover,.asset-replace:hover,.selection-button:hover{background:#f5f7fa;border-color:#c6ceda}
.button.primary{background:var(--blue);border-color:var(--blue);color:#fff}
.button.primary:hover{background:#3856cc;border-color:#3856cc;box-shadow:0 3px 10px #4564df25}
.button.small{min-height:34px;padding:6px 11px;font-size:12px}.button.danger{color:#a64e49}
.button.text,.link-button{border:0;background:none;color:#4c68bd;font-size:12px;padding:6px 2px}
.link-button:hover{text-decoration:underline;text-underline-offset:3px}.wide-button{width:100%;margin-top:14px}
.icon-button,.dialog-close,.corner-zoom,.asset-peek,.preview-zoom,.history-zoom{
  display:inline-grid;place-items:center;flex:none;width:34px;height:34px;padding:0;
  border-radius:7px;color:#56647a;border:1px solid transparent;line-height:1;
}
.icon-button:hover{color:var(--ink);background:#edf0f5}.icon-button .ui-icon{width:18px;height:18px}
.corner-zoom,.asset-peek,.preview-zoom,.history-zoom{
  position:absolute;z-index:2;top:8px;right:8px;color:#39495e;background:#ffffffeb;
  border-color:#dce1e8;box-shadow:0 1px 5px #17233412;backdrop-filter:blur(8px);
}
.corner-zoom .ui-icon,.asset-peek .ui-icon,.preview-zoom .ui-icon,.history-zoom .ui-icon{width:18px;height:18px}
.corner-zoom:hover,.asset-peek:hover,.preview-zoom:hover,.history-zoom:hover{background:#fff;color:var(--blue);border-color:#b8c5e8}
.topbar{height:var(--header);display:flex;align-items:center;gap:30px;padding:0 22px;background:#fff;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;min-width:188px}.brand-symbol{display:grid;place-items:center;width:33px;height:33px;border-radius:9px;background:var(--blue);color:white;font-size:21px;line-height:1}.brand-symbol>svg{width:21px;height:21px}
.brand strong{font-size:18px;font-weight:650;letter-spacing:.5px;line-height:1.15}.brand strong span{display:block;font-size:10px;letter-spacing:.1px;color:var(--muted);font-weight:400;margin-top:4px}
.workspace-name{font-size:12px;color:var(--muted);border-left:1px solid var(--line);padding-left:24px}.version-tag{display:none}
.header-actions{margin-left:auto;display:flex;align-items:center;gap:12px}#save-state{font-size:11px;color:var(--faint)}
body.local [data-action="download-local"]{display:none}
.api-state{display:flex;align-items:center;gap:7px;padding:7px 9px;font-size:11px;color:var(--muted);border-radius:6px}.api-state:hover{background:#f3f5f8}.api-state i{width:6px;height:6px;background:#a3acba;border-radius:50%}.api-state.ready i{background:#41937d}
.app-shell{display:flex;min-height:calc(100dvh - var(--header))}.sidebar{width:156px;flex:none;padding:17px 10px 12px;background:#fafbfc;border-right:1px solid var(--line);display:flex;flex-direction:column;height:calc(100dvh - var(--header));position:sticky;top:0}
.sidebar nav{overflow:auto;scrollbar-width:thin}.side-button{display:flex;align-items:center;gap:11px;width:100%;min-height:42px;padding:10px 12px;margin:2px 0;text-align:left;border-radius:7px;color:#626d7e;font-size:13px;white-space:nowrap}
.side-button>span{display:grid;place-items:center;width:19px;flex:none}.side-button .ui-icon{width:18px;height:18px;stroke-width:1.65}
.side-button:hover{background:#edf0f4;color:#354359}.side-button.active{background:#e9eefe;color:#3957ca;font-weight:600}.side-button:nth-child(6),.side-button:nth-child(9){margin-top:16px}
.side-bottom{margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}.side-bottom .side-button{min-height:36px;font-size:12px;padding:8px 12px}
.main{min-width:0;flex:1}.workspace-tabs,.library-toggle{display:none}.studio-layout{display:grid;grid-template-columns:minmax(0,1fr) 392px;min-height:calc(100dvh - var(--header))}
.preview{display:flex;flex-direction:column;min-width:0;height:calc(100dvh - var(--header));min-height:420px;position:sticky;top:0;padding:20px 30px;background:var(--canvas)}
.preview-top{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:24px;color:var(--muted);font-size:12px;flex:none;margin-bottom:10px}
.preview-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:5px 0 14px}
.preview-photo-wrap{position:relative;display:flex;justify-content:center;max-width:100%;height:100%;min-height:0}
.preview-image{position:relative;display:flex;height:100%;min-height:0;max-width:100%;padding:0;border-radius:6px;overflow:hidden;box-shadow:0 2px 9px #1e293b0b}
.preview-image img{height:100%;width:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.preview-badge{position:absolute;left:9px;bottom:9px;padding:3px 7px;border-radius:4px;background:#ffffffd9;color:#687386;font-size:10px;line-height:1.6;backdrop-filter:blur(5px);pointer-events:none}
.preview-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:32px;flex:none;font-size:12px;color:var(--muted)}
.preview-tools>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:55%}.preview-tools>div{display:flex;gap:7px;flex:none}.preview-tools .asset-replace{min-height:32px;font-size:12px;padding:5px 9px;background:#ffffffa8}
.preview-continuations{display:flex;justify-content:center;gap:7px;flex-wrap:wrap;margin-top:12px;flex:none}.preview-continuations button{padding:6px 11px;border:1px solid #d5dce5;background:#ffffffa8;border-radius:6px;color:#58667c;font-size:12px}.preview-continuations button:hover{background:#fff;color:var(--blue);border-color:#bbc9f0}
.canvas-empty{max-width:88%;text-align:center;padding:44px 32px;border:1px dashed #cbd2dd;border-radius:12px;cursor:pointer;background:#ffffff60;color:var(--muted)}
.canvas-empty>span{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 16px;background:#fff;border:1px solid var(--line);border-radius:10px;color:#8895a9;font-size:26px;font-weight:300}.canvas-empty strong{font-size:15px;font-weight:500;color:#536174}.canvas-empty p{font-size:12px;margin-top:7px}
.editor{display:flex;flex-direction:column;min-width:0;height:calc(100dvh - var(--header));padding:25px 24px 20px;background:#fff;border-left:1px solid var(--line);overflow:hidden}
.compact-heading{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:22px;flex:none}.compact-heading h1{font-size:20px;letter-spacing:-.3px;font-weight:650;line-height:1.4}.compact-heading .muted,.compact-heading p{font-size:12px;color:var(--muted)}
.control-scroll,.series-work{flex:1;min-height:0;overflow:auto;padding:0 2px 12px;scrollbar-width:thin;scrollbar-color:#d3d9e2 transparent;scrollbar-gutter:stable}
.input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}.no-inputs{display:none}.input-slot{min-width:0}.slot-title{display:flex;align-items:center;gap:5px;min-height:22px;margin-bottom:8px;font-size:12px;color:#526073}.slot-title i{font-style:normal;color:#7d8cba}.slot-title .icon-button{margin-left:auto;width:25px;height:25px}.slot-title .ui-icon{width:15px;height:15px}
.slot-media{position:relative}.slot-target{position:relative;height:172px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;padding:16px;border:1px dashed #cfd7e2;border-radius:8px;background:#f8f9fb;cursor:pointer;overflow:hidden}
.slot-target.filled{padding:9px;border:1px solid var(--line);background:#f7f8fa}.slot-target:hover,.slot-target.dragging{border-color:#9cafde;background:#f2f5ff}.slot-target img{width:100%;height:100%;object-fit:contain}.slot-plus{font-size:27px;color:#9eabc0;font-weight:300}.slot-hint{font-size:11px;color:var(--muted);text-align:center;line-height:1.7}
.slot-file{position:absolute;bottom:4px;left:5px;right:5px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;padding:3px 5px;background:#ffffffea;border-radius:4px;font-size:10px;color:#6e798a;text-align:center}
.slot-media .asset-peek{width:30px;height:30px;right:6px;top:6px;border-radius:6px}.slot-media .asset-peek .ui-icon{width:16px;height:16px}
.slot-actions{display:flex;flex-direction:column;gap:6px;margin-top:8px}.slot-actions>.asset-select{width:100%;font-size:12px;padding:7px 5px;gap:5px;min-height:36px}.slot-actions .ui-icon{width:17px;height:17px}.slot-secondary{display:flex;gap:6px}.slot-secondary .asset-replace{width:100%;min-height:34px;padding:6px 8px;font-size:12px;font-weight:400}
.asset-select{background:var(--blue-soft);border-color:#ccd6f5;color:#3e5ac4}.asset-select:hover{background:#e6ecfd;border-color:#a4b7ec}.asset-select b{font-size:18px;line-height:1;font-weight:400}
.sample-link{display:inline-block;margin:6px 0}.scene-color{width:100%;height:100%;border-radius:3px}.derived-inputs{display:flex;flex-direction:column;gap:20px}.derived-inputs>.input-slot .slot-target{height:156px}.derived-inputs>.input-slot .slot-actions{display:grid;grid-template-columns:1.3fr 1fr;gap:8px}.derived-inputs>.input-slot .slot-actions>.asset-select{margin:0}.derived-inputs>.input-slot .slot-actions .asset-replace{height:100%}
.fold{border:1px solid var(--line);border-radius:8px;margin:13px 0;background:#fff;padding:0;overflow:visible}
.fold>summary{display:flex;align-items:center;gap:9px;list-style:none;cursor:pointer;padding:12px;min-height:44px;color:#4d5c71;font-size:12px;font-weight:500;line-height:1.5;border-radius:7px}
summary::-webkit-details-marker{display:none}.fold>summary::before{content:'';width:6px;height:6px;border:solid #7c899c;border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);margin:0 3px;flex:none}.fold[open]>summary::before{transform:rotate(45deg)}
.fold>summary:hover{background:#f7f8fb}.fold>summary>span{margin-left:auto;max-width:48%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--muted);font-size:11px;font-weight:400}
.fold[open]{padding:0 12px 12px}.fold[open]>summary{margin:0 -12px 12px;border-bottom:1px solid #edf0f4;border-radius:7px 7px 0 0}.fold .choice-row{gap:7px}
.check-label,.toggle-label{display:flex;align-items:center;gap:9px;min-height:38px;font-size:12px;color:#526176;line-height:1.65;margin:5px 0}
.analysis-list{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.analysis-list label{display:flex;align-items:center;gap:5px;font-size:12px;padding:6px 8px;background:#f3f5fa;border-radius:5px}.analysis-list small{font-size:11px;color:var(--muted)}
.extra-refs{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.extra-refs>div{position:relative}.extra-refs img{width:50px;height:66px;object-fit:contain;border:1px solid var(--line);border-radius:5px}.extra-refs>div>button{position:absolute;right:0;top:0;background:#fff;width:22px;height:22px;display:grid;place-items:center;border-radius:4px}
.batch-files{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.batch-file{position:relative;width:64px;border:1px solid var(--line);border-radius:6px;padding:4px}.batch-file.active{border-color:var(--blue)}.batch-file>button:first-child{width:100%;padding:0}.batch-file img{width:100%;height:64px;object-fit:contain}.batch-file span{display:block;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-file .icon-button{position:absolute;right:-5px;top:-5px;width:22px;height:22px;background:#fff;border:1px solid var(--line)}
.batch-drop{width:100%;padding:15px;border:1px dashed #ccd5e4;border-radius:7px;background:#f8fafd;color:#667892;font-size:12px}
.source-row{display:grid;grid-template-columns:42px minmax(0,1fr);gap:11px;align-items:center;width:100%;padding:12px;border:1px solid var(--line);border-radius:9px;background:#f9fafb}
.source-thumb{width:42px;height:56px;cursor:pointer}.source-thumb img{width:100%;height:100%;object-fit:contain;border-radius:4px}.source-plus{display:grid;place-items:center;height:100%;font-size:24px;color:#9ba7b8}.source-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#48566a}.source-row small{display:block;font-size:11px;color:var(--muted);line-height:1.8;margin-top:4px}
.source-actions{display:flex;gap:8px;grid-column:1/-1}.source-actions .asset-replace{font-size:12px;padding:7px 9px}.source-actions .asset-select{flex:1;padding:7px 8px;font-size:12px}.source-actions .ui-icon{width:17px;height:17px}.creative-source{grid-column:1/-1}
.selected-bases{grid-column:1/-1;min-width:0}.selected-bases-title{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#52617b;margin:3px 0 8px}.selected-bases-title button{padding:5px 8px;color:var(--muted)}.selected-bases-strip{display:flex;gap:8px;overflow-x:auto;padding:1px 1px 7px;scrollbar-width:thin}.selected-base{position:relative;flex:none;width:62px;height:82px;background:#fff;border:2px solid var(--line);border-radius:7px}.selected-base.active{border-color:var(--blue)}.selected-base>button:first-child{width:100%;height:100%;padding:3px}.selected-base img{width:100%;height:100%;object-fit:contain}.remove-base{position:absolute;right:-1px;top:-1px;display:grid;place-items:center;width:23px;height:23px;background:#fffffff2;border:1px solid var(--line);border-radius:0 5px 0 5px;line-height:1}.remove-base .ui-icon{width:14px;height:14px}
.section-line{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:20px 0 12px}.section-line strong{font-size:13px;font-weight:600}.section-line .asset-select{min-height:36px;font-size:12px;padding:7px 10px}.section-line .ui-icon{width:17px;height:17px}
.selected-pose-list{display:flex;flex-direction:column;gap:8px}.selected-pose{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:8px;padding:7px;background:#fff}.selected-pose img{width:40px;height:54px;object-fit:cover;border-radius:4px}.selected-pose>.shot-preview{width:40px;height:54px;flex:none}.selected-pose>span{flex:1;font-size:12px;color:#47576c}.selected-pose small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.selected-pose>button{display:grid;place-items:center;width:30px;height:30px;border-radius:6px;color:#8190a3}.selected-pose>button:hover{background:#f1f3f7;color:var(--ink)}.selected-pose>button .ui-icon{width:16px;height:16px}
.pose-shortcuts{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.pose-shortcuts .asset-replace{min-height:34px;font-size:12px;padding:6px 9px}.pose-shortcuts .ui-icon{width:16px;height:16px}.series-source{margin-bottom:0}
.choice-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:10px 0}.chip{border:1px solid var(--line);border-radius:6px;padding:7px 11px;font-size:12px;min-height:34px;background:#fff;color:#5e6e86}.chip:hover{background:#f5f7fa}.chip.active{border-color:#c3cff3;background:var(--blue-soft);color:#3d5ac8}.model-options{display:flex;flex-direction:column;gap:16px}.model-options>div>span{font-size:12px;color:var(--muted)}
.generation{flex:none;margin-top:12px;padding-top:15px;border-top:1px solid var(--line);background:#fff}.note-label{display:flex;align-items:baseline;flex-wrap:wrap;gap:7px;font-size:12px;color:#56647a}.note-label small{font-size:11px;color:var(--faint)}
.note-label textarea{width:100%;margin-top:2px;resize:vertical;min-height:62px;max-height:100px;padding:10px 12px;background:#f8f9fb;border:1px solid var(--line);border-radius:8px;font-size:12px;line-height:1.7;outline:none;color:#46566f}.note-label textarea:focus{border-color:#a6b6e8;background:#fff;box-shadow:0 0 0 3px #4564df09}.note-label textarea::placeholder{color:#929cac}
.generation-bottom{display:flex;flex-direction:column;gap:10px;margin-top:12px}.parameter-pop{position:relative}.parameter-pop>summary{display:flex;align-items:center;gap:9px;min-height:40px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;list-style:none;cursor:pointer;color:#5c6a80;background:#fff}.parameter-pop>summary:hover{background:#f7f9fc}.parameter-pop>summary strong{font-size:12px;font-weight:500}.parameter-pop>summary>span{margin-left:auto;font-size:12px;color:var(--muted)}.parameter-pop>summary b{font-weight:500}.parameter-pop>summary>.ui-icon{width:17px;height:17px;color:#75839a}.parameter-pop>summary>.ui-icon:last-child{width:14px;height:14px}.parameter-pop[open]>summary{border-color:#a9bbea;background:var(--blue-soft)}.parameter-pop[open]>summary>.ui-icon:last-child{transform:rotate(180deg)}
.parameter-panel{position:absolute;bottom:calc(100% + 8px);left:0;right:0;z-index:12;border:1px solid #d4dce9;border-radius:11px;background:#fff;box-shadow:var(--shadow);padding:18px;max-height:min(65vh,430px);overflow:auto;display:flex;flex-direction:column;gap:14px}
.field{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#57677f}.field input,.field select,.field textarea,select.control,.asset-filters select,.shot-edit-row select{width:100%;min-width:0;min-height:38px;border:1px solid #d8dfe9;border-radius:6px;background:#fff;padding:8px 10px;font-size:13px;outline:none;color:#3e4e66}.field input:focus,.field select:focus,.asset-filters select:focus{border-color:#9eb2e8;box-shadow:0 0 0 3px #4564df09}
.parameter-total{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;border-top:1px solid var(--line);padding-top:12px;font-size:12px;color:var(--muted);line-height:1.7}.parameter-total strong{color:#3e5bc6;font-weight:600}
.generate-button{min-height:44px;width:100%;font-size:13px;font-weight:600;letter-spacing:.2px}.generate-button:disabled{opacity:1;background:#e8edfc;border-color:#d7e0f8;color:#4b65ae;cursor:progress}
.spinner{display:inline-block;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .9s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}
.preview-progress{display:flex;align-items:center;gap:7px;color:#4a63b3;font-size:12px}.preview-progress .spinner{width:13px;height:13px}.generation-overlay{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);max-width:calc(100% - 24px);display:grid;grid-template-columns:20px auto;gap:3px 10px;align-items:center;background:#fffffff0;backdrop-filter:blur(8px);border:1px solid #d6dff0;box-shadow:0 4px 24px #25385516;border-radius:10px;padding:13px 18px;color:#4861ae;pointer-events:none;white-space:nowrap}.generation-overlay>.spinner{grid-row:1/4}.generation-overlay strong{font-size:13px;font-weight:600}.generation-overlay>span{font-size:12px;color:#62718a}.generation-overlay small{font-size:11px;color:#7a879b}
.generation-error{flex:none;padding:10px 12px;border:1px solid #ecd4cf;background:#fff7f4;border-radius:7px;font-size:12px;color:#9b5848;max-height:100px;overflow:auto;line-height:1.8}.generation-error button{display:block;padding:4px 0;color:var(--blue)}
.result-filmstrip{display:flex;gap:8px;overflow-x:auto;padding:4px 1px 12px;flex:none;scrollbar-width:thin}.result-filmstrip>button{position:relative;flex:none;width:48px;height:64px;padding:2px;border:2px solid transparent;border-radius:6px;background:#ffffffb3;overflow:hidden}.result-filmstrip>button.active{border-color:var(--blue);background:#fff}.result-filmstrip img{height:100%;width:100%;object-fit:contain;border-radius:3px}.result-filmstrip span{position:absolute;right:2px;bottom:2px;padding:0 4px;background:#ffffffed;color:#62728b;border-radius:3px;font-size:10px}
/* Contextual libraries */
#library{display:none}#library-scrim{display:none}.library-open #library-scrim{display:block;position:fixed;inset:var(--header) 0 0;background:#26324440;backdrop-filter:blur(2px);z-index:41}
.asset-library{display:flex;flex-direction:column;min-width:0;min-height:0;background:#fff}.library-open #library{display:flex;position:fixed;top:var(--header);right:0;bottom:0;height:calc(100dvh - var(--header));width:min(650px,calc(100vw - 64px));z-index:42;box-shadow:-10px 0 50px #202c4424;border-left:1px solid var(--line)}
.asset-head{display:flex;align-items:center;gap:18px;min-height:68px;padding:12px 22px;border-bottom:1px solid var(--line);flex:none}.asset-tabs{display:flex;align-items:center;gap:24px;flex:1;min-width:0;overflow:auto;scrollbar-width:none}.asset-tabs button{position:relative;white-space:nowrap;padding:9px 0;font-size:16px;font-weight:600;color:#8590a1}.asset-tabs button.active{color:var(--ink)}.asset-tabs button.active:after{content:'';position:absolute;height:2px;background:var(--blue);left:0;right:0;bottom:0;border-radius:2px}.close-library{color:#6b778a;width:34px;height:34px}
.asset-search{display:flex;align-items:center;gap:9px;margin:18px 22px 10px;padding:0 8px 0 12px;border:1px solid var(--line);border-radius:8px;background:#f8f9fb;flex:none}.asset-search>.ui-icon{width:17px;height:17px;color:#8b96a7}.asset-search input{flex:1;width:100%;min-width:0;border:0;background:none;outline:none;font-size:12px;padding:10px 0;color:#43536b}.asset-search input::placeholder{color:#8a96a7}.asset-search:focus-within{border-color:#a7b8e7;background:#fff}.asset-search .icon-button{width:28px;height:28px}.asset-search .ui-icon{width:15px;height:15px}
.asset-body{flex:1;min-height:0;overflow:auto;padding:0 22px 22px;scrollbar-width:thin;scrollbar-color:#d3d9e2 transparent}.asset-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:8px 0 16px}.asset-filters label{font-size:11px;color:var(--muted)}.asset-filters select{display:block;margin-top:6px;font-size:12px;min-height:35px;padding:7px 6px}
.mini-tabs{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:10px 0 18px}.mini-tabs button{font-size:12px;color:#758298;padding:6px 11px;border-radius:5px}.mini-tabs button.active{background:var(--blue-soft);color:#4260cc}.mini-tabs button:hover{background:#f0f3f8}.mini-tabs button:nth-child(4){margin-left:auto}
.asset-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px;margin-top:10px}.asset-card{position:relative;min-width:0}.asset-card>button:first-child{display:block;width:100%;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;text-align:left;background:#fff}.asset-card>button:first-child:hover{border-color:#b2c2e8;box-shadow:0 3px 10px #263a6110}.asset-card.selected>button:first-child{border-color:var(--blue);box-shadow:0 0 0 2px #4564df17}
.asset-card img{width:100%;aspect-ratio:2/3;object-fit:cover;background:#f4f5f7}.asset-card>button>span{display:block;padding:10px 9px;font-size:12px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#47576f}.asset-card>button>span small{display:block;font-size:11px;color:#8290a3;margin-top:3px}.asset-card>small{display:block;margin:5px 2px 0;font-size:11px;color:#7d8a9d}
.favorite{position:absolute;top:7px;right:7px;display:grid;place-items:center;width:28px;height:28px;background:#ffffffe6;backdrop-filter:blur(5px);border:1px solid #e0e4eb;border-radius:6px;color:#8190a6}.favorite .ui-icon{width:15px;height:15px}.favorite.on{color:#4968cc}.favorite.on .ui-icon{fill:#e4ebff}.favorite:hover{background:#fff;color:#4968cc}
.pose-check{position:absolute;right:8px;top:8px;width:24px;height:24px;display:grid;place-items:center;border:1px solid #d2dbe8;border-radius:6px;background:#fffffff0;color:#8b99ae;font-size:16px;font-style:normal}.selected .pose-check{background:var(--blue);border-color:var(--blue);color:#fff}
.frame-tabs{display:flex;gap:7px;flex-wrap:wrap;padding:8px 0 14px}.frame-tabs button{min-height:34px;padding:7px 12px;border:1px solid var(--line);border-radius:6px;font-size:12px;color:#6d7c91;background:#fff}.frame-tabs button:hover{background:#f6f8fb}.frame-tabs button.active{border-color:#b9c9f1;background:var(--blue-soft);color:#405dc8}.pose-filters{grid-template-columns:1fr 1fr;margin:0 0 18px}.scene-filter{gap:6px}.scene-filter button{font-size:12px;padding:7px 10px}
.scene-swatch{aspect-ratio:2/3;position:relative;overflow:hidden}.scene-swatch span{position:absolute;top:73%;height:2px;left:0;right:0;background:#ffffffa3;box-shadow:0 4px 12px #0000000d}.scene-swatch.cream{background:linear-gradient(115deg,#ede4d6,#faf3e8)!important}.scene-swatch.concrete{background:linear-gradient(20deg,#bfc0b9,#deded7)!important}.scene-assets img{aspect-ratio:2/3;object-fit:cover}
.group-list{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px}.group-card{text-align:left;padding:9px;border:1px solid var(--line);border-radius:9px;background:#fff}.group-card:hover{border-color:#afc0e9;background:#fafbff}.group-contact{display:flex;justify-content:center;gap:3px;height:150px;overflow:hidden;border-radius:5px;margin-bottom:12px}.group-contact>.shot-preview{width:calc((100% - 6px)/3);height:100%;flex:none}.shot-preview{position:relative;overflow:hidden;border-radius:4px}.group-contact .shot-preview img,.selected-pose .shot-preview img,.pose-photo .shot-preview img{width:100%;height:100%;max-width:none;object-fit:cover}.pose-photo{position:relative;aspect-ratio:2/3}.pose-photo>.shot-preview{position:absolute;inset:0;width:100%;height:100%}.shot-preview[data-crop="upper-tight"] img{transform:scale(1.45);transform-origin:50% 0%}.shot-preview[data-crop="upper"] img{transform:scale(1.7);transform-origin:50% 0%}.shot-preview[data-crop="lower"] img{transform:scale(1.7);transform-origin:50% 100%}.shot-preview[data-crop="detail"] img{transform:scale(2.5);transform-origin:50% 40%}.group-card strong{font-size:13px;font-weight:600;display:block;color:#4d5d74}.group-card>span{display:block;font-size:11px;line-height:1.8;color:var(--muted);margin-top:5px}
.library-footer{position:sticky;bottom:-22px;display:flex;align-items:center;gap:10px;margin-top:20px;padding:16px 0;background:#fff;border-top:1px solid var(--line);z-index:3}.library-footer>span{margin-right:auto;font-size:12px;color:var(--muted)}.library-section-title{font-size:12px;color:var(--muted);margin:18px 0 10px}.library-section-title span{float:right}.sample-history{border-top:1px solid var(--line);margin-top:18px;padding-top:6px}.sample-history>summary{cursor:pointer;font-size:12px;color:#5d6e86;min-height:42px;padding:12px 0}.sample-history>summary::marker{color:#8a98af}
.history-selection-toolbar{display:flex;gap:8px;margin-top:6px}.history-selection-toolbar>button{flex:1;min-height:38px;font-size:12px}.history-selection-toolbar [aria-pressed=true]{background:var(--blue);border-color:var(--blue);color:#fff}.history-help{font-size:12px;line-height:1.8;color:var(--muted);margin:10px 0 16px}
.history-card{padding:0;border:1px solid var(--line);border-radius:9px;background:#fff;overflow:hidden;min-width:0}.history-card.selected{border-color:var(--blue);box-shadow:0 0 0 2px #4564df15}.history-photo{position:relative;background:#f3f5f8}.history-image{display:block;width:100%;height:clamp(150px,calc(100dvh - 490px),270px);padding:0;overflow:hidden}.history-card .history-image img{width:100%;height:100%;object-fit:contain;aspect-ratio:auto}
.history-card-name{padding:10px 9px 8px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#56667f}.history-card-actions{display:flex;align-items:stretch;gap:6px;padding:0 8px 9px}.history-use{min-width:0;flex:1;min-height:36px;padding:7px 6px;font-size:12px;background:var(--blue-soft);border-color:#ced8f4;color:#425fc7}.history-use .ui-icon{width:15px;height:15px}.history-use:hover{background:#e5ecfd;border-color:#adbfeb}.history-use.chosen{background:var(--blue);border-color:var(--blue);color:white}.history-download{display:grid;place-items:center;width:33px;min-height:36px;border:1px solid var(--line);border-radius:6px;color:#697b92}.history-download .ui-icon{width:17px;height:17px}
.history-check{position:absolute;top:9px;left:9px;display:grid;place-items:center;width:25px;height:25px;border-radius:6px;background:#fffffff0;border:1px solid #c0cde5;color:#8c9ab1;font-size:17px;font-style:normal}.selected .history-check{background:var(--blue);color:#fff;border-color:var(--blue)}
.history-picker-footer{display:flex;align-items:center;gap:9px;flex:none;padding:14px 22px;border-top:1px solid var(--line);background:#fff;box-shadow:0 -3px 12px #26395405}.history-picker-footer>span{margin-right:auto;font-size:12px;color:#596c89;white-space:nowrap}.history-picker-footer .button{min-height:40px}
.empty{padding:28px 15px;border:1px dashed #cfd9e8;border-radius:8px;color:#8190a6;text-align:center;font-size:12px;line-height:1.9;margin:14px 0}
.model-library-page .studio-layout{grid-template-columns:minmax(250px,.85fr) minmax(480px,1.15fr)}.model-library-page #editor{display:none}.model-library-page #library{display:flex;height:calc(100dvh - var(--header));position:sticky;top:0;border-left:1px solid var(--line)}.model-library-page .close-library{display:none}
/* Full-width utility screens */
.wide-work .studio-layout,.solo-work .studio-layout{grid-template-columns:minmax(0,1fr)}.wide-work #preview,.solo-work #preview,.wide-work #library,.solo-work #library{display:none}.wide-work #editor,.solo-work #editor{display:block;height:auto;min-height:calc(100dvh - var(--header));padding:32px clamp(24px,4vw,64px);border-left:0;background:#f7f8fa;overflow:visible}
.page-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:1px;color:#8a96a8}.page-heading h1{font-size:23px;font-weight:650;letter-spacing:-.4px;margin:6px 0 9px}.page-heading p{font-size:13px;color:var(--muted);line-height:1.8}
.task-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px}.metric{padding:18px 20px;border:1px solid var(--line);background:#fff;border-radius:9px;font-size:12px;color:#7b889a}.metric strong{display:block;font-size:27px;font-weight:500;line-height:1.3;color:#3a4b64;margin-bottom:6px;font-variant-numeric:tabular-nums}
.toolbar,.subheading,.text-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar{justify-content:space-between;margin:16px 0}.subheading{justify-content:space-between;margin:28px 0 15px}.subheading h2{font-size:16px;font-weight:600}.task-list{display:flex;flex-direction:column;gap:8px}.task-row{display:flex;align-items:center;gap:12px;padding:13px;background:#fff;border:1px solid var(--line);border-radius:7px}.task-copy{flex:1;min-width:0}.task-copy strong{display:block;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-copy p{font-size:11px;color:var(--muted);line-height:1.8;margin-top:4px;overflow-wrap:anywhere}.task-dot{width:7px;height:7px;background:#b8c3d3;border-radius:50%;flex:none}.task-dot.running{background:var(--blue)}.task-dot.complete{background:#529b87}.task-dot.failed{background:#c47b71}.task-status{font-size:11px;max-width:110px;color:var(--muted);text-align:right}
.result-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.result-card{border:1px solid var(--line);border-radius:9px;background:#fff;overflow:hidden;min-width:0}.result-thumb{display:block;width:100%;aspect-ratio:2/3;padding:0;background:#eff1f4}.result-thumb img{width:100%;height:100%;object-fit:contain}.result-body{padding:13px}.result-body h3{font-size:12px;font-weight:500;line-height:1.7;margin-bottom:10px}.result-body p{font-size:11px;color:#8290a3;line-height:1.8;margin-top:9px}.result-actions{display:flex;gap:7px;flex-wrap:wrap}.result-actions .result-use{flex:1;background:var(--blue-soft);border-color:#cbd7f6;color:#425ec6}.result-actions .button{min-height:36px;padding:7px 10px;font-size:12px}.result-select{position:absolute;left:10px;top:10px;z-index:2}
.guide-card{max-width:960px;padding:24px;background:#fff;border:1px solid var(--line);border-radius:9px;margin:20px 0}.guide-card h2{font-size:15px;font-weight:600;margin-bottom:12px}.guide-card h2:not(:first-child){margin-top:28px}.guide-card p,.guide-card li{font-size:13px;line-height:1.95;color:#66758c}.guide-card p{margin:10px 0 15px}.guide-card code{font-size:12px;background:#f0f3f8;color:#50678d;padding:2px 5px;border-radius:3px}.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.info-box{font-size:12px;color:#64758e;line-height:1.9;padding:14px 16px;background:#f0f4fb;border:1px solid #dce5f3;border-radius:7px;margin:14px 0}.info-box.warn{background:#fffaf2;color:#9c7e4c;border-color:#eee2cd}.tool-mobile{display:flex;gap:10px;margin-top:22px}
/* Dialogs: chrome has its own space and never covers the photograph. */
dialog{padding:25px;border:1px solid #dae1eb;border-radius:12px;max-width:min(720px,94vw);box-shadow:0 24px 90px #17243b3d;color:var(--ink);background:#fff}dialog::backdrop{background:#202b3c8c;backdrop-filter:blur(5px)}dialog h2{font-size:18px;font-weight:600;margin-bottom:20px}dialog p{font-size:12px;line-height:1.9;color:var(--muted)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px}.dialog-heading h2{margin:0}.dialog-buttons{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}
#image-dialog{width:min(1160px,96vw);height:min(920px,94dvh);max-width:96vw;max-height:94dvh;padding:0;border:1px solid #3a414d;border-radius:12px;background:#20252d;color:#dbe0e8;overflow:hidden}
#image-dialog[open]{display:flex;flex-direction:column}.viewer-heading{height:52px;min-height:52px;display:flex;align-items:center;gap:16px;padding:8px 12px 8px 20px;border-bottom:1px solid #ffffff0d;background:#272d36}
#image-caption{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.5;color:#c9d0dc;font-weight:400}.dialog-close{position:static;width:36px;height:36px;border-radius:7px;color:#b8c2d0;background:transparent}.dialog-close:hover{background:#ffffff10;color:#fff}.dialog-close .ui-icon{width:20px;height:20px}
.image-viewer{display:flex;flex-direction:column;flex:1;min-height:0;gap:0;padding:18px 22px 0}.image-large{position:relative;flex:1;min-height:0;min-width:0;overflow:hidden;user-select:none;overscroll-behavior:contain}.image-large.is-zoomed{cursor:grab;touch-action:none}.image-large.is-dragging{cursor:grabbing}.image-canvas{position:absolute;inset:0;width:100%;height:100%;transform-origin:center;pointer-events:none;will-change:transform}.image-large img{width:100%;height:100%;max-width:none;object-fit:contain;display:block;pointer-events:none}
#image-thumbnails{display:flex;gap:8px;overflow-x:auto;flex:none;padding:14px 0 2px;scrollbar-width:thin;scrollbar-color:#576172 transparent}#image-thumbnails:empty{display:none}#image-thumbnails button{height:56px;width:43px;padding:2px;flex:none;border:1px solid #525d6d;border-radius:5px;background:#2c333e;overflow:hidden}#image-thumbnails button.active{border-color:#b9c9f9;box-shadow:0 0 0 1px #b9c9f9}#image-thumbnails img{height:100%;width:100%;object-fit:contain;border-radius:2px}
.image-toolbar{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;height:52px;min-height:52px;color:#bdc8d8;font-size:12px}.viewer-hint{position:absolute;left:22px;font-size:11px;color:#8694a8}.image-toolbar button{display:grid;place-items:center;min-width:32px;height:32px;border-radius:6px;padding:0 9px;color:#bdc8d8}.image-toolbar button:hover{background:#ffffff0d;color:#fff}.image-toolbar .ui-icon{width:17px;height:17px}.image-toolbar output{font-size:11px;color:#8998ac;min-width:44px;text-align:center;font-variant-numeric:tabular-nums}.viewer-divider{width:1px;height:15px;background:#46505f;margin:0 4px}
#compare-dialog{width:1100px;max-width:95vw}.compare-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.compare-grid figure{margin:0;border:1px solid var(--line);padding:10px;border-radius:7px;background:#f6f7f9}.compare-grid figcaption{font-size:12px;text-align:center;margin-bottom:10px;color:var(--muted)}.compare-grid img{height:60vh;width:100%;object-fit:contain}
#shots-dialog{width:720px;max-height:88dvh;overflow:auto}.shot-presets{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:22px}.shot-summary{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;font-size:12px}.shot-summary>div{display:flex;gap:7px;flex-wrap:wrap}.shot-edit-list{display:flex;flex-direction:column;gap:9px}.shot-edit-row{display:grid;grid-template-columns:20px 1fr 1fr 1.4fr 28px;align-items:center;gap:8px}.shot-edit-row>span{font-size:11px;color:#8a97a8}.shot-edit-row select{font-size:12px;padding:8px 5px}.distribution-box{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px;padding:16px;background:#f6f8fc;border-radius:7px}.distribution-box label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.distribution-box input{width:75px;min-height:36px;padding:7px;border:1px solid var(--line);border-radius:5px}
#toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);padding:12px 19px;border:1px solid #ffffff20;border-radius:9px;max-width:min(700px,92vw);background:#2b374bf2;color:#fff;box-shadow:0 7px 30px #14223822;z-index:100;font-size:12px;line-height:1.8;pointer-events:none}
@media(min-width:1600px){.studio-layout{grid-template-columns:minmax(0,1fr) 432px}.editor{padding:28px 28px 22px}.preview{padding:24px 6%}.slot-target{height:194px}.model-library-page #library .asset-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1150px){.sidebar{width:132px;padding:16px 8px 12px}.side-button{font-size:12px;padding:10px;gap:9px}.studio-layout{grid-template-columns:minmax(0,1fr) 356px}.editor{padding:22px 18px 18px}.preview{padding:20px}.slot-target{height:152px}.result-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.model-library-page .studio-layout{grid-template-columns:minmax(230px,.7fr) minmax(360px,1.3fr)}.model-library-page .asset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.model-library-page .asset-filters{grid-template-columns:1fr 1fr}}
@media(max-width:760px){
  :root{--header:58px}.topbar{padding:0 13px;gap:12px}.brand{min-width:0;gap:8px}.brand-symbol{width:31px;height:31px;font-size:20px}.brand strong{font-size:17px}.brand strong span{font-size:9px}.workspace-name,#save-state{display:none}.header-actions{gap:3px}.header-actions .button{font-size:11px;min-height:32px;padding:6px 8px}.header-actions>.icon-button{display:none}.api-state{font-size:10px;padding:7px 4px;max-width:118px}.api-state i{flex:none}
  .app-shell{display:block}.sidebar{position:static;display:block;width:100%;height:auto;padding:7px 9px;border-right:0;border-bottom:1px solid var(--line);background:#fff}.sidebar nav{display:flex;gap:5px;overflow-x:auto;scrollbar-width:none}.side-button,.side-button:nth-child(6),.side-button:nth-child(9){width:auto;min-height:38px;white-space:nowrap;font-size:12px;padding:8px 10px;gap:7px;margin:0}.side-button .ui-icon{width:17px;height:17px}.side-bottom{display:none}
  .studio-layout{display:flex;flex-direction:column;min-height:0}.editor{order:1;height:auto;overflow:visible;border:0;padding:23px 19px}.control-scroll,.series-work{overflow:visible;flex:auto;scrollbar-gutter:auto;padding-right:0}.compact-heading{margin-bottom:20px}.compact-heading h1{font-size:20px}.input-grid{gap:16px 12px}.slot-target{height:180px}.slot-actions>.asset-select,.slot-secondary .asset-replace{min-height:38px}.generation{margin-top:18px;padding-top:18px}.generate-button{min-height:46px}.parameter-pop>summary{min-height:42px}.parameter-panel{max-height:60dvh}
  .preview{order:2;position:relative;height:580px;min-height:360px;padding:18px;border-top:1px solid var(--line)}.preview-stage{height:auto;min-height:0;flex:1}.preview-image img{height:100%;max-height:100%}.preview-tools>span{max-width:45%}.preview-tools .asset-replace{font-size:11px}.preview-continuations{gap:6px}.preview-continuations button{font-size:11px;padding:6px 9px}
  .library-open #library{top:0;height:100dvh;width:min(600px,100vw);border-left:0}.library-open #library-scrim{inset:0}.asset-head{min-height:64px;padding:12px 18px}.asset-search{margin:15px 18px 10px}.asset-body{padding:0 18px 20px}.asset-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px}.asset-filters{grid-template-columns:1fr 1fr}.frame-tabs{gap:6px}.frame-tabs button{padding:7px 11px}.asset-tabs button{font-size:16px}.group-list{grid-template-columns:1fr}.group-contact{height:180px}.history-image{height:clamp(160px,calc(100dvh - 470px),270px)}.history-use{min-height:40px}.history-picker-footer{padding:12px 16px;flex-wrap:wrap;gap:8px}.history-picker-footer .button,.history-picker-footer .asset-replace{font-size:12px;padding:8px 10px}.library-footer{bottom:-20px;gap:7px}.library-footer .button{font-size:12px;padding:8px 10px}
  .model-library-page .studio-layout{display:flex}.model-library-page #library{position:relative;order:1;height:auto;width:100%;border:0}.model-library-page .asset-body{overflow:visible}.model-library-page .preview{height:500px}.model-library-page .library-footer{bottom:0}.source-actions{flex-wrap:wrap}.source-actions .asset-select{min-width:150px}.source-actions .asset-replace{flex:1}.source-row{padding:11px}.derived-inputs>.input-slot .slot-target{height:180px}
  .wide-work #editor,.solo-work #editor{padding:25px 18px}.page-heading h1{font-size:21px}.page-heading{align-items:flex-start}.task-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.metric{padding:15px}.result-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.result-body{padding:10px}.result-actions .button{font-size:11px;padding:7px 8px}.task-row{flex-wrap:wrap}.task-copy{min-width:65%}.settings-grid{grid-template-columns:1fr}.guide-card{padding:19px}.guide-card p,.guide-card li{font-size:12px}.toolbar{gap:8px}.info-box{font-size:11px}
  dialog{padding:20px;max-width:95vw;border-radius:10px}.dialog-heading h2{font-size:16px}.shot-edit-row{grid-template-columns:14px 1fr 1fr 1.2fr 24px;gap:4px}.shot-edit-row select{font-size:11px;padding:7px 3px}.shot-summary{flex-wrap:wrap}.shot-summary .button{font-size:11px;padding:7px 9px}.compare-grid{gap:6px}.compare-grid figure{padding:4px}.compare-grid figcaption{font-size:10px}.compare-grid img{height:44vh}
  #image-dialog{height:96dvh;max-height:96dvh;width:96vw;border-radius:10px}.viewer-heading{height:50px;min-height:50px;padding:7px 9px 7px 14px}.image-viewer{padding:12px 10px 0}.image-toolbar{height:50px;min-height:50px}.viewer-hint{display:none}#image-thumbnails button{height:50px;width:39px}.corner-zoom::before,.preview-zoom::before,.asset-peek::before,.history-zoom::before{content:'';position:absolute;inset:-4px}.dialog-close{width:36px;height:36px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}.spinner{animation-duration:2s}}
/* Confirmation dialog: grouped batch summary */
.confirm-lead{margin:0 0 13px;font-size:12px;line-height:1.9;color:#8ea3c4}
.confirm-groups{display:flex;flex-direction:column;gap:10px;max-height:44vh;overflow:auto;padding-right:4px;scrollbar-width:thin;scrollbar-color:#dce5f5 transparent}
.confirm-product{border:1px solid #e4ecf9;border-radius:7px;background:#fbfcff;padding:10px 12px}
.confirm-product>header{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.confirm-product>header strong{flex:1;min-width:0;font-size:12px;font-weight:500;color:#6f86ac;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.confirm-product>header span{font-size:11px;color:#9db2d2;white-space:nowrap}
.confirm-product>header .link-button{font-size:10px;color:#a88383;white-space:nowrap}
.confirm-product ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.confirm-row{display:grid;grid-template-columns:minmax(0,1fr) 42px 48px;align-items:center;gap:8px;font-size:11px;color:#8ea4c5}
.confirm-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.confirm-row b{font-weight:500;color:#7089b0;text-align:right}
.confirm-row button{font-size:10px;color:#b07f7f;padding:3px 5px;border-radius:4px}
.confirm-row button:hover{background:#fff1f1}
.confirm-tools{display:flex;justify-content:flex-end;margin-top:10px}
.confirm-tools button{font-size:10px;color:#7f96bd;padding:4px 6px;border-radius:4px}
.confirm-tools button:hover{background:#f1f5ff}
.confirm-meta{margin:14px 0 0;font-size:11px;line-height:1.9;color:#9db1cf}
#confirm-submit:disabled{cursor:not-allowed}
@media(max-width:760px){.confirm-groups{max-height:40vh}.confirm-row{grid-template-columns:minmax(0,1fr) 32px 42px;gap:5px}.confirm-row button{font-size:9px;padding:2px 3px}.confirm-product>header .link-button{font-size:9px}}
/* Task page: status filters and a pinned "needs review" alert */
.task-summary{grid-template-columns:repeat(5,minmax(0,1fr))}
.task-filters{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0}
.task-filters button{min-height:34px;padding:7px 11px;border:1px solid var(--line);border-radius:6px;background:#fff;color:#66758c;font-size:12px}
.task-filters button span{margin-left:6px;color:#9aa7b9;font-variant-numeric:tabular-nums}
.task-filters button:hover{background:#f5f7fa}
.task-filters button.active{border-color:#c3cff3;background:var(--blue-soft);color:#3d5ac8}
.task-filters button.active span{color:#3d5ac8}
.task-alert{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0;padding:13px 16px;border:1px solid #f0dfc0;border-radius:8px;background:#fffaf0;color:#8a6d3b;font-size:12px;line-height:1.8}
.task-alert .button{flex:none;background:#fff;color:#8a6d3b;border-color:#ecd9b8}
@media(max-width:760px){.task-alert{flex-direction:column;align-items:flex-start}.task-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Export chooser: light project, full project, or image ZIP */
.export-options{display:flex;flex-direction:column;gap:9px;margin:16px 0 4px}
.export-option{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:64px;padding:12px 14px;text-align:left;white-space:normal}
.export-option strong{font-size:13px;font-weight:600}
.export-option span{font-size:11px;color:var(--muted);line-height:1.7}
.export-option.primary span{color:#dbe4ff}
#compare-dialog .compare-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.compare-note{margin:14px 0 0;font-size:11px;line-height:1.8;color:var(--muted)}
#compare-content>.compare-note{grid-column:1/-1;margin:4px 0 0}
/* Batch cards keep one generation run together */
.batch-list{display:flex;flex-direction:column;gap:10px;margin:16px 0 6px}
.batch-card{border:1px solid var(--line);border-radius:8px;background:#fff}
.batch-card>summary{display:flex;align-items:center;gap:10px;padding:12px 14px;list-style:none;cursor:pointer;font-size:12px;color:#5f6f86}
.batch-card>summary::-webkit-details-marker{display:none}
.batch-card>summary::before{content:'';width:6px;height:6px;border:solid #7c899c;border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);flex:none;transition:transform .15s}
.batch-card[open]>summary::before{transform:rotate(45deg)}
.batch-card[open]>summary{border-bottom:1px solid #eef1f5}
.batch-time{font-variant-numeric:tabular-nums;color:#8a97a8;white-space:nowrap}
.batch-card>summary strong{font-size:13px;color:#3f5168;white-space:nowrap}
.batch-state{flex:1;min-width:0;color:#8a97a8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.batch-sku{max-width:26%;color:#a0adbd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.batch-card .task-list{padding:8px 12px}
.batch-card .task-row{border:0;border-bottom:1px solid #f1f4f8;border-radius:0;padding:10px 2px;background:transparent}
.batch-card .task-row:last-child{border-bottom:0}
@media(max-width:760px){.batch-card>summary{flex-wrap:wrap}.batch-sku{max-width:100%}.batch-state{flex:1 1 100%}}
.batch-lock{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px;padding:11px 14px;border:1px solid #c9d7f5;border-radius:8px;background:#f3f7ff;color:#4861a8;font-size:12px;line-height:1.7}
.batch-lock strong{font-weight:600}.batch-lock span{flex:1;min-width:180px;color:#62779c}.batch-lock .button{flex:none}
.task-tabs{display:flex;gap:8px;margin:18px 0 4px;border-bottom:1px solid var(--line)}
.task-tabs button{padding:10px 14px;font-size:13px;color:#7a8798;border-bottom:2px solid transparent}
.task-tabs button.active{color:#3957ca;border-color:var(--blue);font-weight:600}
.task-tabs button span{margin-left:6px;font-size:11px;color:#9aa7b9}
.batch-bulk{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 8px}
.batch-bulk .toggle-label{margin:0}
.batch-bulk .muted{font-size:11px}
.batch-bulk .button{margin-left:auto}
.batch-select{width:16px;height:16px;flex:none}
.task-thumb{flex:none;width:46px;height:60px;padding:0;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:#f4f6f9}
.task-thumb img{width:100%;height:100%;object-fit:cover}
.task-thumb.blank{border:1px dashed #e3e8ef;background:transparent}
.task-row .task-copy{flex:1}
@media(max-width:760px){.task-thumb{width:38px;height:50px}.batch-bulk .button{margin-left:0}}
/* Image viewer: the frame follows the photo instead of filling the monitor */
#image-dialog{width:fit-content;height:auto;max-width:94vw;max-height:90dvh;padding:0;overflow:hidden}
#image-dialog[open]{display:flex;flex-direction:column}
.image-viewer{display:flex;flex-direction:row;align-items:stretch;flex:0 1 auto;min-height:0;height:auto;max-height:calc(90dvh - 104px);padding:10px 14px 0;gap:12px}
.image-large{position:relative;flex:0 1 auto;min-width:0;min-height:0;max-width:min(84vw,1040px);max-height:calc(90dvh - 156px);display:flex;align-items:center;justify-content:center;overflow:hidden}
.image-canvas{position:relative;inset:auto;width:fit-content;height:fit-content;max-width:100%;max-height:100%;transform-origin:center;pointer-events:none;will-change:transform}
.image-large img{display:block;width:auto;height:auto;max-width:min(84vw,1040px);max-height:calc(90dvh - 156px);object-fit:contain;pointer-events:none}
#image-thumbnails{display:flex;flex-direction:column;gap:7px;width:78px;max-height:calc(90dvh - 156px);overflow:auto;flex:none;padding:0 2px 0 0;scrollbar-width:thin;scrollbar-color:#576172 transparent}
#image-thumbnails button{width:70px;height:52px;padding:2px;flex:none;border:1px solid #525d6d;border-radius:5px;background:#2c333e;overflow:hidden}
#image-thumbnails img{width:100%;height:100%;object-fit:cover;border-radius:2px}
@media(max-width:760px){.image-viewer{flex-direction:column;max-height:calc(96dvh - 100px);padding:10px 10px 0}.image-large{max-width:92vw;max-height:calc(96dvh - 190px)}.image-large img{max-width:92vw;max-height:calc(96dvh - 190px)}#image-thumbnails{flex-direction:row;width:auto;max-height:none;overflow-x:auto;overflow-y:hidden;padding:0 0 2px}#image-thumbnails button{width:43px;height:56px}}
/* Resizable workspace: drag the divider to trade canvas width for inspector width */
.studio-layout{grid-template-columns:minmax(420px,1fr) 7px clamp(340px,var(--inspector-width,440px),560px)}
.splitter{position:relative;cursor:col-resize;touch-action:none;background:#eef1f6;outline:none}
.splitter::before{content:'';position:absolute;top:0;bottom:0;left:3px;width:1px;background:#d9e0ea}
.splitter:hover,.splitter:focus-visible{background:#e4eaff}
.splitter::after{content:'';position:absolute;top:50%;left:2px;width:3px;height:44px;transform:translateY(-50%);border-radius:2px;background:#c6d0e0;opacity:.55;transition:opacity .15s}
.splitter:hover::after,.splitter:focus-visible::after{opacity:1}
.splitter:focus-visible{box-shadow:inset 0 0 0 2px #8ea8f0}
body.resizing{cursor:col-resize;user-select:none}
body.resizing .splitter{background:#dbe4ff}
.preview{padding:18px clamp(14px,1.6vw,24px)}
@media(max-width:1150px){.studio-layout{grid-template-columns:minmax(0,1fr) 356px}.splitter{display:none}}
@media(max-width:760px){.studio-layout{display:flex;flex-direction:column}.splitter{display:none}.preview{padding:18px}}
.model-library-page .splitter{display:none}
.wide-work .splitter,.solo-work .splitter{display:none}
/* Inspector cards: four collapsible sections plus a fixed output bar */
.inspector-card{border:1px solid var(--line);border-radius:9px;background:#fff;margin:0 0 10px;overflow:hidden}
.inspector-card>summary{display:flex;align-items:center;gap:8px;padding:11px 12px;list-style:none;cursor:pointer;color:#4d5c71;font-size:12px}
.inspector-card>summary::-webkit-details-marker{display:none}
.inspector-card>summary:hover{background:#f8f9fb}
.card-num{display:grid;place-items:center;width:20px;height:20px;flex:none;border-radius:50%;background:#eef2ff;color:#4564df;font-size:10px;font-weight:600}
.inspector-card>summary strong{font-size:13px;font-weight:600}
.card-note{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:#9aa7b9}
.card-arrow{display:grid;place-items:center;flex:none;color:#9aa7b9;transition:transform .15s}
.card-arrow .ui-icon{width:14px;height:14px}
.inspector-card[open] .card-arrow{transform:rotate(180deg)}
.inspector-card[open]>summary{border-bottom:1px solid #eef1f5;margin-bottom:10px}
.inspector-card .card-body{padding:0 12px 12px}
.inspector-card .card-body>.input-grid{margin-top:0;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));align-items:start}
.inspector-card .card-body>.input-grid>.input-slot{grid-column:auto}
.output-card{flex:none;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.output-head{display:flex;align-items:center;gap:8px;color:#4d5c71;font-size:12px}
.output-head strong{font-size:13px;font-weight:600}
.output-card .generation{margin-top:0;padding-top:10px;border-top:0}
/* Horizontal single-image rows (try-on product and model) */
.product-row,.slot-row{display:flex;gap:14px;align-items:flex-start;width:100%;position:relative}
.product-row .row-media{flex:0 0 150px;min-width:0}
.product-row .row-media .outfit-images{width:100%;margin:0}
.product-row .row-media .outfit-empty{min-height:160px;width:100%}
.product-row .row-copy,.slot-row .row-copy{flex:1;min-width:0}
.product-row .row-copy .slot-title,.slot-row .row-copy .slot-title{margin:0 0 3px}
.row-hint{margin:0 0 10px;color:#8a97a8;font-size:11px;line-height:1.7}
.row-copy .slot-actions{display:flex;flex-wrap:wrap;gap:6px;margin:0}
.row-copy .slot-actions .asset-select,.row-copy .slot-actions .asset-replace{flex:1 1 120px;min-height:34px;padding:6px 8px;font-size:11px}
.slot-row .row-media{width:100px;height:124px;flex:none;padding:0;border:1px solid var(--line);border-radius:7px;background:#f7f8fa;overflow:hidden;display:grid;place-items:center}
.slot-row .row-media.filled{border-color:#dce4ef}
.slot-row .row-media img{width:100%;height:100%;object-fit:cover}
.slot-row .row-media .slot-plus{font-size:24px;color:#aab6c6}
.slot-row .asset-peek{left:71px;right:auto;top:6px;width:24px;height:24px}
.slot-row .asset-peek .ui-icon{width:14px;height:14px}
.base-row{display:flex;gap:14px;align-items:flex-start;width:100%;position:relative}
.base-row .row-media{flex:0 0 140px;height:170px;padding:0;border:1px solid var(--line);border-radius:7px;background:#f7f8fa;overflow:hidden;display:grid;place-items:center}
.base-row .row-media.filled{border-color:#dce4ef}
.base-row .row-media img{width:100%;height:100%;object-fit:cover}
.base-row .row-media .slot-plus{font-size:26px;color:#aab6c6}
.base-row .row-copy{flex:1;min-width:0}
.base-row .row-copy .slot-title{margin:0 0 3px}
.base-row .asset-peek{left:110px;right:auto;top:6px;width:24px;height:24px}
.base-row .asset-peek .ui-icon{width:14px;height:14px}
.series-source .base-row{padding:12px;border:1px solid var(--line);border-radius:9px;background:#fff}
@media(max-width:760px){.product-row .row-media{flex-basis:140px}.slot-row .row-media{width:84px;height:106px}.slot-row .asset-peek{left:55px}.base-row .row-media{flex-basis:110px;height:140px}.base-row .asset-peek{left:85px}}
/* Batch selection bar and undo */
.batch-bulk{position:sticky;top:8px;z-index:9;background:#f7f8fa;border:1px solid var(--line);border-radius:8px;padding:8px 10px;box-shadow:0 4px 14px #202c4410}
.undo-bar{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:10px 10px 10px 16px;border-radius:9px;background:#202a38;color:#fff;box-shadow:0 10px 30px #0003;z-index:80;font-size:12px;max-width:calc(100vw - 24px)}
.undo-bar .button{background:#fff;color:#26313f;border-color:#fff;white-space:nowrap}
.undo-bar .icon-button{color:#cbd5e3}
/* Task tray, project history, confirmation dialog, type scale */
.task-tray-button{display:flex;align-items:center;gap:5px;padding:6px 9px;border:1px solid #d9e2f5;border-radius:7px;background:#eef3ff;color:#3d5fd4;font-size:12px;cursor:pointer}
.task-tray-button b{font-weight:600}
.task-tray-button.idle{background:#f5f7fa;color:#65758a;border-color:#e0e6ef}
.task-tray{position:fixed;right:20px;top:64px;width:290px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 40px #26334824;z-index:70}
.task-tray-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.task-tray-head strong{font-size:13px}
.task-tray-row{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:1px solid #eef1f5;font-size:12px;color:#48566a}
.task-tray-row small{color:#7c8a9d}
.task-tray .wide-button{margin-top:9px}
.history-list{display:flex;flex-direction:column;gap:7px;max-height:60vh;overflow:auto;margin-top:10px}
.history-row{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--line);border-radius:8px}
.history-row img{width:46px;height:58px;object-fit:cover;border-radius:5px;flex:none}
.history-copy{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.history-copy strong{font-size:12px}.history-copy small{font-size:11px;color:#718095}
#history-dialog,#ask-dialog{width:min(560px,94vw);padding:18px;border:0;border-radius:10px;box-shadow:0 20px 60px #1c27383d}
#ask-dialog p{color:#68778a;font-size:13px;line-height:1.8;margin:8px 0 16px}
#image-dialog:focus{outline:none}
:root{--muted:#68778a}
body{font-size:14px}
.tiny,.muted{font-size:12px;color:#68778a}
.slot-title,.row-hint{font-size:12px}
.inspector-card>summary strong{font-size:13px}
.filmstrip{display:flex;align-items:center;gap:10px;padding:8px 16px 10px;border-top:1px solid #edf0f5;background:#fff;flex:none}
.filmstrip-title{font-size:11px;color:#718095;flex:none;line-height:1.5}
.filmstrip-title small{display:block;color:#9aa7b9}
.filmstrip-row{display:flex;gap:6px;overflow-x:auto;padding:2px 0;scrollbar-width:thin}
.filmstrip-row button{flex:none;width:42px;height:54px;padding:0;border:1px solid #dce3ed;border-radius:5px;overflow:hidden;background:#f5f7fa}
.filmstrip-row img{width:100%;height:100%;object-fit:cover;display:block}
/* 移动端 Web/PWA：避免横向滚动、iOS 输入缩放与刘海遮挡 */
@media(max-width:760px){
  body.commerce-studio{overflow-x:hidden}
  .commerce-studio .topbar{padding-top:env(safe-area-inset-top)}
  .commerce-studio .app-shell,.commerce-studio .editor,.commerce-studio .asset-body{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
  .commerce-studio .editor input,.commerce-studio .editor select,.commerce-studio .editor textarea,
  .commerce-studio .asset-search input,.commerce-studio dialog input,.commerce-studio dialog select,.commerce-studio dialog textarea{font-size:16px}
  .commerce-studio .button,.commerce-studio .generate-button,.commerce-studio .asset-select,.commerce-studio .asset-replace{min-height:42px}
  .commerce-studio .result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .commerce-studio .preview{height:auto;min-height:420px}
  .commerce-studio .topbar .brand strong{max-width:42vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
