:root{--bg: #faf7f4;--card: #ffffff;--ink: #2b2420;--muted: #7a6f68;--line: #eadfd8;--accent: #c2607a;--accent-ink: #ffffff;--good: #2f8f5b;--mid: #c48a1a;--bad: #c0392b;--soft: #f6e9ec;font-family:Plus Jakarta Sans,Inter,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:1200px;margin:0 auto;padding:clamp(12px,4vw,20px) clamp(12px,4vw,20px) 40px}.center{min-height:100vh;display:grid;place-items:center;padding:20px}h1{margin:0;font-size:clamp(1.3rem,4vw,1.6rem);letter-spacing:-.02em}h2{margin:0 0 4px;font-size:1.15rem}h3{margin:0;font-size:1rem}h4{margin:12px 0 6px;font-size:.9rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}p{margin:6px 0;line-height:1.45}.muted{color:var(--muted)}.small{font-size:.85rem}.topbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;padding-bottom:12px}.topbar-right{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px}.topbar-right .muted{max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 calc(-1*clamp(12px,4vw,20px)) 16px;padding:0 clamp(12px,4vw,20px);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;position:sticky;top:0;background:var(--bg);z-index:5}.tab{background:none;border:none;border-bottom:2px solid transparent;padding:12px 14px;min-height:44px;color:var(--muted);cursor:pointer;font-weight:500;white-space:nowrap;flex-shrink:0}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);border-bottom-color:var(--accent)}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:clamp(14px,3vw,18px);margin-bottom:16px}.auth{width:min(420px,100%);display:flex;flex-direction:column;gap:12px}.password-field{position:relative;display:block;width:100%}.password-field input{width:100%;padding-right:68px}.auth button.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:.78rem;min-height:32px;padding:4px 8px}.two-col{display:grid;grid-template-columns:minmax(320px,1fr) minmax(320px,1.3fr);gap:16px;align-items:start}@media(max-width:900px){.two-col{grid-template-columns:1fr}}.row{display:flex;gap:8px;align-items:center}.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:10px}label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}label.inline{flex-direction:row;align-items:center;gap:8px}.required-mark{color:var(--bad)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}input:not([type=checkbox]):not([type=file]),select,textarea{font:inherit;color:var(--ink);padding:10px;min-height:40px;border:1px solid var(--line);border-radius:8px;background:#fff}input[type=checkbox]{width:18px;height:18px}label>input,label>select,label>textarea{width:100%}textarea{resize:vertical;min-height:80px}input:focus,select:focus,textarea:focus{border-color:var(--accent)}button{font:inherit;padding:10px 16px;min-height:40px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer;font-weight:600;touch-action:manipulation;transition:filter .15s ease,transform .05s ease}button:hover:not(:disabled){filter:brightness(1.06)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;color:var(--ink);border-color:var(--line)}button.link{background:none;border:none;color:var(--accent);padding:0;font-weight:500;text-decoration:underline}button.link.danger{color:var(--bad)}button.icon-link{display:inline-flex;align-items:center;gap:6px}button.icon-link .spinner{width:12px;height:12px;margin:0;border-width:1.5px}button.link.icon-link{padding:6px 2px;margin:-6px -2px}button.star{background:none;border:none;color:var(--line);font-size:1.3rem;min-width:40px;padding:0}button.star.active{color:var(--mid)}.spinner{display:inline-block;width:14px;height:14px;margin-right:7px;vertical-align:-2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .6s linear infinite}button.ghost .spinner,button.link .spinner{color:var(--ink)}@keyframes spin{to{transform:rotate(360deg)}}.pill{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--soft);color:var(--accent);font-size:.8rem;font-weight:600}.pill.soft{background:#f3efec;color:var(--muted)}.pill.live{background:#fff3cd;color:#8a6100;animation:pulse 1.4s infinite}.pill.approved{background:#e6f4ec;color:var(--good)}.pill.failed{background:#fdecea;color:var(--bad)}.pill.max_iterations{background:#fff3cd;color:#8a6100}@keyframes pulse{50%{opacity:.5}}.alert{background:#fdecea;color:var(--bad);padding:8px 12px;border-radius:8px;font-size:.9rem}.alert.success{background:#e6f4ec;color:var(--good)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:12px}.grid.compact{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px;margin-top:6px}.grid.preview{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;margin-top:4px}.preview-thumb{position:relative}.preview-thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.remove-preview{position:absolute;top:5px;right:5px;width:20px;height:20px;min-height:0;padding:0;border:none;border-radius:50%;background:#2b2420b8;box-shadow:0 0 0 2px #ffffffd9;color:#fff;font-size:.7rem;line-height:1;display:flex;align-items:center;justify-content:center}.catalog-toolbar{justify-content:space-between;margin-top:14px;align-items:center}.grid>p{grid-column:1 / -1}.thumb{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;padding:0}.thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:var(--soft);opacity:0;transition:opacity .25s ease}.thumb img.loaded{opacity:1}img.img-error{object-fit:contain!important;padding:22%;background:var(--soft);box-sizing:border-box}.mini.img-error,.mini.large.img-error{padding:8px}.thumb figcaption{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:8px 10px;font-size:.8rem}.thumb figcaption .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.thumb.selectable{cursor:pointer}.thumb.selectable.selected{outline:3px solid var(--accent);outline-offset:-3px}.thumb .thumb-image{display:block;width:100%}.thumb .thumb-image .download-btn{width:26px;height:26px;bottom:6px;right:6px;font-size:.85rem;border-radius:6px}.swatch{width:28px;height:28px;border-radius:6px;border:1px solid var(--line)}.profile{margin-top:12px;display:flex;flex-direction:column;gap:8px}.timeline{display:flex;flex-direction:column;gap:6px}.iteration{border-left:2px solid var(--line);padding-left:12px;margin-bottom:8px}.thought{font-size:.9rem;margin:4px 0;white-space:pre-wrap}.step{display:inline-block;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-right:6px;font-weight:700}details.prompt{border:1px dashed var(--line);border-radius:8px;padding:6px 10px;margin:6px 0;font-size:.85rem}pre{white-space:pre-wrap;word-break:break-word;font-size:.8rem;background:#f7f3f0;padding:8px;border-radius:6px;margin:6px 0}.generated{margin:8px 0;display:inline-block;vertical-align:top;max-width:320px}.generated img{width:100%;border-radius:10px;border:1px solid var(--line);display:block}.generated figcaption{font-size:.8rem;color:var(--muted);margin-top:4px}.generated.delivered img{border:2px solid var(--good)}.generated.delivered figcaption{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.generated.delivered figcaption .pill{font-size:.7rem;padding:1px 8px}.generated-image{position:relative;display:block;width:100%}.generated-image .download-btn{width:26px;height:26px;bottom:6px;right:6px;font-size:.85rem;border-radius:6px}.budget{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:0 0 12px;background:var(--card)}.budget.mid{border-color:#e6cf9a}.budget.bad{border-color:#e3b4ad;background:#fdf3f1}.budget-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.92rem}.budget-head .over{color:var(--bad);font-weight:600}.budget-track{height:8px;border-radius:999px;background:var(--line);overflow:hidden;margin:8px 0 6px}.budget-fill{height:100%;border-radius:999px;background:var(--good);transition:width .3s ease}.budget-fill.mid{background:var(--mid)}.budget-fill.bad{background:var(--bad)}.summary .cost{margin-top:6px;font-weight:400}.generated.original,.generated.cutout{max-width:220px}.generated.cutout img{background-color:#fff;background-image:linear-gradient(45deg,#e5e5e5 25%,transparent 25%,transparent 75%,#e5e5e5 75%),linear-gradient(45deg,#e5e5e5 25%,transparent 25%,transparent 75%,#e5e5e5 75%);background-size:16px 16px;background-position:0 0,8px 8px}.check{display:flex;gap:10px;align-items:flex-start}.check input{flex-shrink:0;margin-top:4px}.check small{display:block;font-size:.8rem}.verdict{border-radius:8px;padding:8px 10px;margin:6px 0;font-size:.9rem}.verdict.approved{background:#e6f4ec}.verdict.rejected{background:#fdecea}.eval ul{margin:6px 0 0;padding-left:18px}.score{padding:2px 8px;border-radius:999px;font-size:.78rem;font-weight:600;background:#fff;border:1px solid var(--line)}.score.good{color:var(--good)}.score.mid{color:var(--mid)}.score.bad{color:var(--bad)}.summary{margin-top:8px;padding:10px 12px;border-radius:8px;font-size:.9rem;background:#f3efec}.summary.approved{background:#e6f4ec}.summary.max_iterations{background:#fff3cd}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:10px}table.history{width:100%;min-width:640px;border-collapse:collapse;font-size:.85rem;margin-top:0}table.history th,table.history td{text-align:left;padding:10px 6px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}table.history th{padding:0}.sort-header{display:flex;align-items:center;gap:4px;width:100%;padding:10px 6px;min-height:0;border:none;background:none;color:inherit;font:inherit;font-weight:700;text-align:left}.sort-header:hover{color:var(--accent)}.sort-arrow{font-size:.65rem;color:var(--accent)}.th-label{display:block;padding:10px 6px}table.history tbody tr{cursor:pointer}table.history tbody tr:hover,table.history tbody tr.open{background:var(--soft)}table.history .chevron{width:18px;text-align:center;color:var(--muted);font-size:.75rem}table.history tr.detail-row{cursor:default}table.history tr.detail-row:hover{background:none}table.history tr.detail-row td{white-space:normal;padding:4px 6px 16px}.mini-wrap{position:relative;display:inline-block;line-height:0}.mini-wrap.large{margin:4px}.mini{width:36px;height:36px;object-fit:cover;border-radius:6px;border:2px solid transparent}.mini.approved{border-color:var(--good)}.mini.large{width:140px;height:140px}.download-btn{position:absolute;bottom:4px;right:4px;width:18px;height:18px;min-height:0;padding:0;border:none;border-radius:4px;background:#2b2420b8;box-shadow:0 0 0 2px #ffffffd9;color:#fff;font-size:.65rem;line-height:1;display:flex;align-items:center;justify-content:center}.mini-wrap.large .download-btn{width:28px;height:28px;bottom:6px;right:6px;font-size:.9rem;border-radius:6px}.download-btn .spinner{width:10px;height:10px;margin:0;border-width:1.5px}.detail{margin-top:12px}.detail details{margin:8px 0}.brief-view{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:6px 0 12px;font-size:.9rem}.brief-row{display:contents}.brief-row dt{color:var(--muted);white-space:nowrap}.brief-row dd{margin:0}.pagination{justify-content:center;margin-top:14px;flex-wrap:wrap}.filters{margin:12px 0;padding:10px 12px;background:var(--soft);border-radius:8px;align-items:end}.filters label{min-width:120px}.filters select,.filters input{background:#fff}.quick-upload{margin:8px 0;padding:10px 12px;background:var(--soft);border-radius:8px;align-items:center}.quick-upload select{background:#fff}.quick-upload-filename{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}footer.small{margin-top:24px;text-align:center}@media(max-width:480px){.row{flex-wrap:wrap}.card .row>button,.card .stack>button[type=submit]{width:100%}.topbar-right .muted{max-width:60vw}table.history{min-width:560px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
