.error-fallback{display:flex;align-items:center;justify-content:center;min-height:100dvh;background:var(--color-bg);padding:var(--space-5)}.error-fallback-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;max-width:420px;width:100%;box-shadow:var(--shadow-lg)}.error-fallback-card h2{margin-bottom:var(--space-3);font-size:var(--font-size-xl);color:var(--color-danger)}.error-fallback-card p{margin-bottom:var(--space-5);font-size:var(--font-size-base);color:var(--color-text-secondary)}.error-fallback-card button{padding:10px 24px;border:none;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-accent-text);font-family:var(--font-sans);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.error-fallback-card button:hover{background:var(--color-accent-hover)}.error-fallback-card button:active{transform:translateY(1px)}.board-wrap{display:flex;align-items:center;justify-content:center}.board{display:flex;flex-direction:column;width:min(560px,90vw);height:min(560px,90vw);border:2px solid var(--color-border);border-radius:4px;overflow:hidden;-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-lg)}.brow{display:flex;flex:1}.sq{flex:1;position:relative;display:flex;align-items:center;justify-content:center}.sq.light{background:var(--board-light)}.sq.dark{background:var(--board-dark);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.sq.dark:hover{filter:brightness(.92)}.sq.dark.sel{background:#829769}.sq.dark.tgt{background:#6a8a5a}.sq.dark.cap-tgt{background:#9a5555}.sq.dark.cap-marked{background:#c04040;animation:cap-pulse .7s ease-in-out infinite alternate}@keyframes cap-pulse{0%{background:#c04040}to{background:#e05050}}.sq.dark.last{background:#b8a040}.piece{width:78%;height:78%;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);position:relative}.p-w{background:linear-gradient(135deg,#fff,#e8e8e8);border:2px solid #aaa;box-shadow:0 2px 4px #00000040,inset 0 1px #fff9}.p-b{background:linear-gradient(135deg,#404040,#1a1a1a);border:2px solid #111;box-shadow:0 2px 4px #0006,inset 0 1px #ffffff1a}.p-W{background:linear-gradient(135deg,#fff,#e0e0e0);border:3px solid #c9a24d;box-shadow:0 2px 6px #0000004d,0 0 10px #c9a24d59,inset 0 1px #fff9}.p-B{background:linear-gradient(135deg,#484848,#1a1a1a);border:3px solid #c9a24d;box-shadow:0 2px 6px #00000073,0 0 10px #c9a24d66,inset 0 1px #ffffff1a}.psel{transform:scale(1.08);box-shadow:0 0 16px #7cb342b3!important}.crown{font-size:.85rem;line-height:1;pointer-events:none}.p-w .crown,.p-b .crown{color:#b8942e}.p-W .crown,.p-B .crown{color:#1a1a1a}.dot{width:26%;height:26%;border-radius:50%;background:#7cb3428c;pointer-events:none}.coord{position:absolute;top:1px;left:3px;font-family:var(--font-mono);font-size:.5rem;color:inherit;opacity:.3;font-weight:400;line-height:1;pointer-events:none;z-index:1;font-variant-numeric:tabular-nums}.piece-pop{animation:piece-pop-in .35s var(--ease-out) both}@keyframes piece-pop-in{0%{transform:scale(.7);opacity:.4}60%{transform:scale(1.08);opacity:1}to{transform:scale(1);opacity:1}}.sq.piece-left{animation:sq-clear .2s ease-out both}@keyframes sq-clear{to{background:var(--board-dark)}}.sq.piece-arrived{animation:sq-land .35s var(--ease-out) both}@keyframes sq-land{0%{filter:brightness(1.3)}to{filter:brightness(1)}}@media(prefers-reduced-motion:reduce){.piece-pop,.sq.piece-left,.sq.piece-arrived{animation:none}}.clock{display:flex;flex-direction:column;align-items:center;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-alt);border:2px solid transparent;transition:border-color var(--duration-normal) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out)}.clock.active{border-color:var(--color-accent);box-shadow:0 0 14px var(--color-accent-muted)}.clock-side{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-tertiary);margin-bottom:2px}.clock-time{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.clock.low .clock-time{color:#ff5252}.clock.low.active .clock-time{animation:clock-blink 1s step-end infinite}@keyframes clock-blink{50%{opacity:.3}}.navbar{display:flex;align-items:center;padding:0 var(--space-5);height:var(--nav-height);border-bottom:1px solid var(--color-border);background:var(--color-bg);gap:var(--space-4);flex-shrink:0;position:sticky;top:0;z-index:30;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}@supports not (backdrop-filter: blur(12px)){.navbar{background:var(--color-bg)}}.nav-brand{font-weight:700;font-size:var(--font-size-lg);letter-spacing:-.025em;color:var(--color-text);flex-shrink:0}.nav-tabs{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}.nav-tabs::-webkit-scrollbar{display:none}.nav-tab{padding:6px 14px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;border-radius:var(--radius-sm);white-space:nowrap;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.nav-tab:hover{color:var(--color-text);background:var(--color-surface-hover)}.nav-tab.active{color:var(--color-accent);background:var(--color-accent-muted)}.nav-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);font-size:1.15rem;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.nav-btn:hover{color:var(--color-text);background:var(--color-surface-hover)}.settings-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:100;display:flex;justify-content:flex-end;animation:overlay-in var(--duration-fast) var(--ease-out)}.settings-drawer{width:340px;max-width:100vw;height:100%;background:var(--color-bg);border-left:1px solid var(--color-border);overflow-y:auto;animation:drawer-in var(--duration-normal) var(--ease-out)}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.settings-head{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.settings-head h2{font-size:var(--font-size-lg);font-weight:600}.settings-head button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);font-size:1.2rem;transition:background var(--duration-fast),color var(--duration-fast)}.settings-head button:hover{background:var(--color-surface-hover);color:var(--color-text)}.settings-body{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-6)}.settings-body section h3{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-tertiary);margin-bottom:var(--space-3)}.settings-body label{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2);font-size:var(--font-size-sm)}.settings-body select,.settings-body input[type=number]{padding:5px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-sm);width:130px}.settings-body select:focus,.settings-body input[type=number]:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-muted)}.settings-body input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-accent)}.gamelist{max-width:720px;margin:var(--space-5) auto;padding:var(--space-5);width:100%}.gamelist h2{font-size:var(--font-size-xl);margin-bottom:var(--space-4)}.game-items{display:flex;flex-direction:column;gap:4px}.game-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.game-item:hover{background:var(--color-surface-hover)}.gi-date{min-width:90px;color:var(--color-text-tertiary);font-size:var(--font-size-xs)}.gi-players{flex:1}.gi-variant{font-size:var(--font-size-xs);color:var(--color-text-tertiary);min-width:55px}.gi-result{font-weight:600;min-width:45px}.gi-moves{color:var(--color-text-tertiary);font-size:var(--font-size-xs);min-width:70px}.game-item .btn{opacity:.7}.game-item .btn:hover{opacity:1}.replay-bar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-surface);border-top:1px solid var(--color-border);flex-shrink:0}.ply-info{font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;font-family:var(--font-mono);margin:0 var(--space-2);color:var(--color-text-secondary)}.replay-bar select{padding:5px 8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-sm)}.replay-bar select:focus{outline:none;border-color:var(--color-accent)}.searchinfo{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);font-size:var(--font-size-sm)}.searchinfo h3{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-tertiary);margin-bottom:var(--space-2)}.si-grid{display:flex;flex-direction:column;gap:4px}.si-item{display:flex;justify-content:space-between}.si-label{color:var(--color-text-tertiary)}.si-value{font-variant-numeric:tabular-nums;font-family:var(--font-mono);font-weight:500}.si-value.positive{color:#7cb342}.si-value.negative{color:#e53935}.si-pv{margin-top:var(--space-2)}.si-pv-text{display:block;margin-top:2px;font-size:var(--font-size-xs);color:var(--color-text-secondary);word-break:break-all;line-height:1.4}.netplay{max-width:520px;margin:var(--space-8) auto;padding:0 var(--space-4);text-align:center}.netplay h2{font-size:var(--font-size-xl);margin-bottom:var(--space-4)}.netplay h3{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-tertiary);margin-bottom:var(--space-2);text-align:left}.netplay-hint{color:var(--color-text-tertiary);font-size:var(--font-size-sm);margin:var(--space-2) 0}.room-code-big{font-size:2.75rem;font-weight:800;letter-spacing:.14em;font-family:var(--font-mono);color:var(--color-accent);margin:var(--space-4) 0}.qr-code{width:200px;height:200px;margin:var(--space-3) auto;display:block;border-radius:var(--radius-md);border:1px solid var(--color-border)}.netplay-rooms{margin-bottom:var(--space-6);text-align:left}.room-card{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:4px;gap:var(--space-2);transition:background var(--duration-fast)}.room-card:hover{background:var(--color-surface-hover)}.room-info{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0}.room-info strong{font-size:var(--font-size-base);letter-spacing:.06em;font-family:var(--font-mono)}.room-meta{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.room-state{font-size:var(--font-size-xs);padding:2px 10px;border-radius:var(--radius-full);font-weight:500}.room-state.waiting{background:#7cb34226;color:#7cb342}.room-state.playing{background:#ffc10726;color:#ffc107}.netplay-section{margin:var(--space-4) 0}.netplay-divider{opacity:.25;margin:var(--space-4) 0;font-size:var(--font-size-xs)}.netplay-join-row{display:flex;gap:var(--space-2);justify-content:center}.code-input{padding:9px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-family:var(--font-mono);font-size:var(--font-size-base);text-align:center;width:110px;text-transform:uppercase;letter-spacing:.1em}.code-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-muted)}.create-form{display:flex;flex-direction:column;gap:var(--space-3);text-align:left}.create-form label{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-sm)}.create-form select,.create-form input{padding:5px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-sm);width:140px}.netplay-actions{display:flex;gap:var(--space-3);justify-content:center;margin-top:var(--space-2)}.netplay-status{margin-top:var(--space-3);font-size:var(--font-size-sm);color:var(--color-accent)}.disconnect-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:60;display:flex;align-items:center;justify-content:center}.disconnect-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;max-width:380px;width:90%}.disconnect-card h2{font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.disconnect-card p{color:var(--color-text-secondary);margin-bottom:var(--space-5)}.rematch-bar{display:flex;align-items:center;gap:var(--space-3);justify-content:center;padding:var(--space-2);font-size:var(--font-size-sm)}.rematch-bar .waiting{opacity:.5}.room-detail{text-align:center}.room-header{margin-bottom:var(--space-5)}.room-header h2{margin-bottom:var(--space-1)}.room-header strong{font-family:var(--font-mono);letter-spacing:.08em;color:var(--color-accent)}.room-badge{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.player-slots{display:flex;align-items:center;gap:var(--space-3);justify-content:center;margin-bottom:var(--space-4)}.slot{flex:1;max-width:160px;padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface);border:2px solid var(--color-border);text-align:center;transition:border-color var(--duration-fast)}.slot.ready{border-color:var(--color-accent)}.slot.open{opacity:.4;border-style:dashed}.slot-label{display:block;font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--space-1)}.slot-status{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.slot-vs{font-size:var(--font-size-sm);color:var(--color-text-tertiary);font-weight:700}.room-spectators{font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin-bottom:var(--space-3)}.room-actions-row{display:flex;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-3)}.create-buttons{display:flex;gap:var(--space-2);justify-content:center;flex-wrap:wrap}.puzzle-page{max-width:720px;margin:var(--space-5) auto;padding:var(--space-5)}.puzzle-page h2{font-size:var(--font-size-xl);margin-bottom:var(--space-4)}.empty{color:var(--color-text-tertiary);font-style:italic;font-size:var(--font-size-sm)}.puzzle-tabs{display:flex;gap:2px;margin-bottom:var(--space-4);padding:3px;background:var(--color-surface-alt);border-radius:var(--radius-md);width:fit-content}.puzzle-tabs button{padding:5px 14px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;transition:background var(--duration-fast),color var(--duration-fast)}.puzzle-tabs button:hover{color:var(--color-text)}.puzzle-tabs button.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.puzzle-grid{display:flex;flex-direction:column;gap:4px}.puzzle-card{display:flex;justify-content:space-between;align-items:center;padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);transition:background var(--duration-fast)}.puzzle-card:hover{background:var(--color-surface-hover)}.pz-fen{font-family:var(--font-mono);color:var(--color-text-secondary);flex:1}.pz-goal{font-weight:600;margin:0 var(--space-3)}.pz-solution{color:var(--color-text-tertiary);font-size:var(--font-size-xs)}.puzzle-import{display:flex;flex-direction:column;gap:var(--space-3)}.puzzle-import label{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-sm)}.puzzle-import input,.puzzle-import select{padding:5px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-sm);width:280px}.puzzle-feedback{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);text-align:center;font-weight:600;font-size:var(--font-size-sm);margin:var(--space-3) 0}.puzzle-feedback.correct{background:#7cb34226;color:#7cb342}.puzzle-feedback.incorrect{background:#f4433626;color:#f44336}.pr-tabs{display:flex;gap:2px;margin-bottom:var(--space-4);justify-content:center;padding:3px;background:var(--color-surface-alt);border-radius:var(--radius-md);width:fit-content;margin-left:auto;margin-right:auto}.pr-tabs button{padding:5px 16px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;transition:background var(--duration-fast),color var(--duration-fast)}.pr-tabs button.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.pr-error{color:var(--color-danger);font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.batchplay{max-width:420px;margin:var(--space-10) auto;text-align:center}.batchplay h2{font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.batch-desc{color:var(--color-text-tertiary);font-size:var(--font-size-sm);margin-bottom:var(--space-6)}.batchplay label{display:block;margin-bottom:var(--space-3);font-size:var(--font-size-sm)}.batchplay .input{width:80px;text-align:center;margin-left:var(--space-2)}.dxp-panel{max-width:420px;margin:var(--space-10) auto;text-align:center}.dxp-panel h2{font-size:var(--font-size-xl);margin-bottom:var(--space-2)}.dxp-desc{color:var(--color-text-tertiary);font-size:var(--font-size-sm);margin-bottom:var(--space-6)}.dxp-panel label{display:block;margin-bottom:var(--space-3);font-size:var(--font-size-sm)}.dxp-panel .input{margin-left:var(--space-2);width:auto}.dxp-status{margin-top:var(--space-3);font-size:var(--font-size-sm);color:var(--color-accent)}.profile-card{max-width:400px;margin:var(--space-10) auto;padding:var(--space-6);text-align:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.profile-card h2{font-size:var(--font-size-xl);margin-bottom:var(--space-5)}.pr-stat{display:flex;justify-content:space-between;padding:var(--space-1) 0;font-size:var(--font-size-sm)}.pr-stat+.pr-stat{border-top:1px solid var(--color-border-light)}.pr-stat span:first-child{color:var(--color-text-secondary)}.pr-desc{color:var(--color-text-tertiary);font-size:var(--font-size-sm);margin-bottom:var(--space-4)}.pr-hint{margin-top:var(--space-3);color:var(--color-text-tertiary);font-size:var(--font-size-xs)}.profile-card .input{margin-bottom:var(--space-4);text-align:center}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100dvh;background:linear-gradient(#00000073,#00000073),url(/desk_draugts.png) center / cover fixed;padding:var(--space-5)}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-10) var(--space-8);width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.login-title{text-align:center;font-size:var(--font-size-2xl);font-weight:700;margin-bottom:var(--space-1);letter-spacing:-.03em}.login-subtitle{text-align:center;font-size:var(--font-size-sm);color:var(--color-text-tertiary);margin-bottom:var(--space-8)}.ls-tabs{display:flex;gap:2px;padding:4px;background:var(--color-surface-alt);border-radius:var(--radius-md);margin-bottom:var(--space-5)}.ls-tabs button{flex:1;padding:8px 0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.ls-tabs button:hover{color:var(--color-text)}.ls-tabs button.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.login-card .form-group{margin-bottom:var(--space-3)}.ls-remember{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;margin-bottom:var(--space-5);-webkit-user-select:none;user-select:none}.ls-remember input[type=checkbox]{accent-color:var(--color-accent);width:16px;height:16px}.ls-error{color:var(--color-danger);font-size:var(--font-size-sm);margin-bottom:var(--space-3);text-align:center;padding:var(--space-2) var(--space-3);background:var(--color-danger-muted);border-radius:var(--radius-sm)}.ls-btn-primary{width:100%;padding:11px;border:none;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-accent-text);font-family:var(--font-sans);font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.ls-btn-primary:hover:not(:disabled){background:var(--color-accent-hover);box-shadow:0 2px 12px var(--color-accent-muted)}.ls-btn-primary:active:not(:disabled){transform:translateY(1px)}.ls-btn-primary:disabled{opacity:.4;cursor:not-allowed}.ls-divider{display:flex;align-items:center;margin:var(--space-5) 0;color:var(--color-text-tertiary);font-size:var(--font-size-xs)}.ls-divider:before,.ls-divider:after{content:"";flex:1;height:1px;background:var(--color-divider)}.ls-divider span{padding:0 var(--space-3)}.ls-btn-guest{width:100%;padding:10px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.ls-btn-guest:hover{background:var(--color-surface-hover);color:var(--color-text)}.roomplay{display:flex;flex-direction:column;height:100dvh;background:var(--color-bg);color:var(--color-text)}.rp-header{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border);height:var(--nav-height);flex-shrink:0}.rp-code{font-size:var(--font-size-lg)}.rp-code strong{color:var(--color-accent);font-family:var(--font-mono);letter-spacing:.08em}.rp-rules{font-size:var(--font-size-xs);color:var(--color-text-tertiary);background:var(--color-surface-alt);padding:2px 10px;border-radius:var(--radius-full)}.rp-result{margin-left:auto;font-weight:700;color:var(--color-accent)}.rp-main{display:flex;flex:1;overflow:hidden}.rp-side{width:190px;display:flex;flex-direction:column;align-items:center;padding:var(--space-3) var(--space-3);gap:0;justify-content:flex-start}.rp-side .rp-player{text-align:center;padding:var(--space-3) var(--space-2);width:100%}.rp-side .rp-player.opponent{border-bottom:1px dashed var(--color-border);padding-bottom:var(--space-4);margin-bottom:var(--space-1)}.rp-side .rp-player.self{padding-top:var(--space-2)}.rp-spacer{flex:1}.rp-color{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-transform:uppercase;margin-bottom:var(--space-1)}.rp-id{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--space-1);word-break:break-all}.rp-rank{font-size:var(--font-size-sm);margin-bottom:2px}.rp-elo{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-2)}.rp-warn{color:#f0a040;font-size:1.1rem;margin-top:var(--space-2)}.rp-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-2)}.rp-moves{width:170px;display:flex;flex-direction:column;padding:var(--space-3) var(--space-3);border-left:1px solid var(--color-border);overflow-y:auto}.rp-moves-title{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-2)}.rp-moves-list{font-size:var(--font-size-sm);font-family:var(--font-mono);line-height:1.7}.rp-move-num{color:var(--color-text-tertiary);font-size:var(--font-size-xs)}.rp-move-item{display:inline}.rp-baskets-row{margin-bottom:var(--space-2)}.rp-basket{padding:var(--space-2) var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);cursor:default;display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.rp-basket.active{border-color:#d04040;border-style:solid;cursor:pointer;background:#d040401a;animation:cap-basket-pulse .8s ease-in-out infinite alternate}@keyframes cap-basket-pulse{0%{border-color:#d04040}to{border-color:#f06060}}.rp-basket-hint{color:#d04040;font-weight:700;font-size:var(--font-size-xs)}.rp-cap-piece{font-size:1rem}.rp-controls{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.rp-btn-clock{background:var(--color-accent)!important;border-color:var(--color-accent)!important;color:var(--color-accent-text)!important;font-weight:700}.rp-btn-challenge{background:#e09020!important;border-color:#e09020!important;color:#fff!important}.rp-btn-resign{opacity:.7}.rp-btn-leave{opacity:.55}.rp-toast{position:fixed;top:70px;left:50%;transform:translate(-50%);padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);z-index:1000;animation:rp-toast-in .3s var(--ease-out)}@keyframes rp-toast-in{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.rp-toast.upheld{background:#2d6a2d;color:#fff}.rp-toast.dismissed{background:#8a3a3a;color:#fff}.rp-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:2000}.rp-modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);max-width:400px;width:90%;text-align:center;box-shadow:var(--shadow-xl)}.rp-modal h2{margin-bottom:var(--space-2)}.rp-modal h3{margin-bottom:var(--space-3)}.rp-modal p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-5)}.rp-modal-btns{display:flex;gap:var(--space-3);justify-content:center}.rp-modal-btns .danger{background:var(--color-danger)!important;border-color:var(--color-danger)!important;color:#fff}@font-face{font-family:Geist;src:url(/fonts/Geist-Variable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-Variable.woff2) format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}:root,.theme-minimal{--color-bg: #fafafa;--color-surface: #ffffff;--color-surface-hover: #f4f4f5;--color-surface-alt: #f4f4f5;--color-border: #e4e4e7;--color-border-light: #f0f0f2;--color-divider: #e4e4e7;--color-text: #18181b;--color-text-secondary:#52525b;--color-text-tertiary: #a1a1aa;--color-text-inverse: #fafafa;--color-accent: #5b9e2e;--color-accent-hover: #4a8523;--color-accent-muted: rgba(91, 158, 46, .12);--color-accent-text: #ffffff;--color-danger: #dc2626;--color-danger-muted: rgba(220, 38, 38, .1);--color-success: #16a34a;--color-warning: #d97706;--board-light: #f0d9b5;--board-dark: #b58863;--board-highlight: rgba(124, 179, 66, .35);--board-selected: rgba(124, 179, 66, .55);--board-lastmove: rgba(255, 255, 0, .3);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-full: 9999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 12px rgba(0,0,0,.06);--shadow-lg: 0 8px 30px rgba(0,0,0,.08);--shadow-xl: 0 20px 60px rgba(0,0,0,.1);--font-sans: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Geist Mono", "JetBrains Mono", "Fira Code", monospace;--font-size-xs: .75rem;--font-size-sm: .8125rem;--font-size-base: .9375rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2.125rem;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--nav-height: 56px;--max-width: 1100px}.theme-lichess{--color-bg: #0f0f0f;--color-surface: #1a1a1a;--color-surface-hover: #252525;--color-surface-alt: #1f1f1f;--color-border: #2a2a2a;--color-border-light: #222222;--color-divider: #262626;--color-text: #e4e4e7;--color-text-secondary:#a1a1aa;--color-text-tertiary: #71717a;--color-text-inverse: #18181b;--color-accent: #7cb342;--color-accent-hover: #9ccc65;--color-accent-muted: rgba(124, 179, 66, .12);--color-accent-text: #0f0f0f;--board-light: #f0d9b5;--board-dark: #b58863;--shadow-sm: 0 1px 2px rgba(0,0,0,.2);--shadow-md: 0 4px 12px rgba(0,0,0,.25);--shadow-lg: 0 8px 30px rgba(0,0,0,.35);--shadow-xl: 0 20px 60px rgba(0,0,0,.45)}.theme-wood{--color-bg: #2c1a14;--color-surface: #3e2723;--color-surface-hover: #4e342e;--color-surface-alt: #36211c;--color-border: #5d4037;--color-border-light: #4e342e;--color-divider: #4e342e;--color-text: #efebe9;--color-text-secondary:#bcaaa4;--color-text-tertiary: #8d6e63;--color-text-inverse: #2c1a14;--color-accent: #c9a24d;--color-accent-hover: #dab866;--color-accent-muted: rgba(201, 162, 77, .15);--color-accent-text: #2c1a14;--board-light: #e8c99b;--board-dark: #5d4037;--shadow-sm: 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 4px 12px rgba(0,0,0,.3);--shadow-lg: 0 8px 30px rgba(0,0,0,.4)}*{margin:0;padding:0;box-sizing:border-box}html{font-family:var(--font-sans);font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color-scheme:dark}.theme-minimal{color-scheme:light}body{background:var(--color-bg);background-image:url(/desk_draugts.png);background-size:cover;background-position:center;background-attachment:fixed;color:var(--color-text);min-height:100vh;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-sans);font-weight:600;letter-spacing:-.022em;line-height:1.2}h1{font-size:var(--font-size-3xl)}h2{font-size:var(--font-size-2xl)}h3{font-size:var(--font-size-xl)}p{color:var(--color-text-secondary);line-height:1.6}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--color-accent-muted);color:var(--color-text)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:8px 18px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;line-height:1;white-space:nowrap;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.btn:hover{background:var(--color-surface-hover);border-color:var(--color-text-tertiary)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.35;cursor:not-allowed;transform:none}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text);font-weight:600}.btn-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);box-shadow:0 2px 12px var(--color-accent-muted)}.btn-ghost{background:transparent;border-color:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-surface-hover);color:var(--color-text)}.btn-danger{border-color:var(--color-danger);color:var(--color-danger)}.btn-danger:hover{background:var(--color-danger-muted)}.btn-sm{padding:5px 12px;font-size:var(--font-size-xs)}.btn-lg{padding:10px 24px;font-size:var(--font-size-base)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.card-header{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-3)}.card-body{display:flex;flex-direction:column;gap:var(--space-2)}.input{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-base);line-height:1.5;transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.input::placeholder{color:var(--color-text-tertiary)}.input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-muted)}.input-error{border-color:var(--color-danger)}.input-error:focus{box-shadow:0 0 0 3px var(--color-danger-muted)}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-label{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-secondary)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-full);background:var(--color-surface-alt);color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:500}.badge-accent{background:var(--color-accent-muted);color:var(--color-accent)}.divider{width:100%;height:1px;background:var(--color-divider);border:none}.skeleton{background:var(--color-surface-alt);border-radius:var(--radius-sm);animation:skeleton-pulse 1.5s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:40;animation:overlay-in var(--duration-normal) var(--ease-out)}.overlay-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);max-width:420px;width:90%;text-align:center;animation:overlay-card-in var(--duration-slow) var(--ease-out)}.tab-bar{display:flex;gap:2px;padding:4px;background:var(--color-surface-alt);border-radius:var(--radius-md);width:fit-content}.tab-btn{padding:6px 14px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-sans);font-size:var(--font-size-sm);font-weight:500;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.tab-btn:hover{color:var(--color-text)}.tab-btn.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.toast{position:fixed;bottom:var(--space-6);left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-text-inverse);padding:var(--space-3) var(--space-5);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;z-index:50;animation:toast-in .3s var(--ease-out)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app{display:flex;flex-direction:column;min-height:100vh}.app-main{flex:1;display:grid;grid-template-columns:160px 1fr 240px;gap:var(--space-4);padding:var(--space-4);max-width:var(--max-width);margin:0 auto;width:100%}.side-left,.side-right{display:flex;flex-direction:column;gap:var(--space-3)}.center{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.controls-row{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.move-history{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);flex:1;overflow-y:auto;max-height:360px}.move-history h3{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.06em}.move-list{font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:2;font-variant-numeric:tabular-nums}.move-item{margin-right:var(--space-1)}.move-num{color:var(--color-text-tertiary);margin-right:2px}.info-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.info-panel h3{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.06em}.info-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-1) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.info-row+.info-row{border-top:1px solid var(--color-border-light)}.network-hud{display:flex;gap:var(--space-6);justify-content:center;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);color:var(--color-text-secondary);background:var(--color-surface-alt);border-bottom:1px solid var(--color-border)}.network-hud strong{color:var(--color-text);font-family:var(--font-mono);letter-spacing:.04em}.center-status{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-align:center;min-height:1.2em}@media(max-width:800px){.app-main{grid-template-columns:1fr;max-width:100%;padding:var(--space-2)}.side-left,.side-right{display:none}}@media(min-width:801px)and (max-width:1050px){.app-main{grid-template-columns:120px 1fr 200px;gap:var(--space-2);padding:var(--space-3)}}.game-over{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:40;animation:overlay-in var(--duration-normal) var(--ease-out)}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.game-over-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);max-width:420px;width:90%;text-align:center;animation:overlay-card-in var(--duration-slow) var(--ease-out)}@keyframes overlay-card-in{0%{opacity:0;transform:scale(.95) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.game-over-card h2{margin-bottom:var(--space-2)}.game-over-card p{margin-bottom:var(--space-6)}.app-loading{display:flex;align-items:center;justify-content:center;min-height:100dvh;background:var(--color-bg)}.app-loading-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.skeleton-board{width:min(420px,70vw);height:min(420px,70vw);border-radius:4px;background:var(--color-surface-alt);animation:skeleton-pulse 1.5s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:.5}50%{opacity:1}}.skeleton-text{border-radius:var(--radius-sm);background:var(--color-surface-alt);animation:skeleton-pulse 1.5s ease-in-out infinite}.init-banner{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-surface-alt);border-bottom:1px solid var(--color-border);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.init-dot{width:6px;height:6px;border-radius:50%;background:var(--color-accent);animation:init-pulse 1.2s ease-in-out infinite}@keyframes init-pulse{0%,to{opacity:.3}50%{opacity:1}}
