.error-boundary{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.error-container{text-align:center;background:#fff;border-radius:12px;max-width:600px;padding:2rem;box-shadow:0 20px 40px #0000001a}.error-container h1{color:#dc3545;margin:0 0 1rem;font-size:2rem}.error-message{color:#6c757d;margin-bottom:2rem;font-size:1.1rem;line-height:1.6}.error-details{text-align:left;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin-bottom:2rem;padding:1.5rem}.error-details h3{color:#495057;margin:0 0 1rem;font-size:1.2rem}.error-text{color:#dc3545;background:#fff;border:1px solid #f5c6cb;border-radius:4px;margin-bottom:1rem;padding:.75rem;font-family:monospace;font-size:.9rem}.error-stack{margin-top:1rem}.error-stack summary{cursor:pointer;color:#6c757d;margin-bottom:.5rem;font-weight:600}.error-stack pre{color:#e2e8f0;background:#2d3748;border-radius:4px;margin:.5rem 0 0;padding:1rem;font-size:.8rem;line-height:1.4;overflow-x:auto}.error-actions{justify-content:center;gap:1rem;margin-bottom:2rem;display:flex}.retry-button,.reload-button{cursor:pointer;border:none;border-radius:6px;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s}.retry-button{color:#fff;background:#646cff}.retry-button:hover{background:#535bf2;transform:translateY(-1px)}.reload-button{color:#fff;background:#6c757d}.reload-button:hover{background:#5a6268;transform:translateY(-1px)}.error-help{text-align:left;background:#e7f3ff;border:1px solid #b8daff;border-radius:8px;padding:1.5rem}.error-help h3{color:#004085;margin:0 0 1rem;font-size:1.1rem}.error-help ul{color:#004085;margin:0;padding-left:1.5rem}.error-help li{margin-bottom:.5rem;line-height:1.4}@media (prefers-color-scheme:dark){.error-container{color:#e2e8f0;background:#2d3748}.error-container h1{color:#f56565}.error-message{color:#a0aec0}.error-details{background:#1a202c;border-color:#4a5568}.error-details h3{color:#e2e8f0}.error-text{color:#f56565;background:#2d3748;border-color:#e53e3e}.error-stack summary{color:#a0aec0}.error-help{background:#1a365d;border-color:#2c5282}.error-help h3,.error-help li{color:#90cdf4}}@media (width<=768px){.error-boundary{padding:1rem}.error-container{padding:1.5rem}.error-container h1{font-size:1.5rem}.error-actions{flex-direction:column}.retry-button,.reload-button{width:100%}}.module-selector{max-width:800px;margin:0 auto;padding:2rem}.module-selector h2{color:#333;margin-bottom:.5rem;font-size:1.8rem}.selector-description{color:#666;margin-bottom:2rem;font-size:1rem;line-height:1.5}.groups-container{flex-direction:column;gap:2rem;display:flex}.module-group{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:1.5rem;transition:box-shadow .2s}.module-group:hover{box-shadow:0 2px 8px #0000001a}.group-title{color:#495057;border-bottom:2px solid #dee2e6;margin:0 0 1rem;padding-bottom:.5rem;font-size:1.3rem;font-weight:600}.options-container{flex-direction:column;gap:.75rem;display:flex}.option-label{cursor:pointer;background:#fff;border:1px solid #dee2e6;border-radius:6px;align-items:flex-start;gap:.75rem;padding:.75rem;transition:all .2s;display:flex}.option-label:hover{background:#f8f9ff;border-color:#646cff}.option-label:has(.option-radio:checked){background:#f0f2ff;border-color:#646cff;box-shadow:0 0 0 2px #646cff1a}.option-radio{accent-color:#646cff;flex-shrink:0;width:18px;height:18px;margin:2px 0 0}.option-content{flex-direction:column;flex:1;gap:.25rem;display:flex}.option-name{color:#333;font-size:1rem;font-weight:500}.option-description{color:#666;font-size:.875rem;line-height:1.4}.image-options-container{flex-wrap:wrap;justify-content:flex-start;gap:1rem;display:flex}.image-option-label{cursor:pointer;flex:200px;min-width:180px;max-width:280px}.image-option-radio{opacity:0;pointer-events:none;position:absolute}.image-option-card{background:#fff;border:2px solid #dee2e6;border-radius:8px;flex-direction:column;height:100%;transition:all .2s;display:flex;position:relative;overflow:hidden}.image-option-label:hover .image-option-card{border-color:#646cff;transform:translateY(-2px);box-shadow:0 4px 12px #646cff26}.image-option-radio:checked+.image-option-card{border-color:#646cff;box-shadow:0 0 0 3px #646cff33,0 4px 12px #646cff26}.image-option-check{color:#fff;opacity:0;z-index:2;background:#646cff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;font-weight:700;transition:all .2s;display:flex;position:absolute;top:8px;right:8px;transform:scale(.5)}.image-option-radio:checked+.image-option-card .image-option-check{opacity:1;transform:scale(1)}.image-option-thumbnail-wrapper{background:#000;line-height:0;display:block;position:relative}.image-option-thumbnail{width:100%;height:auto;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;transition:filter .2s;display:block}.image-option-no-image{aspect-ratio:256/224;color:#adb5bd;background:#e9ecef;justify-content:center;align-items:center;font-size:.85rem;font-style:italic;display:flex}.image-option-info{flex-direction:column;gap:.2rem;padding:.6rem .75rem;display:flex}.image-option-name{color:#333;font-size:.95rem;font-weight:600}.image-option-description{color:#666;font-size:.8rem;line-height:1.35}@media (prefers-color-scheme:dark){.module-selector h2{color:#f1f3f4}.selector-description{color:#9aa0a6}.module-group{background:#2d3748;border-color:#4a5568}.group-title{color:#e2e8f0;border-bottom-color:#4a5568}.option-label{background:#1a202c;border-color:#4a5568}.option-label:hover{background:#2d3748;border-color:#646cff}.option-label:has(.option-radio:checked){background:#2a2f3a;border-color:#646cff}.option-name,.image-option-name{color:#f1f3f4}.option-description,.image-option-description{color:#9aa0a6}.image-option-card{background:#1a202c;border-color:#4a5568}.image-option-label:hover .image-option-card{border-color:#646cff}.image-option-radio:checked+.image-option-card{border-color:#646cff;box-shadow:0 0 0 3px #646cff40,0 4px 12px #646cff33}.image-option-no-image{color:#718096;background:#2d3748}}@media (width<=768px){.module-selector{padding:1rem}.module-selector h2{font-size:1.5rem}.group-title{font-size:1.2rem}.option-label{padding:.5rem}.image-options-container{gap:.75rem}.image-option-label{flex:140px;min-width:140px;max-width:none}}@media (width<=480px){.image-option-label{flex:100%;max-width:none}.image-preview-full{max-width:95vw}}.rom-file-picker{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;max-width:600px;margin:2rem auto;padding:2rem}.rom-file-picker h3{color:#333;margin:0 0 .5rem;font-size:1.5rem}.file-input-container{gap:.5rem;margin-bottom:1rem;display:flex}.file-input{display:none}.file-input-label{color:#fff;cursor:pointer;text-align:center;background:#646cff;border:none;border-radius:6px;flex:1;padding:.75rem 1rem;font-size:1rem;transition:background-color .2s}.file-input-label:hover{background:#535bf2}.clear-button{color:#fff;cursor:pointer;background:#dc3545;border:none;border-radius:6px;padding:.75rem 1rem;transition:background-color .2s}.validation-status{border-radius:6px;align-items:flex-start;gap:.75rem;margin-bottom:1rem;padding:1rem;display:flex}.validation-status.validating{color:#856404;background:#fff3cd;border:1px solid #ffeaa7}.validation-status.valid{color:#155724;background:#d4edda;border:1px solid #c3e6cb}.validation-status.invalid{color:#721c24;background:#f8d7da;border:1px solid #f5c6cb}.status-icon{flex-shrink:0;font-size:1.2rem}.status-content{flex:1}.status-message{margin-bottom:.25rem;font-weight:600}.error-message{margin-bottom:.25rem;font-size:.9rem}.crc-info{opacity:.8;font-family:monospace;font-size:.85rem}.file-info{background:#fff;border:1px solid #dee2e6;border-radius:6px;padding:1rem}.file-info h4{color:#333;margin:0 0 .75rem;font-size:1.1rem}.info-grid{grid-template-columns:auto 1fr;gap:.5rem 1rem;font-size:.9rem;display:grid}.info-grid span:nth-child(odd){color:#495057;font-weight:600}.info-grid span:nth-child(2n){color:#6c757d;font-family:monospace}@media (prefers-color-scheme:dark){.rom-file-picker{background:#2d3748;border-color:#4a5568}.rom-file-picker h3{color:#f1f3f4}.picker-description{color:#9aa0a6}.validation-status.validating{color:#f4e79d;background:#3d3d1a;border-color:#5a5a2a}.validation-status.valid{color:#9df4c4;background:#1a3d2e;border-color:#2a5a4a}.validation-status.invalid{color:#f49d9d;background:#3d1a1a;border-color:#5a2a2a}.file-info{background:#1a202c;border-color:#4a5568}.file-info h4{color:#f1f3f4}.info-grid span:nth-child(odd){color:#e2e8f0}.info-grid span:nth-child(2n){color:#9aa0a6}}@media (width<=768px){.rom-file-picker{margin:1rem;padding:1rem}.file-input-container{flex-direction:column}.info-grid{grid-template-columns:1fr;gap:.25rem}}.rom-builder{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;max-width:600px;margin:2rem auto;padding:2rem}.rom-builder h3{color:#333;margin:0 0 .5rem;font-size:1.5rem}.builder-description{color:#666;margin-bottom:1.5rem;line-height:1.5}.build-status{background:#fff;border:1px solid #dee2e6;border-radius:6px;flex-direction:column;gap:.75rem;margin-bottom:1.5rem;padding:1rem;display:flex}.status-info{align-items:center;gap:.5rem;font-size:.95rem;display:flex}.status-indicator.pending{color:#ffc107}.status-indicator.optional{color:#6c757d}.progress-container{background:#fff;border:1px solid #dee2e6;border-radius:6px;margin-bottom:1.5rem;padding:1rem}.progress-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.progress-stage{color:#495057;font-weight:600}.progress-percentage{color:#6c757d;font-family:monospace;font-size:.9rem}.progress-bar{background:#e9ecef;border-radius:4px;width:100%;height:8px;margin-bottom:.5rem;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#646cff,#535bf2);border-radius:4px;height:100%;transition:width .3s}.progress-message{color:#6c757d;font-size:.9rem;font-style:italic}.build-actions{justify-content:center;margin-bottom:1.5rem;display:flex}.build-button{cursor:pointer;border:none;border-radius:6px;min-width:150px;padding:.75rem 2rem;font-size:1.1rem;font-weight:600;transition:all .2s}.build-button.ready{color:#fff;background:#646cff}.build-button.ready:hover{background:#535bf2;transform:translateY(-1px);box-shadow:0 4px 8px #646cff4d}.build-button.disabled{color:#adb5bd;cursor:not-allowed;background:#6c757d}.build-complete{text-align:center;color:#155724;background:#d4edda;border:1px solid #c3e6cb;border-radius:6px;padding:1.5rem}.build-complete h4{color:#155724;margin:0 0 .5rem}.build-complete p{margin:0 0 1rem}.download-button{color:#fff;cursor:pointer;background:#28a745;border:none;border-radius:6px;padding:.75rem 1.5rem;font-weight:600;transition:background-color .2s}.download-button:hover{background:#218838}@media (prefers-color-scheme:dark){.rom-builder{background:#2d3748;border-color:#4a5568}.rom-builder h3{color:#f1f3f4}.builder-description{color:#9aa0a6}.build-status,.progress-container{background:#1a202c;border-color:#4a5568}.progress-stage{color:#e2e8f0}.progress-percentage,.progress-message{color:#9aa0a6}.progress-bar{background:#4a5568}.build-complete{color:#9df4c4;background:#1a3d2e;border-color:#2a5a4a}.build-complete h4{color:#9df4c4}}@media (width<=768px){.rom-builder{margin:1rem;padding:1rem}.build-status,.progress-container{padding:.75rem}.build-button{padding:.75rem 1.5rem;font-size:1rem}}.notepad{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;max-width:600px;margin:2rem auto;padding:2rem}.notepad h3{color:#333;margin:0 0 .5rem;font-size:1.5rem}.notepad-description{color:#666;margin-bottom:1.5rem;line-height:1.5}.notepad-content{background:#fff;border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.notepad-header{background:#f8f9fa;border-bottom:1px solid #dee2e6;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.9rem;display:flex}.content-info{color:#666;font-weight:500}.notepad-textarea{resize:vertical;color:#333;background:#fff;border:none;outline:none;width:100%;min-height:300px;padding:1rem;font-family:Consolas,Monaco,Courier New,monospace;font-size:.9rem;line-height:1.4}.notepad-textarea::placeholder{color:#999;font-style:italic}.notepad-textarea:focus{background:#fafbfc}.notepad-status{background:#f8f9fa;border-top:1px solid #dee2e6;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.9rem;display:flex}@media (width<=768px){.notepad{margin:1rem;padding:1.5rem}.notepad-textarea{min-height:250px;font-size:.85rem}.notepad-header{flex-direction:column;align-items:flex-start;gap:.5rem}}.folder-picker{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;max-width:600px;margin:2rem auto;padding:2rem}.folder-picker h3{color:#333;margin:0 0 .5rem;font-size:1.5rem}.picker-description{color:#666;margin-bottom:1.5rem;line-height:1.5}.folder-input-container{gap:.5rem;margin-bottom:1rem;display:flex}.folder-input{display:none}.folder-input-label{color:#fff;cursor:pointer;text-align:center;background:#646cff;border:none;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:1rem;transition:background-color .2s;display:flex}.folder-input-label:hover{background:#535bf2}.clear-button{color:#fff;cursor:pointer;background:#dc3545;border:none;border-radius:6px;padding:.75rem 1rem;font-size:1rem;transition:background-color .2s}.clear-button:hover{background:#c82333}.scanning-status{color:#1565c0;background:#e3f2fd;border:1px solid #bbdefb;border-radius:6px;align-items:center;gap:.75rem;margin-bottom:1rem;padding:1rem;display:flex}.loading-spinner{border:2px solid #bbdefb;border-top-color:#1565c0;border-radius:50%;width:20px;height:20px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.scan-error{color:#856404;background:#fff3cd;border:1px solid #ffeaa7;border-radius:6px;align-items:center;gap:.5rem;margin-bottom:1rem;padding:1rem;display:flex}.error-icon{font-size:1.1rem}.folder-status{background:#fff;border:1px solid #dee2e6;border-radius:6px;overflow:hidden}.status-info{align-items:center;gap:.5rem;padding:1rem;font-size:.95rem;display:flex}.status-indicator{text-align:center;width:20px;font-size:1.1rem}.status-indicator.ready{color:#28a745}.status-indicator.empty{color:#6c757d}.file-list{border-top:1px solid #dee2e6}.file-list details{padding:0}.file-list summary{cursor:pointer;color:#495057;background:#f8f9fa;border:none;outline:none;padding:.75rem 1rem;font-weight:500;transition:background-color .2s}.file-list summary:hover{background:#e9ecef}.file-list-items{max-height:200px;margin:0;padding:0;list-style:none;overflow-y:auto}.file-item{border-bottom:1px solid #f1f3f4;justify-content:space-between;align-items:center;padding:.5rem 1rem;font-size:.9rem;display:flex}.file-item:last-child{border-bottom:none}.file-name{color:#333;word-break:break-all;flex:1;margin-right:1rem;font-family:Consolas,Monaco,Courier New,monospace}.file-type{margin-right:1rem;font-family:Consolas,Monaco,Courier New,monospace}.file-size{color:#666;white-space:nowrap;font-size:.85rem}@media (width<=768px){.folder-picker{margin:1rem;padding:1.5rem}.folder-input-container{flex-direction:column}.file-item{flex-direction:column;align-items:flex-start;gap:.25rem}.file-name{margin-right:0}}.notification-system{z-index:1000;pointer-events:none;flex-direction:column;gap:.75rem;max-width:400px;display:flex;position:fixed;top:20px;right:20px}.notification{pointer-events:auto;background:#fff;border-left:4px solid;border-radius:8px;animation:.3s ease-out forwards slideIn;overflow:hidden;transform:translate(100%);box-shadow:0 4px 12px #00000026}.notification-success{border-left-color:#28a745}.notification-error{border-left-color:#dc3545}.notification-warning{border-left-color:#ffc107}.notification-info{border-left-color:#17a2b8}.notification-content{padding:1rem}.notification-header{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.notification-icon{flex-shrink:0;font-size:1.1rem}.notification-title{color:#333;flex:1;font-size:.95rem;font-weight:600}.notification-close{color:#6c757d;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;font-size:1.5rem;transition:all .2s;display:flex}.notification-close:hover{color:#495057;background:#f8f9fa}.notification-message{color:#6c757d;margin-left:1.6rem;font-size:.9rem;line-height:1.4}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.notification.dismissing{animation:.3s ease-in forwards slideOut}@media (prefers-color-scheme:dark){.notification{background:#2d3748;box-shadow:0 4px 12px #0000004d}.notification-title{color:#e2e8f0}.notification-message,.notification-close{color:#a0aec0}.notification-close:hover{color:#e2e8f0;background:#4a5568}}@media (width<=768px){.notification-system{max-width:none;top:10px;left:10px;right:10px}.notification{margin:0}.notification-content{padding:.75rem}.notification-header{margin-bottom:.25rem}.notification-message{margin-left:1.4rem;font-size:.85rem}}@media (prefers-reduced-motion:reduce){.notification{animation:none;transform:translate(0)}.notification.dismissing{opacity:0;animation:none}}@media (prefers-contrast:high){.notification{border:2px solid}.notification-success{border-color:#28a745}.notification-error{border-color:#dc3545}.notification-warning{border-color:#ffc107}.notification-info{border-color:#17a2b8}}#root{max-width:1200px;min-height:100vh;margin:0 auto;padding:1rem}.app-header{text-align:center;color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:12px;margin-bottom:3rem;padding:2rem 0;box-shadow:0 4px 20px #0000001a}.app-header h1{text-shadow:0 2px 4px #0000004d;margin:0 0 .5rem;font-size:2.5rem;font-weight:700}.app-header h2{opacity:.9;margin:0;font-size:1.3rem;font-weight:400}.card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin-bottom:2rem;padding:2rem;transition:box-shadow .2s;box-shadow:0 2px 8px #0000000d}.card:hover{box-shadow:0 4px 16px #0000001a}.card.error{background:#f8d7da;border-color:#f5c6cb}.card h3{color:#333;margin:0 0 1rem;font-size:1.4rem}.card p{color:#666;margin:.5rem 0;line-height:1.5}.card pre{color:#e2e8f0;background:#2d3748;border-radius:6px;margin:1rem 0 0;padding:1rem;font-size:.85rem;line-height:1.4;overflow-x:auto}.workflow-container{gap:2rem;margin-bottom:2rem;display:grid}.workflow-step{position:relative}.loading-spinner{border:3px solid #f3f3f3;border-top-color:#646cff;border-radius:50%;width:20px;height:20px;margin-right:.5rem;animation:1s linear infinite spin;display:inline-block}@media (prefers-color-scheme:dark){.app-header{background:linear-gradient(135deg,#4a5568 0%,#2d3748 100%)}.card{color:#e2e8f0;background:#2d3748;border-color:#4a5568}.card.error{background:#3d1a1a;border-color:#5a2a2a}.card h3{color:#f1f3f4}.card p{color:#a0aec0}}@media (width<=768px){#root{padding:.5rem}.app-header{margin-bottom:2rem;padding:1.5rem 1rem}.app-header h1{font-size:2rem}.app-header h2{font-size:1.1rem}.card{margin-bottom:1.5rem;padding:1.5rem}.workflow-step:before{width:3px;left:-.5rem}}@media (width<=480px){.app-header h1{font-size:1.7rem}.app-header h2{font-size:1rem}.card{padding:1rem}.card pre{padding:.75rem;font-size:.75rem}}.discord-footer{border-top:1px solid #e9ecef;flex-direction:column;align-items:center;gap:.5rem;margin:3rem 0 2rem;padding:1.5rem;display:flex}.discord-link{color:#fff;background:#5865f2;border-radius:8px;align-items:center;gap:.6rem;padding:.75rem 1.5rem;font-size:1.1rem;font-weight:600;text-decoration:none;transition:background .2s,transform .15s,box-shadow .2s;display:inline-flex;box-shadow:0 2px 8px #5865f24d}.discord-link:hover{color:#fff;background:#4752c4;transform:translateY(-1px);box-shadow:0 4px 16px #5865f266}.discord-link:active{transform:translateY(0)}.discord-icon{flex-shrink:0;width:1.4em;height:1.4em}.discord-subtext{color:#888;letter-spacing:.02em;font-size:.85rem}@media (prefers-color-scheme:dark){.discord-footer{border-top-color:#4a5568}.discord-subtext{color:#a0aec0}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#242424;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}a{color:#646cff;-webkit-text-decoration:inherit;text-decoration:inherit;font-weight:500}a:hover{color:#535bf2}body{place-items:center;min-width:320px;min-height:100vh;margin:0;display:flex}h1{font-size:3.2em;line-height:1.1}button{color:inherit;cursor:pointer;background-color:#1a1a1a;border:1px solid #0000;border-radius:8px;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
