*,:before,:after{box-sizing:border-box}body{color:#333;background:#fafafa;margin:0}.app{max-width:1200px;margin:0 auto;padding:24px 20px;font-family:system-ui,-apple-system,sans-serif}header{text-align:center;margin-bottom:32px}header h1{margin:0;font-size:32px}header p{color:#666;margin:4px 0 0}.uploader{text-align:center;cursor:pointer;border:2px dashed #ccc;border-radius:12px;justify-content:center;align-items:center;min-height:120px;padding:40px;transition:border-color .2s,background .2s;display:flex}.uploader:hover,.uploader.drag-over{background:#f0f0ff;border-color:#646cff}.upload-preview{border-radius:8px;max-height:200px}.params{flex-wrap:wrap;align-items:flex-end;gap:16px;display:flex}.params label{color:#444;flex-direction:column;gap:4px;font-size:13px;font-weight:500;display:flex}.params input[type=number],.params select{border:1px solid #ccc;border-radius:6px;min-width:80px;padding:6px 10px;font-size:14px}.params input[type=range]{width:120px}.range-value{color:#888;font-size:12px}.checkbox-label{flex-direction:row!important;align-items:center!important;gap:6px!important}.actions{gap:12px;margin:20px 0;display:flex}.actions button{color:#fff;cursor:pointer;background:#646cff;border:none;border-radius:8px;padding:10px 24px;font-size:15px;font-weight:600;transition:background .2s}.actions button:hover:not(:disabled){background:#535bf2}.actions button:disabled{opacity:.5;cursor:not-allowed}.preview-images{grid-template-columns:1fr 1fr;gap:24px;display:grid}.preview-col{text-align:center}.preview-col h3{margin:0 0 12px;font-size:16px}.preview-col img{max-width:100%;image-rendering:pixelated;border:1px solid #eee;border-radius:8px}.placeholder{color:#aaa;border:1px solid #eee;border-radius:8px;padding:60px 20px;font-size:14px}.result-info{color:#555;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:12px;font-size:13px;display:flex}.palette{gap:4px;display:flex}.swatch{border:1px solid #ddd;border-radius:4px;width:18px;height:18px}.grid-image{border:1px solid #eee;border-radius:8px;width:100%;margin-top:24px}.error{color:#e44;background:#fee;border-radius:8px;margin-bottom:16px;padding:10px 16px;font-size:14px}
