:root{--bg:#262421;--bg-card:#302e2b;--bg-hover:#3a3834;--accent:#81b64c;--accent-hover:#9ccc65;--accent-orange:#d68100;--active:#0033db;--active-hover:#36f;--text:#bababa;--text-bright:#fff;--text-muted:#888;--border:#404040;color:var(--text);background:var(--bg);font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{min-height:100dvh;margin:0}a{color:var(--accent);text-decoration:none}button{font-family:inherit}.app-banners{z-index:1000;pointer-events:none;flex-direction:column;gap:0;display:flex;position:fixed;top:0;left:0;right:0}.app-banner{pointer-events:auto;text-align:center;padding:.65rem 1rem;font-size:.9rem;font-weight:600}.app-banner--error{color:#fff;background:#6b2b2b}.app-banner--ok{color:#fff;background:#2b5c2b}.app-banner--info{background:var(--bg-card);color:var(--text-bright);border-bottom:1px solid var(--border)}.app-banner--failed{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;display:flex}.app-banner__btn{color:#6b2b2b;cursor:pointer;background:#fff;border:none;border-radius:3px;padding:.4rem .85rem;font-size:.85rem;font-weight:700}.app-banner__btn:hover{background:#f0f0f0}.app-banner__countdown{font-variant-numeric:tabular-nums;color:var(--accent-orange);font-weight:700}.app-version-notice{display:none}.app-layout{flex-direction:column;min-height:100dvh;display:flex}.app-layout__main{flex-direction:column;flex:auto;min-height:0;display:flex}.app-layout__main>.lobby{flex:1;min-height:0;overflow:hidden}.app-layout__main>.game{flex:1;min-height:0}@media (width>=720px){.app-layout__main>.game:not(.game--centered){flex:0 auto;min-height:auto;overflow:visible}}.build-info{z-index:1002;pointer-events:none;-webkit-user-select:none;user-select:none;margin:0;position:fixed;bottom:.75rem;right:.75rem}.build-info--plain{letter-spacing:.02em;color:var(--text-muted);opacity:.65;font-size:.62rem;font-weight:500;line-height:1}.app-footer{pointer-events:none;-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;margin:0;padding:.75rem;display:flex;overflow:hidden}.app-footer__line{align-items:center;gap:.55rem;margin:0;display:flex}.app-footer__line--left{flex-shrink:1;min-width:0}.app-footer__line--right{flex-shrink:0;margin-left:auto}.app-footer__stat{white-space:nowrap;letter-spacing:.02em;color:var(--text-muted);opacity:.75;align-items:baseline;gap:.2rem;font-size:.62rem;font-weight:500;line-height:1;display:inline-flex}.app-footer__stat strong{color:var(--text-bright);font-weight:600;font-size:inherit;font-variant-numeric:tabular-nums}.app-footer__tag{white-space:nowrap;letter-spacing:.02em;color:var(--text-muted);opacity:.9;font-size:.62rem;font-weight:500;line-height:1}.app-footer__signal{flex-shrink:0;align-items:flex-end;gap:2px;height:.72rem;display:inline-flex}.app-footer__signal-bar{background:#ffffff2e;border-radius:1px;width:3px;height:35%}.app-footer__signal-bar:nth-child(2){height:55%}.app-footer__signal-bar:nth-child(3){height:75%}.app-footer__signal-bar:nth-child(4){height:100%}.app-footer__signal-bar--on{background:#0c7ffe}.lobby{flex-direction:column;justify-content:center;align-items:center;padding:1rem;display:flex;position:relative;overflow:hidden}.lobby__content{z-index:1;flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;max-width:560px;min-height:0;display:flex;position:relative}.lobby__center{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:480px;display:flex;position:relative}.lobby__center--waiting{flex:1;justify-content:flex-start;gap:.75rem;width:100%;max-width:100%;min-height:0;padding:0;overflow:hidden}.lobby__name{border:none;border-bottom:1px solid var(--border);color:var(--text-bright);text-align:center;background:0 0;outline:none;width:100%;max-width:200px;padding:.4rem 0;font-size:.95rem}.lobby__name::placeholder{color:var(--text-muted)}.lobby__name:focus{border-bottom-color:#ffffff80}.lobby__title-row{justify-content:center;align-items:center;width:100%;min-height:1.75rem;display:flex;position:relative}.lobby__title{color:var(--text-bright);text-align:center;white-space:nowrap;margin:0;font-size:1.1rem;font-weight:600}.lobby__title--long{white-space:nowrap;padding:0 2.5rem 0 2.75rem}.lobby-tabs{grid-template-columns:repeat(3,1fr);gap:.4rem;width:100%;display:grid}.lobby-tab{min-height:4.25rem;color:var(--text-muted);cursor:pointer;background:#302e2bb8;border:1px solid #0000;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;padding:.55rem .35rem;transition:background .15s,border-color .15s,color .15s;display:flex}.lobby-tab:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.lobby-tab--active{background:var(--active);color:var(--text-bright);cursor:default;border-color:#0000}.lobby-tab--active:hover:not(:disabled){background:var(--active);color:var(--text-bright)}.lobby-tab:disabled{opacity:.55;cursor:not-allowed}.lobby-tab__icon{opacity:.92;flex-shrink:0;width:1.35rem;height:1.35rem}.lobby-tab__label{text-align:center;font-size:.68rem;font-weight:600;line-height:1.2}.lobby-section-head{text-align:center;width:100%}.lobby-section-head__title{color:var(--text-bright);margin:0;font-size:1.1rem;font-weight:600}.lobby-section-head__subtitle{color:var(--text-muted);margin:.3rem 0 0;font-size:.82rem}.lobby-section-head__subtitle--link{font-family:inherit;font-size:.82rem;font-weight:inherit;line-height:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;margin:.3rem 0 0;padding:0;display:inline}.lobby-section-head__subtitle--link:hover{color:var(--text-muted)}.lobby__grid-wrap{width:100%}.lobby__setup{flex-direction:column;gap:.85rem;width:100%;display:flex}.lobby__qr-section{flex-direction:column;align-self:center;align-items:center;width:100%;max-width:320px;margin:.5rem auto 0;display:flex}.lobby__or{color:var(--text-muted);text-align:center;margin:0 0 .4rem;font-size:.8rem}.lobby__hint{color:var(--text-muted);text-align:center;margin:.5rem 0 0;font-size:.85rem}.lobby__qr-btn{background:var(--bg-card);width:100%;color:var(--text);cursor:pointer;border:none;border-radius:3px;justify-content:center;align-items:center;gap:.5rem;min-height:48px;padding:.9rem 1rem;font-size:.95rem;display:inline-flex}.lobby__qr-btn:hover{background:var(--bg-hover);color:var(--text-bright)}.lobby__qr-icon{opacity:.9;flex-shrink:0;width:1.15rem;height:1.15rem}.lobby__title-row .lobby__back{margin:0;padding-left:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.lobby-section-head .lobby__title-row{min-height:1.75rem}.lobby-section-head .lobby__title-row .lobby-section-head__title{padding:0 2.5rem}.field{color:var(--text-muted);flex-direction:column;gap:.35rem;font-size:.85rem;display:flex}.field--inline{flex-direction:row;align-items:center;gap:.75rem}.field--inline span{flex-shrink:0}.field--inline input{flex:1}.field input{background:var(--bg-card);border:1px solid var(--border);color:var(--text-bright);border-radius:3px;min-height:44px;padding:.6rem .75rem;font-size:1rem}.pairing-grid{grid-template-columns:repeat(3,1fr);gap:.45rem;width:100%;display:grid}.pairing-btn{color:var(--text-bright);cursor:pointer;background:#302e2beb;border:none;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;min-height:76px;padding:1rem .35rem;transition:background .12s;display:flex}.pairing-btn:hover:not(:disabled){background:var(--bg-hover)}.pairing-btn:active:not(:disabled){background:#4a4844}.pairing-btn:disabled{opacity:.5;cursor:not-allowed}.pairing-btn--waiting{background:var(--active);cursor:default;outline:none}.pairing-btn--waiting:hover:not(:disabled){background:var(--active)}.pairing-btn__time{letter-spacing:.02em;font-size:1.35rem;font-weight:600}.pairing-btn__label{color:var(--text-muted);font-size:.72rem}.pairing-btn--custom .pairing-btn__time{font-size:1.1rem;font-weight:500}.game-setup{flex-direction:column;gap:.85rem;width:100%;display:flex}.game-setup__hint{text-align:center;color:var(--text-muted);margin:0;font-size:.85rem}.variant-picker{width:100%;position:relative}.variant-picker__trigger,.variant-picker__option{text-align:left;background:var(--bg-card);width:100%;color:var(--text-bright);cursor:pointer;border:none;align-items:center;gap:.65rem;display:flex}.variant-picker__trigger{border-radius:3px;min-height:56px;padding:.75rem .85rem}.variant-picker__trigger:hover{background:var(--bg-hover)}.variant-picker__icon{text-align:center;opacity:.9;flex-shrink:0;width:1.5rem;font-size:1.1rem}.variant-picker__copy{flex-direction:column;flex:1;gap:.15rem;min-width:0;display:flex}.variant-picker__name{color:var(--accent-orange);font-size:.95rem;font-weight:600}.variant-picker__desc{color:var(--text-muted);font-size:.75rem;line-height:1.25}.variant-picker__caret{color:var(--text-muted);flex-shrink:0;font-size:.85rem}.variant-picker__menu{z-index:20;background:var(--bg-card);border:1px solid var(--border);border-radius:3px;max-height:min(50vh,18rem);margin:0;padding:.35rem;list-style:none;position:absolute;top:calc(100% + .35rem);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000059}.variant-picker__option{border-radius:3px;padding:.7rem .65rem}.variant-picker__option:hover{background:var(--bg-hover)}.variant-picker__option--active{background:var(--active);cursor:default}.variant-picker__option--active:hover{background:var(--active)}.game-setup-modal{z-index:1100;justify-content:center;align-items:flex-end;padding:1rem;display:flex;position:fixed;inset:0}.game-setup-modal__backdrop{cursor:pointer;background:#0000008c;border:none;position:absolute;inset:0}.game-setup-modal__sheet{z-index:1;background:var(--bg);border:1px solid var(--border);border-radius:6px;width:min(100%,480px);max-height:calc(100dvh - 2rem);padding:1rem;position:relative;overflow-y:auto}.game-setup-modal__header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.game-setup-modal__title{margin:0;font-size:1.05rem;font-weight:600}.side-picker{width:100%}.side-picker__label{color:var(--text-muted);text-align:center;margin:0 0 .45rem;font-size:.8rem}.side-picker__row{grid-template-columns:repeat(3,1fr);gap:.45rem;display:grid}.side-picker__btn{background:var(--bg-card);color:var(--text-bright);cursor:pointer;border:1px solid #0000;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;min-height:64px;padding:.65rem .5rem;font-size:.9rem;font-weight:600;transition:background .12s,border-color .12s;display:flex}.side-picker__btn:hover:not(:disabled){background:var(--bg-hover)}.side-picker__btn:disabled{opacity:.5;cursor:not-allowed}.side-picker__btn--active{background:var(--active);cursor:default;border-color:#0000}.side-picker__btn--active:hover:not(:disabled){background:var(--active)}.side-picker__icon{flex-shrink:0;width:1.65rem;height:1.65rem;position:relative}.side-picker__king{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.side-picker__icon--random .side-picker__king--black-half{clip-path:inset(0 50% 0 0);position:absolute;inset:0}.side-picker__icon--random .side-picker__king--white-half{clip-path:inset(0 0 0 50%);position:absolute;inset:0}.side-picker__btn-label{line-height:1.1}.game-setup-modal__close{background:var(--bg-card);width:2rem;height:2rem;color:var(--text-bright);cursor:pointer;border:none;border-radius:3px;flex-shrink:0;font-size:1.35rem;line-height:1}.game-setup-modal__close:hover{background:var(--bg-hover)}.lobby__waiting,.lobby__card{z-index:1;position:relative}.lobby__waiting{text-align:center;flex-direction:column;align-items:center;gap:.75rem;padding:1rem 0;display:flex}.lobby__center--waiting .lobby-table-wrap{flex:1;min-height:0}.lobby-table-wrap{background:var(--bg-card);border-radius:3px;flex-direction:column;width:100%;display:flex;overflow:hidden}.lobby-table__scroll{-webkit-overflow-scrolling:touch;flex:1;min-height:0;overflow-y:auto}.lobby-table__sub{color:var(--text-muted);text-align:center;margin:0 0 .5rem;font-size:.8rem;line-height:1.4}.lobby-table__header{color:var(--text-muted);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.65rem .85rem;font-size:.85rem;display:flex}.lobby-table__count{color:var(--accent-orange)}.lobby-table{border-collapse:collapse;width:100%;font-size:.9rem}.lobby-table th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:.5rem .85rem;font-size:.75rem;font-weight:500}.lobby-table td{color:var(--text-bright);border-bottom:1px solid #40404080;padding:.6rem .85rem}.lobby-table tbody tr:last-child td{border-bottom:none}.lobby-table__row--you{background:#81b64c14}.lobby-table__row--you td:first-child{font-weight:600}.lobby-table__row--playable{cursor:pointer}.lobby-table__row--playable:hover{background:#81b64c1f}.lobby-table__row--playable:focus-visible{outline:2px solid var(--accent-orange);outline-offset:-2px}.lobby-table__row--matching{background:#81b64c26}.lobby-table__empty{text-align:center;color:var(--text-muted);padding:1.25rem!important}.lobby-table__status{color:var(--text-muted);font-size:.8rem}.lobby-table__status--you{color:var(--accent);font-weight:600}.lobby-table__status--play{color:var(--accent-orange);font-weight:600}.lobby-table__status--matching{color:var(--text-bright);font-weight:600}.lobby-table__hint{color:var(--text-muted);text-align:center;border-top:1px solid var(--border);margin:0;padding:.65rem .85rem;font-size:.8rem;line-height:1.4}.btn{cursor:pointer;border:none;border-radius:3px;min-height:44px;padding:.85rem 1.25rem;font-size:1rem;font-weight:600}.btn--block{width:100%}.btn--primary{background:var(--accent);color:#1a1a18}.btn--primary:hover{background:var(--accent-hover)}.btn--ghost{color:var(--text-muted);background:0 0;min-height:auto;padding:.5rem 0}.btn--back{align-items:center;gap:.35rem;display:inline-flex}.btn--back svg{flex-shrink:0;width:.85rem;height:.85rem}.btn--secondary{background:var(--text-bright);color:#1a1a18}.btn--secondary:hover:not(:disabled){background:var(--active-hover);color:var(--text-bright)}.btn--secondary:disabled{opacity:.5;cursor:not-allowed}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error{color:#e57373;margin:0;font-size:.9rem}.qr-block{flex-direction:column;align-items:center;gap:1rem;display:flex}.qr-block__memo{max-width:280px;color:var(--text-muted);text-align:center;margin:0;font-size:.8rem;line-height:1.45}.qr-block__hint{color:var(--text-muted);text-align:center;margin:0;font-size:.9rem}.join-link{word-break:break-all;text-align:center;font-size:.85rem}.join-link a{color:#ffffff8c;text-underline-offset:.15em;text-decoration:underline}.join-link a:hover{color:#ffffffe6}.game{--game-board-max-size:min(100vw - 1rem, 560px);--game-chrome-reserve:0px;flex-direction:column;width:100%;max-width:100%;padding:.5rem;display:flex}@media (width>=720px){.game{--game-chrome-reserve:21rem;--game-board-max-size:min(100%, calc(100dvh - var(--game-chrome-reserve)), 900px)}.game:not(.game--centered){flex:0 auto;min-height:auto;padding-bottom:2.75rem}}.game--centered{text-align:center;flex:1;justify-content:center;align-items:center;gap:1rem;padding:2rem}.game__header{flex-shrink:0;justify-content:space-between;align-items:center;padding:.25rem .25rem .5rem;display:flex}.game__meta{color:var(--text-muted);align-items:center;gap:.5rem;font-size:.8rem;display:flex}.game__live-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8rem;text-decoration:underline}.game__layout{flex-direction:column;flex:1;gap:.75rem;display:flex}@media (width<=719px){.game__layout{flex:0 auto;justify-content:flex-start}}@media (width>=720px){.game__layout{flex-direction:row;flex:0 auto;align-items:flex-start}}.game__main{flex-direction:column;flex:1;gap:.35rem;min-width:0;display:flex}@media (width<=719px){.game__main{flex:none}}.game__main>.player-bar:first-child{border-top:1px solid var(--border);margin-bottom:-.35rem}.game__main>.game__board-row+.player-bar,.game__main>.game__board-stack+.player-bar{border-bottom:1px solid var(--border);margin-top:-.35rem}.game__board-row{width:100%;max-width:var(--game-board-max-size,min(100vw - 1rem, 560px));align-items:flex-start;gap:.3rem;margin:0 auto;display:flex}.game__sidebar{background:var(--bg-card);border-radius:3px;flex-shrink:0;min-height:44px;max-height:200px;padding:.5rem;overflow-y:auto}@media (width<=719px){.game__sidebar{display:none}}@media (width>=720px){.game__sidebar{width:100%;max-height:var(--game-board-max-size);flex-shrink:0}.game__sidebar .move-table{font-size:.85rem}}.game__sidebar-column{flex-direction:column;flex-shrink:0;gap:.5rem;display:none}@media (width>=720px){.game__sidebar-column{width:clamp(260px,28%,360px);min-width:260px;max-width:360px;display:flex}.game__sidebar-column--empty{display:none}}.game__sidebar-column .game__qr-invite--sidebar{display:none}@media (width>=720px){.game__sidebar-column .game__qr-invite--sidebar{width:100%;display:flex}}.game__sidebar-column .game-chat-bar{padding-top:.65rem;padding-left:0;padding-right:0}.game__sidebar-column .game-chat-row{align-items:stretch;width:100%}.game__sidebar-column .game-chat-thought{flex:100%;width:100%;min-width:min-content}.game__sidebar-column .game-chat{flex:auto;width:auto;max-width:none}.game__qr-invite--inline{width:100%;max-width:var(--game-board-max-size,min(100vw - 1rem, 560px));margin:.65rem auto 0}@media (width>=720px){.game__qr-invite--inline{display:none}}.game__move-stack{flex-direction:column;flex-shrink:0;gap:.5rem;display:flex;overflow:visible}@media (width>=720px){.game__move-stack--inline{display:none}}.game__move-panel{background:var(--bg-card);border-radius:3px;flex-shrink:0;max-height:200px;padding:.5rem;overflow-y:auto}@media (width>=720px){.game__move-panel--inline,.game__move-panel--analysis{display:none}}@media (width<=719px){.game__move-panel--analysis{max-height:280px}}.player-bar{opacity:.85;align-items:stretch;min-height:44px;padding:1rem 0;transition:opacity .15s;display:flex;position:relative}.player-bar.active{opacity:1}.player-bar__left{flex:1;align-items:center;gap:.45rem;min-width:0;display:flex}.player-bar__center{pointer-events:none;justify-content:center;align-items:center;max-width:calc(100% - 12rem);display:flex;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.player-bar__clock{flex-shrink:0;align-items:center;display:flex}.player-bar__name{color:var(--text-bright);white-space:nowrap;font-size:.95rem}.player-bar .clock{font-variant-numeric:tabular-nums;color:var(--text-bright);text-align:center;background:#262421;border-radius:3px;justify-content:center;align-items:center;min-width:4.75rem;padding:.2rem .5rem;font-size:1.1rem;font-weight:600;line-height:1;display:inline-flex}.player-bar .clock--active{color:#1a1a1a;background:#fff}.player-bar .clock--low{color:#ff6b6b;background:#5c2b2b}.player-bar .clock--active.clock--low{color:#f44;background:#5c2b2b}.player-bar .clock--win{color:#fff;background:#2b5c2b}.board-stage{width:100%;max-width:var(--game-board-max-size,min(100vw - 1rem, 560px));aspect-ratio:1;margin:0 auto;position:relative}.board-bubble-layer{pointer-events:none;z-index:4;position:absolute;inset:0}.board-wrap{-webkit-user-select:none;user-select:none;touch-action:manipulation;border-radius:3px;width:100%;height:100%;position:relative;overflow:hidden}.board-wrap>*{width:100%;height:100%}.board-wrap *{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.board-notation{pointer-events:none;z-index:2;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);font-size:10px;line-height:1;display:grid;position:absolute;inset:0}.board-notation__file,.board-notation__rank{font-weight:500}.board-notation--on-light{color:#b58863}.board-notation--on-dark{color:#f0d9b5}.board-notation__file{place-self:end start;padding:0 0 2px 3px}.board-notation__rank{place-self:start end;padding:2px 3px 0 0}.board-reveal{--door-top:0%;--door-bottom:0%;--ghost-opacity:0;width:100%;max-width:var(--game-board-max-size,min(100vw - 1rem, 560px));aspect-ratio:1;background:#f0d9b5;border-radius:3px;margin:0 auto;position:relative;overflow:hidden}.board-reveal__layer{position:absolute;inset:0}.board-reveal__layer .board-wrap,.board-reveal__layer .board-stage{aspect-ratio:auto;width:100%;max-width:none;height:100%;margin:0}.board-reveal__layer .board-notation{z-index:2}.board-reveal__ghost{z-index:0;opacity:var(--ghost-opacity);pointer-events:none;isolation:isolate;-webkit-filter:invert()hue-rotate(180deg)contrast(1.2)brightness(1.05);transition:none;transform:translateZ(0)}.board-reveal[data-xray-effect=classic] .board-reveal__ghost{-webkit-filter:invert()hue-rotate(180deg)contrast(1.2)brightness(1.05)}.board-reveal[data-xray-effect=blue] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(165deg)saturate(4.5)contrast(1.35)brightness(1.05)}.board-reveal[data-xray-effect=purple] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(240deg)saturate(4.2)contrast(1.3)brightness(.95)}.board-reveal[data-xray-effect=mono] .board-reveal__ghost{-webkit-filter:invert()grayscale()contrast(1.55)brightness(1.18)}.board-reveal[data-xray-effect=void] .board-reveal__ghost{-webkit-filter:invert()grayscale(.85)contrast(2.1)brightness(.65)hue-rotate(90deg)}.board-reveal[data-xray-effect=ultra-blue] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(175deg)saturate(6)contrast(1.5)brightness(1.2)}.board-reveal[data-xray-effect=cobalt] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(195deg)saturate(5)contrast(1.55)brightness(.82)}.board-reveal[data-xray-effect=indigo] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(215deg)saturate(4.8)contrast(1.4)brightness(.92)}.board-reveal[data-xray-effect=violet-glow] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(255deg)saturate(5.5)contrast(1.45)brightness(1.08)}.board-reveal[data-xray-effect=magenta] .board-reveal__ghost{-webkit-filter:invert()sepia()hue-rotate(275deg)saturate(5.2)contrast(1.42)brightness()}.board-reveal--animating .board-reveal__ghost{will-change:opacity}.board-reveal__normal{z-index:1;transform:translateZ(0)}.board-reveal--animating .board-reveal__normal{clip-path:inset(var(--door-top) 0 var(--door-bottom) 0);will-change:clip-path;backface-visibility:hidden}.board-reveal--animating{pointer-events:none}.dev-reveal-effects{flex-wrap:wrap;justify-content:center;gap:.35rem;width:100%;max-width:560px;margin-bottom:.5rem;display:flex}.dev-reveal-effects__btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:3px;padding:.35rem .5rem;font-size:.72rem}.dev-reveal-effects__btn:hover{color:var(--text-bright);border-color:var(--accent-orange)}.dev-reveal-effects__btn--active{color:var(--text-bright);border-color:var(--accent);background:#81b64c1f}.game__status{text-align:center;color:var(--text-muted);margin:.5rem 0;font-size:.9rem}.game__status--warn{color:#ffabab}.game-over{flex-direction:column;align-items:stretch;gap:.5rem;display:flex}@media (width>=720px){.game-over{align-items:center}}.game-over__side-row{gap:.5rem;width:100%;display:flex}@media (width>=720px){.game-over__side-row{width:50%}}.game-over__side-row .game-over__btn{text-transform:none;letter-spacing:normal;flex:1 1 0;width:auto;min-width:0;padding-inline:.5rem}.game-over__reason{color:var(--text-muted);font-size:.85rem}.game-over__hint{text-align:center;color:var(--text-muted);margin:0;font-size:.85rem}.game-over__hint--spectator{color:#ffabab}.game-over__btn{background:var(--bg-hover);width:100%;color:var(--text-bright);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;border:none;border-radius:3px;min-height:48px;padding:.9rem;font-size:.95rem;font-weight:600}@media (width>=720px){.game-over__btn{width:50%}}.game-over__btn:hover:not(:disabled){background:#4a4844}.game-over__btn:disabled{opacity:.6}.game-over__btn--secondary{border:1px solid var(--border);text-transform:none;color:var(--text);background:0 0;font-weight:500}.presence-dot{border:2px solid #6b8f71;border-radius:50%;flex-shrink:0;width:10px;height:10px}.presence-dot--online{background:#6b8f71}.presence-dot--away{background:0 0}.captured{opacity:.9;align-items:center;gap:0;display:inline-flex}.captured__piece{width:1.35rem;height:1.35rem;color:var(--text-bright);flex-shrink:0;line-height:0;display:inline-flex}.captured__piece svg{width:100%;height:100%;display:block}.captured__adv{color:var(--text-bright);margin-left:.25rem;font-size:.85rem;font-weight:600}.move-list{font-family:ui-monospace,monospace;font-size:.8rem}.move-list__row{gap:.35rem;padding:.15rem 0;display:flex}.move-list__num{color:var(--text-muted);min-width:1.75rem}.move-list__move{color:var(--text);border-radius:2px;min-width:2.5rem;padding:.1rem .35rem}.move-list__move.active{background:var(--accent);color:#1a1a18}.move-list__move:hover{color:var(--text-bright)}.game__board-stack{flex:1 1 0;width:100%;min-width:0;position:relative}.vs-intro{z-index:5;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;display:flex;position:absolute;inset:0}.vs-intro--enter .vs-intro__card:first-of-type{animation:.5s cubic-bezier(.22,1,.36,1) both vsIntroFlyInTop}.vs-intro--enter .vs-intro__badge{animation:.35s ease-out .15s both vsIntroBadgeIn}.vs-intro--enter .vs-intro__card:last-of-type{animation:.5s cubic-bezier(.22,1,.36,1) 80ms both vsIntroFlyInBottom}.vs-intro--exit .vs-intro__card:first-of-type{animation:.5s cubic-bezier(.55,0,1,.45) both vsIntroFlyOutTop}.vs-intro--exit .vs-intro__badge{animation:.3s ease-in both vsIntroBadgeOut}.vs-intro--exit .vs-intro__card:last-of-type{animation:.5s cubic-bezier(.55,0,1,.45) 50ms both vsIntroFlyOutBottom}@media (prefers-reduced-motion:reduce){.vs-intro--enter .vs-intro__card,.vs-intro--enter .vs-intro__badge,.vs-intro--exit .vs-intro__card,.vs-intro--exit .vs-intro__badge{animation:none}}.vs-intro__card{color:#1a1a18;background:#fff;border-radius:4px;align-items:center;gap:.65rem;min-width:min(90%,260px);padding:.55rem .85rem;display:flex;box-shadow:0 4px 20px #00000059}.vs-intro__card--dark{color:#fff;background:#1a1a18}.vs-intro__info{flex-direction:column;gap:.15rem;min-width:0;display:flex}.vs-intro__name{align-items:center;gap:.35rem;font-size:.95rem;font-weight:700;display:flex}.vs-intro__flag{border-radius:2px;flex-shrink:0;width:1.05rem;height:auto;display:inline-block;box-shadow:0 0 0 1px #0000001f}.vs-intro__score{color:#666;text-transform:uppercase;letter-spacing:.04em;font-size:.72rem}.vs-intro__card--dark .vs-intro__score{color:#aaa}.vs-intro__badge{color:#fff;letter-spacing:.08em;background:#0000008c;border-radius:4px;justify-content:center;align-items:center;min-width:2.25rem;padding:.2rem .55rem;font-size:.72rem;font-weight:800;display:inline-flex}.score-result-overlay{z-index:6;pointer-events:none;justify-content:center;align-items:center;animation:.35s ease-out scoreResultFadeIn;display:flex;position:absolute;inset:0}.score-result-overlay--win .score-result-overlay__card,.score-result-overlay--loss .score-result-overlay__card{animation:.45s cubic-bezier(.34,1.4,.64,1) scoreResultCardPop}.score-result-overlay--exit{animation:.4s ease-in forwards vsIntroFadeOut}@media (prefers-reduced-motion:reduce){.score-result-overlay--exit{animation:none}}.score-result-overlay__card{justify-content:space-between;min-width:min(92%,280px)}.score-result-overlay__score{letter-spacing:.02em;font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:800}.vs-intro__card--dark .score-result-overlay__score{color:#fff}.score-result-overlay__delta{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:1.35rem;font-weight:800;line-height:1}.score-result-overlay__delta--pulse{animation:.55s ease-out scoreDeltaPulse}.score-result-overlay__delta--gain{color:#81b64c}.score-result-overlay__delta--loss{color:#e85d75}.vs-intro__card--dark .score-result-overlay__delta--loss{color:#ff8a9b}@keyframes scoreResultFadeIn{0%{opacity:0}to{opacity:1}}@keyframes vsIntroFlyInTop{0%{opacity:0;transform:translateY(-48px)}to{opacity:1;transform:translateY(0)}}@keyframes vsIntroFlyInBottom{0%{opacity:0;transform:translateY(48px)}to{opacity:1;transform:translateY(0)}}@keyframes vsIntroBadgeIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes vsIntroFlyOutTop{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-48px)}}@keyframes vsIntroFlyOutBottom{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(48px)}}@keyframes vsIntroBadgeOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.85)}}@keyframes vsIntroFadeOut{0%{opacity:1}to{opacity:0}}@keyframes scoreResultCardPop{0%{opacity:0;transform:scale(.92)translateY(-32px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes scoreDeltaPulse{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.12)}to{transform:scale(1)}}.game-action-bar{border-radius:3px;justify-content:center;align-items:center;gap:1.5rem;padding:.5rem;display:flex}.game-action-bar__btn{color:var(--text-bright);cursor:pointer;opacity:.85;background:0 0;border:none;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;display:inline-flex}.game-action-bar__btn svg{width:1.2rem;height:1.2rem}.game-action-bar__btn:hover:not(:disabled){opacity:1;color:#fff}.game-action-bar__btn:disabled{opacity:.35;cursor:default}.game-action-bar__btn--active{color:var(--accent)}.game-action-bar__btn--close svg{width:1.05rem;height:1.05rem}.game-action-bar__btn--takeback svg{width:1.45rem;height:1.45rem}.move-table{font-size:.8rem}.move-table__nav{border-bottom:1px solid var(--border);gap:.25rem;margin-bottom:.35rem;padding-bottom:.35rem;display:flex}.move-table__nav button{background:var(--bg-hover);color:var(--text);cursor:pointer;border:none;border-radius:2px;flex:1;padding:.25rem}.move-table__nav button:disabled{opacity:.35;cursor:default}.move-table__rows{max-height:320px;overflow-y:auto}@media (width>=720px){.move-table__rows{max-height:min(480px, var(--game-board-max-size) - 3rem)}}.move-table__row{grid-template-columns:1.5rem 1fr 1fr;gap:.25rem;padding:.12rem 0;display:grid}.move-table__num{color:var(--text-muted)}.move-table__cell{color:var(--text);border-radius:2px;align-items:center;gap:.2rem;padding:.1rem .35rem;display:inline-flex}.move-table__cell--active{color:#fff;background:#2a4a7a}.move-table__cell:hover{color:var(--text-bright)}.move-table__san{min-width:0}.move-table__capture{width:.85rem;height:.85rem;color:var(--text-bright);opacity:.9;flex-shrink:0;line-height:0;display:inline-flex}.move-table__capture svg{width:100%;height:100%;display:block}.game-chat-bar{--game-chat-control-height:calc(.72rem * 1.3 + .38rem * 2);justify-content:center;align-items:center;width:100%;padding:1rem .5rem .65rem;display:flex;overflow:visible}.game-chat-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:.28rem;max-width:100%;display:flex}.game-chat-thought{flex-wrap:nowrap;flex:auto;align-items:center;gap:.35rem;min-width:min-content;max-width:100%;display:flex;position:relative;overflow:visible}.game-chat__actions{flex-wrap:wrap;flex-shrink:0;justify-content:center;align-items:center;gap:.28rem;display:flex}.game-chat__king{opacity:.4;pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;width:1.55rem;height:1.55rem;display:flex}.game-chat__king svg{width:100%;height:100%;display:block}.game-chat{min-width:min-content;max-width:100%;min-height:var(--game-chat-control-height);background:var(--bg-hover);border:1px solid var(--border);border-radius:14px;flex:auto;align-items:center;padding:.38rem .5rem;display:inline-grid;position:relative}.game-chat:after{content:"";background:var(--bg-hover);border-left:1px solid var(--border);border-bottom:1px solid var(--border);z-index:-1;width:10px;height:10px;position:absolute;top:50%;left:-5px;transform:translateY(-50%)rotate(45deg)}.game-chat__sizer{visibility:hidden;white-space:pre;grid-area:1/1;min-width:1ch;padding:0;font-size:.72rem;line-height:1.3}.game-chat__sizer--placeholder{font-style:italic}.game-chat__input{width:100%;min-width:0;color:var(--text);background:0 0;border:none;outline:none;grid-area:1/1;padding:0;font-size:.72rem;line-height:1.3}.game-chat__input::placeholder{color:var(--text-muted);font-style:italic}.game-chat__input:disabled{opacity:.45;cursor:default}.game-chat__send,.game-chat__emoji,.game-chat__close{width:var(--game-chat-control-height);height:var(--game-chat-control-height);border:1px solid var(--border);background:var(--bg-hover);color:var(--text);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.game-chat__send svg,.game-chat__emoji svg,.game-chat__close svg{width:.85rem;height:.85rem}.game-chat__send:disabled,.game-chat__emoji:disabled,.game-chat__close:disabled{opacity:.35;cursor:default}.game-chat__send:hover:not(:disabled),.game-chat__emoji:hover:not(:disabled),.game-chat__close:hover:not(:disabled){background:#ffffff1a}.game-chat__emoji{font-size:.92rem}.game-chat__close{color:var(--text-muted)}.game-chat__close:hover{color:var(--text)}.board-bubble{z-index:4;box-sizing:border-box;pointer-events:none;color:#1a1a1a;text-align:center;word-break:break-word;overflow-wrap:anywhere;filter:drop-shadow(0 2px 8px #00000047);background:#fffffff5;border-radius:12px;width:max-content;max-width:min(34vw,104px);padding:.35rem .5rem;font-size:.68rem;font-weight:600;line-height:1.3;animation-timing-function:linear;animation-fill-mode:forwards;position:absolute;overflow:hidden;transform:translate(-50%,-100%)}.board-bubble:after{content:"";z-index:-1;background:#fffffff5;width:10px;height:10px;position:absolute;bottom:-4px;left:50%;transform:translate(-50%)rotate(45deg)}.board-bubble--travel-up{animation-name:board-bubble-travel-up}.board-bubble--travel-down{animation-name:board-bubble-travel-down}@keyframes board-bubble-travel-up{0%{left:var(--bubble-x);top:var(--bubble-y);opacity:0;transform:translate(-50%,-100%)scale(.72)}8%{opacity:1;transform:translate(-50%,-100%)scale(1)}22%{left:calc(var(--bubble-x) + 2%);top:calc(var(--bubble-y) - 15%)}38%{left:calc(var(--bubble-x) - 1.8%);top:calc(var(--bubble-y) - 32%)}54%{left:calc(var(--bubble-x) + 1.2%);top:calc(var(--bubble-y) - 48%)}70%{left:calc(var(--bubble-x) - 0.6%);top:calc(var(--bubble-y) - 65%)}86%{left:var(--bubble-x);top:calc(var(--bubble-y) - 82%);opacity:1}to{left:var(--bubble-x);opacity:0;top:-4%;transform:translate(-50%,-100%)scale(.82)}}@keyframes board-bubble-travel-down{0%{left:var(--bubble-x);top:var(--bubble-y);opacity:0;transform:translate(-50%,-100%)scale(.72)}8%{opacity:1;transform:translate(-50%,-100%)scale(1)}22%{left:calc(var(--bubble-x) - 2%);top:calc(var(--bubble-y) + 15%)}38%{left:calc(var(--bubble-x) + 1.8%);top:calc(var(--bubble-y) + 32%)}54%{left:calc(var(--bubble-x) - 1.2%);top:calc(var(--bubble-y) + 48%)}70%{left:calc(var(--bubble-x) + 0.6%);top:calc(var(--bubble-y) + 65%)}86%{left:var(--bubble-x);top:calc(var(--bubble-y) + 82%);opacity:1}to{left:var(--bubble-x);opacity:0;top:104%;transform:translate(-50%,-100%)scale(.82)}}.player-bar__identity{flex-direction:column;gap:.05rem;min-width:0;display:flex}.player-bar__score{color:var(--text-muted);font-size:.72rem;line-height:1.1}.player-bar__flag{vertical-align:-.15em;border-radius:2px;width:.9rem;height:auto;margin-left:.35rem;display:inline-block;position:relative;top:-2px;box-shadow:0 0 0 1px #0000001f}.board-draw-badge{color:#fff;pointer-events:none;z-index:3;background:#505050d9;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;display:flex;position:absolute;transform:translate(calc(3px - 50%),calc(-50% - 13px))}.board-draw-badge svg{width:11px;height:11px}.promotion-picker__backdrop{z-index:8;cursor:default;background:#0000002e;border:0;margin:0;padding:0;position:absolute;inset:0}.promotion-picker{z-index:9;pointer-events:auto;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;width:25%;height:25%;display:grid;position:absolute;box-shadow:0 2px 12px #00000047}.promotion-picker__choice{cursor:pointer;border:0;justify-content:center;align-items:center;min-width:0;min-height:0;margin:0;padding:8%;transition:filter .12s;display:flex}.promotion-picker__choice svg{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%}.promotion-picker__choice:first-child{background:#f0d9b5}.promotion-picker__choice:nth-child(2),.promotion-picker__choice:nth-child(3){background:#b58863}.promotion-picker__choice:nth-child(4){background:#f0d9b5}.promotion-picker__choice:hover{filter:brightness(1.12)}.promotion-picker__choice:active{filter:brightness(.92)}.board-wrap .square--fallen-king{justify-content:center;align-items:center;display:flex}.board-wrap .piece--fallen{transform-origin:50%;z-index:4;flex-shrink:0;width:100%;height:100%;animation:.55s cubic-bezier(.34,1.15,.64,1) forwards king-fall;position:relative}@keyframes king-fall{0%{transform:rotate(0)}to{transform:rotate(90deg)}}.eval-bar{flex-direction:column;flex-shrink:0;align-self:stretch;width:5px;display:flex}.eval-bar__track{background:#1a1816;border-radius:4px;flex:1;min-height:0;position:relative;overflow:hidden}.eval-bar__white{background:#f0f0f0;transition:height .45s;position:absolute;left:0;right:0}.eval-bar__black{background:#403d39;transition:height .45s;position:absolute;left:0;right:0}.eval-bar--view-black .eval-bar__white{top:0}.eval-bar--view-black .eval-bar__black,.eval-bar--view-white .eval-bar__white{bottom:0}.eval-bar--view-white .eval-bar__black{top:0}.eval-bar--view-black.eval-bar--intro .eval-bar__white{height:0;animation:1.4s cubic-bezier(.22,1,.36,1) forwards eval-bar-grow-from-top}.eval-bar--view-black.eval-bar--intro .eval-bar__black,.eval-bar--view-white.eval-bar--intro .eval-bar__white{height:0;animation:1.4s cubic-bezier(.22,1,.36,1) forwards eval-bar-grow-from-bottom}.eval-bar--view-white.eval-bar--intro .eval-bar__black{height:0;animation:1.4s cubic-bezier(.22,1,.36,1) forwards eval-bar-grow-from-top}@keyframes eval-bar-grow-from-top{0%{height:0}to{height:50%}}@keyframes eval-bar-grow-from-bottom{0%{height:0}to{height:50%}}@media (prefers-reduced-motion:reduce){.eval-bar--intro .eval-bar__white,.eval-bar--intro .eval-bar__black{height:50%;animation:none}}.eval-bar__mid{background:#ffffff40;height:1px;position:absolute;top:50%;left:0;right:0}.move-table__symbol{color:#e0c070;margin-left:.25rem;font-size:.75rem;font-weight:700}.move-table__symbol--brilliant{color:#26c2d0}.move-table__symbol--excellent{color:#7fa650}.move-table__symbol--inaccuracy{color:#e0c070}.move-table__symbol--mistake{color:#e07070}.move-table__symbol--blunder{color:#c02020}.engine-level-picker{width:100%}.engine-level-picker__label{color:var(--text-muted);text-align:center;margin:0 0 .45rem;font-size:.8rem}.engine-level-picker__row{grid-template-columns:repeat(5,1fr);gap:.45rem;display:grid}.engine-level-picker__btn{background:var(--bg-card);color:var(--text-bright);cursor:pointer;border:1px solid #0000;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;min-height:44px;padding:.55rem .2rem;transition:background .12s,border-color .12s;display:flex}.engine-level-picker__btn:hover:not(:disabled){background:var(--bg-hover)}.engine-level-picker__btn:disabled{opacity:.5;cursor:not-allowed}.engine-level-picker__btn--active{background:var(--active);cursor:default;border-color:#0000}.engine-level-picker__btn--active:hover:not(:disabled){background:var(--active)}.engine-level-picker__name{text-align:center;font-size:1rem;font-weight:600;line-height:1.15}.engine-level-picker__elo{color:var(--text-muted);font-size:.65rem;font-weight:400;line-height:1.1}.confetti-canvas{pointer-events:none;z-index:2000;position:fixed;inset:0}.dev-confetti{text-align:center;padding:2rem}
