.edit-transform-page{max-width:70rem;margin:0 auto;padding:var(--space-8) var(--space-4) var(--space-12);display:grid;gap:var(--space-8)}.edit-transform-page__workspace{display:grid;gap:var(--space-4)}.edit-transform-page__workspace h2,.tool-body-copy h2,.tool-body-copy p{margin:0}.tool-body-copy{display:grid;gap:var(--space-3)}.tool-body-copy p{color:var(--color-text-secondary)}.tool-app{border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-surface);padding:var(--space-4);display:grid;gap:var(--space-4)}.tool-app input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.dropzone{border:2px dashed var(--color-border-strong);border-radius:var(--radius-card);background:var(--color-surface-raised);padding:var(--space-6);text-align:center;display:grid;gap:var(--space-2);justify-items:center;transition:background-color var(--motion-duration-fast) var(--motion-ease-standard),border-color var(--motion-duration-fast) var(--motion-ease-standard)}.dropzone--dragging{border-color:var(--color-primary);background:var(--color-primary-subtle)}.dropzone p{margin:0;color:var(--color-text-secondary)}.dropzone__browse{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--color-primary-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-primary-hover);padding:var(--space-2) var(--space-4);font:inherit;font-size:var(--font-size-label);font-weight:600;cursor:pointer}.tool-app__status{min-height:1.5rem}.tool-app__status p{margin:0;color:var(--color-text-secondary);font-size:var(--font-size-label);font-weight:500}.tool-app__error-wrap{min-height:1.5rem}.tool-app__error{margin:0;color:var(--color-error);font-size:var(--font-size-label);font-weight:600}.tool-app__preview{margin:0;border:1px solid var(--color-border);border-radius:var(--radius-card);overflow:hidden;background:repeating-conic-gradient(#f8fafc 0% 25%,#e2e8f0 0% 50%) 0 0 / 20px 20px}.tool-app__preview canvas{display:block;width:100%;max-height:min(70vh,32rem);object-fit:contain;cursor:crosshair}.tool-app__controls{display:grid;gap:var(--space-3)}.format-select,.tool-slider,.tool-number,.tool-text,.tool-color,.tool-toggle{display:grid;gap:var(--space-2);color:var(--color-text-primary);font-size:var(--font-size-label);font-weight:600}.format-select select,.tool-number input,.tool-text input,.tool-color input[type=color]{width:100%}.format-select select,.tool-number input,.tool-text input{min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);color:var(--color-text-primary);padding:0 var(--space-3);font:inherit;font-size:var(--font-size-body)}.tool-color input[type=color]{min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-input);background:var(--color-surface);padding:.2rem}.tool-toggle{grid-template-columns:auto 1fr;align-items:center;gap:var(--space-2)}.tool-toggle input{width:1rem;height:1rem;margin:0}.edit-transform-tool__output-readout,.edit-transform-tool__hint{margin:0;color:var(--color-text-secondary);font-size:var(--font-size-label);font-weight:600}.edit-transform-tool__watermark-upload{display:grid;gap:var(--space-2)}.edit-transform-tool__watermark-upload p{margin:0;color:var(--color-text-secondary);font-size:var(--font-size-label)}.download-button{min-height:44px;border:1px solid transparent;border-radius:var(--radius-card);background:var(--color-primary);color:#fff;padding:var(--space-2) var(--space-4);font:inherit;font-size:var(--font-size-label);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);cursor:pointer}.download-button:disabled{cursor:not-allowed;opacity:.55}.download-button--success{background:var(--color-success)}.spinner{width:1rem;height:1rem;border-radius:50%;border:2px solid rgb(255 255 255 / 45%);border-top-color:#fff;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none;border-top-color:currentColor}}
