:root{--primary-color: #2563eb;--success-color: #16a34a;--text-color: #1f2937;--bg-color: #f3f4f6;--card-bg: #ffffff}body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;background-color:var(--bg-color);color:var(--text-color);margin:0;padding:20px;font-size:18px}.container{max-width:800px;margin:0 auto;background-color:var(--card-bg);padding:30px;border-radius:20px;box-shadow:0 4px 6px -1px #0000001a;text-align:center}h1{font-size:2.5rem;margin-bottom:10px;color:var(--primary-color)}p{font-size:1.2rem;color:#4b5563;margin-bottom:20px}.upload-section{margin:40px 0}.big-btn{font-size:1.5rem;padding:15px 40px;border:none;border-radius:50px;cursor:pointer;transition:transform .1s,box-shadow .1s;font-weight:700;color:#fff;width:80%;max-width:400px;margin:10px 0}.big-btn:active{transform:scale(.98)}.primary-btn{background-color:var(--primary-color);box-shadow:0 4px 14px #2563eb63}.success-btn{background-color:var(--success-color);box-shadow:0 4px 14px #16a34a63}.preview-section{margin:20px 0;padding:10px}.preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:20px}.preview-item{background:#fff;border:2px solid #e5e7eb;border-radius:12px;padding:10px;box-shadow:0 2px 4px #0000000d}.preview-item canvas{width:100%;height:auto;display:block;border-radius:6px}.modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:#000000e6;cursor:zoom-out;animation:fadeIn .3s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:20px}.modal-content{max-width:95%;max-height:85%;border-radius:8px;box-shadow:0 0 20px #00000080}.close-btn{position:absolute;top:20px;right:30px;color:#fff;font-size:60px;font-weight:700;cursor:pointer;z-index:1001}.modal-tip{color:#ddd;margin-top:15px;font-size:1.2rem}.preview-item{cursor:zoom-in;transition:transform .2s}.preview-item:hover{transform:scale(1.02);border-color:var(--primary-color)}.controls-section{text-align:left;margin-top:30px;padding-top:20px;border-top:2px solid #e5e7eb}.form-group{margin-bottom:25px}label{display:block;font-size:1.3rem;font-weight:700;margin-bottom:10px}.big-input{width:100%;font-size:1.2rem;padding:15px;border:2px solid #d1d5db;border-radius:10px;box-sizing:border-box}.big-input:focus{border-color:var(--primary-color);outline:none}.step-hint{font-size:1.2rem;color:#4b5563;margin-bottom:20px;text-align:center}.mode-switch{display:flex;justify-content:center;gap:0;background:#f3f4f6;border-radius:50px;padding:4px;max-width:400px;margin:20px auto 30px}.mode-btn{flex:1;font-size:1.2rem;font-weight:700;padding:12px 20px;border:none;border-radius:50px;cursor:pointer;background:transparent;color:#6b7280;transition:all .3s}.mode-btn.active{background:var(--primary-color);color:#fff;box-shadow:0 2px 10px #2563eb4d}.mode-btn:not(.active):active{background:#e5e7eb}.corner-selector{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:25px}.corner-option{display:flex;align-items:center;gap:10px;padding:14px 16px;background:#f9fafb;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;font-size:1rem;font-weight:400;margin-bottom:0;transition:all .2s}.corner-option:has(input:checked){background:#eff6ff;border-color:var(--primary-color)}.corner-option input[type=checkbox]{width:24px;height:24px;accent-color:var(--primary-color);cursor:pointer;flex-shrink:0}.corner-label{font-size:1.15rem;font-weight:600;color:var(--text-color)}.range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:8px;background:#e5e7eb;border-radius:4px;border:none;padding:0}.range-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border-radius:50%;background:var(--primary-color);cursor:pointer;box-shadow:0 2px 6px #2563eb66}.range-input::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:var(--primary-color);cursor:pointer;border:none;box-shadow:0 2px 6px #2563eb66}.opencv-status{display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;margin:20px 0;background:#f0f9ff;border:1px solid #bae6fd;border-radius:12px;font-size:1.1rem;color:#0369a1;font-weight:600}.loading-spinner{width:24px;height:24px;border:3px solid #bae6fd;border-top:3px solid var(--primary-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.big-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.save-guide-overlay{position:fixed;z-index:2000;left:0;top:0;width:100%;height:100%;background-color:#000000eb;display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);box-sizing:border-box;animation:fadeIn .3s}.save-guide-modal p,.save-guide-modal h2{margin:0;padding:0}.save-guide-modal{background:var(--card-bg);border-radius:20px;width:92%;max-width:500px;max-height:85vh;overflow-y:auto;padding:20px;position:relative;box-sizing:border-box}.save-guide-header{text-align:center;margin-bottom:12px}.save-guide-header h2{font-size:1.5rem;color:var(--primary-color);margin-bottom:6px!important}.save-guide-progress{font-size:1.05rem;color:#6b7280;font-weight:600}.save-guide-close{position:absolute;top:10px;right:16px;font-size:32px;color:#9ca3af;cursor:pointer;line-height:1;z-index:1}.save-guide-close:active{color:var(--text-color)}.save-guide-body{text-align:center}.save-guide-tip{font-size:1rem;color:#ef4444;font-weight:700;margin:0 0 12px!important;padding:8px 12px;background:#fef2f2;border-radius:10px;border:1px solid #fecaca}.save-guide-img-wrapper{border:3px dashed #d1d5db;border-radius:12px;padding:8px;background:#f9fafb}.save-guide-img{width:100%;height:auto;max-height:55vh;object-fit:contain;display:block;border-radius:8px;-webkit-touch-callout:default!important;-webkit-user-select:auto!important;user-select:auto!important}.save-guide-footer{display:flex;justify-content:space-between;gap:10px;margin-top:15px}.save-guide-footer .big-btn{flex:1;width:auto!important;max-width:none!important;font-size:1.1rem;padding:12px 8px;border-radius:12px;box-sizing:border-box;margin:0}
