:root{color:#17241f;font-synthesis:none;text-rendering:optimizelegibility;--paper:#f5efe3;--paper-strong:#fffaf0;--paper-soft:#ebe2d2;--ink:#17241f;--ink-soft:#58645f;--ink-faint:#8b918c;--jade:#1d5042;--jade-bright:#2d6b59;--jade-pale:#dfe9df;--cinnabar:#a84e3a;--line:#263b3221;--line-strong:#263b3236;--shadow:0 24px 70px #2d271b1f;--shadow-soft:0 10px 30px #2d271b14;background:#f3eddf;font-family:Microsoft YaHei UI,PingFang SC,sans-serif}:root[data-theme=night]{color:#ece8dc;--paper:#121e1a;--paper-strong:#182723;--paper-soft:#1f2c27;--ink:#f1ecdf;--ink-soft:#b7c1ba;--ink-faint:#818e87;--jade:#77ad96;--jade-bright:#8dc2aa;--jade-pale:#263d34;--cinnabar:#d47a64;--line:#e0eae21a;--line-strong:#e0eae22e;--shadow:0 24px 70px #00000047;--shadow-soft:0 10px 30px #00000038;background:#101916}*{box-sizing:border-box}html{background:var(--paper);min-width:320px;min-height:100%}body{background:var(--paper);min-width:320px;min-height:100%;color:var(--ink);margin:0}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible{outline:3px solid color-mix(in srgb, var(--jade) 35%, transparent);outline-offset:2px}.app-shell{min-height:100svh}.content-width{width:min(1180px,100% - 48px);margin-inline:auto}.home-page{background:linear-gradient(90deg, transparent 0 49.9%, var(--line) 50%, transparent 50.1%) center 0 / 100% 1px no-repeat, radial-gradient(circle at 83% 8%, #48715b1c, transparent 28%), radial-gradient(circle at 8% 42%, #b17a4614, transparent 27%), var(--paper);min-height:100svh;position:relative;overflow:hidden}.home-page:after{content:"";pointer-events:none;opacity:.16;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");position:absolute;inset:0}:root[data-theme=night] .home-page:after{mix-blend-mode:soft-light;opacity:.1}.home-page>:not(.landscape){z-index:2;position:relative}.landscape{pointer-events:none;opacity:.2;filter:blur(.2px);position:absolute}.landscape-one{background:radial-gradient(at 50% 100%,#0000 0 46%,#294b3d42 47% 50%,#0000 51%),radial-gradient(at 75% 100%,#0000 0 56%,#294b3d30 57% 60%,#0000 61%);border-radius:50% 0 0;width:540px;height:190px;top:500px;right:-90px;transform:rotate(-5deg)}.landscape-two{background:radial-gradient(at 50% 100%,#0000 0 46%,#76583533 47% 50%,#0000 51%);width:480px;height:150px;top:300px;left:-170px}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:82px;display:flex}.brand{-webkit-user-select:none;user-select:none;align-items:center;gap:11px;display:inline-flex}.brand-mark{border:1px solid var(--jade);border-radius:4px;place-items:center;width:38px;height:38px;display:inline-grid;position:relative;transform:rotate(45deg)}.brand-mark:before,.brand-mark:after{content:"";border-radius:50%;width:15px;height:15px;position:absolute}.brand-mark:before{background:#141817;top:5px;left:5px}.brand-mark:after{background:#eee8db;border:1px solid #c8bca7;bottom:4px;right:4px}.brand-mark i,.brand-mark b{display:none}.brand>span:last-child{flex-direction:column;gap:1px;display:flex}.brand strong{letter-spacing:.15em;font-family:Songti SC,STSong,SimSun,serif;font-size:20px;line-height:1.1}.brand small{letter-spacing:.24em;color:var(--ink-faint);font-size:9px}.brand.compact .brand-mark{width:32px;height:32px}.brand.compact strong{font-size:17px}.header-actions,.room-header-actions{align-items:center;gap:9px;display:flex}.icon-button{background:var(--paper-strong);border:1px solid var(--line);cursor:pointer;border-radius:50%;place-items:center;width:40px;height:40px;transition:all .2s;display:inline-grid;position:relative}.icon-button:after{content:"";position:absolute;inset:-2px}.icon-button:hover{border-color:var(--line-strong);box-shadow:var(--shadow-soft);transform:translateY(-1px)}.icon-button.subtle{background:0 0}.connection-pill{border:1px solid var(--line);height:31px;color:var(--ink-soft);background:color-mix(in srgb, var(--paper-strong) 70%, transparent);border-radius:999px;align-items:center;gap:7px;padding:0 11px;font-size:12px;display:inline-flex}.connection-pill.online svg{color:var(--jade-bright)}.connection-pill.reconnecting svg{color:#a77830;animation:1.2s infinite blink}.connection-pill.offline{color:var(--cinnabar)}.hero{grid-template-columns:1.05fr .95fr;align-items:center;gap:80px;min-height:510px;padding-block:46px 58px;display:grid}.eyebrow{color:var(--jade);letter-spacing:.18em;align-items:center;gap:9px;margin:0 0 17px;font-size:12px;font-weight:600;display:flex}.eyebrow span{background:var(--jade);width:28px;height:1px}.hero h1{letter-spacing:.03em;margin:0;font-family:Songti SC,STSong,SimSun,serif;font-size:clamp(48px,5.5vw,76px);font-weight:600;line-height:1.2}.hero h1 em{color:var(--jade);font-style:normal}.hero-lead{max-width:560px;color:var(--ink-soft);letter-spacing:.02em;margin:26px 0 31px;font-size:16px;line-height:1.9}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.primary-button,.secondary-button{cursor:pointer;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:9px;min-height:48px;padding:0 21px;font-weight:600;transition:all .2s;display:inline-flex}.primary-button{color:#f8f3e8;background:var(--jade);box-shadow:0 10px 22px #1b493c2e}:root[data-theme=night] .primary-button{color:#102019;background:var(--jade-bright)}.primary-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 14px 26px #1b493c40}.primary-button:disabled{opacity:.65;cursor:wait}.secondary-button{background:var(--paper-strong);border-color:var(--line-strong)}.secondary-button:hover{border-color:var(--jade);color:var(--jade)}.trust-line{color:var(--ink-faint);flex-wrap:wrap;gap:22px;margin-top:24px;font-size:12px;display:flex}.trust-line span{align-items:center;gap:5px;display:flex}.trust-line svg{color:var(--jade)}.invite-callout{width:min(100%,520px);color:var(--jade);background:var(--jade-pale);border:1px solid color-mix(in srgb, var(--jade) 20%, transparent);cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 18px;padding:12px 14px;display:flex}.invite-callout span{align-items:center;gap:8px;display:flex}.invite-callout strong{letter-spacing:.1em}.hero-visual{aspect-ratio:1;justify-self:end;width:min(100%,490px);padding:29px;position:relative}.hero-visual:before{content:"";border:1px solid var(--line-strong);border-radius:50%;position:absolute;inset:1% 3% 4% 0}.hero-visual:after{content:"";filter:blur(30px);background:#3a5e4d14;border-radius:50%;width:72%;height:72%;position:absolute;top:15%;left:14%}.hero-visual>p{writing-mode:vertical-rl;color:var(--ink-faint);letter-spacing:.35em;margin:0;font-family:Songti SC,STSong,SimSun,serif;font-size:13px;position:absolute;top:88px;right:-16px}.display-board{z-index:2;background:linear-gradient(135deg,#e9c989,#d6a960 58%,#bd8243);border-radius:18px;width:85%;height:85%;margin:7.5%;position:relative;overflow:hidden;transform:rotate(-2.3deg);box-shadow:0 28px 55px #4631183d,inset 0 0 40px #73441929}.display-board:after{content:"";opacity:.18;background:repeating-linear-gradient(3deg,#0000 0 12px,#5c341733 13px 14px,#0000 15px 30px);position:absolute;inset:0}.display-board i{z-index:1;background:#462a17a8;display:block;position:absolute}.display-board i.h{height:1px;left:8%;right:8%}.display-board i.v{width:1px;top:8%;bottom:8%}.display-stone{z-index:3;aspect-ratio:1;border-radius:50%;width:7.3%;position:absolute;transform:translate(-50%,-50%);box-shadow:0 5px 6px #39221259}.display-stone.black{background:radial-gradient(circle at 34% 27%,#56605e,#141918 42%,#050706)}.display-stone.white{background:radial-gradient(circle at 34% 27%,#fffdf6,#eee6d7 62%,#b8ad9b)}.seal{z-index:4;color:#f3e8d8;background:var(--cinnabar);border-radius:2px;place-items:center;width:44px;height:58px;font-family:Songti SC,STSong,SimSun,serif;line-height:1.25;display:grid;position:absolute;bottom:34px;right:9px;box-shadow:0 5px 15px #8030232e}.game-section{border-top:1px solid var(--line);padding:65px 0 70px}.section-heading{justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:30px;display:flex}.section-heading h2{margin:0;font:600 30px/1.3 Songti SC,STSong,SimSun,serif}.section-heading>p{max-width:390px;color:var(--ink-soft);margin:0 0 2px;font-size:13px;line-height:1.8}.game-grid{border:1px solid var(--line-strong);background:var(--paper-strong);box-shadow:var(--shadow-soft);border-radius:12px;grid-template-columns:repeat(4,1fr);display:grid;overflow:hidden}.game-card{border:0;border-right:1px solid var(--line);text-align:left;cursor:default;background:0 0;flex-direction:column;align-items:flex-start;min-height:275px;padding:27px 25px;display:flex;position:relative}.game-card:last-child{border-right:0}.game-card.active{cursor:pointer}.game-card.active:after{content:"";opacity:0;background:linear-gradient(150deg, var(--jade-pale), transparent 70%);transition:opacity .25s;position:absolute;inset:0}.game-card.active:hover:after{opacity:1}.game-card>*{z-index:1;position:relative}.card-number{color:var(--ink-faint);letter-spacing:.1em;font:500 10px/1 monospace}.game-icon{width:54px;height:54px;color:var(--jade);background:var(--jade-pale);border-radius:50%;place-items:center;margin:39px 0 23px;display:grid}.game-name{font:600 22px/1.3 Songti SC,STSong,SimSun,serif}.game-note{color:var(--ink-faint);margin-top:8px;font-size:12px}.game-status{color:var(--ink-faint);align-items:center;gap:8px;margin-top:auto;font-size:12px;display:inline-flex}.game-card.active .game-status{color:var(--jade);font-weight:600}.game-card:not(.active) .game-status{color:var(--ink-soft);background:var(--paper-soft);border-radius:999px;padding:4px 8px}.game-card:disabled{color:inherit;opacity:.64}.lower-section{grid-template-columns:1.3fr .7fr;gap:18px;padding-bottom:70px;display:grid}.recent-panel,.install-panel{border:1px solid var(--line);background:color-mix(in srgb, var(--paper-strong) 75%, transparent);border-radius:10px}.recent-panel{padding:22px}.mini-heading{color:var(--jade);align-items:center;gap:9px;margin-bottom:12px;display:flex}.mini-heading h3{color:var(--ink);margin:0;font:600 16px Songti SC,STSong,SimSun,serif}.recent-list{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.recent-list button{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;padding:12px 10px;display:flex}.recent-list button:hover{background:var(--paper-soft)}.recent-list button>span:nth-child(2){flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.recent-list strong{white-space:nowrap;font-size:12px}.recent-list small{color:var(--ink-faint);white-space:nowrap;font-size:10px}.recent-empty{min-height:50px;color:var(--ink-soft);align-items:center;gap:11px;display:flex}.recent-empty>span:last-child{flex-direction:column;gap:4px;display:flex}.recent-empty strong{font-size:12px}.recent-empty small{color:var(--ink-faint);font-size:10px}.recent-stone{background:radial-gradient(circle at 35% 28%,#59605e,#0d1110 50%);border-radius:50%;flex:none;width:22px;height:22px;box-shadow:0 3px 5px #00000038}.install-panel{cursor:pointer;text-align:left;border-style:dashed;align-items:center;gap:13px;padding:20px;display:flex}.install-panel.passive{cursor:default}.install-panel>span:nth-child(2){flex-direction:column;flex:1;gap:5px;display:flex}.install-panel strong{font:600 15px Songti SC,STSong,SimSun,serif}.install-panel small{color:var(--ink-faint);line-height:1.5}.install-icon{width:44px;height:44px;color:var(--jade);background:var(--jade-pale);border-radius:10px;place-items:center;display:grid}.site-footer{border-top:1px solid var(--line);min-height:72px;color:var(--ink-faint);justify-content:space-between;align-items:center;font-size:11px;display:flex}.room-page{background:radial-gradient(circle at 48% 20%, color-mix(in srgb, var(--jade-pale) 50%, transparent), transparent 37%), var(--paper);flex-direction:column;height:100svh;display:flex;overflow:hidden}.room-header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--paper-strong) 87%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:5;flex:0 0 66px;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 24px;display:grid}.room-header-left{align-items:center;gap:12px;display:flex}.room-header-actions{justify-content:flex-end}.room-exit-button{border:1px solid var(--line);height:38px;color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 11px 0 7px;font-size:11px;display:inline-flex}.room-exit-button:hover{color:var(--cinnabar);border-color:color-mix(in srgb, var(--cinnabar) 45%, var(--line));background:color-mix(in srgb, var(--cinnabar) 5%, transparent)}.room-code{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:8px;height:34px;padding:0 11px;display:inline-flex;position:relative}.room-code:after{content:"";position:absolute;inset:-5px -3px}.room-code span{color:var(--ink-faint);font-size:11px}.room-code strong{letter-spacing:.16em;font-size:13px}.room-code svg{color:var(--jade)}.connection-banner{z-index:9;color:#fff;box-shadow:var(--shadow);background:#78552d;border-radius:999px;align-items:center;gap:8px;padding:8px 13px;font-size:11px;display:flex;position:absolute;top:73px;left:50%;transform:translate(-50%)}.pulse-dot{background:#fff;border-radius:50%;width:7px;height:7px;animation:1s infinite blink}.game-layout{flex:1;grid-template-columns:minmax(0,1fr) 318px;gap:clamp(18px,3vw,44px);min-height:0;padding:clamp(16px,2.5vh,28px) max(24px,50vw - 590px);display:grid}.board-column{flex-direction:column;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex}.board-stage{flex:1;place-items:center;width:100%;min-height:0;display:grid;position:relative}.board-frame{aspect-ratio:1;background:#73502f;border-radius:23px;width:min(100%,100svh - 170px);max-width:850px;padding:clamp(5px,.8vw,10px);position:relative;box-shadow:0 25px 65px #2c1d0f38,0 3px #5d4029}.go-board{cursor:crosshair;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:17px;width:100%;height:100%;display:block}.go-board.is-disabled{cursor:default}.stone{transform-origin:50%;animation:.19s cubic-bezier(.2,.8,.3,1.25) stone-drop}.stone-preview{transform-box:fill-box;transform-origin:50%;animation:.14s ease-out preview-in}.gomoku-winning-line{stroke:color-mix(in srgb, var(--cinnabar) 84%, #f4d8b0);stroke-width:11px;opacity:.86;filter:drop-shadow(0 2px 4px #511e1640)}.gomoku-winning-ring{fill:none;stroke:color-mix(in srgb, var(--cinnabar) 88%, #f7e4c4);stroke-width:4px;opacity:.92;animation:1.4s ease-in-out infinite winning-pulse}.placement-hint{z-index:3;pointer-events:none;color:#fffaf0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;background:#142d24d1;border:1px solid #ffffff38;border-radius:999px;padding:4px 9px;font-size:9px;position:absolute;top:1%;left:50%;transform:translate(-50%);box-shadow:0 5px 15px #121a1633}.result-overlay{z-index:4;text-align:center;border:1px solid var(--line-strong);background:color-mix(in srgb, var(--paper-strong) 94%, transparent);-webkit-backdrop-filter:blur(13px);backdrop-filter:blur(13px);width:min(330px,78%);box-shadow:var(--shadow);border-radius:12px;padding:25px;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.result-seal{color:#f7eee1;background:var(--cinnabar);border-radius:3px;place-items:center;width:38px;height:38px;margin:0 auto 12px;font:600 19px Songti SC,STSong,SimSun,serif;display:grid}.result-overlay h2{margin:0;font:600 21px Songti SC,STSong,SimSun,serif}.result-overlay p{color:var(--ink-soft);margin:8px 0 17px;font-size:12px}.result-actions{justify-content:center;gap:8px;display:flex}.compact-button{min-height:41px}.game-sidebar{overscroll-behavior:contain;scrollbar-width:thin;grid-template-rows:auto auto auto minmax(110px,1fr) auto;gap:12px;min-height:0;padding:2px 2px 2px 0;display:grid;overflow-y:auto}.players-panel,.turn-panel,.game-facts{border:1px solid var(--line);background:color-mix(in srgb, var(--paper-strong) 75%, transparent);border-radius:10px}.players-panel{padding:7px}.player-card{border-radius:7px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:84px;padding:12px;display:grid;position:relative}.player-card.without-captures{grid-template-columns:auto minmax(0,1fr)}.player-card.active{background:var(--jade-pale)}.player-stone{border-radius:50%;width:39px;height:39px;box-shadow:0 5px 8px #18171140}.player-stone.black,.mini-stone.black{background:radial-gradient(circle at 35% 28%,#56615e,#131817 48%,#050706)}.player-stone.white,.mini-stone.white{background:radial-gradient(circle at 35% 28%,#fffefa,#e7dfcf 60%,#bdb2a1);border:1px solid #c5baa8}.player-card>div{flex-direction:column;gap:2px;min-width:0;display:flex}.seat-name{color:var(--ink-faint);font-size:10px}.seat-name i{color:var(--jade);background:color-mix(in srgb, var(--jade) 12%, transparent);border-radius:2px;margin-left:5px;padding:1px 4px;font-style:normal}.player-card strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.player-card small{color:var(--ink-faint);font-size:10px}.player-card small.online{color:var(--jade)}.capture-count{color:var(--ink-faint);align-self:flex-start;margin-top:4px;font-size:10px}.versus-line{height:28px;color:var(--ink-faint);grid-template-columns:auto 1fr auto;align-items:center;gap:9px;padding:0 12px;font-size:9px;display:grid}.versus-line i{background:var(--line);height:1px}.versus-line strong{font-weight:500}.turn-panel{align-items:center;gap:12px;min-height:69px;padding:13px 15px;display:flex}.turn-panel>div,.mobile-status>div{flex-direction:column;gap:3px;display:flex}.turn-panel strong,.mobile-status strong{font:600 14px Songti SC,STSong,SimSun,serif}.turn-panel small,.mobile-status small{color:var(--ink-faint);font-size:10px}.turn-stone{border-radius:50%;flex:none;width:26px;height:26px;box-shadow:0 3px 5px #0000002e}.turn-stone.black{background:#151a18}.turn-stone.white{background:#f2ecdf;border:1px solid #c7bdac}.turn-stone.waiting{background:var(--jade-pale);border:1px dashed var(--jade);box-shadow:none}.turn-stone.ready{background:var(--jade-bright);border:4px solid var(--jade-pale);box-shadow:0 0 0 1px var(--jade)}.turn-stone.finished{background:var(--cinnabar);box-shadow:none;border-radius:3px}.game-facts{grid-template-columns:repeat(3,1fr);padding:12px 5px;display:grid}.game-facts>div{border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:4px;display:flex}.game-facts>div:last-child{border:0}.game-facts span{color:var(--ink-faint);font-size:9px}.game-facts strong{font-size:10px;font-weight:600}.invite-side-button{text-align:left;border:1px dashed var(--line-strong);cursor:pointer;background:0 0;border-radius:9px;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;padding:14px;display:grid}.invite-side-button>svg{color:var(--jade)}.invite-side-button span{flex-direction:column;gap:3px;display:flex}.invite-side-button strong{font-size:12px}.invite-side-button small{color:var(--ink-faint);font-size:9px}.mobile-chat-button{display:none;position:relative}.chat-unread-dot{border:1px solid var(--paper-strong);background:var(--cinnabar);border-radius:50%;width:7px;height:7px;position:absolute;top:6px;right:6px}.chat-panel{border:1px solid var(--line);background:color-mix(in srgb, var(--paper-strong) 78%, transparent);border-radius:10px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.chat-heading{border-bottom:1px solid var(--line);flex:0 0 39px;justify-content:space-between;align-items:center;gap:10px;padding:0 11px;display:flex}.chat-heading>span{align-items:center;gap:7px;display:flex}.chat-heading svg{color:var(--jade)}.chat-heading strong{font-size:11px}.chat-heading small{color:var(--ink-faint);font-size:8px}.chat-messages{overscroll-behavior:contain;scrollbar-width:thin;flex-direction:column;flex:auto;gap:8px;min-height:0;padding:10px;display:flex;overflow-y:auto}.chat-empty{min-height:100%;color:var(--ink-faint);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.chat-empty svg{color:var(--jade);opacity:.65;margin-bottom:3px}.chat-empty strong{color:var(--ink-soft);font-size:11px}.chat-empty small{font-size:8px}.chat-message{align-self:flex-start;max-width:88%}.chat-message.mine{align-self:flex-end}.chat-message>div{align-items:baseline;gap:6px;margin:0 4px 3px;display:flex}.chat-message.mine>div{justify-content:flex-end}.chat-message strong{color:var(--ink-soft);font-size:8px;font-weight:600}.chat-message time{color:var(--ink-faint);font-size:7px}.chat-message p{color:var(--ink);background:var(--paper-soft);overflow-wrap:anywhere;white-space:pre-wrap;border-radius:3px 9px 9px;margin:0;padding:7px 9px;font-size:10px;line-height:1.55}.chat-message.mine p{background:var(--jade-pale);border-radius:9px 3px 9px 9px}.chat-composer{border-top:1px solid var(--line);flex:none;grid-template-columns:minmax(0,1fr) 35px;gap:6px;padding:8px;display:grid}.chat-composer textarea{resize:none;border:1px solid var(--line);width:100%;height:35px;min-height:35px;max-height:70px;color:var(--ink);background:var(--paper);font:inherit;border-radius:6px;outline:0;padding:8px 9px;font-size:10px;line-height:1.6}.chat-composer textarea:focus{border-color:var(--jade);box-shadow:0 0 0 2px color-mix(in srgb, var(--jade) 12%, transparent)}.chat-composer textarea::placeholder{color:var(--ink-faint)}.chat-composer button{color:#f8f3e8;background:var(--jade);cursor:pointer;border:0;border-radius:6px;align-self:end;place-items:center;width:35px;height:35px;display:grid}.chat-composer button:disabled{opacity:.42;cursor:not-allowed}.chat-composer .spinner{width:15px;height:15px}.action-bar{gap:8px;width:min(440px,100%);margin-top:10px;display:flex}.action-bar.no-pass{width:min(380px,100%)}.action-bar button{border:1px solid var(--line);background:color-mix(in srgb, var(--paper-strong) 75%, transparent);cursor:pointer;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:7px;min-height:45px;font-size:12px;display:inline-flex}.action-bar button:hover:not(:disabled){color:var(--jade);border-color:var(--jade)}.action-bar button:disabled{opacity:.4;cursor:not-allowed}.action-bar .pass-action{color:#f8f3e8;background:var(--jade);border-color:var(--jade)}:root[data-theme=night] .action-bar .pass-action{color:#102019}.action-bar .pass-action:disabled{opacity:.75;color:var(--ink-faint);background:var(--paper-soft);border-color:var(--line)}.ready-bar button.ready-action{color:#f8f3e8;background:var(--jade);border-color:var(--jade);font-weight:600}.ready-bar button.cancel-ready-action{color:var(--jade);border-color:var(--jade);background:var(--jade-pale);font-weight:600}.ready-bar button:only-child{flex:0 250px}.mobile-player-strip,.mobile-status{display:none}.undo-banner{z-index:15;border:1px solid var(--line-strong);background:var(--paper-strong);width:min(540px,100% - 32px);min-height:58px;box-shadow:var(--shadow);border-radius:10px;justify-content:space-between;align-items:center;gap:14px;padding:10px 12px 10px 17px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.undo-banner>span,.undo-banner>div{align-items:center;gap:9px;display:flex}.undo-banner>span svg{color:var(--jade)}.undo-banner button{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:5px;height:36px;display:flex}.undo-banner button:disabled{opacity:.45;cursor:not-allowed}.undo-banner button.accept{color:#fff;background:var(--jade);border-color:var(--jade)}.modal-backdrop{z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0b16127a;place-items:center;padding:20px;animation:.16s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{border:1px solid var(--line-strong);background:var(--paper-strong);border-radius:13px;width:min(470px,100%);max-height:calc(100svh - 32px);padding:25px;animation:.2s ease-out modal-in;overflow:auto;box-shadow:0 30px 90px #08120e4d}.modal.wide{width:min(780px,100%)}.modal-top{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:23px;display:flex}.modal-top h2{margin:0;font:600 23px/1.35 Songti SC,STSong,SimSun,serif}.modal-top p{color:var(--ink-soft);margin:7px 0 0;font-size:12px;line-height:1.7}.field{margin:0 0 18px;display:block}.field>span,.choice-field legend{color:var(--ink-soft);margin-bottom:8px;font-size:11px;font-weight:600;display:block}.input-wrap{border:1px solid var(--line-strong);background:var(--paper);border-radius:7px;align-items:center;gap:10px;height:46px;padding:0 13px;display:flex}.input-wrap:focus-within{border-color:var(--jade);box-shadow:0 0 0 3px color-mix(in srgb, var(--jade) 11%, transparent)}.input-wrap svg{color:var(--ink-faint)}.input-wrap input{width:100%;color:var(--ink);background:0 0;border:0;outline:0}.input-wrap input::placeholder{color:var(--ink-faint)}.code-input input{letter-spacing:.22em;text-transform:uppercase;font-family:monospace;font-size:19px;font-weight:700}.choice-field{border:0;margin:0 0 18px;padding:0}.segmented{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.segmented button{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:62px;display:flex}.segmented button.selected,.seat-options button.selected{color:var(--jade);border-color:var(--jade);background:var(--jade-pale)}.segmented strong{font-size:13px}.segmented small{color:var(--ink-faint);font-size:9px}.seat-options{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.seat-options button{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:7px;height:41px;font-size:11px;display:flex}.game-kind-options{grid-template-columns:repeat(2,1fr);gap:7px;display:grid}.game-kind-options button{border:1px solid var(--line);height:43px;color:var(--ink-soft);background:var(--paper);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:8px;font-size:12px;font-weight:600;display:inline-flex}.game-kind-options button svg{color:var(--ink-faint)}.game-kind-options button.selected{color:var(--jade);border-color:var(--jade);background:var(--jade-pale);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--jade) 8%, transparent)}.game-kind-options button.selected svg{color:var(--jade)}.gomoku-rule-summary{border:1px solid color-mix(in srgb, var(--jade) 25%, var(--line));min-height:64px;color:var(--jade);background:color-mix(in srgb, var(--jade-pale) 72%, var(--paper));border-radius:8px;align-items:center;gap:12px;margin:0 0 18px;padding:11px 13px;display:flex}.gomoku-rule-summary>svg{flex:none}.gomoku-rule-summary>span{flex-direction:column;gap:4px;min-width:0;display:flex}.gomoku-rule-summary strong{color:var(--ink);font-size:12px}.gomoku-rule-summary small{color:var(--ink-soft);font-size:10px;line-height:1.5}.mini-stone{border-radius:50%;width:17px;height:17px;display:inline-block}.modal-submit{width:100%;margin-top:4px}.leave-note{color:var(--cinnabar);background:color-mix(in srgb, var(--cinnabar) 7%, var(--paper));border-radius:8px;align-items:flex-start;gap:12px;padding:14px;display:flex}.leave-note>span{flex-direction:column;gap:4px;display:flex}.leave-note strong{color:var(--ink);font-size:12px}.leave-note small{color:var(--ink-soft);font-size:10px;line-height:1.65}.leave-dialog-actions{grid-template-columns:1fr 1fr;gap:9px;margin-top:18px;display:grid}.leave-dialog-actions>button{min-height:44px}.danger-button{border:1px solid var(--cinnabar);color:#fff8f2;background:var(--cinnabar);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:600;display:inline-flex}.danger-button:disabled{opacity:.55;cursor:wait}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:17px;height:17px;animation:.7s linear infinite spin}.privacy-note{color:var(--jade);background:var(--jade-pale);border-radius:7px;align-items:center;gap:10px;margin:3px 0 15px;padding:11px;display:flex}.privacy-note>span{flex-direction:column;gap:2px;display:flex}.privacy-note strong{font-size:11px}.privacy-note small{color:var(--ink-soft);font-size:9px}.qr-card{text-align:center;border:1px solid var(--line);background:#f8f1e4;border-radius:10px;width:230px;margin:0 auto 18px;padding:18px 18px 12px}.qr-card>div{color:#173a31;justify-content:center;align-items:baseline;gap:8px;margin-top:8px;display:flex}.qr-card small{font-size:10px}.qr-card strong{letter-spacing:.16em;font-family:monospace;font-size:17px}.invite-link{border:1px solid var(--line);background:var(--paper);border-radius:7px;align-items:center;gap:9px;height:42px;padding-left:12px;display:flex}.invite-link>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink-soft);flex:1;font-size:10px;overflow:hidden}.invite-link button{border:0;border-left:1px solid var(--line);cursor:pointer;background:0 0;align-self:stretch;place-items:center;width:42px;display:grid}.modal-footnote{text-align:center;color:var(--ink-faint);margin:11px 0 0;font-size:9px}.replay-layout{grid-template-columns:minmax(0,1fr) 220px;align-items:center;gap:24px;display:grid}.replay-board{width:100%;max-width:450px}.replay-board .board-frame{border-radius:13px;width:100%;padding:4px}.replay-board .go-board{border-radius:9px}.replay-summary{flex-direction:column;align-items:flex-start;min-width:0;display:flex}.replay-step{color:var(--jade);letter-spacing:.08em;font:700 12px monospace}.replay-summary h3{margin:9px 0 18px;font:600 18px/1.5 Songti SC,STSong,SimSun,serif}.replay-captures{border-block:1px solid var(--line);gap:12px;width:100%;padding-block:11px;display:flex}.replay-captures span{color:var(--ink-soft);align-items:center;gap:6px;font-size:10px;display:flex}.replay-captures .mini-stone{width:14px;height:14px}.replay-game-facts svg{color:var(--jade)}.replay-summary p{min-height:42px;color:var(--ink-faint);margin:14px 0;font-size:10px;line-height:1.7}.replay-download{width:100%;min-height:40px;padding-inline:10px;font-size:11px}.replay-timeline{border-top:1px solid var(--line);margin-top:20px;padding-top:15px}.replay-timeline>input{width:100%;height:4px;accent-color:var(--jade);cursor:pointer}.replay-timeline nav{justify-content:center;gap:7px;margin-top:12px;display:flex}.replay-timeline button{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:6px;place-items:center;width:36px;height:34px;display:grid}.replay-timeline button:hover{color:var(--jade);border-color:var(--jade)}.replay-timeline button.play-button{color:#f8f3e8;background:var(--jade);border-color:var(--jade)}.setting-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;min-height:67px;display:flex}.setting-row:last-child{border-bottom:0}.setting-row>span{align-items:center;gap:11px;display:flex}.setting-row>span>svg{color:var(--jade)}.setting-row>span>span{flex-direction:column;gap:3px;display:flex}.setting-row strong{font-size:12px}.setting-row small{color:var(--ink-faint);font-size:9px}.tiny-segment{background:var(--paper);border-radius:6px;padding:3px;display:flex}.tiny-segment button{cursor:pointer;background:0 0;border:0;border-radius:4px;padding:5px 9px;font-size:10px}.tiny-segment button.selected{color:var(--jade);background:var(--paper-strong);box-shadow:0 2px 7px #00000014}.switch{background:var(--paper-soft);cursor:pointer;border:0;border-radius:99px;width:43px;height:24px;padding:3px}.switch i{background:var(--paper-strong);border-radius:50%;width:18px;height:18px;transition:transform .2s;display:block;box-shadow:0 2px 5px #0000002e}.switch.on{background:var(--jade)}.switch.on i{transform:translate(19px)}.toast{z-index:60;left:50%;bottom:max(24px, env(safe-area-inset-bottom));color:#f7f2e8;max-width:calc(100% - 32px);box-shadow:var(--shadow);background:#172a23;border-radius:8px;padding:10px 16px;font-size:12px;animation:.2s ease-out toast-in;position:fixed;transform:translate(-50%)}@keyframes stone-drop{0%{opacity:.2;transform:scale(1.55)translateY(-6px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes preview-in{0%{opacity:0;transform-origin:50%;transform:scale(.72)}}@keyframes winning-pulse{50%{opacity:.55;stroke-width:6px}}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)scale(.98)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,7px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{50%{opacity:.35}}@media (min-width:761px){.board-frame{width:min(100%,100svh - 170px)}}@media (min-width:761px) and (max-height:800px){.game-sidebar{gap:8px}.players-panel{padding:5px}.player-card{min-height:69px;padding:8px 10px}.player-stone{width:34px;height:34px}.versus-line{height:23px}.turn-panel{min-height:57px;padding:9px 12px}.game-facts{padding-block:9px}.invite-side-button{padding:10px 12px}}@media (max-width:980px){.hero{grid-template-columns:1.1fr .9fr;gap:32px}.game-grid{grid-template-columns:repeat(2,1fr)}.game-card{border-bottom:1px solid var(--line);min-height:225px}.game-card:nth-child(2){border-right:0}.game-card:nth-child(3),.game-card:nth-child(4){border-bottom:0}.game-icon{margin:24px 0 18px}.recent-list{grid-template-columns:1fr}.lower-section{grid-template-columns:1fr 1fr}.game-layout{grid-template-columns:minmax(0,1fr) 280px;gap:18px;padding-inline:18px}}@media (max-width:720px){.content-width{width:min(100% - 32px,600px)}.site-header{height:68px}.site-header .connection-pill{justify-content:center;width:31px;padding:0;font-size:0}.hero{min-height:auto;padding:55px 0 66px;display:block}.hero-copy{z-index:3;position:relative}.hero h1{font-size:clamp(43px,13vw,62px)}.hero-lead{margin:22px 0 27px;font-size:14px}.hero-visual{width:310px;margin:50px auto 0}.trust-line{gap:12px 18px}.section-heading{display:block}.section-heading>p{margin-top:13px}.game-section{padding:60px 0 50px}.game-grid{grid-template-columns:1fr 1fr}.game-card{min-height:198px;padding:20px 17px}.game-icon{width:45px;height:45px;margin:20px 0 14px}.game-name{font-size:18px}.game-note{display:none}.lower-section{grid-template-columns:1fr;padding-bottom:50px}.recent-list{grid-template-columns:1fr}.site-footer{min-height:60px}}@media (max-width:760px){.room-header{flex:0 0 57px;padding:0 8px}.room-header-left{gap:3px}.room-exit-button{border-radius:50%;justify-content:center;width:38px;padding:0}.room-exit-button span,.room-header .brand-mark,.room-header .brand small{display:none}.room-header .brand strong{font-size:15px}.room-header .connection-pill{justify-content:center;width:30px;padding:0;font-size:0}.room-header-actions{gap:2px}.mobile-chat-button{display:grid}.room-code{gap:5px;height:31px;padding:0 8px}.room-code span{display:none}.room-code strong{font-size:12px}.game-layout{flex:1;min-height:0;padding:0;display:block}.game-sidebar{display:none}.board-column{height:calc(100svh - 57px);padding:5px 8px max(8px, env(safe-area-inset-bottom));justify-content:flex-start}.mobile-player-strip{flex:0 0 49px;justify-content:space-between;align-items:center;gap:7px;width:100%;display:flex}.player-chip{align-items:center;gap:6px;min-width:0;display:flex}.player-chip:last-child{text-align:right;flex-direction:row-reverse}.player-chip>span:last-child{flex-direction:column;gap:1px;min-width:0;display:flex}.player-chip strong{text-overflow:ellipsis;white-space:nowrap;max-width:105px;font-size:10px;overflow:hidden}.player-chip small{color:var(--ink-faint);font-size:8px}.player-chip .mini-stone{width:23px;height:23px;box-shadow:0 3px 6px #00000029}.player-chip.active strong{color:var(--jade)}.move-count{color:var(--ink-faint);flex:none;font-size:9px}.board-stage{flex:auto;width:100%;min-height:0}.board-frame{border-radius:13px;width:min(100vw - 16px,100svh - 188px);max-height:100%;padding:4px;box-shadow:0 13px 30px #2c1d0f33,0 2px #5d4029}.placement-hint{display:none}.go-board{border-radius:10px}.mobile-status{text-align:center;flex:0 0 43px;justify-content:center;align-items:center;gap:8px;width:100%;display:flex;position:relative}.mobile-status.has-ready-action{text-align:left;justify-content:flex-start;padding:0 104px 0 8px}.mobile-status .turn-stone{width:21px;height:21px}.mobile-status strong{font-size:11px}.mobile-status small{font-size:8px}.mobile-ready-button{border:1px solid var(--jade);color:#f8f3e8;background:var(--jade);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:4px;height:35px;padding:0 10px;font-size:10px;font-weight:600;display:inline-flex;position:absolute;top:4px;right:0}.mobile-ready-button.is-ready{color:var(--jade);background:var(--jade-pale)}.mobile-ready-button:disabled{opacity:.55}.desktop-ready-bar{display:none}.action-bar{flex:0 0 50px;gap:5px;width:100%;margin:0}.action-bar.no-pass{width:100%}.action-bar button{border-radius:6px;flex-direction:column;gap:2px;min-height:45px;font-size:9px}.action-bar svg{width:17px;height:17px}.ready-bar button:only-child{flex-direction:row;flex-basis:100%;font-size:12px}.connection-banner{white-space:nowrap;max-width:calc(100% - 20px);top:62px}.result-overlay{padding:18px}.result-overlay p{margin:6px 0 13px}.undo-banner{bottom:calc(60px + env(safe-area-inset-bottom));min-height:55px}.undo-banner>span strong{font-size:11px}.modal-backdrop{align-items:end;padding:0}.modal{width:100%;max-height:calc(100svh - 24px);padding:22px 18px max(22px, env(safe-area-inset-bottom));border-radius:16px 16px 0 0;animation-name:sheet-in}.game-kind-options button{height:41px}.gomoku-rule-summary{min-height:58px;padding-block:9px}.modal.wide{height:100svh;max-height:100svh;padding:16px 18px max(16px, env(safe-area-inset-bottom));background:var(--paper-strong);border-radius:0;flex-direction:column;display:flex}.modal.wide .modal-top{flex:none;margin-bottom:10px}.modal.chat-modal{height:min(72dvh,620px);max-height:min(72dvh,620px);padding-bottom:max(12px, env(safe-area-inset-bottom));flex-direction:column;display:flex}.chat-modal .modal-top{flex:none;margin-bottom:10px}.chat-panel.mobile{border-radius:9px;flex:auto;min-height:0}.chat-panel.mobile .chat-messages{padding:12px 10px}.chat-panel.mobile .chat-message p{padding:9px 11px;font-size:13px}.chat-panel.mobile .chat-message strong{font-size:10px}.chat-panel.mobile .chat-message time{font-size:9px}.chat-panel.mobile .chat-composer{border-top:0;grid-template-columns:minmax(0,1fr) 43px;padding:9px 0 0}.chat-panel.mobile .chat-composer textarea{height:43px;min-height:43px;padding:8px 11px;font-size:16px}.chat-panel.mobile .chat-composer button{width:43px;height:43px}.replay-layout{flex-direction:column;flex:auto;gap:9px;min-height:0;display:flex}.replay-board{width:min(100%,100svh - 318px);margin-inline:auto}.replay-summary{grid-template-columns:auto 1fr auto;align-items:center;gap:7px 12px;width:100%;display:grid}.replay-step{grid-row:1}.replay-summary h3{grid-column:2/4;margin:0;font-size:13px}.replay-captures{grid-column:1/3;width:auto;padding-block:6px;display:flex}.replay-summary p{display:none}.replay-download{grid-column:3;width:auto;min-height:34px;padding-inline:9px}.replay-timeline{margin-top:13px;padding-top:10px}}:root[data-theme=night] .room-header .icon-button,:root[data-theme=night] .room-header .room-code,:root[data-theme=night] .room-header .room-exit-button{color:#e3eae5;border-color:#e3eae533}:root[data-theme=night] .ready-bar button.ready-action,:root[data-theme=night] .mobile-ready-button:not(.is-ready){color:#102019;background:var(--jade-bright);border-color:var(--jade-bright)}:root[data-theme=night] .player-chip .mini-stone.black{outline-offset:1px;outline:2px solid #ebf1ed52}:root[data-theme=night] .player-chip small,:root[data-theme=night] .mobile-status small{color:#aab8b0}@media (max-height:650px) and (max-width:760px){.mobile-player-strip{flex-basis:40px}.mobile-status{flex-basis:36px}.mobile-ready-button{height:32px;top:2px}.mobile-status small{display:none}.action-bar{flex-basis:44px}.action-bar button{flex-direction:row;min-height:41px}.board-frame{width:min(100vw - 16px,100svh - 147px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@keyframes sheet-in{0%{opacity:0;transform:translateY(22px)}}
