:root{--paper:#f3f1eb;--surface:#fbfaf7;--ink:#20201e;--muted:#72716b;--line:#d8d5cd;--accent:#9e3b2c;--focus:#343432}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}.shell{width:min(1400px,calc(100% - 64px));margin:0 auto;padding:42px 0 64px}.header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;border-bottom:1px solid var(--ink);padding-bottom:26px;margin-bottom:32px}.eyebrow,.step{font-family:monospace;text-transform:uppercase;letter-spacing:.09em;font-size:11px;color:var(--muted);margin:0 0 12px}h1{font-size:clamp(36px,5vw,68px);font-weight:500;letter-spacing:-.055em;line-height:.95;margin:0 0 16px}.lead{color:var(--muted);margin:0;line-height:1.5}.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.8fr);gap:32px}.inputs,.output{background:var(--surface);border:1px solid var(--line);padding:28px}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.upload-card{position:relative;display:flex;min-height:205px;flex-direction:column;border:1px dashed #aaa79f;padding:18px;cursor:pointer;overflow:hidden}.upload-card:focus-within{border-color:var(--focus);outline:2px solid var(--focus);outline-offset:2px}.upload-card input{position:absolute;width:1px;height:1px;opacity:0}.label{font-size:18px;font-weight:600}.hint,.file-name,.prompt-hint,.limits{font-size:12px;line-height:1.5;color:var(--muted)}.hint{margin-top:6px}.file-name{margin-top:auto;padding-top:14px;word-break:break-word}.preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:var(--surface)}.upload-card:has(.preview:not([hidden])) .step,.upload-card:has(.preview:not([hidden])) .label,.upload-card:has(.preview:not([hidden])) .hint{z-index:1;background:var(--surface);width:max-content;max-width:100%;padding:3px 6px}.upload-card:has(.preview:not([hidden])) .file-name{z-index:1;background:var(--surface);padding:6px}.prompt-label{display:block;font-family:monospace;text-transform:uppercase;letter-spacing:.08em;font-size:11px;margin:26px 0 10px}textarea{width:100%;min-height:180px;resize:vertical;border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:16px;font:inherit;line-height:1.55}textarea:focus,.code-input:focus{outline:2px solid var(--focus);outline-offset:1px}.prompt-hint{margin:8px 0 0}.action-row{display:flex;align-items:center;gap:18px;margin-top:24px;flex-wrap:wrap}.generate{appearance:none;border:0;background:var(--accent);color:#fff;padding:15px 22px;font:inherit;font-weight:600;cursor:pointer}.generate span{font-weight:400;opacity:.8;margin-left:8px}.generate:hover{background:#833022}.generate:disabled{cursor:wait;opacity:.55}.text-button{appearance:none;border:0;border-bottom:1px solid var(--ink);background:none;padding:4px 0;color:var(--ink);cursor:pointer}.output{min-height:440px;display:flex;flex-direction:column}.output-head{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:16px}.output-head .step{margin:0}.empty,.progress{flex:1;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:13px;min-height:240px}.spinner{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error{background:#f8e7e2;color:#792a1f;padding:12px 14px;margin:16px 0;font-size:13px;line-height:1.5;word-break:break-word}figure{margin:20px 0 0}figure img{display:block;width:100%;height:auto;background:#e5e2da}figcaption{margin-top:14px}figcaption a{color:var(--ink);text-underline-offset:4px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);padding:32px}.login-card h1{font-size:48px}.code-input{width:100%;border:1px solid var(--line);background:var(--paper);padding:14px;font:inherit;margin-bottom:18px}.login-card .generate{width:100%}[hidden]{display:none!important}@media(max-width:900px){.shell{width:min(100% - 32px,700px);padding-top:24px}.workspace{grid-template-columns:1fr}.output{min-height:300px}}@media(max-width:560px){.upload-grid{grid-template-columns:1fr}.inputs,.output{padding:18px}.header{align-items:flex-end}h1{font-size:44px}}
