:root{--ink:#181612;--paper:#fffdfa;--surface:#efefea;--panel:#f7f7f3;--line:#d8d6cd;--line-on-dark:#ffffff24;--muted:#716f68;--muted-strong:#a8a49a;--muted-on-dark:#b9b4a9;--accent:#f2583e;--accent-dark:#b93624;--success:#48d597;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;color:var(--ink);background:var(--surface);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;font-weight:500;line-height:1.5}*{box-sizing:border-box}html{background:var(--surface)}body{min-width:320px;min-height:100svh;margin:0}button,input,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{cursor:not-allowed}::selection{color:var(--paper);background:var(--accent)}.app-shell{background:var(--surface);min-height:100svh;color:var(--ink);grid-template-columns:300px minmax(0,1fr) 360px;display:grid}.control-rail,.workspace,.inspector{min-width:0;animation:.48s both rise-in}.control-rail{background:var(--ink);height:100svh;color:var(--paper);flex-direction:column;gap:28px;padding:28px;display:flex;position:sticky;top:0}.brand-lockup{align-items:center;gap:14px;display:flex}.brand-mark{width:42px;height:42px;color:var(--accent);background:#ffffff0f;border:1px solid #ffffff2e;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.brand-lockup p,.overline{letter-spacing:0;text-transform:uppercase;color:var(--muted-strong);margin:0;font-size:12px;font-weight:700;line-height:1}.brand-lockup h1{letter-spacing:0;margin:6px 0 0;font-size:24px;font-weight:750;line-height:1}.rail-section,.inspector-section,.prompt-panel{border-top:1px solid var(--line-on-dark);padding-top:22px}.section-title,.prompt-head,.control-label,.history-head,.run-status,.viewer-actions,.rail-actions{align-items:center;display:flex}.section-title{gap:8px;margin-bottom:16px;font-size:14px;font-weight:700}.field-label{color:var(--muted-on-dark);margin-bottom:8px;font-size:13px;display:block}.key-control input,.prompt-panel textarea,.count-input,.dimension-field input{border:1px solid var(--line);width:100%;color:var(--ink);background:var(--paper);border-radius:8px;outline:none;transition:border-color .18s,box-shadow .18s,background .18s}.key-control input{color:var(--paper);background:#ffffff12;border-color:#ffffff24;padding:12px}.key-control input:focus,.prompt-panel textarea:focus,.count-input:focus,.dimension-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #f2583e29}.rail-actions{gap:10px;margin-top:12px}.button,.generate-button,.icon-button,.text-button,.reference-clear,.segmented button,.count-options button,.history-item{font:inherit;letter-spacing:0;border:0;border-radius:8px}.button,.generate-button{justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 14px;font-weight:700;display:inline-flex}.button.light{color:var(--ink);background:var(--paper)}.button.ghost{color:var(--paper);background:0 0;border:1px solid #ffffff2e}.key-state{color:var(--muted-on-dark);align-items:center;gap:8px;margin-top:14px;font-size:13px;display:flex}.key-state.is-ready{color:var(--success)}.meta-list{gap:14px;margin:0;display:grid}.meta-list div{gap:6px;display:grid}.meta-list dt{color:var(--muted-on-dark);font-size:12px}.meta-list dd{overflow-wrap:anywhere;font-family:var(--mono);color:var(--paper);margin:0;font-size:13px}.api-help{border-top:1px solid var(--line-on-dark);color:var(--muted-on-dark);margin:16px 0 0;padding-top:14px;font-size:13px;line-height:1.55}.api-help a{color:var(--paper);text-underline-offset:3px;font-weight:700;text-decoration-color:#ffffff57}.api-help a:hover{color:var(--accent)}.generate-button{width:100%;color:var(--paper);background:var(--accent);margin-top:auto;transition:transform .18s,box-shadow .18s,opacity .18s;box-shadow:0 12px 26px #f2583e3d}.generate-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 16px 34px #f2583e4d}.generate-button:disabled{cursor:not-allowed;opacity:.72}.workspace{grid-template-rows:auto auto minmax(360px,1fr);gap:22px;padding:30px;display:grid}.workspace-header{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.workspace-header h2{letter-spacing:0;margin:8px 0 0;font-size:28px;font-weight:760;line-height:1.16}.run-status{border:1px solid var(--line);min-height:34px;color:var(--muted);background:var(--paper);border-radius:8px;flex:none;gap:8px;padding:0 12px;font-size:13px}.prompt-panel{border-top:0;padding-top:0}.prompt-head{color:var(--muted);justify-content:space-between;margin-bottom:10px;font-size:13px}.prompt-head label{color:var(--ink);font-weight:700}.prompt-panel textarea{resize:vertical;min-height:164px;padding:16px;font-size:15px;line-height:1.6}.reference-row{grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:10px;margin-top:12px;display:grid}.reference-drop{border:1px dashed var(--line);min-width:0;min-height:64px;color:var(--muted);background:var(--paper);cursor:pointer;border-radius:8px;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:12px;padding:8px 12px 8px 8px;transition:border-color .16s,color .16s,transform .16s;display:grid;position:relative}.reference-drop:hover{color:var(--ink);border-color:var(--accent);transform:translateY(-1px)}.reference-drop.has-image{border-style:solid;border-color:#f2583e61}.reference-drop input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.reference-drop img,.reference-icon{border-radius:6px;width:48px;height:48px}.reference-drop img{object-fit:cover;background:var(--surface)}.reference-icon{color:var(--accent);background:#f2583e1a;justify-content:center;align-items:center;display:inline-flex}.reference-drop strong,.reference-drop small{white-space:nowrap;text-overflow:ellipsis;min-width:0;display:block;overflow:hidden}.reference-drop strong{color:var(--ink);font-size:14px}.reference-drop small{color:var(--muted);margin-top:2px;font-size:12px}.reference-clear{min-width:68px;color:var(--accent);background:#f2583e14;border:1px solid #f2583e47;padding:0 14px;font-weight:700}.reference-clear:disabled{cursor:not-allowed;opacity:.58}.error-line{border-left:3px solid var(--accent);color:var(--accent-dark);background:#f2583e17;margin-top:12px;padding:12px;font-size:14px}.result-stage{border:1px solid var(--line);background:linear-gradient(90deg, #1a19160d 1px, transparent 1px), linear-gradient(#1a19160d 1px, transparent 1px), var(--paper);background-size:32px 32px;border-radius:8px;flex-direction:column;min-height:420px;display:flex;position:relative;overflow:hidden}.preview-pane{flex:auto;place-items:center;width:100%;min-height:0;padding:18px;display:grid}.empty-state,.loading-state{color:var(--muted);text-align:center;place-items:center;gap:14px;display:grid}.empty-state svg{color:var(--accent)}.empty-state p,.loading-state p,.muted{color:var(--muted);margin:0}.scan-frame{border:1px solid var(--line);background:var(--surface);border-radius:8px;width:190px;height:190px;position:relative;overflow:hidden}.scan-frame span{background:linear-gradient(100deg,#0000 0%,#f2583e24 45%,#1d94882e 55%,#0000 100%);animation:1.2s ease-in-out infinite scan;position:absolute;inset:0;transform:translate(-100%)}.image-viewer{place-items:center;width:100%;height:100%;margin:0;display:grid;position:relative}.image-viewer img{object-fit:contain;border-radius:8px;width:auto;max-width:min(100%,920px);height:auto;max-height:calc(100svh - 430px);animation:.42s both image-in;display:block;box-shadow:0 26px 70px #0000002e}.image-viewer figcaption{pointer-events:none;justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;bottom:16px;left:16px;right:16px}.image-viewer figcaption>span{color:var(--paper);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0c0c0ab8;border-radius:8px;padding:8px 10px;font-size:13px}.viewer-actions{pointer-events:auto;gap:8px}.icon-button{width:38px;height:38px;color:var(--paper);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0c0c0abd;justify-content:center;align-items:center;transition:background .16s,transform .16s;display:inline-flex}.icon-button:hover{background:var(--accent);transform:translateY(-1px)}.batch-strip{border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f7f7f3eb;flex:none;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;width:100%;padding:12px;display:grid}.batch-slot{min-height:70px;color:var(--muted);text-align:left;border:1px solid var(--line);background:var(--paper);grid-template-columns:54px minmax(0,1fr);align-items:center;gap:10px;padding:8px;transition:border-color .16s,color .16s,transform .16s;display:grid}.batch-slot:disabled{cursor:default;opacity:1}.batch-slot:not(:disabled):hover,.batch-slot.is-active{color:var(--ink);border-color:var(--accent);transform:translateY(-1px)}.slot-thumb{width:54px;height:54px;color:var(--muted);background:var(--surface);border-radius:6px;justify-content:center;align-items:center;font-size:13px;font-weight:760;display:inline-flex;position:relative;overflow:hidden}.slot-thumb img{object-fit:cover;width:100%;height:100%}.batch-slot.is-generating .slot-thumb{color:var(--accent);background:#f2583e1a}.batch-slot.is-generating .slot-thumb:after{content:"";background:var(--accent);border-radius:999px;height:2px;animation:.9s ease-in-out infinite progress-pulse;position:absolute;bottom:8px;left:8px;right:8px}.batch-slot.is-failed{border-color:#f2583e75}.batch-slot.is-failed .slot-thumb{color:var(--accent-dark);background:#f2583e1f}.slot-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;font-weight:650;overflow:hidden}.inspector{border-left:1px solid var(--line);background:var(--panel);flex-direction:column;gap:28px;padding:30px 26px;display:flex}.inspector-section{border-color:var(--line)}.control-block{border-top:1px solid var(--line);gap:12px;padding:18px 0;display:grid}.control-block:first-of-type{border-top:0;padding-top:0}.control-label{color:var(--muted);justify-content:space-between;gap:14px;font-size:13px}.control-label span{color:var(--ink);font-weight:700}.control-label strong{color:var(--muted);font-size:12px;font-weight:650}.segmented{border:1px solid var(--line);background:var(--paper);border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:4px;display:grid}.size-options{grid-template-columns:1fr}.segmented button{min-height:38px;color:var(--muted);text-align:center;background:0 0;gap:3px;padding:8px 10px;transition:color .16s,background .16s,transform .16s;display:grid}.segmented small{color:inherit;font-size:11px}.segmented button.is-active{color:var(--paper);background:var(--ink)}.segmented button:hover{transform:translateY(-1px)}.custom-size-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.dimension-field{gap:6px;display:grid}.dimension-field span{color:var(--muted);font-size:12px}.count-input,.dimension-field input{height:42px;padding:0 12px}.count-options{border:1px solid var(--line);background:var(--paper);border-radius:8px;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:4px;display:grid}.count-options button{min-height:42px;color:var(--muted);background:0 0;font-weight:760;transition:color .16s,background .16s,transform .16s}.count-options button.is-active{color:var(--paper);background:var(--ink)}.count-options button:hover{transform:translateY(-1px)}.count-options button:disabled{cursor:not-allowed;opacity:.58}.quality-control{border:1px solid var(--line);background:var(--paper);border-radius:8px;gap:12px;padding:14px;display:grid}.quality-readout{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.quality-readout span{color:var(--ink);font-size:34px;font-weight:780;line-height:1}.quality-readout small{color:var(--muted);text-align:right;font-size:12px}.quality-slider{width:100%;accent-color:var(--accent)}.quality-ticks{color:var(--muted);justify-content:space-between;font-size:12px;display:flex}.history-head{justify-content:space-between;gap:12px}.text-button{color:var(--accent);background:0 0;padding:0;font-weight:700}.history-list{gap:10px;display:grid}.history-item{color:var(--muted);text-align:left;border:1px solid var(--line);background:var(--paper);grid-template-columns:54px minmax(0,1fr);align-items:center;gap:10px;padding:8px;transition:border-color .16s,transform .16s,color .16s;display:grid}.history-item:hover,.history-item.is-active{color:var(--ink);border-color:var(--accent);transform:translateY(-1px)}.history-item img{object-fit:cover;background:var(--surface);border-radius:6px;width:54px;height:54px}.history-item span{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;overflow:hidden}.spin{animation:.8s linear infinite spin}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scan{to{transform:translate(100%)}}@keyframes image-in{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes progress-pulse{0%,to{opacity:.45;transform:scaleX(.35)}50%{opacity:1;transform:scaleX(1)}}@media (width<=1180px){.app-shell{grid-template-columns:280px minmax(0,1fr)}.inspector{border-top:1px solid var(--line);border-left:0;grid-column:1/-1;grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);display:grid}.image-viewer img{max-height:620px}}@media (width<=820px){.app-shell{grid-template-columns:1fr}.control-rail{height:auto;padding:22px;position:static}.workspace{grid-template-rows:auto auto auto;padding:22px}.workspace-header{display:grid}.workspace-header h2{font-size:24px}.reference-row,.inspector{grid-template-columns:1fr}.result-stage{min-height:360px}.image-viewer img{max-height:540px}.image-viewer figcaption{background:var(--panel);width:100%;padding:12px;position:static}.batch-strip{grid-template-columns:1fr}}
