:root{--paper:#f6f2e9;--ink:#243a38;--muted:#76817a;--coral:#de7059;--teal:#2b7569;--line:#dcded1;--gold:#eabf5d;--surface:#fffcf5;--a:#e57a5f;--b:#328e83;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #cf8a3d;outline-offset:4px}a{color:inherit}button{border:0}button,input,select{font-size:14px}.hidden{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.site-header{max-width:1200px;margin:auto;padding:27px 32px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:5}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:18px;font-weight:800;letter-spacing:1px}.brand-symbol{font-size:42px;color:var(--coral);line-height:1}.brand small{display:block;font-size:8px;letter-spacing:2.3px;font-weight:600;margin-top:5px;color:#7e887d}nav{display:flex;align-items:center;gap:20px}.network{font-size:11px;color:#65816a;letter-spacing:1px}.sound-button{width:36px;height:36px;border:1px solid #c9cec1;border-radius:50%;background:transparent;color:var(--ink);font-size:19px}.text-button{background:transparent;color:var(--ink);padding:9px 0;font-size:12px}.mini-label{font-size:9px;letter-spacing:2px;font-weight:700;color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2.2px;display:flex;align-items:center;gap:9px}.eyebrow span{width:6px;height:6px;background:var(--coral);border-radius:50%}#hall{max-width:1136px;margin:auto;padding:0 32px}.hero{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center;min-height:440px;padding:35px 0 44px}.hero h1{font-family:Georgia,"Songti SC","STSong",serif;font-weight:500;font-size:64px;line-height:1.2;letter-spacing:-1px;margin:24px 0}.hero h1 span{color:var(--coral)}.hero-copy>p{font-size:13px;line-height:1.9;color:#747e76}.hero-bottom{display:flex;gap:12px;align-items:center;margin-top:25px;font-size:11px;line-height:1.7}.hero-bottom small{font-size:10px;color:#92998d}.stacked-avatars{display:flex;padding-right:5px}.stacked-avatars i{display:grid;place-items:center;width:32px;height:32px;background:#e9bc94;border:2px solid var(--paper);border-radius:50%;font-style:normal}.stacked-avatars i+i{background:#a9c8b9;margin-left:-8px}.hero-art{position:relative;height:350px;display:grid;place-items:center}.orbit{position:absolute;width:340px;height:290px;border:1px solid #dbded1;border-radius:50%;transform:rotate(-22deg)}.orbit-two{width:260px;height:340px;transform:rotate(24deg)}.art-board{width:195px;height:215px;position:absolute;top:50px;left:70px;background:#2e645a;border-radius:20px;transform:rotate(-13deg);box-shadow:12px 19px 0 #d6d5bf,20px 30px 45px #233a3820;border:5px solid #c3cfb9;padding:15px}.art-dots{width:100%;height:100%;background:radial-gradient(circle at center,#173e37 47%,transparent 51%) 0 0/34px 36px;opacity:.85}.art-piece{position:absolute;right:16px;bottom:23px;width:31px;height:31px;background:var(--coral);color:#ffc3a2;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 -5px #aa4f3d}.art-die{position:absolute;right:55px;bottom:55px;width:110px;height:110px;display:grid;place-items:center;background:#f5c56a;color:#684f2b;border-radius:23px;font-size:103px;line-height:1;transform:rotate(14deg);box-shadow:7px 10px #d8a64d,16px 22px 35px #233a381c;animation:idle 5s ease-in-out infinite}.art-star{position:absolute;top:32px;right:48px;color:var(--coral);font-size:54px;animation:slowSpin 30s linear infinite}.floating-tag{position:absolute;top:5px;left:40px;border:1px solid #ccd1c4;background:var(--paper);border-radius:30px;padding:8px 13px;font-size:8px;letter-spacing:1.4px;transform:rotate(-7deg)}.art-caption{position:absolute;bottom:-8px;right:40px;font-size:10px;color:#818c80;letter-spacing:2px}.join-banner{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0;display:flex;justify-content:space-between;align-items:center;gap:20px}.join-banner h2{font-size:16px;margin:8px 0 0;font-weight:650}.join-banner form{display:flex;gap:9px}input{border:1px solid #cfd2c5;background:var(--surface);color:var(--ink);border-radius:9px;padding:13px;min-width:0}#roomCode{width:150px;text-transform:uppercase;letter-spacing:2px;font-size:12px}.button{padding:13px 19px;border-radius:10px;font-size:12px;font-weight:750;transition:transform .15s,box-shadow .15s}.button:active{transform:scale(.97)}.button:disabled{opacity:.4}.dark{background:var(--ink);color:#f8f4e8}.coral{background:var(--coral);color:#fff9ee;box-shadow:0 4px 10px #d5705920}.outline{background:transparent;border:1px solid #cbd2c4;color:var(--ink)}.full{display:block;width:100%;margin-top:16px}.collection{padding-top:44px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:25px}.section-heading h2{font-family:"Songti SC",Georgia,serif;font-size:27px;font-weight:500;margin:10px 0 0}.section-heading p{font-size:10px;color:#91998c}.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:19px}.game-card{background:var(--surface);border:1px solid #e2e3d6;border-radius:17px;overflow:hidden;text-align:left;padding:0;position:relative;transition:transform .22s,box-shadow .22s;color:var(--ink)}.game-card:hover{transform:translateY(-5px);box-shadow:0 15px 30px #2c413c0c}.game-art{height:150px;display:grid;place-items:center;position:relative;overflow:hidden}.game-art.connect{background:#e2eade}.game-art.memory{background:#f3e3d9}.game-art.dice{background:#f6ebca}.game-art.rps{background:#e0e8e7}.game-art.number{background:#ece4db}.game-art.boxes{background:#e4e8ec}.game-art:before{content:"";position:absolute;width:170px;height:170px;border:1px solid #00000008;border-radius:50%}.card-content{padding:19px}.card-top{display:flex;justify-content:space-between;align-items:center}.card-top h3{font-size:18px;margin:0;font-weight:750}.card-arrow{font-size:22px;color:#869086}.card-content p{font-size:11px;color:#899185;line-height:1.7;margin:9px 0 14px}.card-tags{display:flex;gap:7px;font-size:9px;color:#879181}.card-tags span{border:1px solid #e0e3d7;padding:4px 7px;border-radius:30px}.art-mini-connect{display:grid;grid-template-columns:repeat(4,20px);gap:6px;padding:13px;background:#43766a;border-radius:11px;transform:rotate(-9deg);box-shadow:5px 8px #c3ceb6}.art-mini-connect i{width:20px;height:20px;background:#dce6d3;border-radius:50%}.art-mini-connect i:nth-child(3n){background:#de765a}.art-mini-connect i:nth-child(4n){background:#eab95d}.art-mini-memory{display:flex;gap:5px;transform:rotate(-9deg)}.art-mini-memory i{display:grid;place-items:center;width:47px;height:65px;background:#fff9ee;border:2px solid #c6ad9b;border-radius:8px;color:#c77159;font-size:23px;box-shadow:2px 4px #d7c2b1;font-style:normal}.art-mini-memory i:nth-child(2){transform:translateY(-8px);color:#3d7a6d}.art-mini-dice{font-size:92px;color:#bc8b3c;text-shadow:4px 6px #d9bf7a;transform:rotate(-9deg);line-height:1}.art-mini-rps{display:flex;gap:9px;align-items:center;font-size:47px;transform:rotate(-8deg)}.art-mini-rps span{background:#f7faf3;border-radius:17px;padding:8px;box-shadow:3px 5px #b5ccbf}.art-mini-rps small{font-size:14px;color:#8eaa9a}.art-mini-number{display:flex;align-items:center;gap:10px;font-family:Georgia,serif;font-size:42px;color:#886956;transform:rotate(-8deg)}.art-mini-number i{background:#fbf5e9;border:1px solid #c7b9a8;border-radius:10px;width:65px;height:78px;display:grid;place-items:center;font-style:normal;box-shadow:3px 5px #d2c4b3}.art-mini-number span{font-size:22px}.art-mini-boxes{display:grid;grid-template-columns:repeat(4,1fr);width:95px;height:95px;gap:18px;transform:rotate(-10deg);position:relative}.art-mini-boxes i{width:8px;height:8px;background:#4b6776;border-radius:50%}.art-mini-boxes:before{content:"";position:absolute;top:2px;left:4px;width:58px;height:62px;border:4px solid #d77c64;box-shadow:24px 25px 0 -10px #83aaa0}.uno-link{display:flex;justify-content:space-between;align-items:center;border:1px dashed #c6cfc0;border-radius:12px;padding:17px 20px;margin:24px 0 0;text-decoration:none;font-size:11px;color:#7b8879}.uno-link span{color:#416453}.hall-footer{margin-top:45px;border-top:1px solid var(--line);padding:25px 0 30px;font-size:11px;display:flex;justify-content:space-between;align-items:center;gap:12px}.hall-footer span{display:block;font-size:7px;letter-spacing:1.3px;color:#9a9f92;margin-top:7px}.hall-footer p{font-size:9px;color:#9aa18f}.sheet{background:var(--paper);color:var(--ink);border:1px solid #d5dacc;border-radius:23px;width:min(420px,calc(100% - 30px));padding:27px;box-shadow:0 30px 90px #112b2444;max-height:90dvh;overflow:auto}.sheet::backdrop{background:#183c3580;backdrop-filter:blur(5px)}.sheet-top{display:flex;justify-content:space-between;align-items:center}.close-button{width:30px;height:30px;border-radius:50%;background:#e9ecdf;color:#65725f;font-size:23px;line-height:1}.sheet h2{font-size:28px;font-weight:650;letter-spacing:-1px;margin:20px 0 12px}.sheet p,.sheet li{font-size:13px;color:#748170;line-height:1.9}.sheet ol{padding-left:20px}.sheet li{margin:12px 0}.sheet input{width:100%;background:#fffcf5}.field-label{display:block;font-size:11px;font-weight:700;margin:22px 0 9px}.tiny{font-size:10px!important;color:#929c8c;line-height:1.7}.create-icon{font-size:42px;color:var(--coral);margin-top:10px}.audio-panel{position:absolute;right:32px;top:75px;width:270px;border:1px solid #d2d9c8;border-radius:16px;padding:21px;background:var(--surface);box-shadow:0 15px 50px #24433322;z-index:30}.audio-panel b{font-size:14px}.audio-panel label{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-top:18px}.audio-panel input[type=range]{width:115px;padding:0;accent-color:var(--coral)}.audio-panel p{font-size:10px;line-height:1.7;color:var(--muted)}.small-button{padding:7px 10px;background:#e9eddf;border:1px solid #d5dccb;border-radius:7px;color:#53674f;font-size:10px}.room-view{max-width:740px;margin:auto;padding:10px 25px 35px}.room-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px}.room-code{font-size:10px;color:#899581;display:flex;align-items:center;gap:8px}.room-code b{font-size:15px;letter-spacing:3px;color:#4d6356}.invite-input{width:100%;padding:8px 10px;font-size:10px;color:#88917e;background:transparent;border-color:#dfe4d5;margin-top:8px}.game-heading{display:flex;justify-content:space-between;align-items:center;margin:25px 0 20px}.game-heading h1{font-size:30px;letter-spacing:-1px;margin:8px 0 0}.rules-button{background:transparent;border:1px solid #cdd5c5;border-radius:30px;font-size:11px;color:#6c8067;padding:8px 13px}.player-bar{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;margin-bottom:22px}.player-card{display:flex;align-items:center;gap:10px;border:1px solid #d9dfd0;border-radius:13px;padding:12px;background:#ffffff40;min-width:0;transition:background .25s,box-shadow .25s}.player-card.active{border:2px solid var(--coral);background:#f4e1cd;box-shadow:0 0 0 3px #e4825d12}.player-card.is-me.active{background:#fff1c2;border-color:#bd8e36}.player-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#e5d4bc;color:var(--a);font-size:18px;flex-shrink:0}.player-card.p1 .player-avatar{background:#d9e8de;color:var(--b)}.player-name{font-size:12px;font-weight:700;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:180px}.player-detail{font-size:9px;color:#8a9680;margin-top:4px}.player-text{min-width:0}.room-score{font-family:Georgia,serif;color:#73866d;font-size:20px;white-space:nowrap;text-align:center}.room-score small{display:block;font:8px -apple-system,sans-serif;margin-top:5px;color:#9ca78c}.room-lobby{text-align:center;border:1px dashed #c6d0bc;border-radius:20px;padding:35px 24px}.lobby-icon{font-size:54px;color:#c98c53}.room-lobby h2{font-size:23px}.room-lobby p{font-size:12px;color:#8b9583;line-height:1.9}.game-select-label{display:flex;gap:12px;align-items:center;justify-content:center;font-size:11px;margin:20px auto 12px}.game-select-label select{padding:9px;background:#fffaf0;border:1px solid #d1d8c6;border-radius:8px;color:#52654e}.room-lobby .button{margin:7px 4px}.room-footer{text-align:center;color:#8c9b83;font-size:9px;line-height:1.9;margin-top:25px}.room-footer span{font-size:8px;letter-spacing:1px;color:#a6af9a}.play-area{background:#153a35;border:1px solid #284e44;border-radius:24px;padding:22px;color:#f7f1df;position:relative;overflow:hidden;box-shadow:0 15px 35px #173b3210;transition:box-shadow .3s}.play-area.my-turn{box-shadow:0 0 0 3px #d3a653,0 15px 35px #173b3215}.turn-status{display:flex;flex-direction:column;text-align:center;align-items:center;gap:7px;min-height:70px;margin-bottom:16px}.turn-status #turnLabel{font-size:16px;font-weight:750;color:#d5e3d0}.my-turn .turn-status #turnLabel{background:#f4d88e;color:#193a2c;padding:8px 22px;border-radius:30px;font-size:19px;box-shadow:0 3px 10px #0001}.turn-status #turnSub{font-size:10px;color:#83aa99;min-height:14px}.paused-panel{background:#d5bf8844;border:1px solid #dbc88766;border-radius:12px;padding:15px;font-size:12px;line-height:1.8;margin-bottom:15px;text-align:center}.board{max-width:480px;margin:auto;min-height:200px;position:relative}.board button:disabled{cursor:default}.game-note{text-align:center;font-size:11px;color:#acc5b4;line-height:1.8;min-height:35px;margin:20px 0 0}.action-area{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:19px}.action-area .button{min-width:100px}.action-area .outline{color:#e6ead7;border-color:#688975}.result-panel{text-align:center;border-top:1px solid #41665a;margin-top:22px;padding-top:24px;animation:rise .4s both}.result-panel .mini-label{color:#d1b66c}.result-panel h2{font-size:27px;color:#ffe1a0;margin:12px 0}.result-panel p{font-size:12px;line-height:1.8;color:#a8c5b1}.result-actions{display:flex;gap:10px;justify-content:center}.result-actions .outline{color:#deebd4;border-color:#6c8a73}.connect-board{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;background:#295e52;padding:13px;border:1px solid #56816a;border-radius:16px;box-shadow:0 6px 0 #0d2c26}.connect-cell{aspect-ratio:1;background:#0d2d28;border-radius:50%;padding:0;display:grid;place-items:center;box-shadow:inset 0 3px 6px #0002;position:relative;color:#6e9582;font-size:10px}.connect-cell:not(:disabled):hover{background:#386f5b}.disc{width:90%;height:90%;border-radius:50%;display:grid;place-items:center;font-size:20px;box-shadow:inset 0 -4px #0002,0 2px 3px #0004}.disc.p0{background:#ef9a75;color:#753b2e}.disc.p1{background:#a2d0b9;color:#255749}.disc.winning{outline:3px solid #ffe682;outline-offset:1px}.connect-cell.fresh .disc{animation:drop .4s cubic-bezier(.2,.7,.4,1)}.column-labels{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin:13px 13px 0;text-align:center;color:#96b6a2;font-size:9px}.memory-board{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.memory-tile{aspect-ratio:4/5;perspective:700px;background:transparent;border:0;padding:0;position:relative}.tile-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform .38s cubic-bezier(.2,.7,.2,1)}.memory-tile.flipped .tile-inner{transform:rotateY(180deg)}.tile-face{position:absolute;inset:0;border-radius:11px;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;border:2px solid #698775;box-shadow:0 4px 0 #0c2d26}.tile-back{background:repeating-linear-gradient(45deg,#2c5146,#2c5146 5px,#30584b 5px,#30584b 10px);color:#c4d8ba;font-size:26px}.tile-back small{position:absolute;bottom:7px;font:8px sans-serif;letter-spacing:1px;color:#8ea88e}.tile-front{transform:rotateY(180deg);background:#fff3d8;color:#3a6654;font-size:30px;flex-direction:column;gap:4px}.tile-front small{font:9px sans-serif;color:#71816b}.memory-tile.owned-0 .tile-front{border-color:#eea07c;background:#f9dfbd}.memory-tile.owned-1 .tile-front{border-color:#9bd1b8;background:#d9edd8}.memory-tile.matched .tile-inner{animation:pair .45s}.memory-tile:not(:disabled):hover .tile-back{border-color:#f1d28a}.game-stats{display:flex;justify-content:center;gap:35px;text-align:center;margin-bottom:20px}.game-stats b{font:32px Georgia,serif;color:#f3dbab}.game-stats small{display:block;margin-top:5px;font-size:10px;color:#a2c0a9}.dice-stage{text-align:center;padding:8px 0}.die{width:135px;height:135px;margin:18px auto 25px;border-radius:27px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:24px;gap:7px;background:#f9e6b8;box-shadow:0 8px 0 #b8a06c,0 20px 35px #0003;transform:rotate(-5deg);color:#365640}.die.rolling{animation:diceRoll .55s ease-out}.pip{width:100%;height:100%;background:#365640;border-radius:50%}.pip.off{background:transparent}.dice-bank{font:52px Georgia,serif;color:#f2d38b;line-height:1}.dice-bank small{display:block;font:10px -apple-system,sans-serif;letter-spacing:1px;color:#9eba9f;margin-top:11px}.goal-tracks{display:grid;gap:12px;margin-top:25px}.goal-track{display:grid;grid-template-columns:23px 1fr 44px;align-items:center;gap:10px;font-size:11px;color:#c1d3b9}.track{height:7px;background:#ffffff12;border-radius:30px;overflow:hidden}.track>i{height:100%;display:block;background:#ed9f7b;transition:width .4s}.goal-track.p1 .track>i{background:#98c9b2}.rps-score{display:flex;justify-content:center;gap:20px;align-items:center;color:#e3e5cb;font-size:11px;margin-bottom:20px}.rps-stage{display:flex;justify-content:center;align-items:center;gap:18px;min-height:160px}.rps-hand{width:125px;height:150px;display:flex;flex-direction:column;gap:13px;align-items:center;justify-content:center;border:1px solid #658271;border-radius:20px;background:#244d40;color:#f3deb0;box-shadow:0 6px 0 #0d2d27;font-size:48px}.rps-hand.reveal{animation:handReveal .5s}.rps-hand small{font-size:10px;color:#a7c5ac}.rps-versus{font:italic 18px Georgia,serif;color:#8baf95}.choice-button{background:#fff0cb;color:#284a39;border:2px solid transparent;border-radius:15px;padding:15px;min-width:87px!important;display:flex;flex-direction:column;align-items:center;gap:8px;font-size:27px}.choice-button small{font-size:10px}.choice-button.selected{border-color:#f2a979;background:#ffe6ac}.choice-button:disabled{opacity:.45}.number-stage{text-align:center;padding:12px 0}.range-display{display:flex;justify-content:center;align-items:center;gap:24px;margin:18px 0 22px}.range-display b{font:68px Georgia,serif;color:#f0d29b;min-width:80px}.range-display span{font-size:22px;color:#83a98f}.range-sub{font-size:11px;color:#a6c0a3}.number-form{display:flex;gap:10px;justify-content:center;width:100%;max-width:310px}.number-form input{width:100%;background:#284f41;border-color:#71906e;color:#f6e8c7;font-size:23px;text-align:center}.history{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:24px}.history span{background:#ffffff08;border:1px solid #5c7f66;color:#b6c9ad;border-radius:8px;padding:7px 9px;font-size:11px}.history span.hit{border-color:#eda183;color:#ffd4ad}.hidden-number{width:75px;height:75px;border:1px dashed #acba8b;border-radius:50%;margin:14px auto 0;display:grid;place-items:center;color:#e1c68d;font:36px Georgia,serif}.boxes-board{display:grid;grid-template-columns:14px 1fr 14px 1fr 14px 1fr 14px;grid-template-rows:14px 1fr 14px 1fr 14px 1fr 14px;aspect-ratio:1;padding:12px;max-width:380px;margin:auto;gap:0}.dot{background:#d9e2bc;border:3px solid #71917a;border-radius:50%;z-index:2}.edge{padding:0;border:0;border-radius:5px;align-self:center;background:#57766055;min-height:26px;position:relative}.edge:before{content:"";position:absolute;left:0;right:0;top:50%;height:5px;transform:translateY(-50%);background:#5b7e64;border-radius:5px}.edge.v{align-self:stretch;justify-self:center;width:26px;min-height:0}.edge.v:before{top:0;bottom:0;left:50%;width:5px;height:auto;transform:translateX(-50%)}.edge.p0:before{background:#f2a080}.edge.p1:before{background:#9fd8c0}.edge:not(:disabled):hover:before{background:#f6e6a5}.edge.last:before{box-shadow:0 0 12px #f2d58488}.box-owned{display:grid;place-items:center;font-size:30px;margin:8px;border-radius:11px;color:#e9ac8a;background:#ef9b7216;animation:rise .3s}.box-owned.p1{color:#a2d6bb;background:#9ecbb520}.boxes-hint{text-align:center;font-size:10px;color:#88aa8d;margin-top:14px}.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:#253f35;color:#fff3d6;border:1px solid #617961;border-radius:30px;padding:13px 20px;font-size:12px;line-height:1.6;box-shadow:0 12px 35px #17332522;max-width:calc(100vw - 30px);z-index:60;text-align:center;animation:rise .2s}.turn-flash{position:fixed;left:50%;top:40%;transform:translate(-50%,-50%);background:#f6d88c;color:#274831;padding:17px 30px;border-radius:18px;font-size:25px;font-weight:850;pointer-events:none;z-index:50;box-shadow:0 10px 60px #0002;white-space:nowrap;animation:turnFlash 1.2s both}.confetti{position:fixed;top:-15px;z-index:60;width:8px;height:12px;pointer-events:none;animation:fall 2.8s linear forwards}.action-area .button:disabled{opacity:.3}@keyframes idle{50%{translate:0 -9px}}@keyframes slowSpin{to{rotate:360deg}}@keyframes rise{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}@keyframes drop{from{transform:translateY(-120px);opacity:.2}to{transform:translateY(0);opacity:1}}@keyframes pair{50%{scale:1.06}}@keyframes diceRoll{0%{transform:rotate(-25deg) scale(.8)}30%{transform:rotate(20deg) scale(1.05)}65%{transform:rotate(-12deg)}100%{transform:rotate(-5deg)}}@keyframes handReveal{0%{transform:rotate(-8deg) scale(.85)}55%{transform:rotate(5deg) scale(1.06)}100%{transform:rotate(0) scale(1)}}@keyframes turnFlash{0%{opacity:0;scale:.8}18%,72%{opacity:1;scale:1}100%{opacity:0;scale:1.03}}@keyframes fall{to{transform:translateY(105vh) rotate(500deg)}}
@media(max-width:760px){.site-header{padding:22px}.hero{min-height:350px;padding:25px 0 35px}.hero h1{font-size:47px}.hero-art{scale:.8;transform-origin:center;height:300px;margin-left:-30px}.hero-bottom{margin-top:15px}.game-grid{grid-template-columns:repeat(2,1fr);gap:14px}.hero-copy>p{font-size:11px}.section-heading p{display:none}#hall{padding:0 22px}.game-art{height:135px}.card-content{padding:15px}.card-top h3{font-size:16px}.join-banner h2{font-size:14px}.join-banner form{gap:6px}.join-banner .button{padding:12px}.hall-footer{align-items:flex-start}.hall-footer p{max-width:160px;line-height:1.8;margin:0}}@media(max-width:520px){.site-header{padding:19px 20px}.brand{font-size:15px;gap:8px}.brand-symbol{font-size:35px}.brand small{font-size:7px;letter-spacing:1.5px}nav{gap:11px}.network{font-size:9px}.sound-button{width:32px;height:32px}.hero{display:block;position:relative;min-height:365px;padding:20px 0 30px}.hero-copy{position:relative;z-index:1}.hero h1{font-size:43px;margin:20px 0 18px}.hero-copy>p{max-width:210px;font-size:10px}.eyebrow{font-size:7px;letter-spacing:1.5px}.hero-art{position:absolute;right:-29px;top:70px;width:270px;scale:.56;transform-origin:100% 20%;opacity:.95;pointer-events:none}.art-board{left:24px;top:50px}.art-die{right:-3px;bottom:40px}.art-star{right:-15px}.floating-tag{left:13px}.art-caption{display:none}.hero-bottom{margin-top:26px;font-size:10px}.hero-bottom small{font-size:9px}.stacked-avatars i{width:28px;height:28px}.join-banner{align-items:flex-start;flex-direction:column;gap:14px;padding:20px 0}.join-banner form{width:100%}#roomCode{flex:1;width:0}.join-banner .button{padding:13px 19px}.collection{padding-top:32px}.section-heading{margin-bottom:20px}.section-heading h2{font-size:23px}.game-grid{gap:11px}.game-art{height:112px}.game-art>div{scale:.79}.card-content{padding:13px}.card-top h3{font-size:15px;letter-spacing:-.5px}.card-content p{font-size:10px;min-height:34px;margin:8px 0 10px}.card-tags{font-size:8px;gap:4px;flex-wrap:wrap}.card-tags span{padding:3px 5px}.card-arrow{font-size:18px}.uno-link{font-size:10px;gap:10px;padding:14px}.uno-link span{white-space:nowrap}.hall-footer{margin-top:30px;padding-bottom:25px}.hall-footer>div{font-size:10px}.hall-footer span{font-size:6px}.hall-footer p{font-size:8px;max-width:130px}.room-view{padding:0 15px 28px}.room-code{gap:6px}.room-code b{font-size:13px;letter-spacing:2px}.room-toolbar .text-button{font-size:11px}.game-heading{margin:23px 0 17px}.game-heading h1{font-size:27px}.player-bar{gap:7px;margin-bottom:18px}.player-card{padding:10px 8px;gap:7px}.player-avatar{width:27px;height:27px;font-size:15px}.player-name{font-size:10px;max-width:95px}.player-detail{font-size:8px}.room-score{font-size:17px}.room-score small{font-size:7px}.play-area{padding:18px 13px;border-radius:20px}.turn-status{min-height:67px;margin-bottom:12px}.my-turn .turn-status #turnLabel{font-size:17px;padding:8px 19px}.connect-board{gap:5px;padding:9px}.disc{font-size:16px}.column-labels{gap:5px;margin-left:9px;margin-right:9px}.memory-board{gap:8px}.tile-front{font-size:26px}.tile-back{font-size:22px}.tile-front small{font-size:8px}.tile-back small{font-size:7px}.room-lobby{padding:25px 14px}.room-lobby h2{font-size:22px}.room-lobby .button{font-size:11px;padding:12px 15px}.rps-hand{width:104px;height:128px;font-size:40px}.rps-stage{gap:13px}.rps-hand small{font-size:9px}.choice-button{min-width:79px!important;font-size:24px;padding:13px}.range-display b{font-size:58px}.game-note{font-size:10px;margin-top:17px}.game-stats{gap:25px}.game-stats b{font-size:28px}.action-area{gap:8px}.boxes-board{padding:8px}.box-owned{font-size:25px}.audio-panel{right:20px;top:65px}.result-panel h2{font-size:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

#hall{overflow:hidden}
/* Keep the illustration clear of Chinese headings on narrow phones. */
@media(max-width:520px){.hero-art{top:145px;right:-20px;scale:.44}}
.edge{background:transparent}.edge:not(.p0):not(.p1):before{background:#70947c66}.edge.p1:before{background:repeating-linear-gradient(to right,#9fd8c0 0 8px,#487c68 8px 12px)}.edge.v.p1:before{background:repeating-linear-gradient(to bottom,#9fd8c0 0 8px,#487c68 8px 12px)}

.difficulty-panel{border:1px solid #d5d9c9;border-radius:12px;background:#fff8e9;padding:14px;margin:0 0 18px}.difficulty-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.difficulty-top b{font-size:12px;color:#655735}.difficulty-top p{font-size:10px;color:#8f8d73;margin:7px 0 0}.difficulty-top select{max-width:190px;background:#fffcf4;border:1px solid #d5d7c3;color:#5c6950;border-radius:8px;padding:8px;font-size:11px}.difficulty-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px}.difficulty-bottom small{font-size:9px;color:#87917b;line-height:1.7}.difficulty-bottom button{font-size:9px;padding:5px 0;white-space:nowrap}.memory-board{grid-template-columns:repeat(var(--memory-columns,4),minmax(0,1fr))}.large-deck .tile-front{font-size:27px}.large-deck .tile-front small{font-size:9px}@media(max-width:520px){.difficulty-top{align-items:flex-start}.difficulty-top select{max-width:156px;font-size:10px;padding:7px}.difficulty-top b{font-size:11px}.difficulty-bottom{align-items:flex-start}.large-deck{gap:6px}.large-deck .tile-face{border-radius:8px}.large-deck .tile-front{font-size:22px;gap:3px}.large-deck .tile-front small{font-size:8px}.large-deck .tile-back{font-size:20px}.large-deck .tile-back small{font-size:7px;bottom:5px}}

.discovery-note{font-size:11px;line-height:1.7;color:#7e8b78;margin:8px 0 0}.table-label{font-size:10px;color:#85917b;letter-spacing:1px}.join-banner>#joinButton{min-width:110px;flex-shrink:0}@media(max-width:520px){.join-banner>#joinButton{width:100%;padding:13px}.discovery-note{font-size:10px}}

/* Additional games: touch targets, compact mobile boards and clear ownership. */
body{background:#F6F7F2;color:#242821}.extra-art{font-size:96px;line-height:1;color:#536B26}.extra-board{padding:18px 12px!important}.extra-grid{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:4px;width:min(100%,510px);margin:18px auto}.extra-cell{aspect-ratio:1;border:1px solid #aab5a0;border-radius:8px;background:#fbfcf8;color:#536B26;font-size:clamp(18px,6vw,38px);padding:0;min-width:0;opacity:1!important}.extra-cell:disabled{cursor:default}.extra-cell.empty:not(:disabled){background:#fff}.extra-cell.empty:not(:disabled):hover{background:#EAF0DD}.extra-cell.p0{color:#f6f7f2;background:#354a39}.extra-cell.p1{color:#354a39;background:#e0e9cd}.extra-cell.last{outline:3px solid #c4a456;outline-offset:-4px}.extra-cell.won{box-shadow:inset 0 0 0 4px #ddcf67}.gomoku .extra-grid{gap:2px}.gomoku .extra-cell{font-size:clamp(14px,3.5vw,25px);border-radius:3px}.tic .extra-grid{max-width:330px;gap:8px}.tic .extra-cell{font-size:52px}.board-hint{font-size:13px;color:#73796E;text-align:center;line-height:1.7;margin:12px 0}.hex-grid{display:block;width:min(80%,350px);padding-right:12%;box-sizing:content-box;border-top:3px solid #354a39;border-bottom:3px solid #354a39}.hex-row{display:flex;gap:3px;margin-top:-3px;transform:translateX(calc(var(--row)*8%))}.hex-row .extra-cell{width:20%;flex-shrink:0;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);border:0;border-radius:0;background:#dbe1d3;font-size:24px}.hex-row .p0{background:#354a39}.hex-row .p1{background:#dce8bc}.hex-row .empty:not(:disabled){background:#e8eddf}.hex-row .last{box-shadow:inset 0 0 0 5px #baa55b}.pile-list{width:min(100%,480px);margin:auto;display:grid;gap:14px}.pile{padding:18px;border:1px solid #E1E5DC;border-radius:14px;background:#fff}.pile b{font-size:14px}.pebbles{color:#536B26;font-size:24px;margin:12px 0;letter-spacing:4px}.take-buttons{display:flex;gap:8px;flex-wrap:wrap}.take-buttons button{min-height:44px;min-width:44px}.take-buttons button:disabled{opacity:.4}.code-secret{text-align:center;font-size:40px;letter-spacing:10px;font-weight:700;margin:22px}.code-history{max-height:330px;overflow:auto;width:min(100%,480px);margin:auto;scrollbar-width:auto}.code-entry{display:grid;grid-template-columns:40px 65px 1fr;align-items:center;gap:12px;border-bottom:1px solid #E1E5DC;padding:12px 8px;font-size:12px}.code-entry b{font-size:24px;letter-spacing:5px}.extra-board .number-form input{min-width:0}.extra-board .number-form{width:100%}@media(max-width:380px){.extra-board{padding:12px 4px!important}.hex-row .extra-cell{font-size:20px}.code-entry{gap:6px}}

.extra-board .board-hint{color:#c3cfbe}.pile{color:#242821}.pile .small-button{color:#242821;background:#f6f7f2}.hex-grid{border-left:3px solid #dce8bc;border-right:3px solid #dce8bc}

.hex-grid{--hex-cell:clamp(32px,10vw,52px);width:calc(var(--hex-cell)*5 + 8px);padding:12px calc(var(--hex-cell)*2) 12px 0;border:0;box-sizing:content-box}
.hex-row{gap:2px;margin-top:calc(var(--hex-cell)*-.2887 + 2px);transform:translateX(calc(var(--row)*(var(--hex-cell)/2 + 1px)))}
.hex-row:first-child{margin-top:0}.hex-row .extra-cell{width:var(--hex-cell);height:calc(var(--hex-cell)*1.1547);aspect-ratio:auto;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}

.action-area .board-hint{color:#c3cfbe}

.step-guide{background:#fff;border:1px solid #E1E5DC;border-radius:16px;margin:16px 0;padding:18px;color:#242821}.guide-heading{display:flex;gap:12px;align-items:flex-start}.guide-heading b{font-size:17px}.guide-heading p{font-size:13px;line-height:1.7;color:#73796E;margin:7px 0 0}.guide-dot{width:30px;height:30px;border-radius:50%;background:#EAF0DD;color:#536B26;flex-shrink:0;display:grid;place-items:center;font-size:20px}.guide-steps{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px;font-size:11px;color:#73796E}.guide-steps span{display:flex;align-items:center;gap:5px}.guide-steps i{font-style:normal;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#f3f5ed;color:#536B26}.card-table{padding:22px 14px!important;overflow:visible!important}.playing-card{position:relative;display:inline-flex;align-items:center;justify-content:center;width:74px;height:110px;flex:0 0 74px;border:1px solid #d5dbcd;border-radius:10px;background:#fff;color:#26392d;padding:3px;vertical-align:middle;box-shadow:0 4px 10px #0002;opacity:1!important;transition:transform .18s,box-shadow .18s}.playing-card:disabled{cursor:default}.playing-card.hearts,.playing-card.diamonds{color:#a44840}.playing-card>b{font-size:36px}.card-corner{position:absolute;top:6px;left:7px;font-size:15px;font-weight:700;line-height:1}.card-corner small{display:block;font-size:12px;margin-top:3px}.playing-card.card-back{background:#304a40;color:#d9e8be;border:1px solid #aec29d;background-image:repeating-linear-gradient(45deg,transparent 0 7px,#ffffff08 7px 8px)}.playing-card.card-back>b{font-size:30px}.card-badge{position:absolute;bottom:5px;left:2px;right:2px;text-align:center;font-size:9px;line-height:1.2;letter-spacing:0;font-weight:600}.playing-card.can-play{border:3px solid #cbe295;box-shadow:0 0 0 2px #cbe29544,0 4px 12px #0002;cursor:pointer}.playing-card.can-play:hover{transform:translateY(-5px)}.playing-card.selected{transform:translateY(-12px);outline:3px solid #e8cb83}.playing-card:not(.can-play):disabled:not(.top-card){filter:saturate(.65)}.card-hand{display:flex;justify-content:center;flex-wrap:wrap;gap:9px 7px;padding:16px 0;max-width:680px;margin:auto}.your-hand-label{text-align:center;color:#d9e5cc;font-size:13px;margin-top:24px}.opponent-hand{text-align:center;color:#c6d2c3;font-size:12px}.mini-backs{display:flex;justify-content:center;margin:12px 0 20px}.mini-backs i{font-style:normal;display:grid;place-items:center;height:38px;width:25px;border:1px solid #a0b59c;border-radius:5px;background:#304a40;margin-left:-5px;font-size:12px;color:#d9e8be}.mini-backs small{margin:10px 0 0 8px}.table-center{display:flex;justify-content:center;align-items:center;gap:24px;margin:20px 0}.discard-pile{display:grid;justify-items:center;gap:8px}.discard-pile>small{font-size:10px;color:#c3cfbe}.stock-stack{display:grid;justify-items:center;color:#c3cfbe;gap:5px}.stock-stack>b{font-size:24px}.stock-stack small{font-size:10px}.suit-status{text-align:center;display:grid;gap:5px;max-width:68px;color:#d7e5cb}.suit-status>b{font-size:35px}.suit-status small{font-size:10px}.suit-status.hearts,.suit-status.diamonds{color:#efb3a7}.empty-pile{height:100px;width:70px;border:1px dashed #9db299;border-radius:10px;display:grid;place-content:center;text-align:center;font-size:12px;color:#c3cfbe;line-height:1.8}.suit-choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.suit-choice{border:1px solid #E1E5DC;border-radius:12px;padding:20px 5px;background:#fff;font-size:20px;min-height:66px}.suit-choice.hearts,.suit-choice.diamonds{color:#a44840}.palace-zones{display:flex;justify-content:center;gap:20px;margin:18px auto}.zone-row{display:grid;gap:6px;justify-items:center}.zone-row>small{font-size:10px;color:#c3cfbe}.three-cards{display:flex;gap:4px}.palace-zones .playing-card,.card-slot{width:42px;height:62px;flex-basis:42px;border-radius:6px}.palace-zones .playing-card>b{font-size:22px}.palace-zones .card-corner{font-size:10px;top:3px;left:3px}.palace-zones .card-corner small{display:none}.palace-zones .card-badge{font-size:7px;bottom:3px}.card-slot{border:1px dashed #9db29966;display:grid;place-items:center;color:#9db299;font-size:14px}.golf-layout{max-width:340px;margin:auto}.golf-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;justify-items:center}.golf-grid .playing-card{width:100%;height:auto;aspect-ratio:2/3;max-width:83px}.layout-label{text-align:center;margin:14px 0 12px;font-size:14px;color:#dbe5cd}.layout-label>small{font-size:10px;color:#c3cfbe}.golf .table-center{gap:34px}.draw-stack{width:74px;height:110px;border:2px solid #a7bc99;border-radius:10px;background:#304a40;color:#d9e8be;font-size:34px;display:grid;place-content:center;gap:10px}.draw-stack small{font-size:10px}.draw-stack.can-play{border-color:#cbe295;box-shadow:0 0 0 2px #cbe29544}.pending-card{display:flex;gap:18px;justify-content:center;align-items:center;margin:18px 0}.pending-card>span{font-size:12px;color:#c3cfbe;max-width:75px;line-height:1.8}.last-turn-note{color:#e8cb83;font-size:13px;text-align:center}.pulse-target{animation:guide-pulse 1.7s ease-in-out 3}@keyframes guide-pulse{50%{box-shadow:0 0 0 7px #ddea9b33}}@media(max-width:420px){.card-table{padding:18px 8px!important}.playing-card{width:61px;height:94px;flex-basis:61px}.card-hand{gap:9px 6px}.playing-card>b{font-size:30px}.card-corner{font-size:13px}.guide-heading b{font-size:15px}.step-guide{padding:14px}.guide-steps{gap:7px;font-size:10px}.palace-zones{gap:13px}.palace-zones .playing-card,.card-slot{width:38px;height:57px;flex-basis:38px}.table-center{gap:16px}.golf-grid{gap:8px}.golf-grid .playing-card{max-width:78px}.golf-layout{max-width:280px}.suit-status{max-width:64px}.pending-card{gap:12px}.card-badge{font-size:8px}}@media(prefers-reduced-motion:reduce){.playing-card,.pulse-target{transition:none;animation:none}}
.card-effect{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);z-index:90;padding:18px 22px;border-radius:16px;background:#eaf0dd;color:#354a39;box-shadow:0 15px 45px #0004;font-size:18px;font-weight:700;max-width:88vw;text-align:center;pointer-events:none;animation:effect-arrive .25s ease-out}.effect-flying-card{position:fixed;width:30px;height:44px;display:grid;place-items:center;font-style:normal;color:#d9e8be;background:#304a40;border:1px solid #cbe295;border-radius:5px;z-index:80;pointer-events:none}@keyframes effect-arrive{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.card-effect{animation:none}}

.step-guide{position:sticky;top:8px;z-index:12}.step-guide .guide-heading p{margin-bottom:0}@media(max-width:420px){.step-guide .guide-steps{display:none}}
#playArea{overflow:visible}.step-guide{box-shadow:0 5px 18px #1d362018}.guide-heading p{overflow-wrap:anywhere}
