:root{--zayla-black:#111;--zayla-white:#fff;--zayla-yellow:#fc0;--zayla-gray-100:#f5f5f5;--zayla-gray-300:#e0e0e0;--zayla-gray-500:#9a9a9a;--zayla-radius:12px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--zayla-white);color:var(--zayla-black);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-tap-highlight-color:transparent}button{font-family:inherit}.app-shell{max-width:560px;margin:0 auto;padding:20px 16px 48px;min-height:100vh}.brand{font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:24px}.brand span{color:var(--zayla-yellow)}.field-label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}.text-input{width:100%;padding:12px 14px;border:1px solid var(--zayla-gray-300);border-radius:var(--zayla-radius);font-size:16px;background:var(--zayla-white);color:var(--zayla-black)}.text-input:focus{outline:none;border-color:var(--zayla-black)}.section{margin-top:28px}.counter{font-size:13px;color:var(--zayla-gray-500);margin-bottom:10px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.thumb{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden;background:var(--zayla-gray-100);border:1px solid var(--zayla-gray-300);touch-action:none}.thumb img{width:100%;height:100%;object-fit:cover;pointer-events:none}.thumb .fallback{width:100%;height:100%;font-size:11px;color:var(--zayla-gray-500);padding:4px;text-align:center}.thumb .fallback,.thumb .remove-btn{display:flex;align-items:center;justify-content:center}.thumb .remove-btn{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:none;background:hsla(0,0%,7%,.75);color:#fff;font-size:13px;line-height:1;cursor:pointer}.thumb.dragging{opacity:.4}.add-tile{aspect-ratio:1;border:1px dashed var(--zayla-gray-300);border-radius:8px;justify-content:center;font-size:24px;color:var(--zayla-gray-500);cursor:pointer;background:none}.add-tile,.toggle-row{display:flex;align-items:center}.toggle-row{justify-content:space-between;padding:12px 0}.toggle-label{font-size:14px;font-weight:600}.switch{position:relative;width:46px;height:27px;border-radius:27px;background:var(--zayla-gray-300);border:none;cursor:pointer;transition:background .15s}.switch[data-on=true]{background:var(--zayla-black)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:23px;height:23px;border-radius:50%;background:#fff;transition:transform .15s}.switch[data-on=true]:after{transform:translateX(19px)}.slider-row{margin-top:8px}.slider-row input[type=range]{width:100%;accent-color:var(--zayla-black)}.opacity-value{font-size:13px;color:var(--zayla-gray-500)}.watermark-preview{position:relative;margin-top:14px;border-radius:var(--zayla-radius);overflow:hidden;background:var(--zayla-gray-100);aspect-ratio:4/3;display:flex;align-items:center;justify-content:center}.watermark-preview img.base{width:100%;height:100%;object-fit:cover}.watermark-preview img.mark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.primary-btn{width:100%;padding:16px;border-radius:var(--zayla-radius);border:none;background:var(--zayla-black);color:var(--zayla-white);font-size:16px;font-weight:700;cursor:pointer;margin-top:28px}.primary-btn:disabled{background:var(--zayla-gray-300);color:var(--zayla-gray-500);cursor:not-allowed}.secondary-btn{width:100%;padding:14px;border-radius:var(--zayla-radius);border:1px solid var(--zayla-gray-300);background:var(--zayla-white);color:var(--zayla-black);font-size:15px;font-weight:600;cursor:pointer;margin-top:12px}.hint{font-size:12px;color:var(--zayla-gray-500);margin-top:6px}.progress-screen{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;text-align:center}.progress-bar-track{width:100%;height:10px;border-radius:6px;background:var(--zayla-gray-100);overflow:hidden}.progress-bar-fill{height:100%;background:var(--zayla-yellow);transition:width .3s ease}.progress-percent{font-size:32px;font-weight:700}.done-screen{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.done-title{font-size:22px;font-weight:700}.error-banner{background:#fff4f4;border:1px solid #ffb3b3;color:#a30000;padding:12px 14px;border-radius:var(--zayla-radius);font-size:14px;margin-top:16px}