body{margin:0;background:#fff;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.loading-screen,.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;text-align:center;color:#333;background:#fff}.error-screen{background:#fff}.error-screen button{margin-top:20px;padding:12px 30px;background:#007bff;color:#fff;border:none;border-radius:25px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s}.spinner{width:60px;height:60px;border:4px solid #f3f3f3;border-top:4px solid #007bff;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}.preset-section{margin-bottom:1.5rem}.preset-btn:hover{border-color:#007bff;background:#f8f9fa}.preset-btn.selected{background:#007bff;color:#fff;border-color:#007bff}.custom-config{background:#f8f9fa;border-radius:8px;padding:1.5rem;margin-top:1rem}.config-row{display:flex;gap:1.5rem;margin-bottom:1.5rem}.config-group{flex:1;display:flex;flex-direction:column;gap:.5rem}.config-group label{font-weight:500;color:#495057;font-size:14px}.config-group input{padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:16px;width:100%}.config-actions{display:flex;justify-content:flex-end}.create-board-btn{padding:.75rem 2rem;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:16px;font-weight:500;cursor:pointer;transition:background .2s}.create-board-btn:hover:not(:disabled){background:#0056b3}.create-board-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:768px){.config-row{flex-direction:column;gap:1rem}.preset-buttons{flex-wrap:wrap}.preset-btn{flex:1;min-width:80px;text-align:center}}.App{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}h1{text-align:center;color:#333;margin-bottom:30px}.status{display:flex;gap:15px;margin-bottom:30px;justify-content:center}.status-indicator{padding:10px 20px;border-radius:25px;font-weight:500;font-size:14px}.status-indicator.ready{background:#e8f5e9;color:#2e7d32;border:1px solid #c8e6c9}.status-indicator.loading{background:#fff3e0;color:#ef6c00;border:1px solid #ffcc80}.status-indicator.error{background:#ffebee;color:#c62828;border:1px solid #ffcdd2}.config-section{background:#fff;border-radius:10px;padding:25px;margin-bottom:30px;box-shadow:0 2px 10px #0000001a;border:1px solid #e0e0e0}.config-section h3{margin-top:0;margin-bottom:20px;color:#333}.preset-buttons{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.preset-buttons button{padding:10px 20px;border:1px solid #ddd;background:#f8f9fa;border-radius:5px;cursor:pointer;transition:all .2s;font-size:14px}.preset-buttons button:hover{background:#e9ecef;border-color:#007bff}.preset-buttons button.active{background:#007bff;color:#fff;border-color:#007bff}.config-inputs{display:flex;gap:30px;flex-wrap:wrap}.config-inputs>div{display:flex;flex-direction:column;gap:8px}.config-inputs label{font-weight:500;color:#555;font-size:14px}.config-inputs input{padding:10px;border:1px solid #ddd;border-radius:5px;width:120px;font-size:14px}.algorithm-section{background:#fff;border-radius:10px;padding:25px;margin-bottom:30px;box-shadow:0 2px 10px #0000001a;border:1px solid #e0e0e0}.algorithm-section h3{margin-top:0;margin-bottom:20px;color:#333}.algorithm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.algorithm-card{border:2px solid #e0e0e0;border-radius:8px;padding:20px;cursor:pointer;transition:all .3s ease;background:#fff}.algorithm-card:hover{border-color:#007bff;transform:translateY(-2px);box-shadow:0 5px 15px #0000001a}.algorithm-card.selected{border-color:#007bff;background-color:#f0f8ff}.algorithm-card h4{margin:0 0 10px;color:#333;font-size:18px}.algorithm-card p{margin:0;color:#666;font-size:14px;line-height:1.5}.controls{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:30px;justify-content:center}.controls button{padding:12px 24px;border:none;border-radius:6px;background:#007bff;color:#fff;font-weight:500;font-size:14px;cursor:pointer;transition:background .2s}.controls button:hover:not(:disabled){background:#0056b3}.controls button:disabled{opacity:.5;cursor:not-allowed;background:#6c757d}.board-preview{background:#fff;border-radius:10px;padding:25px;margin-bottom:30px;box-shadow:0 2px 10px #0000001a;border:1px solid #e0e0e0}.board-preview h3{margin-top:0;margin-bottom:20px;color:#333}.board-grid{display:grid;gap:3px;background:#999;border:3px solid #999;border-radius:4px;overflow:hidden;margin-bottom:20px}.cell{background:silver;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;cursor:default;user-select:none}.cell.hidden{background:silver;border:3px outset #ddd}.cell.revealed{background:#e0e0e0;border:1px solid #bbb}.cell.mine{background:#f44}.cell.flagged{background:#4f8}.board-info{display:grid;grid-template-columns:repeat(2,1fr);gap:15px;padding:20px;background:#f8f9fa;border-radius:8px}.board-info p{margin:0;font-size:14px;color:#555}.comparison-results{background:#fff;border-radius:10px;padding:25px;margin-bottom:30px;box-shadow:0 2px 10px #0000001a;border:1px solid #e0e0e0}.comparison-results h3{margin-top:0;margin-bottom:20px;color:#333}.comparison-results table{width:100%;border-collapse:collapse}.comparison-results th{background:#f8f9fa;padding:12px;text-align:left;font-weight:600;color:#555;border-bottom:2px solid #dee2e6}.comparison-results td{padding:12px;border-bottom:1px solid #dee2e6;color:#333}.comparison-results tr.best{background:#fff3cd}.batch-results{background:#fff;border-radius:10px;padding:25px;margin-bottom:30px;box-shadow:0 2px 10px #0000001a;border:1px solid #e0e0e0}.batch-results h3{margin-top:0;margin-bottom:20px;color:#333}.batch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.batch-result{padding:15px;border-radius:6px;font-size:14px}.batch-result.success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.batch-result.failure{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.logs{background:#fff;border-radius:10px;padding:25px;box-shadow:0 2px 10px #0000001a;border:1px solid #e0e0e0}.logs h3{margin-top:0;margin-bottom:20px;color:#333}.log-container{height:200px;overflow-y:auto;background:#f8f9fa;border-radius:8px;padding:15px;margin-bottom:15px;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.4}.log-entry{padding:5px 0;border-bottom:1px solid #e9ecef}.clear-logs{width:100%;padding:10px;background:#dc3545;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:background .2s}.clear-logs:hover:not(:disabled){background:#c82333}.clear-logs:disabled{opacity:.5;cursor:not-allowed}.loading-screen,.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;text-align:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.spinner{width:60px;height:60px;border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-screen h2,.error-screen h2{margin-bottom:10px;font-size:28px}.loading-screen p,.error-screen p{font-size:16px;opacity:.9}.error-screen{background:linear-gradient(135deg,#f093fb,#f5576c)}.error-screen button{margin-top:20px;padding:12px 30px;background:#fff;color:#f5576c;border:none;border-radius:25px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s}.error-screen button:hover{transform:translateY(-2px)}.error-tips{margin-top:30px;text-align:left;max-width:600px;background:#ffffff1a;padding:20px;border-radius:10px}.error-tips h4{margin-bottom:10px;font-size:18px}.error-tips ul{padding-left:20px}.error-tips li{margin-bottom:8px;line-height:1.5}code{background:#0003;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace}@media(max-width:768px){.App{padding:10px}.config-inputs{flex-direction:column;gap:15px}.algorithm-grid,.board-info,.batch-grid{grid-template-columns:1fr}.controls{flex-direction:column}.controls button{width:100%}.preset-buttons{flex-direction:column}.preset-buttons button{width:100%}}.batch-summary{background:#f8f9fa;border-radius:8px;padding:15px;margin-bottom:20px}.summary-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.stat{text-align:center;padding:10px;background:#fff;border-radius:6px;box-shadow:0 1px 3px #0000001a}.stat-label{display:block;font-size:12px;color:#666;margin-bottom:5px}.stat-value{display:block;font-size:20px;font-weight:700;color:#333}.stat-value.success{color:#28a745}.game-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.game-details{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;font-size:12px;color:#666}.result-badge{padding:3px 8px;border-radius:4px;font-size:11px;font-weight:700}.result-badge.win{background:#d4edda;color:#155724}.result-badge.lose{background:#f8d7da;color:#721c24}.coming-soon{display:inline-block;margin-top:8px;padding:3px 8px;background:#6c757d;color:#fff;border-radius:4px;font-size:11px}.algorithm-card.disabled:hover{border-color:#e0e0e0;transform:none;box-shadow:none}.config-actions{margin-top:1rem;padding-top:1rem;border-top:1px solid #ddd}.apply-button{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:700;padding:12px 24px;border-radius:8px;border:none;cursor:pointer;transition:transform .2s}.apply-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.apply-button:disabled{opacity:.5;cursor:not-allowed}.algorithm-selector{margin-bottom:2rem}.algorithm-selector h3{margin-bottom:1rem;color:#333}.algorithm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}.algorithm-card{border:2px solid #ddd;border-radius:8px;padding:1rem;cursor:pointer;transition:all .3s ease;background:#fff}.algorithm-card:hover:not(.disabled){border-color:#646cff;transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.algorithm-card.selected{border-color:#646cff;background-color:#f0f4ff}.algorithm-card.disabled{opacity:.6;cursor:not-allowed}.algorithm-card h4{margin:0 0 .5rem;color:#333}.algorithm-card p{margin:0;font-size:.9rem;color:#666}.coming-soon{display:inline-block;margin-top:.5rem;padding:.2rem .5rem;background-color:#ff6b6b;color:#fff;border-radius:4px;font-size:.8rem}
