.pxt-tool-wrap{width:100%;max-width:860px;margin:1.5rem auto;background:#fff;border-radius:14px;box-shadow:0 4px 24px rgb(0 0 0 / .08);padding:2rem;font-family:'Inter',Arial,sans-serif}.pxt-upload-area{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px;border:2.5px dashed #c7d2e0;border-radius:12px;background:#f8fafc;cursor:pointer;transition:border-color .2s,background .2s;padding:2rem 1rem;text-align:center;margin-bottom:1.5rem}.pxt-upload-area:hover,.pxt-upload-area.pxt-dragover{border-color:#2563eb;background:#eff6ff}.pxt-upload-area .pxt-upload-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.6;line-height:1}.pxt-upload-area .pxt-upload-text{font-size:1rem;color:#64748b;margin:0}.pxt-upload-area .pxt-upload-text strong{color:#2563eb}.pxt-upload-area input[type="file"]{display:none}.pxt-file-name{font-size:.875rem;color:#64748b;margin-top:.5rem;font-style:italic}.pxt-preview-wrap{width:100%;min-height:420px;border:1px solid #e2e8f0;border-radius:10px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:1.5rem;position:relative}.pxt-preview-wrap canvas{max-width:100%;max-height:560px;object-fit:contain;display:block;transition:transform .35s ease;box-shadow:0 2px 16px rgb(0 0 0 / .12)}.pxt-preview-placeholder{text-align:center;color:#94a3b8;font-size:.9375rem}.pxt-preview-placeholder .pxt-ph-icon{font-size:3rem;display:block;margin-bottom:.5rem}.pxt-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;justify-content:center;margin-bottom:1.25rem}.pxt-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.7rem 1.25rem;border:none;border-radius:8px;font-size:.9375rem;font-weight:600;cursor:pointer;transition:opacity .18s,transform .18s;line-height:1;white-space:nowrap;font-family:inherit;text-decoration:none}.pxt-btn:hover{opacity:.88;transform:translateY(-1px)}.pxt-btn:active{transform:translateY(0)}.pxt-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.pxt-btn-primary{background:#2563eb;color:#fff}.pxt-btn-dark{background:#0f172a;color:#fff}.pxt-btn-red{background:#e53935;color:#fff}.pxt-btn-gray{background:#475569;color:#fff}.pxt-btn-green{background:#16a34a;color:#fff}.pxt-btn-outline{background:#fff;color:#1e293b;border:1.5px solid #e2e8f0}.pxt-btn-outline:hover{border-color:#2563eb;color:#2563eb}.pxt-btn-rotate-l{background:#00004D;color:#fff;font-size:1.3rem}.pxt-btn-rotate-r{background:#00004D;color:#fff;font-size:1.3rem}.pxt-angle-input{width:90px;padding:.65rem .75rem;border:1.5px solid #e2e8f0;border-radius:8px;font-size:.9375rem;text-align:center;outline:none;font-family:inherit;transition:border-color .2s}.pxt-angle-input:focus{border-color:#2563eb}.pxt-progress-wrap{width:100%;background:#e2e8f0;border-radius:999px;height:8px;overflow:hidden;margin:1rem 0 .5rem}.pxt-progress-bar{height:100%;background:#2563eb;border-radius:inherit;transition:width .4s ease;width:0%}.pxt-progress-label{text-align:center;font-size:.875rem;color:#64748b;margin-bottom:.5rem}.pxt-msg{padding:.875rem 1rem;border-radius:8px;font-size:.9375rem;margin-top:1rem;display:none}.pxt-msg-success{background:#f0fdf4;border:1px solid #86efac;color:#166534}.pxt-msg-error{background:#fef2f2;border:1px solid #fca5a5;color:#dc2626}.pxt-download-wrap{text-align:center;padding:1.25rem;background:#f0fdf4;border:1px solid #86efac;border-radius:10px;margin-top:1rem;display:none}.pxt-download-wrap p{color:#166534;font-weight:700;margin-bottom:.75rem;font-size:1rem}.pxt-page-nav{display:flex;align-items:center;justify-content:center;gap:.65rem;margin-bottom:1rem;font-size:.9375rem;color:#475569}.pxt-tool-title{font-size:1.35rem;font-weight:700;color:#0d1b4b;margin-bottom:1.25rem;text-align:center;display:flex;align-items:center;justify-content:center;gap:.5rem}@media (max-width:600px){.pxt-tool-wrap{padding:1.25rem .875rem;border-radius:10px}.pxt-preview-wrap{min-height:280px}.pxt-controls{gap:.5rem}.pxt-btn{padding:.6rem .9rem;font-size:.875rem}.pxt-angle-input{width:75px}.pxt-btn-rotate-l,.pxt-btn-rotate-r{font-size:1.1rem}}@media (max-width:380px){.pxt-tool-wrap{padding:1rem .65rem}.pxt-btn{padding:.55rem .75rem;font-size:.8125rem}}