*,*:before,*:after{box-sizing:border-box}body{margin:0;background:#1a1a1a;color:#eee;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased}#root{display:flex;justify-content:center;align-items:center;min-height:100vh}*{box-sizing:border-box;margin:0;padding:0}body{background:#1a1a1a;color:#eee;font-family:sans-serif;display:flex;justify-content:center;align-items:center;min-height:100vh}.screen{text-align:center;font-size:1.2rem;line-height:2}.app{display:flex;flex-direction:column;align-items:center;gap:12px}.info-bar{display:flex;flex-wrap:wrap;gap:6px 16px;width:min(576px,100vw - 16px);font-size:1rem}.turn-indicator{color:#888}.turn-indicator.my-turn{color:#7fc97f;font-weight:700}.status-message{font-size:1rem;color:#f0d060}.status-message.game-over{font-size:1.3rem;font-weight:700;color:#e06060}.board{display:grid;grid-template-columns:repeat(8,1fr);width:min(576px,100vw - 16px);aspect-ratio:1;border:2px solid #555}.square{aspect-ratio:1;width:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative}.square:hover{filter:brightness(1.1)}.piece{width:88%;height:88%;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none}.legal-dot{width:28%;height:28%;border-radius:50%;background:#0000004d;pointer-events:none}.legal-capture{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:5px solid rgba(0,0,0,.3);pointer-events:none}.promotion-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:10}.promotion-dialog{background:#2e2e2e;border:2px solid #666;border-radius:8px;padding:20px 24px;text-align:center}.promotion-dialog p{margin-bottom:14px;font-size:1rem}.promotion-choices{display:flex;gap:12px}.promotion-piece{width:clamp(48px,15vw,72px);height:clamp(48px,15vw,72px);cursor:pointer;border-radius:4px;padding:4px;background:#444}.promotion-piece:hover{background:#666}.draw-btn{padding:3px 10px;border-radius:4px;border:1px solid #666;background:transparent;color:#aaa;font-size:.85rem;cursor:pointer}.draw-btn:hover:not(:disabled){background:#2e6b2e;border-color:#4a9a4a;color:#fff}.draw-btn:disabled{opacity:.55;cursor:default}.draw-offer-bar{display:flex;align-items:center;gap:10px;padding:8px 14px;border-radius:6px;border:1px solid #4a9a4a;background:#1e2e1e;font-size:.95rem;width:min(576px,100vw - 16px)}.draw-accept-btn{padding:4px 12px;border-radius:4px;border:none;background:#4a9a4a;color:#fff;font-size:.85rem;cursor:pointer}.draw-accept-btn:hover{background:#3a8a3a}.draw-decline-btn{padding:4px 12px;border-radius:4px;border:1px solid #666;background:transparent;color:#aaa;font-size:.85rem;cursor:pointer}.draw-decline-btn:hover{background:#c0392b;border-color:#c0392b;color:#fff}.resign-btn{padding:3px 10px;border-radius:4px;border:1px solid #666;background:transparent;color:#aaa;font-size:.85rem;cursor:pointer}.resign-btn:hover{background:#c0392b;border-color:#c0392b;color:#fff}.player-row{display:flex;justify-content:space-between;align-items:center;width:min(576px,100vw - 16px)}.clock{font-size:1.4rem;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:.04em;padding:4px 10px;border-radius:4px;min-width:78px;text-align:center}.clock-active{color:#f0f0f0;background:#2a2a2a}.clock-inactive{color:#555}.clock-low{color:#e06060;animation:clock-pulse 1s ease-in-out infinite}@keyframes clock-pulse{0%,to{opacity:1}50%{opacity:.4}}.captured-pieces{display:flex;flex-wrap:wrap;align-items:center;gap:2px;width:min(576px,100vw - 16px);min-height:32px}.captured-piece{width:clamp(22px,5vw,30px);height:clamp(22px,5vw,30px);object-fit:contain}.login-title{margin-bottom:16px;font-size:2rem;letter-spacing:.05em}.login-tabs{display:flex;border-radius:6px;overflow:hidden;border:1px solid #555;width:260px;margin-bottom:16px}.login-tab{flex:1;padding:9px;border:none;background:#2e2e2e;color:#aaa;font-size:.95rem;cursor:pointer;white-space:nowrap}.login-tab-active{background:#444;color:#eee;font-weight:700}.login-form{display:flex;flex-direction:column;gap:12px;width:260px}.login-input{padding:10px 12px;border-radius:6px;border:1px solid #555;background:#2e2e2e;color:#eee;font-size:1rem;outline:none}.login-input:focus{border-color:#7fc97f}.login-button{padding:10px;border-radius:6px;border:none;background:#7fc97f;color:#111;font-size:1rem;font-weight:700;cursor:pointer}.login-button:hover:not(:disabled){background:#6ab56a}.login-button:disabled{opacity:.6;cursor:default}.back-to-lobby-btn{padding:10px 28px;border-radius:6px;border:none;background:#7fc97f;color:#111;font-size:1rem;font-weight:700;cursor:pointer}.back-to-lobby-btn:hover{background:#6ab56a}.lobby{display:flex;flex-direction:column;align-items:center;gap:28px;padding:40px 24px}.lobby-title{font-size:2.4rem;letter-spacing:.06em}.lobby-welcome{font-size:1rem;color:#aaa}.lobby-elo{color:#888;font-size:.9rem}.lobby-section{display:flex;flex-direction:column;align-items:center;gap:10px}.lobby-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:#888}.theme-current-btn{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:6px;border:1px solid #555;background:#2a2a2a;color:#ddd;font-size:1rem;cursor:pointer;min-width:160px;justify-content:space-between}.theme-current-btn:hover{border-color:#888;background:#333}.theme-picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:20}.theme-picker-dialog{background:#1e1e1e;border:1px solid #444;border-radius:10px;padding:20px;display:flex;flex-direction:column;gap:16px;max-width:calc(100vw - 32px);box-sizing:border-box}.theme-picker-header{display:flex;justify-content:space-between;align-items:center;font-size:1rem;color:#ccc}.theme-picker-close{border:none;background:transparent;color:#888;font-size:1rem;cursor:pointer;padding:2px 6px;border-radius:4px}.theme-picker-close:hover{color:#eee;background:#333}.theme-picker-body{display:flex;gap:16px;align-items:flex-start}.theme-picker-body .board{width:min(240px,calc(100vw - 200px));flex-shrink:0}.theme-picker-options{display:flex;flex-direction:column;gap:10px;justify-content:center;min-width:110px}@media (max-width: 480px){.theme-picker-body{flex-direction:column;align-items:stretch}.theme-picker-body .board{width:100%}}.start-btn{width:260px;padding:12px;border-radius:8px;border:none;background:#7fc97f;color:#111;font-size:1.1rem;font-weight:700;cursor:pointer}.start-btn:hover{background:#6ab56a}.logout-btn{border:none;background:transparent;color:#666;font-size:.85rem;cursor:pointer;text-decoration:underline;padding:0}.logout-btn:hover{color:#999}.mode-toggle{display:flex;border-radius:6px;overflow:hidden;border:1px solid #555}.mode-btn{flex:1;padding:9px;border:none;background:#2e2e2e;color:#aaa;font-size:.95rem;cursor:pointer}.mode-btn-active{background:#7fc97f;color:#111;font-weight:700}.login-error{color:#e06060;font-size:.9rem;text-align:center}.logout-btn{padding:6px 12px;border-radius:5px;border:1px solid #555;background:#2e2e2e;color:#bbb;font-size:.85rem;cursor:pointer}.history-btn:hover,.logout-btn:hover{background:#3e3e3e;color:#eee}.history-page{width:min(720px,100vw - 32px);padding:24px 0}.history-header{display:flex;align-items:center;gap:16px;margin-bottom:20px}.history-header h2{font-size:1.4rem}.back-btn{padding:6px 12px;border-radius:5px;border:1px solid #555;background:#2e2e2e;color:#bbb;font-size:.9rem;cursor:pointer}.back-btn:hover{background:#3e3e3e;color:#eee}.history-status{text-align:center;color:#888;margin-top:32px}.history-status.error{color:#e06060}.history-table{width:100%;border-collapse:collapse;font-size:.95rem}.history-table th,.history-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #333}.history-table th{color:#888;font-weight:400;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.history-table tr:hover td{background:#222}.result-win{color:#7fc97f;font-weight:700}.result-loss{color:#e06060;font-weight:700}.result-draw{color:#f0d060}.replay-btn{padding:4px 10px;border-radius:4px;border:1px solid #555;background:#2e2e2e;color:#bbb;font-size:.85rem;cursor:pointer}.replay-btn:hover{background:#3e3e3e;color:#eee}.elo-summary{display:flex;align-items:baseline;gap:16px;margin-bottom:24px}.elo-rating{font-size:3rem;font-weight:700;letter-spacing:-1px}.elo-provisional{font-size:1.8rem;color:#888;margin-left:2px}.elo-games{color:#888;font-size:.95rem}.elo-chart{margin-bottom:28px}.elo-range{color:#aaa;font-variant-numeric:tabular-nums}.replay-page{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 0}.replay-nav-bar{display:flex;align-items:center;gap:20px;width:min(576px,100vw - 16px)}.replay-move-counter{flex:1;text-align:center;font-size:1rem;color:#aaa}.view-toggle{padding:6px 12px;border-radius:5px;border:1px solid #555;background:#2e2e2e;color:#bbb;font-size:.85rem;cursor:pointer}.view-toggle:hover{background:#3e3e3e;color:#eee}.replay-controls{display:flex;gap:8px}.replay-controls button{width:44px;height:44px;border-radius:6px;border:1px solid #555;background:#2e2e2e;color:#eee;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.replay-controls button:hover{background:#3e3e3e}.opponent-cards{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:560px}.opponent-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 12px 10px;border-radius:10px;border:2px solid #444;background:#2a2a2a;cursor:pointer;min-width:94px;text-align:center;transition:border-color .15s,background .15s}.opponent-card:hover{border-color:#666}.opponent-card-active{border-color:#7fc97f;background:#1a2e1a}.opponent-card input[type=radio]{position:absolute;opacity:0;width:0;height:0}.opponent-card-icon{font-size:1.6rem;line-height:1}.opponent-card-label{font-size:.95rem;color:#ddd;font-weight:500}.opponent-card-stars{font-size:.75rem;color:#f0d060;letter-spacing:.04em}.opponent-card-desc{font-size:.68rem;color:#777;line-height:1.35;max-width:86px}.opponent-card-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}.opponent-card-actions{display:flex;gap:6px}.opponent-resume-btn,.opponent-new-btn{font-size:.68rem;padding:3px 9px;border-radius:6px;border:1px solid #444;background:#222;color:#ddd;cursor:pointer;transition:border-color .15s}.opponent-resume-btn:hover,.opponent-new-btn:hover{border-color:#7fc97f}.color-pref-row{display:flex;gap:16px;justify-content:center}.color-pref-option{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 14px;border-radius:8px;border:2px solid transparent;cursor:pointer;transition:border-color .15s}.color-pref-option:hover{border-color:#555}.color-pref-active{border-color:#7fc97f}.color-pref-option input[type=radio]{position:absolute;opacity:0;width:0;height:0}.color-pref-pawn{width:52px;height:52px;object-fit:contain}.pawn-split-wrap{position:relative;width:52px;height:52px}.pawn-split-half{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:contain}.pawn-split-white{clip-path:polygon(0 0,50% 0,50% 100%,0 100%)}.pawn-split-black{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%)}.color-pref-label{font-size:.75rem;color:#888;text-align:center;white-space:nowrap}.lobby-secondary-btns{display:flex;gap:10px}.lobby-games-btn{padding:8px 24px;border-radius:6px;border:1px solid #555;background:#2a2a2a;color:#bbb;font-size:.9rem;cursor:pointer}.lobby-games-btn:hover{background:#3a3a3a;color:#eee}.theme-picker-section-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:#666;padding:0 2px}.board-theme-swatches{display:flex;flex-wrap:wrap;gap:8px}.board-swatch-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px;border-radius:6px;border:2px solid #444;background:#2a2a2a;cursor:pointer}.board-swatch-btn:hover{border-color:#666}.board-swatch-btn-active{border-color:#7fc97f;background:#1e2e1e}.board-swatch{display:grid;grid-template-columns:1fr 1fr;width:36px;height:36px;border-radius:3px;overflow:hidden}.board-swatch div{width:100%;height:100%}.board-swatch-label{font-size:.68rem;color:#999;white-space:nowrap}.board-swatch-btn-active .board-swatch-label{color:#ccc}.piece-theme-swatches{display:flex;flex-wrap:wrap;gap:8px}.piece-theme-knight{width:36px;height:36px;object-fit:contain}.play-again{display:flex;flex-direction:column;align-items:center;gap:10px}.rematch-status{font-size:.95rem;color:#aaa}.rematch-declined{color:#e06060}
