body{margin:0;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}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg-page: #f4f7f6;--bg-surface: #ffffff;--bg-subtle: #f8fafc;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--border: #e2e8f0;--shadow-sm: rgba(0, 0, 0, .08);--shadow-md: rgba(0, 0, 0, .12);--overlay: rgba(0, 0, 0, .5)}:root[data-theme=dark]{--bg-page: #0f1720;--bg-surface: #182230;--bg-subtle: #212d3d;--text-primary: #e6edf3;--text-secondary: #a3b1c2;--text-muted: #7d8ea1;--border: #2d3b4c;--shadow-sm: rgba(0, 0, 0, .45);--shadow-md: rgba(0, 0, 0, .6);--overlay: rgba(0, 0, 0, .7)}body{margin:0;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;background-color:var(--bg-page);color:var(--text-primary)}.App{display:flex;flex-direction:column;min-height:100vh}header{background-color:var(--bg-surface);padding:10px 40px;box-shadow:0 2px 4px var(--shadow-sm);text-align:center;margin-bottom:20px}header h1{margin:0;color:var(--text-primary)}.main-container{display:flex;flex-wrap:wrap;justify-content:center;gap:30px;padding:0 20px;flex-grow:1}.column-card{background-color:var(--bg-surface);padding:20px;border-radius:8px;box-shadow:0 1px 3px var(--shadow-md),0 1px 2px #0000003d;display:flex;flex-direction:column;align-items:center;flex:1;min-width:400px;max-width:500px}.left-column h2,.right-column h2{text-align:center;margin-top:0;margin-bottom:20px;color:var(--text-secondary)}.image-display-area{width:100%;min-height:350px;display:flex;justify-content:center;align-items:center;margin-bottom:20px;background-color:var(--border);border-radius:4px}.image-display-area img{max-width:100%;max-height:350px;display:block}.placeholder-text{color:#888;font-style:italic}.controls{display:flex;justify-content:center;gap:15px;margin-bottom:15px;width:100%}.btn,.button{padding:8px 18px;border:none;border-radius:5px;color:#fff;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s ease;text-align:center;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;min-width:120px;height:38px;box-sizing:border-box;text-decoration:none}.btn:disabled,.btn.disabled,.button:disabled,.button.disabled{opacity:.6;cursor:not-allowed}.upload-btn{background-color:#007bff}.upload-btn:hover:not(:disabled){background-color:#0056b3}.detect-btn{background-color:#28a745}.detect-btn:hover:not(:disabled){background-color:#1e7e34}.best-move-btn{background-color:#b02a37;color:#fff;border:none;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.82rem;font-weight:700;width:90px;align-self:stretch;line-height:1.2;transition:all .2s cubic-bezier(.4,0,.2,1);padding:5px;box-sizing:border-box}.best-move-btn:hover:not(:disabled){background-color:#8c1f28;transform:scale(1.02)}.best-move-btn:active:not(:disabled){transform:scale(.98)}.best-move-btn:disabled,.best-move-btn.disabled{background-color:var(--text-muted);cursor:not-allowed;opacity:.6}.status-area{width:100%;margin-top:10px;padding:10px;background-color:var(--bg-subtle);border:1px solid var(--border);border-radius:4px;text-align:center;height:90px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden}.status-area p{margin:2px 0}.status-detail{font-size:.78rem;color:var(--text-secondary);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.error-message{color:#dc3545;font-weight:700}.board-display-area{margin-bottom:20px}.section{width:100%;margin-top:15px;padding:15px;border:1px solid var(--border);border-radius:4px;background-color:#fdfdfd}.section h3{margin-top:0;margin-bottom:10px;color:var(--text-primary);text-align:center}.fen-string{font-family:monospace;word-break:break-all;text-align:center}.best-move-display p{text-align:center}.spinner-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--overlay);display:flex;justify-content:center;align-items:center;z-index:1000}footer{text-align:center;margin-top:30px;padding:15px;color:var(--text-secondary);background-color:var(--bg-subtle);width:100%}.chessboard{position:relative;margin:20px}.chessboard .board-coordinates{font-size:16px;font-family:Arial,sans-serif;font-weight:700;color:var(--text-secondary);position:absolute}.chessboard .board-coordinates.files{bottom:-24px;top:auto;left:0;right:0;display:flex;justify-content:space-between;padding:0 5px}.chessboard .board-coordinates.ranks{right:-24px;left:auto;top:0;bottom:0;display:flex;flex-direction:column;justify-content:space-between;padding:5px 0}.chessboard-wrapper{position:relative;display:inline-block;margin:35px}.rank-coordinates{position:absolute;display:flex;flex-direction:column;justify-content:space-between;font-size:16px;font-weight:700;color:var(--text-secondary);top:0;bottom:0;width:20px;padding:12px 0}.left-ranks{left:-35px}.right-ranks{right:-35px}.file-coordinates{position:absolute;display:flex;justify-content:space-between;font-size:16px;font-weight:700;color:var(--text-secondary);left:0;right:0;padding:0 12px}.bottom-files{bottom:-35px}.top-files{top:-35px;flex-direction:row}.board-display-area{margin:10px 0 25px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;width:100%}.rank-coordinates{flex-direction:column}.top-files{flex-direction:row}.move-container{margin:10px 0;padding:8px;border:1px solid var(--border);border-radius:4px}.move-line{display:flex;justify-content:space-between;align-items:center;margin:4px 0}.language-section{margin:15px 0;padding:10px;border:1px solid var(--border);border-radius:4px}.language-section h4{margin:0 0 10px;color:var(--text-secondary);text-align:center}.language-group{margin:20px 0;padding:15px;background-color:var(--bg-subtle);border-radius:6px;box-shadow:0 1px 2px var(--shadow-sm)}.language-group h4{color:var(--text-primary);margin-bottom:12px;border-bottom:1px solid #ddd;padding-bottom:8px}.add-piece-section{margin-top:5px;padding:10px 15px;background-color:var(--bg-subtle);border-radius:5px;border:1px solid var(--border)}.add-piece-section h4{margin-top:0;margin-bottom:10px;font-weight:700;color:var(--text-primary)}.piece-selection-grid{display:flex;flex-direction:column;gap:10px}.piece-color-group{display:flex;gap:5px;align-items:center}.piece-button{width:40px;height:40px;box-sizing:border-box;padding:2px;line-height:0;cursor:pointer;border:1px solid #8b6b47;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s,border-color .2s,filter .2s}.piece-button.square-light{background-color:#f0d9b5}.piece-button.square-dark{background-color:#b58863}.piece-button svg{display:block;pointer-events:none}.piece-button:hover{filter:brightness(1.1)}.piece-button.selected{background-color:#007bff;border-color:#0056b3;box-shadow:0 0 0 2px #007bff66}.cancel-add-button{margin-top:5px;padding:5px 10px;font-size:.9rem;cursor:pointer;border:1px solid #dc3545;background-color:#f8d7da;color:#721c24;border-radius:4px}.cancel-add-button:hover{background-color:#f1b0b7}.navigation-buttons{display:flex;justify-content:center;align-items:center;gap:8px;margin-top:15px;padding:10px;background-color:var(--bg-subtle);border-radius:8px;border:1px solid var(--border)}.nav-btn{background-color:#007bff;color:#fff;border:none;border-radius:6px;padding:8px 14px;font-size:1.1rem;cursor:pointer;transition:background-color .2s ease,transform .1s ease;display:flex;align-items:center;justify-content:center;min-width:40px;height:36px}.nav-btn:hover:not(:disabled){background-color:#0056b3;transform:scale(1.05)}.nav-btn:active:not(:disabled){transform:scale(.95)}.nav-btn:disabled{background-color:var(--text-muted);cursor:not-allowed;opacity:.6}.nav-move-counter{font-size:.9rem;font-weight:600;color:var(--text-primary);min-width:80px;text-align:center;padding:0 8px}.notation-column{min-width:220px;max-width:280px;flex:0 0 auto}.notation-column h2{text-align:center;margin-top:0;margin-bottom:15px;color:var(--text-secondary)}.notation-panel{max-height:500px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;background-color:var(--bg-surface);padding:8px;line-height:1.8}.notation-move-number{font-weight:600;color:var(--text-secondary);font-size:.85rem}.notation-move{padding:2px 6px;border-radius:4px;cursor:pointer;font-family:Segoe UI,system-ui,sans-serif;font-size:.9rem;transition:background-color .15s ease;display:inline}.notation-move:hover{background-color:var(--bg-subtle)}.notation-move.active{background-color:#007bff;color:#fff;font-weight:600}.notation-move.crossed-out{color:#2196f3;text-decoration:line-through;font-style:italic;opacity:.7}.notation-move.active.crossed-out{background-color:#2196f3;color:#fff;text-decoration:line-through}.notation-move.invalid{color:var(--text-secondary);font-style:italic;opacity:.8}.notation-move.active.invalid{background-color:var(--text-secondary);color:#fff}.notation-move.illegal{color:#dc3545;font-weight:600}.notation-move.active.illegal{background-color:#dc3545;color:#fff}.invalid-moves-info{margin-top:10px;padding:8px;background-color:#fff3cd;border:1px solid #ffc107;border-radius:4px;font-size:.85rem;color:#856404}.invalid-moves-info p{margin:0}.board-direction-btn{background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center;width:38px;height:38px;box-shadow:0 2px 4px var(--shadow-sm);transition:all .2s cubic-bezier(.4,0,.2,1);color:var(--text-secondary);flex-shrink:0}.board-direction-btn:hover{background-color:var(--bg-subtle)!important;color:var(--text-primary)!important;border-color:var(--text-muted)!important;transform:translateY(-2px);box-shadow:0 10px 15px -3px var(--shadow-sm),0 4px 6px -2px #0000000a!important}.board-direction-btn:active{transform:translateY(0)}.fen-copy-btn{transition:all .2s ease!important}.fen-copy-btn:hover{background-color:var(--border)!important;color:var(--text-primary)!important;border-color:var(--text-muted)!important}.fen-apply-btn{transition:all .2s ease!important}.fen-apply-btn:hover:not(:disabled){background-color:#218838!important;transform:scale(1.02)}.fen-apply-btn:active:not(:disabled){transform:scale(1)}.fen-apply-btn:disabled{opacity:.6;cursor:not-allowed}.fen-notation-section{width:100%;margin-top:20px;padding:15px;border:1px solid var(--border);border-radius:8px;background-color:var(--bg-subtle);box-sizing:border-box}.reverse-ranks-btn{position:absolute;top:-24px;left:50%;transform:translate(-50%);background-color:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);font-size:11px;font-weight:700;cursor:pointer;border-radius:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);padding:0;box-shadow:0 1px 3px var(--shadow-sm);z-index:10}.reverse-ranks-btn:hover{background-color:#007bff;color:var(--bg-surface);border-color:#007bff;box-shadow:0 2px 6px #007bff4d;transform:translate(-50%) scale(1.15)}.reverse-ranks-btn:active{transform:translate(-50%) scale(.92)}.reverse-ranks-btn svg{transition:transform .2s ease}.reverse-ranks-btn:hover svg{transform:scale(1.05)}.reverse-files-btn{position:absolute;right:-24px;top:50%;transform:translateY(-50%);background-color:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);font-size:11px;font-weight:700;cursor:pointer;border-radius:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;transition:all .2s cubic-bezier(.4,0,.2,1);padding:0;box-shadow:0 1px 3px var(--shadow-sm);z-index:10}.reverse-files-btn:hover{background-color:#007bff;color:var(--bg-surface);border-color:#007bff;box-shadow:0 2px 6px #007bff4d;transform:translateY(-50%) scale(1.15)}.reverse-files-btn:active{transform:translateY(-50%) scale(.92)}.reverse-files-btn svg{transition:transform .2s ease}.reverse-files-btn:hover svg{transform:scale(1.05)}.promotion-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#0f172ab3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;justify-content:center;align-items:center;z-index:1000;border-radius:4px;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.promotion-card{background:#fffffff2;padding:20px;border-radius:12px;box-shadow:0 10px 25px -5px #0000004d,0 8px 10px -6px #0000004d;text-align:center;max-width:280px;width:90%;animation:scaleUp .2s cubic-bezier(.34,1.56,.64,1);border:1px solid rgba(255,255,255,.2)}@keyframes scaleUp{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.promotion-card h4{margin-top:0;margin-bottom:15px;font-size:1.1rem;color:#1e293b;font-weight:600}.promotion-options{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:15px}.promotion-option-btn{font-size:2.2rem;padding:8px 0;cursor:pointer;border:1px solid var(--border);background-color:var(--bg-subtle);border-radius:8px;line-height:1;transition:all .2s ease;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 3px var(--shadow-sm)}.promotion-option-btn:hover{background-color:var(--border);border-color:var(--text-muted);transform:translateY(-2px);box-shadow:0 4px 6px -1px var(--shadow-sm),0 2px 4px -1px #0000000f}.promotion-option-btn:active{transform:translateY(0)}.promotion-cancel-btn{width:100%;padding:8px 0;font-size:.9rem;font-weight:500;color:#64748b;background-color:var(--bg-subtle);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .2s ease}.promotion-cancel-btn:hover{background-color:var(--border);color:#334155}.board-controls-container{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:15px;width:100%;max-width:400px}.board-controls-subrow{display:flex;align-items:center;justify-content:space-between;width:100%;gap:8px}.board-controls-group{display:flex;align-items:center;gap:6px}.calc-toggle-btn{transition:all .25s cubic-bezier(.4,0,.2,1)!important}.calc-active-white{border-color:#22c55e!important;box-shadow:0 0 8px 2px #22c55e59,0 2px 4px var(--shadow-sm)!important;color:#15803d!important;background:#f0fdf4!important}.calc-active-white:hover{box-shadow:0 0 12px 4px #22c55e73,0 4px 6px var(--shadow-sm)!important;background:#dcfce7!important}.calc-active-black{border-color:#ef4444!important;box-shadow:0 0 8px 2px #ef444459,0 2px 4px var(--shadow-sm)!important;color:#b91c1c!important;background:#fef2f2!important}.calc-active-black:hover{box-shadow:0 0 12px 4px #ef444473,0 4px 6px var(--shadow-sm)!important;background:#fee2e2!important}.calc-inactive{opacity:.6;border-color:var(--border)!important;color:var(--text-muted)!important;background:var(--bg-subtle)!important}.calc-inactive:hover{opacity:.85}.movetime-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;padding:6px 24px 6px 8px;font-size:13px;font-weight:600;color:var(--text-secondary);cursor:pointer;height:38px;min-width:52px;box-shadow:0 2px 4px var(--shadow-sm);transition:all .2s cubic-bezier(.4,0,.2,1);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath d='M3 5l3 3 3-3' fill='none' stroke='%23475569' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:10px;flex-shrink:0}.movetime-select:hover{background-color:var(--bg-subtle);color:var(--text-primary);border-color:var(--text-muted);transform:translateY(-2px);box-shadow:0 4px 6px var(--shadow-sm)}.movetime-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626,0 2px 4px var(--shadow-sm)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:12px 40px;background-color:var(--bg-surface);border-bottom:1px solid #eef2f5;box-shadow:0 2px 8px var(--shadow-sm);margin-bottom:20px;position:relative}@media (max-width: 600px){.app-header{flex-direction:column;gap:10px;padding:12px 15px;text-align:center}.column-card{min-width:100%!important;max-width:100%!important;padding:10px!important}.chessboard-wrapper{margin:20px 5px!important}.board-controls-container{gap:8px;max-width:100%!important}.board-controls-subrow,.board-controls-group{gap:4px}.board-direction-btn{width:34px!important;height:34px!important;padding:4px!important}.movetime-select{height:34px!important;min-width:46px!important;padding:4px 18px 4px 6px!important;font-size:11px!important}.navigation-buttons{padding:6px!important;gap:4px!important}.nav-btn{padding:6px 10px!important;font-size:.95rem!important;min-width:32px!important;height:32px!important}.nav-move-counter{min-width:60px!important;font-size:.8rem!important;padding:0 4px!important}}.notation-toggle{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:15px;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none}.notation-toggle input{cursor:pointer;width:16px;height:16px;margin:0}.notation-toggle input:disabled,.notation-toggle input:disabled+span{cursor:not-allowed;opacity:.6}:root[data-theme=dark] .section{background-color:var(--bg-surface)}:root[data-theme=dark] .invalid-moves-info{background-color:#3a2417;border-color:#6b4423;color:#f0c07a}:root[data-theme=dark] .cancel-add-button{background-color:#3a1d20;border-color:#7a3a40;color:#f5a3aa}:root[data-theme=dark] .cancel-add-button:hover{background-color:#4a262a}:root[data-theme=dark] .calc-active-white{background-color:#16351f;border-color:#2f6b3f}:root[data-theme=dark] .calc-active-black{background-color:#3a1d20;border-color:#7a3a40}:root[data-theme=dark] .calc-active-black:hover{background-color:#4a262a}.theme-toggle{width:40px;height:28px;padding:2px;border:1px solid var(--border);border-radius:4px;background-color:transparent;color:var(--text-primary);cursor:pointer;display:flex;justify-content:center;align-items:center;font-size:1rem;line-height:1}.theme-toggle:hover{background-color:var(--bg-subtle)}.extra-board{width:100%;margin-top:20px;padding-top:16px;border-top:2px dashed var(--border);display:flex;flex-direction:column;align-items:center}.extra-board-title{margin:0 0 10px;color:var(--text-secondary);font-size:1rem}.extra-board-moves{margin:8px 0 0;font-size:.9rem;color:var(--text-primary)}
