:root{--ink:#334341;--muted:#697b7d;--table-blue:#9eb9ca;--paper:#f3efd9;--paper-warm:#fff5d6;--line:#4f605d5c;--line-strong:#3c525085;--mint:#83d9ca;--mint-edge:#2ea8a5;--sun:#f5c95b;--sun-edge:#db9d2e;--coral:#ee6e55;--coral-edge:#bf443a;color:var(--ink);background:var(--table-blue);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-height:100vh;padding:var(--discord-safe-area-inset-top,env(safe-area-inset-top,0)) var(--discord-safe-area-inset-right,env(safe-area-inset-right,0)) var(--discord-safe-area-inset-bottom,env(safe-area-inset-bottom,0)) var(--discord-safe-area-inset-left,env(safe-area-inset-left,0));background:linear-gradient(115deg,#7295ab75 0 22%,#0000 22% 100%),linear-gradient(162deg,#0000 0 58%,#f2ce8152 58% 62%,#0000 62% 100%),linear-gradient(#c8d8d8 0%,#9eb9ca 44%,#87aabf 100%);margin:0}button{font:inherit;touch-action:manipulation}.app{width:min(1120px,100vw - 32px);margin:0 auto;padding:24px 0}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}h1{margin:0 0 4px;font-size:28px}.topbar p{color:var(--muted);margin:0}.actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.reset,.resign,.watch,.invite,.handPiece{border:1px solid var(--line-strong);color:var(--ink);cursor:pointer;background:#fffae9e0;border-radius:8px;padding:10px 14px;box-shadow:0 3px #454e4a1f}.reset:hover,.resign:hover,.watch:hover,.invite:hover,.handPiece:not(:disabled):hover{background:#e8f4ef}.reset:disabled,.resign:disabled,.watch:disabled,.invite:disabled,.handPiece:disabled{cursor:not-allowed;opacity:.45}.resign{border-color:var(--coral-edge);color:#8b352d}.status{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px;display:grid}.activityStatus{grid-template-columns:1.2fr 1.2fr 1fr 1.2fr;gap:8px;margin-bottom:12px;display:grid}.activityStatus div{background:#fffae9c7;border:1px solid #ffffff85;border-radius:8px;padding:10px 12px;box-shadow:0 8px 20px #34464e1c}.activityStatus.myTurn div:first-child{border-color:var(--mint-edge);background:#d5f3ebe0}.activityStatus.check div:nth-child(2){border-color:var(--coral-edge);color:#842d29;background:#ffe5dc}.activityStatus span{color:var(--muted);font-size:13px;display:block}.activityStatus strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.status div{background:#fffae9c7;border:1px solid #ffffff85;border-radius:8px;padding:10px 12px}.status span{color:var(--muted);font-size:13px;display:block}.notice{min-height:28px;margin:0 0 14px;font-weight:700}.participants{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.participants>span{background:#fffae9d1;border:1px solid #ffffff8f;border-radius:999px;align-items:center;gap:6px;padding:5px 10px 5px 6px;font-size:13px;display:inline-flex}.participants .self{border-color:var(--mint-edge);background:#d8f3ed;font-weight:700}.avatar{object-fit:cover;background:var(--mint-edge);color:#fff;border-radius:999px;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:inline-grid}.participantName{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.participantRole{color:var(--muted)}.rematch{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;display:flex}.rematch strong{border:1px solid var(--line);color:var(--ink);background:#fffae9d6;border-radius:999px;padding:5px 10px;font-size:13px}.seats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px;display:grid}.seat{background:#fffae9c7;border:1px solid #ffffff85;border-radius:8px;align-content:center;gap:6px;min-height:70px;padding:10px 12px;display:grid}.seat span{color:var(--muted);font-size:13px}.seat strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.seat button,.reactionBar button,.nextQueue button{border:1px solid var(--line-strong);color:var(--ink);cursor:pointer;background:#fffae9e0;border-radius:8px;padding:8px 10px}.seat button:hover,.reactionBar button:not(:disabled):hover,.nextQueue button:not(:disabled):hover{background:#e8f4ef}.reactionBar button:disabled,.nextQueue button:disabled{cursor:not-allowed;opacity:.45}.selfSeat{border-color:var(--mint-edge);background:#d8f3ed}.spectatorSeat{background:#fff5d6d1}.table{grid-template-columns:minmax(160px,200px) minmax(340px,500px) minmax(160px,200px);justify-content:center;align-items:start;gap:18px;display:grid}.boardArea{justify-items:center;gap:10px;display:grid;position:relative}.boardWrap{background:linear-gradient(#fffdecd6,#ebf1e1eb);border-radius:10px;width:min(500px,100%);padding:10px;box-shadow:0 18px 38px #3046523d}.board{aspect-ratio:1;background:radial-gradient(circle at 18% 16%, #ffffff6b 0 9%, transparent 10%), radial-gradient(circle at 72% 24%, #a0dad347 0 12%, transparent 13%), radial-gradient(circle at 84% 75%, #c4d3ab59 0 13%, transparent 14%), radial-gradient(circle at 36% 66%, #ffe8ab4d 0 15%, transparent 16%), linear-gradient(155deg, #d5ebe6db 0 31%, transparent 31% 100%), linear-gradient(24deg, transparent 0 58%, #e1e9cad1 58% 100%), var(--paper);border:0;gap:0;width:100%;padding:8px;display:grid;position:relative;overflow:hidden}.reactionOverlay{z-index:3;pointer-events:none;flex-wrap:wrap;gap:6px;display:flex;position:absolute;inset:8px 8px auto}.reactionOverlay span{background:#ffffffeb;border:1px solid #27352e38;border-radius:999px;align-items:center;gap:6px;padding:5px 9px 5px 5px;font-size:13px;display:inline-flex;box-shadow:0 4px 12px #27352e24}.reactionBar{gap:8px;display:grid}.reactionBar>div{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.voteButtons button{background:#fff5d6e6}.voteButtons strong{font-variant-numeric:tabular-nums;margin-left:4px}.square{border:1.5px dashed var(--line);cursor:pointer;z-index:1;background:#f2efdac2;place-items:center;min-width:0;min-height:0;transition:background-color .12s,transform .12s;display:grid;position:relative}.square:hover{background:#ffefc6e6}.square:active,.handPiece:active{transform:scale(.97)}.square.legal:after{content:"";background:#2ea8a552;border-radius:999px;width:18px;height:18px;position:absolute}.square.captureTarget:after{background:0 0;border:4px solid #bf443ab8;width:70%;height:70%}.square.dropTarget:after{content:"打";color:#236967;background:#fffae9c7;border:2px dashed #2ea8a5bd;place-items:center;width:28px;height:28px;font-size:13px;font-weight:800;display:grid}.square.lastMoveFrom{box-shadow:inset 0 0 0 4px #4f97bf94}.square.lastMoveTo{box-shadow:inset 0 0 0 5px #db9d2eb8}.square.checkedKing{box-shadow:inset 0 0 0 5px var(--coral-edge), 0 0 0 3px #bf443a3d;animation:.9s ease-in-out 2 checkPulse}.square.checkingPiece .piece{border-color:var(--coral-edge)}.square.selected{outline:4px solid var(--mint-edge);outline-offset:-4px}.piece{aspect-ratio:1;border:2px solid var(--sun-edge);background:linear-gradient(180deg, #ffe6a0, var(--sun));z-index:1;border-radius:10px;grid-template-rows:1fr auto auto;place-items:center;gap:1px;width:min(74px,72%);padding:8% 7% 5%;display:grid;overflow:hidden;box-shadow:0 4px #53524038,0 8px 14px #30465229}@keyframes checkPulse{50%{background:#ffd2c5}}.piece.second{background:linear-gradient(180deg, #a9eee2, var(--mint));border-color:var(--mint-edge);transform:rotate(180deg)}.piece b{font-size:clamp(13px,2.7vw,20px);line-height:1}.piece small{color:var(--muted);font-size:10px;line-height:1}.pieceIcon,.handPieceIcon{aspect-ratio:1;background:#fffae9c7;border-radius:999px;width:42%;display:block;position:relative;box-shadow:inset 0 -2px #454e4a1f}.piece.second .pieceIcon,.secondHand .handPieceIcon{background:#edfffadb}.pieceIcon:before,.pieceIcon:after,.handPieceIcon:before,.handPieceIcon:after{content:"";position:absolute;inset:0}.piece[data-kind=king] .pieceIcon:before,.handPieceIcon[data-kind=king]:before{background:var(--coral);clip-path:polygon(0 100%,0 35%,22% 58%,50% 0,78% 58%,100% 35%,100% 100%);border-radius:4px 4px 2px 2px;inset:16% 12% 28%}.piece[data-kind=king] .pieceIcon:after,.handPieceIcon[data-kind=king]:after{background:var(--coral-edge);border-radius:999px;height:12%;inset:auto 24% 20%}.piece[data-kind=rook] .pieceIcon:before,.piece[data-kind=dragon] .pieceIcon:before,.handPieceIcon[data-kind=rook]:before,.handPieceIcon[data-kind=dragon]:before{background:linear-gradient(90deg, transparent 0 38%, var(--mint-edge) 38% 62%, transparent 62%), linear-gradient(180deg, transparent 0 38%, var(--mint-edge) 38% 62%, transparent 62%);border-radius:4px;inset:20%}.piece[data-kind=bishop] .pieceIcon:before,.piece[data-kind=horse] .pieceIcon:before,.handPieceIcon[data-kind=bishop]:before,.handPieceIcon[data-kind=horse]:before{background:linear-gradient(45deg, transparent 0 39%, var(--sun-edge) 39% 61%, transparent 61%), linear-gradient(135deg, transparent 0 39%, var(--sun-edge) 39% 61%, transparent 61%);inset:18%}.piece[data-kind=gold] .pieceIcon:before,.piece[data-kind=silver] .pieceIcon:before,.piece[data-kind=promotedSilver] .pieceIcon:before,.handPieceIcon[data-kind=gold]:before,.handPieceIcon[data-kind=silver]:before,.handPieceIcon[data-kind=promotedSilver]:before{background:var(--sun-edge);clip-path:polygon(50% 0,100% 34%,82% 100%,18% 100%,0 34%);border-radius:5px;inset:18%}.piece[data-kind=pawn] .pieceIcon:before,.handPieceIcon[data-kind=pawn]:before{background:#6fb7d0;border-radius:50% 50% 44% 44%;inset:22% 24% 18%}.piece[data-kind=dragon] .pieceIcon:after,.piece[data-kind=horse] .pieceIcon:after,.piece[data-kind=promotedSilver] .pieceIcon:after,.piece[data-kind=promotedPawn] .pieceIcon:before,.handPieceIcon[data-kind=dragon]:after,.handPieceIcon[data-kind=horse]:after,.handPieceIcon[data-kind=promotedSilver]:after,.handPieceIcon[data-kind=promotedPawn]:before{background:var(--coral);clip-path:polygon(50% 0,61% 34%,98% 34%,68% 55%,80% 92%,50% 70%,20% 92%,32% 55%,2% 34%,39% 34%);inset:15%}.hand{background:#fffae9c7;border:1px solid #ffffff85;border-radius:8px;min-height:120px;padding:14px;box-shadow:0 12px 26px #30465221}.hand h2{margin:0 0 12px;font-size:16px}.handPieces{flex-wrap:wrap;gap:8px;display:flex}.handPiece{align-items:center;gap:6px;display:inline-flex}.handPieceIcon{border:1px solid #3c52502e;flex:none;width:18px}.handPiece.selected{outline:3px solid var(--mint-edge)}.srOnly{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.empty{color:var(--muted)}.history{margin:0}.history h2{margin:0 0 10px;font-size:16px}.history ol{columns:2;column-gap:32px;margin:0;padding-left:28px}.history li{break-inside:avoid;font-variant-numeric:tabular-nums;margin-bottom:6px}.supportPanels{grid-template-columns:1.1fr 1fr 1fr 1.2fr;gap:12px;margin-top:18px;display:grid}.waitingRoom{background:#fffae9d1;border:1px solid #ffffff85;border-radius:8px;gap:14px;padding:18px;display:grid;box-shadow:0 12px 26px #30465221}.waitingHero{align-items:center;gap:12px;display:flex}.waitingHero .avatar{width:48px;height:48px;font-size:18px}.waitingHero h2{margin:0 0 4px;font-size:22px}.waitingHero p{color:var(--muted);margin:0}.waitingInvite{justify-self:start}.supportPanel{background:#fffae9c7;border:1px solid #ffffff85;border-radius:8px;padding:12px;box-shadow:0 10px 22px #3046521c}.supportPanel summary{cursor:pointer;font-weight:700;list-style:none}.supportPanel summary::-webkit-details-marker{display:none}.supportPanelBody{margin-top:10px}.supportPanel .history h2{display:none}.nextQueue{gap:10px;display:grid}.queueActions{flex-wrap:wrap;gap:8px;display:flex}.nextQueue ol{margin:0;padding-left:24px}.nextQueue li{text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;overflow:hidden}.nextMatch,.queueSelf{color:#26736f;margin:0;font-weight:700}.wideLayout .supportPanel{display:block}.wideLayout .supportPanel summary{cursor:default;pointer-events:none}@media (width<=1024px){.app{width:min(900px,100vw - 24px);padding:18px 0}.table{grid-template-columns:minmax(130px,160px) minmax(320px,440px) minmax(130px,160px);gap:12px}.boardWrap{width:min(440px,100%)}.hand{padding:12px}.handPiece,.reset,.resign,.watch{padding:9px 11px}.supportPanels{grid-template-columns:1fr 1fr}.supportPanel:nth-last-child(-n+2){grid-column:1/-1}}@media (width<=760px){.table{flex-direction:column;align-items:stretch;gap:10px;display:flex}.role-first .secondHand,.role-second .firstHand,.role-spectator .secondHand{order:1}.boardArea{order:2}.role-first .firstHand,.role-second .secondHand,.role-spectator .firstHand{order:3}.app{width:min(100%,100vw - 16px);padding:10px 0 14px}.topbar{align-items:start;gap:10px;margin-bottom:10px}h1{font-size:20px}.topbar p{font-size:12px}.actions{gap:6px;max-width:46%}.reset,.resign,.watch,.invite,.seat button,.reactionBar button,.nextQueue button,.handPiece{min-height:44px;padding:9px 10px}.status{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:8px}.activityStatus{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:8px}.activityStatus div{padding:8px}.activityStatus span{font-size:11px}.activityStatus strong{font-size:13px}.status div{padding:8px}.status span{font-size:11px}.status strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;display:block;overflow:hidden}.notice{min-height:22px;margin-bottom:10px;font-size:14px}.boardWrap{width:min(92vw,430px);margin:0 auto}.board{border-width:2px;justify-self:center;gap:2px}.square.legal:after{background:#2a66526b;width:22px;height:22px}.square.captureTarget:after{border-width:3px}.square.dropTarget:after{width:26px;height:26px;font-size:12px}.square.selected{outline-offset:-3px;outline-width:3px}.piece{border-radius:6px;width:min(62px,74%)}.piece b{font-size:clamp(15px,6vw,21px)}.piece small{font-size:10px}.hand{min-height:auto;padding:10px}.hand h2{margin-bottom:8px;font-size:14px}.handPieces{gap:6px}.role-first .firstHand,.role-second .secondHand{border-color:var(--mint-edge);background:#d8f3ed}.reactionBar,.reactionBar>div{gap:6px}.supportPanels{grid-template-columns:1fr;gap:8px;margin-top:10px}.waitingRoom{padding:12px}.waitingHero h2{font-size:18px}.supportPanel{padding:0;overflow:hidden}.supportPanel summary{justify-content:space-between;align-items:center;min-height:44px;padding:12px;display:flex}.supportPanel summary:after{content:"+";color:var(--muted);font-size:18px}.supportPanel[open] summary:after{content:"-"}.supportPanelBody{margin-top:0;padding:0 12px 12px}.participants,.seats{margin-bottom:0}.seats{grid-template-columns:1fr;gap:6px}.seat{min-height:58px;padding:8px 10px}.history ol{columns:1;max-height:180px;padding-left:22px;overflow:auto}}@media (width<=420px){.topbar{display:grid}.actions{justify-content:start;max-width:none}.reset,.resign,.watch,.invite{flex:auto}.boardWrap{width:min(94vw,390px)}}
