body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh}.App-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;color:#fff;padding:2rem;text-align:center}.header-content{align-items:center;display:flex;flex-wrap:wrap;gap:2rem;justify-content:space-between;margin:0 auto;max-width:1200px}.brand-section{flex:0 0 auto}.app-title-section{flex:1 1}.etsy-branding{align-items:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff26;border-radius:12px;display:flex;gap:1rem;padding:1rem 1.5rem}.shop-logo{border:2px solid #ffffff4d;border-radius:50%;height:60px;object-fit:cover;width:60px}.shop-info{text-align:left}.shop-links{display:flex;flex-direction:column;gap:.5rem;margin-top:.3rem}.donation-button{background:#ff5f5f;border:2px solid #000;border-radius:20px;box-shadow:0 2px 6px #0003;color:#fff;display:inline-block;font-family:Cookie,cursive;font-size:.9rem;font-weight:600;padding:8px 16px;text-decoration:none;transition:all .3s ease}.donation-button:hover{background:#e04545;box-shadow:0 4px 10px #0000004d;color:#fff;text-decoration:none;transform:translateY(-2px)}.shop-name{color:#ffe5cc;font-size:1.3rem;font-weight:600;margin:0;text-shadow:1px 1px 2px #0000004d}.etsy-link{color:#f4c2a1;display:inline-block;font-size:.9rem;font-weight:500;text-decoration:none;transition:color .2s ease}.etsy-link:hover{color:#ffe5cc;text-decoration:underline}@media (max-width:768px){.header-content{flex-direction:column;text-align:center}.etsy-branding{justify-content:center}.shop-info{text-align:center}.shop-links{align-items:center}}.App-header h1{font-size:2.5rem;font-weight:700;margin:0;text-shadow:2px 2px 4px #0000004d}.App-header p{font-size:1.2rem;margin:.5rem 0 0;opacity:.9}.App-main{padding:2rem}.container{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:1fr;margin:0 auto;max-width:1200px}.upload-section{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:2fr 1fr}.image-upload{background:#fff;border-radius:15px;box-shadow:0 10px 30px #0000001a;padding:2rem}.image-upload h2{color:#333;margin-top:0}.dropzone{align-items:center;border:3px dashed #ccc;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;min-height:200px;padding:3rem;text-align:center;transition:all .3s ease}.dropzone:hover{background-color:#f8f9ff;border-color:#667eea}.dropzone.drag-active{background-color:#e8f2ff;border-color:#667eea}.dropzone.processing{background-color:#f0f0f0;cursor:not-allowed}.processing-indicator{align-items:center;display:flex;flex-direction:column;gap:1rem}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#667eea;height:40px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.upload-prompt p{margin:.5rem 0}.file-types{color:#666;font-size:.9rem}.configuration-panel{background:#fff;border-radius:15px;box-shadow:0 10px 30px #0000001a;height:-webkit-fit-content;height:fit-content;padding:2rem}.configuration-panel h2{color:#333;margin-top:0}.config-group{margin-bottom:1.5rem}.config-group label{color:#333;display:block;font-weight:600;margin-bottom:.5rem}.config-group input,.config-group select{border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;padding:.75rem;transition:border-color .3s ease;width:100%}.config-group input:focus,.config-group select:focus{border-color:#667eea;outline:none}.config-info{background:#f8f9ff;border-radius:8px;margin-top:1rem;padding:1rem}.config-info h3{color:#333;margin:0 0 .5rem}.config-info ul{margin:0;padding-left:1.5rem}.config-info li{color:#555;margin-bottom:.25rem}.pattern-preview{background:#fff;border-radius:15px;box-shadow:0 10px 30px #0000001a;margin-top:2rem;padding:2rem}.preview-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.preview-header h2{color:#333;margin:0}.download-btn{background:#667eea;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:background .3s ease}.download-btn:hover:not(:disabled){background:#5a6fd8}.download-btn:disabled{background:#ccc;cursor:not-allowed}.tab-navigation{border-bottom:2px solid #e0e0e0;display:flex;margin-bottom:2rem}.tab{background:none;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:1rem;padding:1rem 2rem;transition:all .3s ease}.tab.active{border-bottom-color:#667eea;font-weight:600}.tab.active,.tab:hover{color:#667eea}.color-legend{margin-bottom:2rem}.color-legend h4{color:#333;margin-bottom:1rem}.color-item{align-items:center;display:flex;gap:.5rem;margin-bottom:.5rem}.color-square{border:1px solid #ccc;border-radius:3px;height:20px;width:20px}.grid-controls{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.toggle-grid-btn{background:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;transition:background .3s ease}.toggle-grid-btn:hover{background:#5a6fd8}.edit-mode-btn{background:#28a745;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;transition:background .3s ease}.edit-mode-btn:hover{background:#218838}.edit-mode-btn.active{background:#dc3545}.edit-mode-btn.active:hover{background:#c82333}.zoom-controls{align-items:center;display:flex;gap:.5rem}.zoom-btn{background:#6c757d;border:none;border-radius:3px;color:#fff;cursor:pointer;font-size:.9rem;min-width:30px;padding:.3rem .6rem;transition:background .3s ease}.zoom-btn:hover:not(:disabled){background:#5a6268}.zoom-btn:disabled{background:#ccc;cursor:not-allowed}.zoom-btn.reset{background:#17a2b8;padding:.3rem .8rem}.zoom-btn.reset:hover{background:#138496}.zoom-level{color:#333;font-size:.9rem;font-weight:600;min-width:40px;text-align:center}.grid-container{margin:1rem 0;overflow:auto}.grid-container.preview-grid{overflow-x:auto}.grid-container.full-grid{background:#fafafa;border:2px solid #e0e0e0;border-radius:8px;max-height:600px;overflow:auto;padding:1rem}.grid-wrapper{min-width:-webkit-fit-content;min-width:fit-content;transition:transform .2s ease}.stitch-grid{border-collapse:collapse;font-family:monospace;font-size:.8rem}.stitch-grid td{border:1px solid #ddd;font-weight:700;height:20px;text-align:center;width:20px}.row-number{background:#f0f0f0;padding:0 .5rem;width:auto}.stitch-cell{cursor:pointer}.stitch-cell.editable{cursor:crosshair;transition:all .2s ease}.stitch-cell.editable:hover{border:2px solid #007bff;box-shadow:0 0 5px #007bff80}.edit-controls{background:#f8f9ff;border:2px solid #667eea;border-radius:10px;margin:1rem 0;padding:1rem}.edit-controls h4{color:#333;margin:0 0 .5rem}.color-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.color-selector-btn{align-items:center;border:2px solid #ddd;border-radius:5px;color:#fff;cursor:pointer;display:flex;font-weight:700;height:40px;justify-content:center;text-shadow:1px 1px 1px #00000080;transition:all .2s ease;width:40px}.color-selector-btn.selected,.color-selector-btn:hover{border-color:#007bff;transform:scale(1.1)}.color-selector-btn.selected{border-width:3px;box-shadow:0 0 10px #007bff80}.edit-instructions{color:#666;font-size:.9rem;font-style:italic;margin:0}.grid-info p{color:#555;margin:.5rem 0}.materials-table{border-collapse:collapse;margin-top:1rem;width:100%}.materials-table td,.materials-table th{border-bottom:1px solid #ddd;padding:.75rem;text-align:left}.materials-table th{background:#f8f9ff;color:#333;font-weight:600}.total-row{background:#f0f0f0;font-weight:700}.color-info{align-items:center;display:flex;gap:.5rem}.instructions-intro{color:#666;font-style:italic;margin-bottom:1.5rem}.progress-summary{background:#f8f9ff;border:2px solid #667eea;border-radius:10px;margin-bottom:1.5rem;padding:1rem}.progress-bar-container{margin-bottom:1rem}.progress-bar{background:#e0e0e0;border-radius:10px;height:20px;margin-bottom:.5rem;overflow:hidden;width:100%}.progress-fill{background:linear-gradient(90deg,#28a745,#20c997);border-radius:10px;height:100%;transition:width .3s ease}.progress-text{color:#333;font-weight:600}.progress-actions{display:flex;flex-wrap:wrap;gap:.5rem}.clear-all-btn,.mark-all-btn{border:none;border-radius:5px;cursor:pointer;font-size:.9rem;padding:.4rem .8rem;transition:background .3s ease}.mark-all-btn{background:#28a745;color:#fff}.mark-all-btn:hover{background:#218838}.clear-all-btn{background:#6c757d;color:#fff}.clear-all-btn:hover{background:#5a6268}.scanline{align-items:center;background:#f8f9ff;border-radius:5px;display:flex;gap:.5rem;margin-bottom:.75rem;padding:.5rem;transition:all .3s ease}.scanline.completed{background:#d4edda;border-left:4px solid #28a745;opacity:.7}.scanline.completed .direction,.scanline.completed .instructions,.scanline.completed .row-number{text-decoration:line-through}.row-checkbox{cursor:pointer;flex-shrink:0;position:relative}.row-checkbox input[type=checkbox]{height:0;opacity:0;position:absolute;width:0}.checkmark{background:#fff;border:2px solid #667eea;border-radius:3px;display:block;height:20px;position:relative;transition:all .2s ease;width:20px}.row-checkbox input[type=checkbox]:checked+.checkmark{background:#28a745;border-color:#28a745}.row-checkbox input[type=checkbox]:checked+.checkmark:after{border:solid #fff;border-width:0 2px 2px 0;content:"";height:10px;left:6px;position:absolute;top:2px;transform:rotate(45deg);width:6px}.row-checkbox:hover .checkmark{border-color:#28a745;box-shadow:0 0 5px #28a7454d}.row-number{color:#667eea;font-weight:700;min-width:60px}.direction{color:#666;font-style:italic;min-width:120px}.instruction-group{margin-left:.5rem}.truncated-indicator{background:#f0f0f0;color:#666;font-style:italic;text-align:center}.grid-truncated,.instructions-truncated{background:#f8f9ff;border-radius:5px;color:#666;font-style:italic;margin-top:1rem;padding:.5rem;text-align:center}@media (max-width:768px){.upload-section{grid-template-columns:1fr}.preview-header{align-items:stretch;flex-direction:column;gap:1rem}.tab-navigation{flex-wrap:wrap}.tab{flex:1 1;min-width:120px}}
/*# sourceMappingURL=main.0a427d95.css.map*/