@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Instrument+Serif:ital@0;1&display=swap";:root{font-family:DM Sans,ui-sans-serif,system-ui,sans-serif;color:#263a31;background:#f8f6f0;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--paper: #f8f6f0;--cream: #eeecdf;--green: #193d31;--leaf: #496a4e;--ink: #263a31;--muted: #7a8074;--line: #dfdfd2;--accent: #b77b3a}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #b8844d;outline-offset:4px}button{border:none;background:none}a{color:inherit}h1,h2,p{margin:0}button svg{flex-shrink:0}.eyebrow{font-size:10px;font-weight:650;letter-spacing:1.65px;line-height:1.6;color:var(--leaf)}.brand{display:flex;align-items:center;gap:10px;font-size:29px;font-weight:650;letter-spacing:-1.7px}.brand-dot{color:var(--accent)}.brand-mark{width:37px;height:37px;border-radius:11px;background:var(--green);display:grid;place-items:center}.brand-mark .chess-piece{width:30px;height:30px}.topbar{display:flex;justify-content:space-between;align-items:center;min-height:100px;border-bottom:1px solid var(--line);gap:20px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 20px;border-radius:7px;font-size:13px;font-weight:600;text-decoration:none;transition:background .15s,transform .15s;min-height:44px}.button:hover:not(:disabled){transform:translateY(-1px)}.button.primary{background:var(--green);color:#fffef6;box-shadow:0 3px #102f25}.button.primary:hover:not(:disabled){background:#275441}.button.secondary{background:#e9eddf;color:var(--green);border:1px solid #d3dcc8}.button.secondary:hover:not(:disabled){background:#dfe8d6}.button.ghost{border:1px solid var(--line);font-size:12px;padding:11px 14px}.button.ghost:hover:not(:disabled){background:var(--cream)}.full{width:100%}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:8px 0;font-size:11px;color:var(--leaf)}.text-button:hover:not(:disabled){color:var(--green);text-decoration:underline;text-underline-offset:3px}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--leaf);flex-shrink:0}.inline-error{font-size:12px;line-height:1.7;color:#954630;background:#f7e8df;border:1px solid #ebd0c4;padding:12px 14px;border-radius:7px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-heading h2{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600}.section-heading>span{color:var(--muted);font-size:9px;letter-spacing:1px}.modal{border:1px solid var(--line);border-radius:15px;padding:28px;max-width:min(420px,calc(100vw - 32px));color:var(--ink);background:var(--paper);box-shadow:0 24px 80px #102f2533}.modal::backdrop{background:#183b3159;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal h2{font-family:"Instrument Serif",Georgia,serif;font-size:30px;font-weight:400;margin-bottom:12px}.modal p{color:var(--muted);line-height:1.7;font-size:13px;margin-bottom:20px}.restoring{max-width:1100px;padding:40px;margin:auto}.restoring p{margin-top:80px;color:var(--muted)}.spin{animation:spin 1.5s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.auth-page{min-height:100vh;padding:36px 5vw;display:flex;flex-direction:column}.auth-content{margin:auto;text-align:center;padding:45px 0 65px;max-width:520px}.auth-art{width:116px;height:116px;border-radius:50%;background:#e3e8d7;margin:0 auto 26px;display:grid;place-items:center}.auth-art .chess-piece{width:78px;height:78px;transform:rotate(-12deg)}.auth-content h1{font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:clamp(48px,8vw,70px);line-height:1.07;margin:18px 0}.auth-content h1 em{color:var(--leaf)}.auth-content>p{font-size:13px;color:var(--muted);line-height:1.7}.auth-content .auth-status{display:flex;justify-content:center;align-items:center;gap:8px;margin:25px 0 18px}.auth-footer{font-size:10px;color:var(--muted);text-align:center}.lobby-page{max-width:1220px;padding:0 55px;margin:0 auto;min-height:100svh}.member-chip{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--leaf);max-width:220px;overflow:hidden}.avatar-small{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#e4e9d9;color:var(--green);flex-shrink:0;font-size:11px}.lobby-hero{display:grid;grid-template-columns:1.06fr 1fr;gap:40px;align-items:center;padding:72px 0 64px;min-height:620px}.hero-copy .eyebrow{display:inline-flex;gap:8px;align-items:center;font-size:9px}.hero-copy h1{font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:clamp(48px,6.3vw,81px);line-height:1.035;letter-spacing:-1.7px;margin:20px 0 22px}.hero-copy h1 em{color:var(--leaf)}.hero-copy>p{color:var(--muted);font-size:13px;line-height:1.9;max-width:345px}.create-button{margin-top:28px;min-width:213px;min-height:51px;justify-content:space-between}.hero-hint{display:block;font-size:10px;color:var(--muted);margin-top:14px}.hero-divider{display:flex;align-items:center;gap:13px;font-size:10px;color:#919487;max-width:350px;margin:29px 0 23px}.hero-divider:before,.hero-divider:after{content:"";flex:1;height:1px;background:var(--line)}.join-form{max-width:350px}.join-form label{font-size:12px;font-weight:600;display:block;margin-bottom:9px}.join-input{display:flex;gap:8px}.join-input input{width:100%;min-width:0;border:1px solid #d7dace;background:#fffef8;padding:12px 16px;font-size:13px;letter-spacing:3px;border-radius:7px;color:var(--green)}.join-input input::placeholder{color:#a0a596;font-size:10px;letter-spacing:1.8px}.hero-copy .inline-error{margin-top:18px;max-width:350px}.lobby-art{height:460px;position:relative;display:grid;place-items:center}.art-orbit{width:390px;height:390px;border:1px solid #dde2cf;border-radius:50%;position:absolute}.art-orbit:after{content:"";position:absolute;inset:27px;border-radius:50%;border:1px dashed #dde2cf}.art-board{width:320px;height:320px;display:grid;grid-template-columns:repeat(6,1fr);padding:12px;border-radius:8px;background:#c0aa84;border:1px solid #baaa8c;transform:rotate(-11deg);box-shadow:0 8px #aa916c,12px 30px 40px #223d2e24;position:relative}.art-board>span{display:grid;place-items:center}.art-light{background:#ede6d2}.art-dark{background:#79906b}.art-board .chess-piece{width:57px;height:57px;margin-top:-16px;filter:drop-shadow(2px 5px 1px #233c2c2b)}.art-note{position:absolute;right:-10px;bottom:34px;display:flex;gap:8px;align-items:center;background:#fffef7;border:1px solid #e3e4d5;border-radius:7px;padding:14px 17px;box-shadow:0 8px 20px #2e3e2310;font-size:10px;transform:rotate(3deg)}.art-spark{position:absolute;color:#b47b3e;font-size:25px}.spark-one{right:14px;top:39px}.spark-two{left:20px;bottom:66px;color:#79906b;font-size:34px}.lobby-features{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr);padding:29px 0;gap:24px}.lobby-features>div{display:flex;align-items:center;gap:15px}.lobby-features>div>svg{color:var(--leaf)}.lobby-features strong{display:block;font-size:11px;font-weight:600;margin-bottom:5px}.lobby-features small{font-size:10px;color:var(--muted)}.lobby-footer{display:flex;justify-content:space-between;color:#8b9383;font-size:8px;letter-spacing:1.5px;padding:23px 0 27px}.bot-picker{max-width:350px;margin-top:26px;padding:18px;border:1px solid var(--line);border-radius:9px;background:#fffef7}.bot-picker h2{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;color:var(--green)}.bot-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:14px 0 10px}.bot-levels button{min-height:44px;border:1px solid var(--line);border-radius:6px;font-size:12px}.bot-levels button[aria-pressed=true]{color:#fffef6;border-color:var(--green);background:var(--green)}.bot-picker p{min-height:34px;margin:8px 0 12px;font-size:11px;line-height:1.6;color:var(--muted)}.bot-match-chip{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border-radius:6px;background:var(--cream);font-size:11px;color:var(--leaf)}@media(max-width:600px){.bot-picker{max-width:none}}.board-shell{padding:12px;background:#465f41;border-radius:6px;box-shadow:0 5px #344c30,0 10px 24px #213e3020}.chess-board{width:100%;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));aspect-ratio:1;overflow:hidden}.board-square{position:relative;padding:0;display:grid;place-items:center;aspect-ratio:1;min-width:0;isolation:isolate}.board-square:disabled{opacity:1;cursor:progress}.board-square.light{background:#eeecd5}.board-square.dark{background:#83a071}.board-square.last-move.light{background:#e1e49d}.board-square.last-move.dark{background:#a1b36a}.board-square.selected{box-shadow:inset 0 0 0 4px #355837;background:#bbc68c}.board-square.in-check{background:radial-gradient(ellipse,#c86645 0,#d8996c 40%,transparent 100%),#b6a77a}.board-square:hover:not(:disabled){box-shadow:inset 0 0 0 3px #345b3e59}.board-square:focus-visible{outline-offset:-4px;z-index:2}.chess-piece{width:89%;height:89%;overflow:visible}.piece-w g{fill:#fff9e8;stroke:#4b5341}.piece-b g{fill:#293b30;stroke:#17291f}.piece-b{color:#c7ceb7}.board-square .chess-piece{filter:drop-shadow(0 2px 1px #2b3e332d)}.rank-label,.file-label{position:absolute;font-size:9px;font-weight:650;line-height:1;pointer-events:none;z-index:2}.rank-label{top:5px;left:5px}.file-label{bottom:4px;right:5px}.light .rank-label,.light .file-label{color:#758e66}.dark .rank-label,.dark .file-label{color:#eff1d8}.move-dot{position:absolute;width:24%;height:24%;background:#20452840;border-radius:50%;pointer-events:none}.move-capture{position:absolute;inset:3px;border:5px solid #20452860;border-radius:50%;pointer-events:none}.board-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-top:3px}.board-footer>span{color:#939585;font-size:10px}.promotion-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:15px}.promotion-piece{border:1px solid var(--line);padding:8px 6px;background:#e8eddd;border-radius:6px}.promotion-piece .chess-piece{width:55px;height:55px}.promotion-piece>span{display:block;text-transform:capitalize;font-size:10px}.promotion-piece:hover{background:#d6e2c6}.game-page{max-width:1080px;padding:0 48px 34px;margin:0 auto}.game-topbar{min-height:82px}.game-topbar .brand{font-size:25px}.game-topbar .brand-mark{width:32px;height:32px;border-radius:9px}.game-top-right{display:flex;align-items:center;gap:25px}.connection-status{display:flex;gap:5px;align-items:center;font-size:9px;color:var(--accent)}.connection-status.is-connected{color:#71915a}.room-code{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.room-code>span{font-size:8px;color:var(--muted);letter-spacing:1px}.room-code button{display:inline-flex;align-items:center;gap:10px;border:1px solid #d4daca;padding:8px 11px;border-radius:6px;background:#f0f1e7}.room-code strong{font-size:12px;letter-spacing:2px;font-weight:600;-webkit-user-select:all;user-select:all}.room-code button svg{color:#839075}.room-code small{font-size:9px;color:var(--leaf)}.game-intro{position:relative;padding:29px 0 24px}.game-intro .eyebrow{font-size:8px}.game-intro h1{font-family:"Instrument Serif",Georgia,serif;font-size:37px;font-weight:400;margin-top:5px}.game-kind{position:absolute;right:0;bottom:31px;display:flex;align-items:center;gap:9px;font-size:8px;letter-spacing:1.1px;color:var(--muted)}.game-kind i{width:3px;height:3px;background:var(--muted);border-radius:50%}.game-layout{display:grid;grid-template-columns:minmax(0,565px) minmax(230px,1fr);gap:35px;align-items:start}.board-column{display:flex;flex-direction:column;gap:16px;min-width:0}.player-card{display:flex;align-items:center;gap:12px;position:relative;min-height:68px;padding:10px 12px;border:1px solid #e0e1d5;background:#f2f2e8;border-radius:8px}.player-turn{background:#edf1e3;border-color:#cbd8bc}.player-visual{flex-shrink:0;width:44px;height:44px;border-radius:8px;overflow:hidden;background:#e3e8d5;position:relative}.player-avatar{width:100%;height:100%;display:grid;place-items:center;font-family:"Instrument Serif",Georgia,serif;font-size:26px;color:var(--leaf)}.player-info{display:flex;flex-direction:column;gap:4px;min-width:0}.player-side{display:flex;align-items:center;gap:5px;font-size:8px;letter-spacing:1px;color:var(--muted)}.color-chip{width:7px;height:7px;border-radius:50%;border:1px solid #96a08b}.color-w{background:#fffcf0}.color-b{background:#293b30;border-color:#293b30}.player-info strong{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-caption{font-size:9px;color:var(--muted)}.turn-indicator{width:7px;height:7px;border-radius:50%;background:#72925f;margin-left:auto;margin-right:3px;flex-shrink:0;box-shadow:0 0 0 4px #91ac7120}.game-sidebar{display:flex;flex-direction:column;gap:22px}.game-status-card{padding:20px;border:1px solid #dce2cf;background:#edf1e3;border-radius:9px}.game-status-card .eyebrow{font-size:8px}.game-status-card h2{font-family:"Instrument Serif",Georgia,serif;font-weight:400;font-size:28px;line-height:1.1;margin:10px 0}.game-status-card p{font-size:11px;color:#7a8670;line-height:1.8}.game-status-card .room-code{margin-top:16px}.game-status-card .room-code button{background:#f9faee}.has-result{background:#efecd8;border-color:#e1d8b7}.move-history{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fbfaf5}.move-history .section-heading{padding:16px;border-bottom:1px solid var(--line)}.move-list{max-height:214px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#c9d1bc transparent}.move-row{display:grid;grid-template-columns:38px 1fr 1fr;padding:10px 16px;font-size:12px}.move-row:nth-child(2n){background:#f0f1e7}.move-row>span{color:#99a08e;font-size:10px}.move-row strong{font-weight:500}.empty-history{padding:34px 18px;text-align:center}.empty-history span{display:block;font-family:"Instrument Serif",Georgia,serif;font-size:19px;color:#8b937b}.empty-history small{display:block;font-size:9px;color:#a5aa9a;margin-top:8px}.action-row{display:flex;gap:8px}.action-row>button{flex:1}.draw-notice{margin-bottom:12px;border:1px solid #dacdaf;padding:12px;border-radius:7px;background:#f5edda;font-size:11px}.draw-notice>div{display:flex;gap:18px;margin-top:5px}.result-actions{display:flex;flex-direction:column;gap:10px}.game-small-print{font-size:9px;text-align:center;color:#a0a692}.bottom-home{margin-top:22px}.player-video .player-visual{width:132px;height:88px;border-radius:6px}.player-visual iframe{display:block;width:100%;height:100%;border:0;background:#193d31}.video-badge{position:absolute;bottom:4px;right:5px;display:flex;align-items:center;gap:3px;pointer-events:none;background:#183b31c9;color:#fafcf1;padding:2px 4px;border-radius:3px;font-size:6px;letter-spacing:.7px}.call-controls{border-top:1px solid var(--line);padding-top:20px}.call-controls>p{font-size:11px;line-height:1.8;color:var(--muted);margin:12px 0 15px}.call-controls>.text-button{display:flex;margin:7px auto 0}.call-controls>.button{font-size:11px;padding:12px}.call-controls>.section-heading h2{font-size:12px}.call-controls>.section-heading h2 svg{color:var(--leaf)}@media(min-width:1500px){.lobby-hero{padding-top:95px;padding-bottom:90px;min-height:720px}.game-page{max-width:1120px}}@media(max-width:1050px){.lobby-page{padding:0 35px}.lobby-hero{gap:20px}.lobby-art{transform:scale(.86);transform-origin:center}.game-page{padding:0 28px 28px}.game-layout{gap:22px;grid-template-columns:minmax(0,1.6fr) minmax(230px,1fr)}}@media(max-width:800px){.lobby-page{padding:0 26px}.lobby-hero{padding:55px 0 45px}.lobby-art{transform:scale(.7);margin-left:-40px;margin-right:-30px}.hero-copy h1{font-size:57px}.lobby-features{gap:15px}.lobby-features>div{gap:10px}.lobby-features small{font-size:9px}.game-top-right{gap:13px}.game-layout{grid-template-columns:minmax(0,1fr) 220px;gap:18px}.game-status-card{padding:16px}.game-status-card h2{font-size:25px}.player-video .player-visual{width:112px;height:75px}.board-shell{padding:8px}}@media(max-width:650px){.topbar{min-height:78px}.brand{font-size:25px}.brand-mark{width:32px;height:32px}.member-chip{max-width:140px;font-size:10px}.lobby-hero{grid-template-columns:1fr;padding:39px 0 25px;gap:5px}.hero-copy{text-align:center}.hero-copy h1{font-size:clamp(48px,11vw,68px);letter-spacing:-.8px;margin:20px 0}.hero-copy>p,.join-form,.hero-divider,.hero-copy .inline-error{margin-left:auto;margin-right:auto}.join-form{text-align:left}.hero-copy>p{max-width:340px;font-size:12px}.hero-hint{font-size:9px}.lobby-art{height:290px;transform:scale(.68);margin:-15px -60px 0}.art-note{bottom:-32px;right:40px}.lobby-features{grid-template-columns:1fr;gap:22px;padding:24px 12px}.lobby-features strong{font-size:12px}.lobby-features small{font-size:11px}.lobby-footer{font-size:7px;letter-spacing:.7px}.game-page{padding:0 16px 25px}.game-topbar{min-height:70px}.game-topbar .brand{font-size:22px}.game-topbar .brand-mark{width:29px;height:29px}.game-top-right .connection-status{display:none}.game-top-right .room-code>span,.game-top-right .room-code small{display:none}.game-top-right .room-code strong{font-size:10px}.game-top-right .room-code button{padding:7px 8px;gap:6px}.game-intro{padding:22px 0 20px}.game-intro h1{font-size:31px}.game-kind{display:none}.game-layout{grid-template-columns:1fr;gap:25px}.board-column{gap:12px}.board-shell{padding:9px}.game-sidebar{gap:19px}.game-status-card h2{font-size:29px}.game-status-card p{font-size:12px}.game-status-card{padding:18px}.player-info strong{font-size:13px}.player-caption{font-size:10px}.player-video .player-visual{width:126px;height:84px}.move-list{max-height:160px}.call-controls>p{font-size:12px}.call-controls>.button{font-size:12px}.rank-label,.file-label{font-size:8px}}@media(max-width:380px){.lobby-page{padding:0 18px}.hero-copy .eyebrow{font-size:8px;letter-spacing:1.1px}.lobby-art{transform:scale(.6);margin-left:-65px;margin-right:-65px}.player-video .player-visual{width:100px;height:75px}.player-info{gap:3px}.player-caption{font-size:9px}.board-footer>span{font-size:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
