/* PV LAB / FASHION ATELIER
   Dark editorial image workbench, matching PV Lab Video. No demonstration image in the result window.
   Controls, model IDs, authentication, credits and submission code remain unchanged. */
:root{
 color-scheme:dark;
 --paper:#101114;--paper-2:#17191c;--ink:#f1f2f5;--muted:#a4a8b0;--line:#313339;
 --photo:#191a1b;--photo-ink:#e6e6e5;--focus:#f7f8fa;
 --font:'DM Sans','Helvetica Neue',Arial,sans-serif;
 --display:'Bodoni Moda','Times New Roman',serif;
 font-family:var(--font);font-synthesis:none
}
*{box-sizing:border-box}
html{background:var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font:400 13px/1.5 var(--font);letter-spacing:-.015em;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}a:hover{text-decoration:none;color:#fff}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
[hidden]{display:none!important}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;padding:0;border:0}.skip:focus-visible{position:fixed;top:12px;left:12px;width:auto;height:auto;clip-path:none;background:#fff;color:#111;padding:11px;border:1px solid #111;z-index:30}
.site-header{height:62px;display:flex;align-items:center;gap:clamp(30px,5vw,98px);padding:0 clamp(20px,3.2vw,60px);border-bottom:1px solid rgba(207,208,210,.085);background:rgba(18,19,21,.96);backdrop-filter:blur(16px)}
.wordmark{display:inline-flex;align-items:center;gap:10px;white-space:nowrap;font:500 18px/1 var(--font);letter-spacing:-.035em}
.wordmark img{width:26px;height:26px;object-fit:contain}
.site-header nav{display:flex;align-items:center;gap:clamp(20px,2.5vw,43px);height:100%;font-size:12px;color:#a9aaac}
.site-header nav a{position:relative;display:inline-flex;align-items:center;height:100%;white-space:nowrap;transition:color .18s}
.site-header nav a:hover,.site-header nav a.selected{color:var(--ink)}
.site-header nav a.selected:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--ink)}
.back-studio{margin-left:auto;white-space:nowrap;font-size:11px;display:inline-flex;align-items:center;gap:16px;color:#d7d8db}
.back-studio span{font-size:14px}
#content{width:100%;max-width:1860px;margin:0 auto;padding:0 clamp(20px,3.2vw,60px)}
.page-intro{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:10px 0 12px}
.eyebrow{font:600 9px/1.3 var(--font);letter-spacing:.14em;color:#a4a8b0;margin:0;text-transform:uppercase}
.eyebrow span{color:#858993;margin:0 5px}
.page-intro h1{font:400 clamp(38px,3.3vw,56px)/1.07 var(--font);letter-spacing:-.07em;margin:5px 0 0}
.page-intro h1 em{font:italic 400 1.12em/1 var(--display);letter-spacing:-.035em}
.intro-description{margin:0 0 5px;color:#a4a8b0;font-size:12px;line-height:1.6;text-align:right}
.fashion-workspace{--fashion-photo-height:clamp(260px,min(calc(100vh - 410px),28vw),510px);--fashion-photo-height:clamp(260px,min(calc(100dvh - 410px),28vw),510px);display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);grid-template-rows:auto auto;column-gap:clamp(18px,2.2vw,42px);row-gap:10px;align-items:start;padding-bottom:40px}
#fashion-form{display:contents}
.source-section{grid-column:1;grid-row:1;min-width:0}
.result-panel{grid-column:2;grid-row:1;min-width:0}
.engine-section{grid-column:1 / -1;grid-row:2;min-width:0;padding:10px 0 0;border-top:1px solid var(--line)}
.section-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-height:22px;margin:0 0 9px}
.section-header h2{margin:0;color:#e4e6ea;font:600 10px/1.4 var(--font);letter-spacing:.105em;text-transform:uppercase}
.section-header h2 span{font-weight:400;color:#858993;margin:0 5px}
.section-header>span{font-size:9px;letter-spacing:.095em;color:#858993;text-transform:uppercase;white-space:nowrap}
.image-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.image-slot{display:flex;position:relative;align-items:center;justify-content:center;min-width:0;height:var(--fashion-photo-height);aspect-ratio:auto;min-height:0;overflow:hidden;cursor:pointer;background:var(--photo);border:1px solid #3d3d3d;border-radius:14px;color:var(--photo-ink);isolation:isolate;transition:box-shadow .17s ease,border-color .17s ease}
.image-slot:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#ffffff04,transparent 34%,#00000011);z-index:0;pointer-events:none}
.image-slot:hover,.image-slot.drag-over,.image-slot:focus-within{border-color:#eae9e5;box-shadow:0 0 0 1px #343434,0 0 0 4px #e4e2dc,inset 0 0 28px #ffffff0b}
.image-slot input{position:absolute;inset:0;width:100%;height:100%;opacity:0;z-index:5;cursor:pointer}
.image-slot img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1}
.image-slot:has(img:not([hidden])):after{content:"";position:absolute;inset:auto 0 0;height:22%;background:linear-gradient(transparent,#0009);pointer-events:none;z-index:2}
.slot-number{position:absolute;left:18px;top:17px;font:400 11px/1 var(--font);color:#8f9193;z-index:3;pointer-events:none}
.slot-invite{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;position:relative;z-index:1;pointer-events:none;transform:translateY(-4px)}
.slot-invite>.empty-art{display:block;width:96px;height:112px;flex:none;margin:0 0 7px;fill:none;stroke:currentColor;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round;color:#dcdfe3;opacity:.24}
.slot-invite>.empty-art-garment{opacity:.27}
.empty-art .art-secondary{opacity:.5}
.slot-invite strong{font:500 15px/1.2 var(--font);letter-spacing:-.015em;color:#efefec}
.slot-invite small{font:400 11px/1.5 var(--font);color:#aaaba9}
.slot-caption{display:flex;align-items:center;justify-content:space-between;position:absolute;inset:auto 19px 17px;z-index:3;pointer-events:none;font:500 11px var(--font);letter-spacing:.14em;color:#ededeb}
.slot-caption span{font-size:17px;font-weight:400;letter-spacing:0}
.source-note{font:400 9px/1.5 var(--font);letter-spacing:.055em;color:#91949b;margin:9px 0 0}
.source-note span{padding:0 4px;color:#6f737b}
.result-stage{position:relative;display:flex;align-items:center;justify-content:center;height:var(--fashion-photo-height);aspect-ratio:auto;min-height:0;background:var(--photo);color:var(--photo-ink);border:1px solid #3d3d3d;border-radius:14px;overflow:hidden}
.result-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;color:#a1a2a2;padding:25px}
.result-placeholder svg.empty-art-result{display:block;width:100px;height:118px;margin:0 0 5px;fill:none;stroke:currentColor;stroke-width:1.1;stroke-linejoin:round;color:#dcdfe3;opacity:.24}
.result-placeholder strong{font:500 11px/1.4 var(--font);letter-spacing:.105em;color:#c1c2c2}
.result-placeholder small{font:400 11px var(--font);color:#87898b}
#result-image{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--photo)}
.result-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:37px}
.result-actions>span{font:500 9px var(--font);letter-spacing:.09em;color:#898d96}
.result-actions a,.result-actions button{font:500 11px var(--font);color:#d2d5d9}
.result-actions a:hover,.result-actions button:hover{color:#fff}
.result-actions button{background:none;border:0;padding:7px 0;cursor:pointer}
.fashion-gallery{grid-column:1 / -1;grid-row:3;min-width:0;margin-top:12px;padding:27px 0 0;border-top:1px solid var(--line)}
.fashion-gallery-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:21px}
.fashion-gallery-head .eyebrow{font-size:9px;letter-spacing:.11em}
.fashion-gallery-head h2{font:400 clamp(27px,2.8vw,39px)/1.15 var(--font);letter-spacing:-.058em;margin:5px 0 0}
#fashion-gallery-count{font:400 12px var(--font);color:#90949c;letter-spacing:0;vertical-align:middle;margin-left:9px}
.fashion-gallery-head #refresh-history{font:500 11px var(--font);color:#d4d7dc;background:none;border:0;padding:8px 0;white-space:nowrap}
.fashion-gallery-head #refresh-history:hover:not(:disabled){color:#fff}
.history-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px;max-height:none;overflow:visible;align-items:start;min-width:0}
.history-list .tip{grid-column:1 / -1;color:#92969d;font-size:12px;margin:0;padding:25px 0}
.history-item{display:flex;flex-direction:column;position:relative;min-width:0;overflow:hidden;text-align:left;padding:0;border:1px solid #37393d;border-radius:12px;background:#191a1d;color:#f0f1f3;cursor:pointer;transition:border-color .17s ease,transform .17s ease}
.history-item:hover{border-color:#7a7d84;transform:translateY(-2px)}
.history-item:focus-visible{outline:2px solid #f1f2f5;outline-offset:3px}
.history-item[aria-pressed="true"]{border-color:#c3c7ce}
.history-item .history-media{display:grid;position:relative;place-items:center;width:100%;aspect-ratio:3/4;overflow:hidden;background:#151619}
.history-item .history-media img{display:block;max-width:100%;width:100%;height:100%;object-fit:contain}
.history-item .history-media:has(img) .history-media-placeholder{display:none}
.history-item .history-media-placeholder{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;color:#777b83;font-size:10px;line-height:1.55}
.history-item .history-media-placeholder svg{color:#838791;opacity:.65}
.history-item .history-info{display:flex;flex-direction:column;gap:6px;width:100%;padding:13px 12px 14px}
.history-item .history-model{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 11px/1.35 var(--font);color:#e8eaed}
.history-item .history-info-line{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#8f949b;font-size:10px}
.history-item .history-state{font-size:9px;white-space:nowrap}
.history-item .history-state[data-status="completed"]{color:#c5c8ce}
.history-item .history-state[data-status="failed"]{color:#e0a3a0}
.history-item .history-state[data-status="queued"],.history-item .history-state[data-status="running"],.history-item .history-state[data-status="saving"],.history-item .history-state[data-status="submitting"]{color:#d9bb84}
.history-item .history-status-detail{color:#a6aab1;font-size:10px;line-height:1.5;max-height:4.5em;overflow:hidden}
.fashion-more{display:block;margin:25px auto 0;padding:11px 18px;border:1px solid #4c5058;border-radius:7px;background:#222429;color:#e6e8ec;font:500 11px var(--font)}
.fashion-more:hover:not(:disabled){background:#30333a}
.fashion-more:disabled,.fashion-gallery-head #refresh-history:disabled{opacity:.45;cursor:wait}
.engine-grid{display:grid;grid-template-columns:minmax(220px,1.1fr) minmax(200px,.96fr) minmax(225px,1.16fr) minmax(205px,.77fr);gap:18px;align-items:start}
.control-block{min-width:0}
.field-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 7px;font:600 10px/1.4 var(--font);color:#d9dce2}
.field-title span{font:500 9px var(--font);color:#9398a1;letter-spacing:.06em}
select,textarea{width:100%;border:1px solid #454951;border-radius:0;background-color:#1a1c21;color:var(--ink);font:400 12px/1.5 var(--font);outline:0}
select{height:45px;padding:10px 33px 10px 13px;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%23d6d9de' stroke-width='1.7' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat}
select option{background:#1a1c21;color:#edf0f4}
select:hover,textarea:hover{border-color:#a5a9b3}
select:focus,textarea:focus{border-color:#e4e6ea;box-shadow:0 0 0 1px #e4e6ea}
.model-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.model-fields .field-title{margin-bottom:7px}
.model-fields select{padding-left:10px}
textarea{display:block;height:45px;min-height:45px;max-height:145px;resize:vertical;padding:12px}
textarea::placeholder{color:#858993;opacity:1}
.action-primary{display:flex;justify-content:space-between;align-items:center;width:100%;height:45px;min-height:45px;background:#f1f2f5;color:#101114;border:1px solid #f1f2f5;border-radius:0;padding:10px 13px;font:500 12px/1 var(--font);white-space:nowrap;transition:background .16s}
.action-primary span{font-size:15px}
.action-primary:hover:not(:disabled){background:#fff}
.action-primary:disabled{background:#35373c;color:#a4a8b0;border-color:#44474e}
.action-hint{font:400 10px/1.45 var(--font);color:#9a9da5;margin:6px 0 0}
.quote-box{border:1px solid #4b4e55;background:#23252a;padding:9px;margin-top:0}
.quote-box .eyebrow{font-size:9px}
.quote-box strong{font:500 17px/1.4 var(--font);display:block;margin:2px 0 5px;letter-spacing:-.035em}
.quote-box>p:not(.eyebrow){font:400 10px/1.45 var(--font);color:#a4a8b0;margin:0}
.quote-box .action-primary{margin-top:9px;font-size:11px}
.engine-footer{display:flex;align-items:center;gap:20px;flex-wrap:wrap;min-height:40px;border-top:1px solid var(--line);margin-top:12px;padding:9px 0 0}
.api-status-strip{display:flex;align-items:center;gap:7px;min-width:0;white-space:nowrap}
.api-name{font:600 9px var(--font);letter-spacing:.08em;color:#c4c6cb}
#fashn-api-state{color:#b7bbc3;font:400 10px/1.4 var(--font)}
#check-fashn{border:0;background:none;color:#b7bbc3;font-size:15px;padding:2px 6px;cursor:pointer;line-height:1}
#check-fashn:disabled{opacity:.45}
#check-fashn:hover:not(:disabled){color:#fff}
.model-description,.model-note{font:400 10px/1.4 var(--font);color:#9a9fa8;margin:0}
.model-note{margin-left:auto}
.status{width:100%;color:#d1d4da;margin:0;font:400 11px/1.45 var(--font)}
.status:empty{display:none}
.status.error{color:#e7a59f}
.sign-in-panel{max-width:540px;margin:30px auto 70px;padding:36px;border:1px solid var(--line);background:#17191c}
.sign-in-panel h2{font:400 36px/1.1 var(--display);letter-spacing:-.045em;margin:9px 0}
.sign-in-panel p:not(.eyebrow){color:#a4a8b0;margin:13px 0 0}
.sign-in-panel button{background:#f1f2f5;border:0;color:#101114;padding:11px 18px;margin:17px 10px 0 0}
.sign-in-panel button:disabled{opacity:.5}
footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:19px 0 28px;font:500 9px var(--font);letter-spacing:.12em;color:#858993}
@media(max-width:1230px){
 .engine-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .model-description,.model-note{max-width:49%;margin:0}
}
@media(max-width:1230px) and (min-width:801px){.history-list{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:800px){
 .fashion-gallery{grid-row:4;margin-top:0;padding-top:20px}
 .history-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
 .site-header nav{gap:18px}
 .fashion-workspace{grid-template-columns:1fr}
 .source-section{grid-row:1;grid-column:1}
 .engine-section{grid-row:2;grid-column:1;padding-top:16px}
 .result-panel{grid-row:3;grid-column:1}
 .image-slot{height:auto;aspect-ratio:4/5;min-height:275px}
 .result-stage{height:auto;aspect-ratio:1.6/1;min-height:315px}
 .intro-description{display:none}
}
@media(max-width:560px){
 .site-header{height:58px;padding:0 17px;gap:10px}
 .site-header nav{display:none}
 .wordmark{font-size:17px}
 .back-studio{font-size:11px}
 #content{padding:0 16px}
 .page-intro{padding:18px 0 17px}
 .page-intro h1{font-size:38px}
 .section-header>span{font-size:8px}
 .image-pair{gap:8px}
 .image-slot{min-height:0;aspect-ratio:3/4}
 .slot-number{top:11px;left:11px;font-size:9px}
 .slot-caption{left:11px;right:11px;bottom:11px;font-size:9px}
 .slot-invite strong{font-size:13px}
 .slot-invite small{font-size:9px}
 .slot-invite>.empty-art{width:64px;height:77px;margin-bottom:4px}
 .result-placeholder svg.empty-art-result{width:80px;height:96px}
 .source-note{font-size:8px}
 .engine-grid{grid-template-columns:1fr;gap:13px}
 .detail-block{grid-row:auto}
 .result-stage{aspect-ratio:4/3;min-height:265px}
 .result-actions{gap:8px;flex-wrap:wrap;padding:6px 0}
 .result-actions>span{width:100%}
 .model-description,.model-note{max-width:100%}
 .engine-footer{gap:8px}
 .history-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .fashion-gallery-head{margin-bottom:14px}
 .history-item .history-info{padding:10px}
 footer>span:last-child{display:none}
}
@media(prefers-reduced-motion:reduce){.image-slot,.action-primary,.site-header nav a{transition:none}}
