@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800;900&display=swap');
:root{--cream:#fbfaf5;--ink:#344c43;--muted:#8b958c;--green:#427b63;--mint:#e7eee1;--peach:#f8e6d9;--line:#e5e6dc;--shadow:0 10px 32px #445e4310;font-family:'Noto Sans SC',-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;color:var(--ink);background:var(--cream);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}button{color:inherit}button:disabled{opacity:.38;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #d7a36c;outline-offset:4px}button{transition:transform .16s,background .16s,box-shadow .16s}button:not(:disabled):active{transform:translateY(2px)}a{color:inherit}.topbar{height:103px;max-width:1280px;margin:auto;padding:0 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{text-decoration:none;display:flex;gap:13px;align-items:center;font-size:21px;font-weight:800;letter-spacing:2px}.brand small{display:block;font-size:9px;font-weight:500;letter-spacing:2.6px;margin-top:5px;color:#7b887c}.brand-icon{font-size:43px;color:var(--green);line-height:1}.nav{display:flex;gap:27px;align-items:center}.connection{font-size:11px;color:var(--muted)}.connection:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#d0ac7f;margin-right:7px}.connection.online:before{background:#85a484}.text-button,.inline-button{border:0;background:transparent;font-size:12px;padding:8px 0}.text-button span{margin-left:9px}.text-button:hover,.inline-button:hover{color:#b97752}.sound-button,.icon-button{border:1px solid var(--line);background:transparent;width:34px;height:34px;border-radius:50%;font-size:20px}.sound-button.enabled{background:var(--mint)}main{max-width:1184px;margin:0 auto;padding:0 0 24px}.landing{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;min-height:432px;padding-top:27px;gap:35px}.pill{display:inline-flex;align-items:center;gap:9px;border:1px solid #dce5d8;border-radius:50px;background:#eef3e8;padding:8px 13px;font-size:11px;color:#658068;letter-spacing:1px}.status-dot{width:5px;height:5px;background:#7d9a70;border-radius:50%}h1{font-size:46px;line-height:1.55;letter-spacing:1px;margin:23px 0 19px;font-weight:800;position:relative}.accent{position:relative;color:#5e8d70}.underline{position:absolute;height:10px;width:100%;background:#dee8c8;left:0;bottom:3px;border-radius:50%;z-index:-1;transform:rotate(-3deg)}.heading-flower{color:#d6ae71;font-size:31px;position:absolute;transform:rotate(15deg);top:3px;margin-left:23px}.hero-description{font-size:13px;color:#889185;line-height:2.05;letter-spacing:.3px}.hero-tags{display:flex;gap:24px;margin-top:25px;font-size:11px;color:#758c75}.hero-art{height:340px;position:relative;isolation:isolate;margin-top:14px}.hero-art:before{content:'';position:absolute;inset:6px 20px;background:#eff1df;border-radius:48% 46% 43% 45%;transform:rotate(-5deg);z-index:-2}.art-caption{position:absolute;left:80px;top:22px;font-size:8px;letter-spacing:2px;color:#9aab8b;transform:rotate(-4deg)}.illustrated-table{position:absolute;left:40px;right:35px;top:150px;height:157px;border-radius:50%;background:#81a386;border:10px solid #d7be8e;box-shadow:0 13px 0 #b3986f,0 20px 0 #ab966419;transform:rotate(-6deg)}.table-stitch{position:absolute;inset:9px;border:1px dashed #b3c5a4;border-radius:50%;display:flex;align-items:center;justify-content:center}.table-clover{position:absolute;left:35px;top:32px;font-size:35px;color:#b1c0a0;transform:rotate(-10deg)}.art-cards{display:flex;gap:7px;transform:rotate(9deg)}.art-card{height:89px;width:62px;background:#fffdf4;border-radius:7px;box-shadow:0 4px 1px #2c4c3820;padding:7px 8px;font-family:Georgia,serif;font-size:20px;line-height:1;color:#be7e70;transform:rotate(-17deg)}.art-card span{display:block;text-align:center;font-size:32px;margin-top:5px}.art-card:nth-child(2){transform:translateY(-10px);color:#5f8464}.art-card:nth-child(3){transform:rotate(17deg)}.mascot{position:absolute;z-index:-1}.face{position:relative;width:111px;height:99px;background:#fffaf0;border-radius:47% 46% 42% 44%;box-shadow:inset -5px -5px 0 #eee7d4}.bunny{left:80px;top:78px;transform:rotate(-10deg)}.ear{position:absolute;background:#fffaf0}.bunny .ear{width:27px;height:65px;border-radius:50%;top:-47px;left:14px;transform:rotate(-13deg);border:7px solid #fffaf0;background:#efd4c6}.bunny .e2{left:66px;transform:rotate(15deg)}.eyes{position:absolute;top:34px;left:26px;font-size:10px;letter-spacing:2px;color:#555749}.cheeks{position:absolute;color:#eeb6a1;top:45px;left:13px;font-size:15px;letter-spacing:2px;opacity:.7}.mouth{position:absolute;top:45px;left:47px;color:#686350;font-size:22px}.bear{right:70px;top:103px;transform:rotate(13deg)}.bear .face{background:#cca984;box-shadow:inset -5px -5px 0 #b99573}.bear .ear{width:39px;height:39px;background:#bb9471;border:8px solid #cda986;border-radius:50%;left:1px;top:-14px}.bear .e2{left:71px}.bear .cheeks{color:#c88169}.bear .mouth{background:#e4c7a6;border-radius:50%;padding:0 9px;left:35px}.art-spark{position:absolute;color:#bcab73;font-size:26px}.s1{left:27px;top:100px}.s2{right:16px;top:70px;font-size:33px;color:#c49f80}.s3{right:55px;bottom:3px;font-size:20px}.art-bubble{position:absolute;right:0;bottom:56px;background:#fffdf5;padding:12px 17px;border-radius:13px 13px 13px 2px;font-size:11px;transform:rotate(5deg);box-shadow:var(--shadow)}.art-leaf{position:absolute;left:0;bottom:4px;font-size:59px;color:#759173;transform:rotate(-30deg)}.tiny-cloud{position:absolute;background:#fffdf4;width:50px;height:15px;border-radius:20px}.tiny-cloud:before{content:'';position:absolute;width:27px;height:22px;border-radius:50%;background:inherit;left:10px;top:-9px}.cloud-one{right:93px;top:44px}.cloud-two{left:24px;bottom:80px;width:38px}.lobby{padding-top:25px}.section-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.eyebrow{font-size:9px;letter-spacing:2px;color:#929b87;font-weight:500}h2{font-size:23px;letter-spacing:1px;margin:9px 0 0;font-weight:700}.name-label{display:flex;align-items:center;gap:12px;font-size:11px;color:#969d91}.name-label input{width:143px;background:transparent;border:0;border-bottom:1px solid #d6ddcf;padding:8px 3px;color:var(--ink);font-size:12px;border-radius:0}.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:19px}.mode-card{position:relative;border:1px solid #e0e6d7;border-radius:17px;padding:25px 27px 20px;background:#edf2e6;overflow:hidden}.friends-card{background:#f9eee4;border-color:#efdfce}.join-card{background:#f0f0e9;border-color:#e4e4d9}.mode-icon{display:flex;align-items:center;justify-content:center;background:#ffffffa0;width:43px;height:43px;border-radius:13px;font-size:23px;margin-bottom:19px}.mode-number{position:absolute;right:25px;top:34px;font-size:8px;letter-spacing:1.3px;color:#969f87}.mode-card h3{font-size:20px;margin:0 0 10px;font-weight:700;letter-spacing:.5px}.mode-card p{font-size:12px;color:#8c9787;line-height:1.95;margin:0 0 21px}.friends-card p{color:#a39381}.primary,.secondary,.soft-button{border:0;border-radius:9px;padding:12px 20px;font-size:12px;font-weight:600;min-height:43px;white-space:nowrap}.primary{background:var(--green);color:white;box-shadow:0 4px 0 #2c604419}.primary:hover:not(:disabled){background:#346c55;box-shadow:0 5px 14px #427b6325}.secondary{background:#e9c3a6;color:#715c44}.secondary:hover:not(:disabled){background:#dfb593}.soft-button{background:#eef0e5;color:#69816a}.mode-card .primary,.mode-card .secondary{width:100%;display:flex;justify-content:space-between}.mode-foot{display:block;text-align:center;font-size:9px;letter-spacing:.7px;color:#99a18d;margin-top:13px}.friends-card .mode-foot{color:#af9982}#join-form{display:flex;background:#fffef8;border:1px solid #dce0d3;border-radius:9px;overflow:hidden;height:43px}#room-code{width:0;flex:1;border:0;background:transparent;outline-offset:-3px;padding:11px 14px;font-size:12px;letter-spacing:1px;color:var(--ink)}input::placeholder{color:#a6ac9c}.join-button{width:47px;border:0;background:#e4e9d8;font-size:22px}.little-note{display:flex;align-items:center;gap:12px;padding:27px 0 16px;font-size:11px;color:#9ba28e}.little-note>span:first-child{font-size:21px;color:#c2ae7b}.little-note p{margin:0}.inline-button{font-size:11px;color:#718970;text-decoration:underline;text-underline-offset:3px}.note-line{height:1px;background:var(--line);flex:1;margin:0 16px}.note-cards{letter-spacing:9px;font-size:16px;color:#a6b59e}.note-cards i{font-style:normal;color:#cdab98}footer{max-width:1184px;margin:16px auto 0;padding:22px 0 30px;display:flex;justify-content:space-between;border-top:1px solid var(--line);font-size:10px;color:#a1a693}footer>span:last-child{font-size:8px;letter-spacing:1.7px}footer i{font-style:normal;font-size:18px;margin-left:20px;color:#a3b08d}#toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,15px);padding:13px 24px;border-radius:12px;background:#344c43;color:#fffdf7;box-shadow:0 8px 25px #344c4330;opacity:0;pointer-events:none;transition:.2s;z-index:100;font-size:13px;max-width:90vw;width:max-content}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);border-radius:22px;padding:30px;max-width:820px;width:92vw;max-height:85vh;color:var(--ink);background:var(--cream);box-shadow:0 20px 80px #263f4325}dialog::backdrop{background:#273e3b65;backdrop-filter:blur(5px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.rule-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px 28px;margin-top:20px}.rule-grid h3{font-size:14px}.rule-grid p,.rule-note{font-size:12px;line-height:1.9;color:#7f8c7f}.rule-note{background:#edf1e6;padding:15px;border-radius:12px}dialog a{font-size:11px;color:#779175}.game-page{padding-top:25px}.game-heading{display:flex;justify-content:space-between;align-items:center}.game-heading h2{margin-top:4px}.room-chip{font-size:10px;letter-spacing:1px;font-weight:400;border:1px solid var(--line);padding:5px 9px;border-radius:30px;vertical-align:middle;margin-left:10px}.game-tools{display:flex;gap:24px}.score-strip{display:flex;justify-content:space-between;align-items:center;background:#f0f1e7;border:1px solid #e4e7da;padding:12px 23px;border-radius:12px;margin-top:20px;font-size:12px}.score-strip strong{font-size:16px;margin-left:8px}.score-strip b{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.mint-dot{background:#709981}.peach-dot{background:#d39c7c}.round-label{color:#7e907a;font-size:11px}.round-label i{font-style:normal;margin:0 10px}.round-label small{margin-left:13px;color:#bc8070}.playground{position:relative;height:385px;margin:8px 0 0}.felt{position:absolute;inset:54px 106px 35px;background:#dfebd9;border:10px solid #e8ddc5;border-radius:155px;box-shadow:0 7px 0 #d2c6ad,0 15px 30px #374f3410}.felt-inner{position:absolute;inset:11px;border:1px dashed #b6c6aa;border-radius:145px;display:flex;align-items:center;justify-content:center}.felt-logo{font-size:58px;color:#bccfb2;opacity:.35;text-align:center;transform:rotate(-8deg)}.felt-logo small{display:block;font-size:14px;letter-spacing:4px}.player{position:absolute;display:flex;align-items:center;gap:10px;background:#fffdf5;padding:9px 13px 9px 9px;border:1px solid #e2e5d8;border-radius:16px;box-shadow:var(--shadow);min-width:148px;z-index:2}.player.active{border-color:#82aa75;box-shadow:0 0 0 4px #91b48220}.player strong{font-size:12px;max-width:125px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player strong small{font-size:9px;color:#8a9b7b}.avatar{width:43px;height:46px;background:#f2eadb;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:30px;position:relative}.my-team .avatar{background:#e7eedc}.player-sub{display:block;font-size:9px;color:#9ba390;margin-top:3px}.hand-count{font-size:10px;color:#768969}.north{top:9px;left:50%;transform:translateX(-50%)}.south{bottom:3px;left:50%;transform:translateX(-50%)}.west{left:0;top:155px}.east{right:0;top:155px}.place{position:absolute;right:-5px;top:-5px;background:#d4b580;color:white;border-radius:50%;font-size:11px;height:20px;width:20px;display:grid;place-items:center}.pass-bubble{position:absolute;font-size:11px;white-space:nowrap;background:#fffcf0;border:1px solid #dfe5d3;padding:6px 10px;border-radius:10px;bottom:-31px;left:50%;transform:translateX(-50%);color:#9b9e84}.table-center{position:absolute;left:178px;right:178px;top:114px;bottom:96px;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:1}.waiting-message{text-align:center}.waiting-message h3{font-size:21px;font-weight:600;margin:10px 0}.waiting-message p{font-size:12px;line-height:1.9;color:#7c9273}.waiting-message .eyebrow{font-size:8px}.waiting-message .primary{padding:10px 20px;min-height:38px}.clear-trick{text-align:center;font-size:12px;color:#779371}.clear-trick>span{font-size:31px;color:#9bad80}.trick-label{font-size:11px;color:#73836a;margin-bottom:13px;text-align:center}.trick-label span{border-left:1px solid #b7c9aa;padding-left:10px;margin-left:8px;font-size:10px}.played-cards{display:flex;justify-content:center}.card{position:relative;flex:none;width:72px;height:106px;background:#fffdf7;border:1px solid #d9dfd0;border-radius:8px;color:#42654e;padding:0;box-shadow:0 3px 4px #364c3215;text-align:left;transition:transform .15s,box-shadow .15s;user-select:none}.card.red{color:#c17c70}.card.wild{background:#fff6e8;border-color:#d6b478}.card-corner{position:absolute;left:7px;top:6px;font-size:21px;font-weight:600;line-height:1;letter-spacing:-1px}.card-corner i{display:block;font-style:normal;font-size:18px;margin-top:3px;letter-spacing:0}.card-center{font-size:33px;position:absolute;left:27px;top:38px}.card-bottom{position:absolute;right:6px;bottom:5px;transform:rotate(180deg);font-size:15px}.wild-label{position:absolute;bottom:7px;left:5px;font-size:8px;color:#b79550}.joker-text{font-size:9px;writing-mode:vertical-rl;letter-spacing:1px}.card.small{width:52px;height:76px;border-radius:6px}.small .card-corner{font-size:16px;left:5px;top:5px}.small .card-corner i{font-size:13px}.small .card-center{font-size:24px;left:19px;top:28px}.small .card-bottom{font-size:11px}.small .wild-label{font-size:7px}.played-cards .card+.card{margin-left:-9px}.hand-zone{padding:0 15px}.hand-header{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#8b9980;padding:10px 5px 25px;gap:10px}.hand-header i{font-style:normal;margin:0 8px;color:#c5cbbd}.turn-indicator{color:#668e60;font-weight:500}#countdown{font-size:10px;color:#b1935e;margin-left:7px}.hand{display:flex;justify-content:center;padding:10px 0 5px;min-height:132px;margin:0 15px}.hand .card{width:72px;flex-shrink:0}.hand .card:not(:last-child){margin-right:min(0px,calc((min(1124px, 100vw - 160px) - 72px) / max(1,var(--cards) - 1) - 72px))}.hand .card:hover{transform:translateY(-9px)}.hand .card.selected{transform:translateY(-22px);box-shadow:0 0 0 2px #82a977,0 8px 12px #45573f20;background:#f2f8e8}.action-bar{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;margin-top:13px}.action-buttons{display:flex;gap:10px}.action-buttons .primary{min-width:110px}.action-buttons .primary span{margin-left:20px}.selection-info{font-size:10px;color:#98a08d}.selection-info select{max-width:100%;border:1px solid #dfe5d6;background:#f4f5eb;color:#78906b;padding:8px;border-radius:8px;font-size:11px}.keyboard-tip{font-size:9px;color:#a7ae9b;text-align:right}.auto-on{color:#bd8656}.round-log{border-top:1px solid var(--line);margin-top:28px;font-size:11px;color:#87967b;padding:15px 5px}.round-log summary{cursor:pointer;list-style:none}.round-log summary span{float:right;font-size:10px;color:#acb49e}.round-log p{margin:9px 0}.result-overlay{position:fixed;inset:0;background:#3b4e4260;backdrop-filter:blur(5px);z-index:20;display:grid;place-items:center;padding:20px}.result-card{background:#fffdf5;padding:30px 40px;border-radius:25px;text-align:center;width:450px;max-width:100%;box-shadow:0 25px 60px #20322330}.result-flower{display:block;font-size:46px;margin-bottom:16px}.result-card h2{font-size:22px;margin-top:12px}.result-card>p{font-size:12px;color:#8c9980;margin:16px 0 23px}.result-places{margin-bottom:25px}.result-places>div{display:flex;justify-content:space-between;font-size:12px;padding:10px 0;border-bottom:1px solid #eef0e5}.result-places span{font-size:11px;color:#9ba18b}.result-card>.primary{width:100%}.result-card>.text-button{margin-top:12px}@media(min-width:1500px){.landing{min-height:470px}.hero-art{transform:scale(1.03)}}@media(max-width:1279px){main,footer{margin-left:48px;margin-right:48px}.hero-art{transform:scale(.94);transform-origin:center}.topbar{padding:0 48px}}@media(max-width:1000px){h1{font-size:36px}.landing{gap:0;min-height:400px}.hero-art{transform:scale(.84);margin-left:-15px;margin-right:-35px}.mode-card{padding:22px 20px 18px}.mode-number{font-size:7px;right:17px;letter-spacing:.5px}.mode-card h3{font-size:17px}.mode-card p{font-size:11px}.hero-tags{gap:17px}.heading-flower{font-size:22px}.felt{inset:54px 63px 35px}.player{min-width:128px}.table-center{left:144px;right:144px}.card{width:64px}.action-bar{grid-template-columns:1fr auto}.keyboard-tip{display:none}.card-center{opacity:.6}.mode-icon{margin-bottom:15px}}@media(max-width:700px){.topbar{height:78px;padding:0 22px}.brand{font-size:17px;gap:8px}.brand small{font-size:7px;letter-spacing:1.7px}.brand-icon{font-size:34px}.nav{gap:16px}.connection{display:none}.nav .text-button{font-size:11px}.sound-button{width:29px;height:29px}main,footer{margin-left:22px;margin-right:22px}.landing{grid-template-columns:1fr;padding-top:29px;position:relative;min-height:initial}.hero-copy{z-index:1}.hero-art{height:280px;margin:-10px 0 0;transform:scale(.83);transform-origin:center;max-width:430px;width:100%;justify-self:center}.hero-art:before{bottom:-18px}.illustrated-table{left:10px;right:5px;top:133px;height:140px}.bunny{left:57px;top:65px}.bear{right:50px;top:88px}.art-caption{top:5px;left:50px}.art-bubble{bottom:10px;right:-10px}.art-leaf{bottom:-20px}.s1{top:85px}.cloud-one{top:23px}.s2{top:60px}.s3{bottom:-23px}.hero-copy h1{font-size:37px;margin-top:19px;margin-bottom:13px}.hero-description{font-size:12px}.hero-tags{margin-top:17px;font-size:10px;gap:22px}.heading-flower{top:8px;font-size:26px}.pill{font-size:10px}.lobby{padding-top:22px}.section-top{align-items:flex-end;margin-bottom:20px}.section-top h2{font-size:20px}.eyebrow{font-size:7px;letter-spacing:1.5px}.name-label{display:block;font-size:9px}.name-label input{display:block;width:104px;padding:5px 0;font-size:11px}.mode-grid{grid-template-columns:1fr;gap:14px}.mode-card{padding:22px 24px 18px}.mode-card h3{font-size:20px}.mode-card p{font-size:12px}.mode-number{top:38px;right:26px;font-size:8px;letter-spacing:1.2px}.mode-icon{float:left;margin:0 15px 0 0;width:48px;height:48px}.mode-card h3{margin-top:69px}.mode-card p br{display:none}.mode-foot{font-size:9px}.little-note{padding-top:23px;font-size:10px;gap:8px}.note-line,.note-cards{display:none}footer{margin-top:0;padding:19px 0;gap:14px;font-size:9px}footer>span:last-child{font-size:6px;letter-spacing:1px;text-align:right}footer i{display:none}.rule-grid{grid-template-columns:1fr;gap:0}dialog{padding:22px}.dialog-heading h2{font-size:20px}.game-page{padding-top:20px}.game-heading h2{font-size:18px}.room-chip{font-size:8px;margin-left:2px;padding:4px 6px}.game-tools{gap:12px}.game-tools .text-button{font-size:9px}.game-heading .eyebrow{font-size:6px}.score-strip{padding:10px;font-size:10px;margin-top:16px}.score-strip strong{font-size:13px;margin-left:2px}.round-label{font-size:9px}.round-label small{display:none}.round-label i{margin:0 4px}.playground{height:337px;margin:7px -12px 0}.felt{inset:51px 19px 32px;border-width:7px;border-radius:85px}.felt-inner{inset:8px;border-radius:78px}.player{padding:6px;min-width:0;gap:6px;border-radius:11px}.player .avatar{width:33px;height:37px;font-size:25px;border-radius:9px}.player strong{font-size:10px;max-width:74px}.player-sub{font-size:7px}.hand-count{font-size:9px}.north{top:9px}.south{bottom:0}.west{left:0;top:114px;flex-direction:column;align-items:center;min-width:60px;text-align:center}.east{right:0;top:114px;flex-direction:column;align-items:center;min-width:60px;text-align:center}.west .player-sub,.east .player-sub{display:none}.west .avatar,.east .avatar{margin-bottom:2px}.table-center{left:66px;right:66px;top:96px;bottom:80px}.trick-label{font-size:9px;line-height:1.7;margin-bottom:9px}.trick-label span{font-size:9px;margin-left:5px;padding-left:5px}.card.small{width:38px;height:61px}.small .card-corner{font-size:13px;left:4px;top:4px}.small .card-corner i{font-size:11px}.small .card-center{font-size:19px;left:13px;top:25px}.small .card-bottom{font-size:9px}.played-cards .card+.card{margin-left:-15px}.waiting-message h3{font-size:15px}.waiting-message p{font-size:10px}.waiting-message .eyebrow{display:none}.waiting-message .primary{font-size:10px;padding:10px}.clear-trick{font-size:10px}.pass-bubble{font-size:9px;bottom:-29px;padding:5px 8px}.hand-zone{margin:0 -12px;padding:0}.hand-header{padding:12px 4px 17px;font-size:9px;gap:4px}.hand-header .text-button{font-size:10px}.hand{justify-content:flex-start;overflow-x:auto;overflow-y:visible;margin:0 -10px;padding:25px 12px 8px;min-height:132px;scrollbar-width:thin;scrollbar-color:#c2ceb6 transparent}.hand .card{width:54px;height:84px}.hand .card:not(:last-child){margin-right:-32px}.hand .card-corner{font-size:18px;left:4px;top:5px}.hand .card-corner i{font-size:15px}.hand .card-center{font-size:26px;left:19px;top:32px}.hand .card-bottom{font-size:13px}.hand .card.selected{transform:translateY(-17px)}.action-bar{display:flex;flex-direction:column;gap:12px;margin-top:2px}.selection-info{height:23px;text-align:center;font-size:10px}.selection-info select{padding:4px;font-size:10px}.action-buttons{gap:7px;width:100%;justify-content:center}.action-buttons button{padding:10px 15px;font-size:11px}.action-buttons .primary{min-width:90px}.action-buttons .primary span{margin-left:12px}.round-log{margin-top:20px;font-size:10px}.result-card{padding:24px}.result-card h2{font-size:19px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.swipe-tip{display:none}
@media(max-width:700px){.swipe-tip{display:block;text-align:center;color:#96a38c;font-size:9px;letter-spacing:.5px;margin:2px 0 4px}}

.playground.has-plays{height:490px}
.play-pile{position:absolute;z-index:3;width:250px;height:98px;padding:7px 9px;background:#fffdf5e8;border:1px solid #d7e4d1;border-radius:12px;box-shadow:0 7px 19px #324b3420;display:flex;flex-direction:column;gap:4px}
.play-pile.empty{background:#fffdf58c;border-style:dashed;box-shadow:none}
.pile-north{top:92px;left:50%;transform:translateX(-50%);width:300px}
.pile-south{bottom:92px;left:50%;transform:translateX(-50%);width:300px}
.pile-west{top:193px;left:165px}
.pile-east{top:193px;right:165px}
.pile-heading{font-size:9px;color:#62806a;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pile-list{overflow:auto;min-height:0;flex:1;scrollbar-width:thin;scrollbar-color:#bdcdb4 transparent}
.pile-empty{font-size:9px;color:#abb5a5}
.pile-entry{display:flex;align-items:center;gap:4px;min-height:24px;margin:2px 2px 4px 0;padding:2px 4px;background:#f4f5eb;border:1px solid transparent;border-radius:6px;font-size:8px;color:#7f8c7b;white-space:nowrap;position:relative}
.pile-entry.latest{background:#eaf5df;border-color:#76a76d;box-shadow:0 2px 6px #5279542a;transform:scale(1.045);transform-origin:left center;z-index:1}
.pile-number{min-width:10px;color:#9aaa94}
.pile-entry.latest .pile-number{color:#3b8057;font-weight:800}
.pile-cards{display:flex;overflow-x:auto;min-width:0;flex:1;scrollbar-width:thin}
.mini-card{display:inline-flex;align-items:center;justify-content:center;flex:none;min-width:20px;height:19px;padding:0 2px;margin-right:1px;background:#fffefa;border:1px solid #dfe4d9;border-radius:3px;color:#41634d;font-family:Georgia,serif;font-size:10px}
.mini-card.red{color:#c77c70}
.pile-shape{font-size:8px;flex:none;color:#849580}
.has-plays .table-center{top:203px;bottom:202px;left:445px;right:445px;text-align:center}
.has-plays .felt-logo{opacity:.16}
.trick-status{font-size:9px;color:#a1b29c}
.organize-bar,.flush-bar{display:flex;align-items:center;gap:7px;margin:0 15px 8px;font-size:10px;color:#789076;min-height:30px}
.organize-bar>span,.flush-bar>span{font-weight:700;margin-right:4px;flex:none}
.organize-bar small,.flush-bar small{font-size:9px;color:#a1ae9b;margin-left:4px}
.organize-button{border:1px solid #dce6d8;background:#f5f6ec;color:#789176;border-radius:20px;padding:5px 10px;font-size:10px;white-space:nowrap}
.organize-button.active{background:#e0edd9;color:#3d785b;border-color:#9ec19b;font-weight:700}
.flush-light{width:28px;height:27px;border:1px solid #dde4d9;border-radius:8px;background:#f5f5ee;color:#a9b1a7;font-size:15px;line-height:1;position:relative;padding:0}
.flush-light i{position:absolute;width:4px;height:4px;border-radius:50%;background:#cbd0c5;right:3px;top:3px}
.flush-light.lit{background:#e3f2d9;color:#4e805d;border-color:#88bb80;box-shadow:0 0 0 2px #e1f3d6,0 0 10px #a0ca80}
.flush-light.lit i{background:#68ae57;box-shadow:0 0 5px #77bd5d}
.flush-light.lit[data-flush="H"],.flush-light.lit[data-flush="D"]{color:#bb756b}
.flush-light:disabled{opacity:1;cursor:default}
.hand.grouped-hand{justify-content:flex-start;align-items:flex-end;overflow-x:auto;gap:10px;padding-top:14px;min-height:149px;scrollbar-width:thin;scrollbar-color:#c2ceb6 transparent}
.hand-group{display:flex;flex-direction:column;flex:none;min-width:72px}
.group-label{font-size:9px;color:#8fa088;white-space:nowrap;margin-bottom:6px}
.group-cards{display:flex;align-items:flex-end}
.hand-group .card:not(:last-child){margin-right:-39px}
@media(max-width:1000px){.pile-west{left:125px}.pile-east{right:125px}.has-plays .table-center{left:38%;right:38%}}
@media(max-width:700px){
  .playground.has-plays{height:520px}
  .has-plays .felt{inset:51px 10px 32px}
  .has-plays .west,.has-plays .east{top:190px}
  .play-pile{height:78px;padding:5px 6px;gap:2px;border-radius:9px}
  .pile-north{top:84px;width:205px}
  .pile-south{bottom:84px;width:205px}
  .pile-west{top:292px;left:8px;width:141px}
  .pile-east{top:292px;right:8px;width:141px}
  .pile-heading{font-size:8px}
  .pile-entry{min-height:21px;padding:1px 3px;gap:2px}
  .mini-card{height:16px;min-width:17px;font-size:8px}
  .pile-shape{font-size:7px}
  .has-plays .table-center{left:25%;right:25%;top:224px;bottom:250px}
  .has-plays .trick-label{margin-bottom:3px}
  .trick-status{font-size:8px}
  .organize-bar,.flush-bar{margin:0 0 7px;gap:4px;flex-wrap:wrap;font-size:9px}
  .organize-bar>span,.flush-bar>span{margin-right:3px}
  .organize-button{font-size:9px;padding:5px 7px}
  .organize-bar small{display:none}
  .flush-bar small{font-size:8px}
  .hand.grouped-hand{min-height:137px;gap:8px;padding-top:12px}
  .hand-group{min-width:54px}
  .group-label{font-size:8px}
  .hand-group .card:not(:last-child){margin-right:-31px}
}

/* The cards and their controls sit on the felt, below the four public play areas. */
.playground.has-plays{height:760px;margin-top:18px}
.has-plays .felt{inset:36px 8px 55px;border-radius:130px}
.has-plays .felt-inner{border-radius:120px}
.has-plays .north{top:0}
.has-plays .west,.has-plays .east{top:240px}
.has-plays .south{bottom:0}
.has-plays .pile-north{top:90px}
.has-plays .pile-west,.has-plays .pile-east{top:246px}
.has-plays .pile-west{left:165px}
.has-plays .pile-east{right:165px}
.has-plays .pile-south{top:244px;bottom:auto;height:86px}
.has-plays .table-center{top:176px;bottom:auto;height:66px;left:38%;right:38%}
.has-plays .hand-zone{position:absolute;z-index:4;left:35px;right:35px;bottom:54px;height:310px;margin:0;padding:10px 17px 12px;background:#f8faefeb;border:1px solid #c9d9c1;border-radius:25px;box-shadow:0 10px 24px #4b674627}
.has-plays .hand-header{padding:1px 4px 7px}
.has-plays .organize-bar,.has-plays .flush-bar{margin:0 0 5px;min-height:27px}
.has-plays .hand.grouped-hand{margin:0;min-height:144px;max-height:144px;padding:11px 4px 5px}
.has-plays .action-bar{margin-top:6px}
.has-plays .swipe-tip{margin:0}
.hand.grouped-hand.dragging-select{cursor:grabbing}
.hand.grouped-hand,.hand.grouped-hand .card{touch-action:pan-y}
@media(max-width:1000px){
  .has-plays .pile-west{left:132px}
  .has-plays .pile-east{right:132px}
  .has-plays .hand-zone{left:21px;right:21px}
}
@media(max-width:700px){
  .playground.has-plays{height:790px;margin:9px -12px 0}
  .has-plays .felt{inset:30px 1px 53px;border-width:7px;border-radius:53px}
  .has-plays .felt-inner{inset:7px;border-radius:47px}
  .has-plays .north{top:0}
  .has-plays .west,.has-plays .east{top:132px}
  .has-plays .south{bottom:0}
  .has-plays .pile-north{top:78px;width:205px}
  .has-plays .pile-west,.has-plays .pile-east{top:245px;width:141px;height:72px}
  .has-plays .pile-west{left:8px}
  .has-plays .pile-east{right:8px}
  .has-plays .pile-south{top:326px;bottom:auto;width:205px;height:67px}
  .has-plays .table-center{top:187px;bottom:auto;height:48px;left:27%;right:27%}
  .has-plays .hand-zone{left:6px;right:6px;bottom:25px;height:298px;padding:8px 8px 9px;border-radius:17px}
  .has-plays .hand-header{padding:0 1px 5px;gap:3px}
  .has-plays .organize-bar,.has-plays .flush-bar{min-height:24px;margin:0 0 4px}
  .has-plays .hand.grouped-hand{margin:0 -2px;min-height:127px;max-height:127px;padding:11px 4px 3px}
  .has-plays .swipe-tip{font-size:8px;margin:0 0 3px}
  .has-plays .action-bar{gap:5px;margin-top:1px}
  .has-plays .selection-info{height:19px}
  .has-plays .action-buttons{gap:4px}
  .has-plays .action-buttons button{padding:7px 8px;font-size:10px;min-height:36px}
  .has-plays .action-buttons .primary{min-width:72px}
  .has-plays .action-buttons .primary span{margin-left:6px}
}

/* The game uses one continuous felt surface; the landing page keeps its cream layout. */
.game-active main{max-width:none;margin:0;padding:0}
.game-active footer{display:none}
.game-active .topbar{max-width:none;height:62px;padding:0 28px}
.game-active .game-page{padding:0}
.game-active .playground,.game-active .playground.has-plays{width:100%;height:calc(100svh - 62px);min-height:820px;margin:0}
.game-active .felt,.game-active .has-plays .felt{inset:0;border:0;border-bottom:12px solid #d7bd90;border-radius:0 0 65px 65px;background:radial-gradient(circle at 50% 39%,#238f7b 0,#147963 52%,#0b5b4e 100%);box-shadow:inset 0 20px 50px #073d392e,inset 0 0 0 12px #ffffff0b,0 12px 0 #ab9276}
.game-active .felt:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.15;background-image:repeating-linear-gradient(35deg,#ffffff20 0,#ffffff20 1px,transparent 1px,transparent 7px);border-radius:inherit}
.game-active .felt-inner,.game-active .has-plays .felt-inner{inset:17px;border:1px solid #b2e5c340;border-radius:0 0 51px 51px;pointer-events:none}
.game-active .felt-logo{color:#d7f0db;opacity:.13;font-size:72px}
.game-active .felt-logo small{font-size:12px}
.game-active .table-hud{position:absolute;z-index:6;top:0;left:0;right:0;pointer-events:none}
.game-active .table-hud button{pointer-events:auto}
.game-active .game-heading{padding:13px 27px 0;color:#f5f5e8}
.game-active .game-heading .eyebrow{color:#c7e0ce}
.game-active .game-heading h2{font-size:19px;margin-top:2px}
.game-active .room-chip{border-color:#ffffff55;color:#e9f4e7}
.game-active .game-tools .text-button{color:#f7f4de}
.game-active .score-strip{max-width:650px;margin:6px auto 0;padding:8px 20px;border:1px solid #d6ebd955;background:#f4f7e71d;color:#ecf7ec;backdrop-filter:blur(4px)}
.game-active .round-label,.game-active .round-label small{color:#e3f2e3}
.game-active .player{min-width:170px;max-width:220px;padding:8px;border:2px solid #e5eed5;background:#fffaf0f0;border-radius:16px;box-shadow:0 8px 24px #073c3740;gap:8px}
.game-active .player.active{border-color:#f8d17e;background:#fff2d5;box-shadow:0 0 0 5px #f8d17e42,0 8px 26px #073c374a}
.game-active .player-info{min-width:0;flex:1}
.game-active .player strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-active .seat-clock{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:43px;height:43px;border-radius:50%;background:#dbe5d9;border:2px solid #b8cdb8;color:#829b84;font-size:15px;font-weight:800;line-height:1}
.game-active .seat-clock small{font-size:7px;font-weight:500;margin-top:2px}
.game-active .seat-clock:not(.running) small{visibility:hidden}
.game-active .seat-clock.running{background:#f4c779;border-color:#fff1bd;color:#5e4934;box-shadow:0 0 0 4px #f2ca7852,0 0 17px #f0c779;animation:clockPulse 2s ease-in-out infinite}
@keyframes clockPulse{50%{box-shadow:0 0 0 6px #f2ca7828,0 0 24px #f0c779}}
.game-active .north{top:112px;left:50%}
.game-active .west{top:34%;left:22px}
.game-active .east{top:34%;right:22px}
.game-active .south{bottom:24px;left:24px;transform:none}
.game-active .play-pile{width:290px;height:88px;background:#064f46b8;border:1px solid #a9dac08c;border-radius:13px;box-shadow:0 9px 23px #073e3637;color:#e8f5e9}
.game-active .play-pile.empty{background:#0b604f5c;border-style:dashed;box-shadow:none}
.game-active .pile-heading{color:#dcf4de}
.game-active .pile-empty{color:#b8dbc5}
.game-active .pile-entry{background:#c9edd628;color:#d8efdc}
.game-active .pile-entry.latest{background:#d6f4c8;border-color:#f6d17f;color:#315c48;transform:scale(1.055);box-shadow:0 0 0 2px #f3d58a68,0 4px 15px #063f372f}
.game-active .pile-north{top:200px;left:50%;width:325px}
.game-active .pile-west{top:43%;left:195px}
.game-active .pile-east{top:43%;right:195px}
.game-active .pile-south{top:auto;bottom:346px;left:50%;width:325px;height:82px}
.game-active .has-plays .table-center{top:37%;bottom:auto;left:40%;right:40%;height:65px;color:#dff0df}
.game-active .trick-label,.game-active .trick-status,.game-active .clear-trick{color:#d9efda}
.game-active .trick-label span{color:#f1d7a9}
.game-active .hand-zone{position:absolute;z-index:5;left:clamp(205px,18vw,290px);right:clamp(180px,16vw,265px);bottom:31px;height:305px;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;display:flex;flex-direction:column;color:#eef7e9}
.game-active .hand-header{order:0;padding:0 4px 2px;color:#e9f4e5}
.game-active .hand.grouped-hand{order:1;margin:0;min-height:166px;max-height:166px;padding:15px 4px 6px;gap:10px;scrollbar-color:#b8dabd transparent}
.game-active .hand-group{min-width:84px}
.game-active .hand-group .card{width:84px;height:122px}
.game-active .hand-group .card:not(:last-child){margin-right:-53px}
.game-active .group-label{color:#e7f1de;font-size:10px}
.game-active .hand .card.selected{box-shadow:0 0 0 3px #f0d382,0 7px 18px #063e3666;background:#fff9dd}
.game-active .organize-bar{order:3;margin:2px 0 2px;color:#e9f6e7}
.game-active .flush-bar{order:4;margin:0;color:#e9f6e7}
.game-active .organize-bar small,.game-active .flush-bar small{color:#c5e0cc}
.game-active .organize-button{background:#ffffff20;border-color:#c1e3c775;color:#eff8eb}
.game-active .organize-button.active{background:#e7f4d6;border-color:#f2dab0;color:#326852}
.game-active .flush-light{background:#ffffff21;border-color:#c1e3c775;color:#d1ead5}
.game-active .flush-light.lit{background:#e8f7d8;color:#3e7652}
.game-active .swipe-tip{order:2;color:#d0e6d1}
.game-active .action-bar{order:5;margin-top:4px}
.game-active .selection-info,.game-active .keyboard-tip{color:#e0f0d8}
.game-active .action-buttons .primary{background:#f3d092;color:#4b5643}
.game-active .action-buttons .secondary{background:#f3c2a2;color:#6e4c42}
.game-active .action-buttons .soft-button{background:#eaf3dd;color:#4c7258}
.game-active .round-log{margin:0;padding:14px 28px;background:#fbfaf5;color:#65826c}
.game-active .playground:not(.has-plays) .table-center{left:28%;right:28%;top:34%;bottom:auto;height:220px;color:#e8f3e4}
.game-active .waiting-message p{color:#d1e6d0}
@media(max-width:1050px){
  .game-active .pile-west{left:150px;width:245px}
  .game-active .pile-east{right:150px;width:245px}
  .game-active .hand-zone{left:175px;right:150px}
}
@media(max-width:700px){
  .game-active .topbar{height:60px;padding:0 18px}
  .game-active .playground,.game-active .playground.has-plays{height:980px;min-height:0;margin:0}
  .game-active .felt,.game-active .has-plays .felt{inset:0;border-bottom-width:9px;border-radius:0 0 38px 38px}
  .game-active .felt-inner,.game-active .has-plays .felt-inner{inset:9px;border-radius:0 0 30px 30px}
  .game-active .felt-logo{font-size:44px}
  .game-active .game-heading{padding:11px 12px 0}
  .game-active .game-heading h2{font-size:16px}
  .game-active .game-heading .eyebrow{font-size:6px}
  .game-active .game-tools{gap:8px}
  .game-active .game-tools .text-button{font-size:9px}
  .game-active .score-strip{margin:8px 11px 0;padding:8px 8px;font-size:9px}
  .game-active .score-strip strong{font-size:13px}
  .game-active .round-label{font-size:8px}
  .game-active .player{min-width:0;max-width:none;padding:5px;gap:4px;border-width:1px;border-radius:11px;flex-direction:row;text-align:left}
  .game-active .player .avatar{width:31px;height:34px;font-size:23px;margin:0}
  .game-active .player strong{font-size:9px;max-width:65px}
  .game-active .player-sub{display:none}
  .game-active .hand-count{font-size:8px}
  .game-active .seat-clock{width:30px;height:30px;font-size:12px;border-width:1px}
  .game-active .seat-clock small{font-size:6px;margin-top:0}
  .game-active .north{top:117px;left:50%}
  .game-active .west{top:278px;left:5px;width:117px}
  .game-active .east{top:278px;right:5px;width:117px}
  .game-active .south{bottom:13px;left:9px;width:145px}
  .game-active .play-pile{height:72px;padding:5px 6px}
  .game-active .pile-north{top:187px;width:213px}
  .game-active .pile-west{top:357px;left:52px;width:calc((100vw - 108px)/2);max-width:141px}
  .game-active .pile-east{top:357px;right:52px;width:calc((100vw - 108px)/2);max-width:141px}
  .game-active .pile-south{top:455px;bottom:auto;width:213px;height:68px}
  .game-active .has-plays .table-center{top:286px;left:34%;right:34%;height:53px}
  .game-active .table-center .trick-label{font-size:9px}
  .game-active .hand-zone{left:8px;right:8px;bottom:107px;height:342px;padding:0}
  .game-active .hand-header{font-size:9px;padding:0 2px 4px}
  .game-active .hand.grouped-hand{margin:0;min-height:137px;max-height:137px;padding:13px 3px 4px;gap:8px}
  .game-active .hand-group{min-width:62px}
  .game-active .hand-group .card{width:62px;height:99px}
  .game-active .hand-group .card:not(:last-child){margin-right:-38px}
  .game-active .group-label{font-size:8px}
  .game-active .organize-bar,.game-active .flush-bar{margin:1px 0 3px;min-height:25px;gap:4px}
  .game-active .organize-button{font-size:9px;padding:5px 7px}
  .game-active .flush-light{width:27px;height:26px}
  .game-active .swipe-tip{font-size:8px;margin:0}
  .game-active .action-bar{gap:4px;margin-top:2px}
  .game-active .selection-info{height:19px}
  .game-active .action-buttons{gap:5px}
  .game-active .action-buttons button{padding:7px 9px;font-size:10px;min-height:37px}
  .game-active .action-buttons .primary{min-width:72px}
  .game-active .playground:not(.has-plays) .table-center{left:15%;right:15%;top:39%;height:210px}
}
@media(max-width:350px){
  .game-active .west,.game-active .east{width:106px}
  .game-active .player strong{max-width:41px}
  .game-active .pile-west{left:52px}
  .game-active .pile-east{right:52px}
  .game-active .hand-group .card{width:59px;height:96px}
  .game-active .hand-group .card:not(:last-child){margin-right:-36px}
  .game-active .action-buttons{gap:3px}
  .game-active .action-buttons button{padding:6px 7px}
}
@media(min-width:701px) and (max-width:1050px){
  .game-active .west,.game-active .east{top:27%}
  .game-active .pile-west,.game-active .pile-east{top:37%;width:min(245px,calc(39vw - 150px))}
  .game-active .hand-zone{left:225px;right:115px}
}

/* One current-trick row per seat, with the full public play history in a drawer. */
.game-active .play-pile{height:64px;padding:7px 9px;overflow:hidden}
.game-active .pile-list{overflow:hidden;display:flex;align-items:center}
.game-active .pile-entry{width:100%;max-width:100%;min-height:27px;margin:2px 0;padding:3px 5px;transform:none;overflow:hidden}
.game-active .pile-entry.latest{transform:none;box-shadow:0 0 0 2px #f3d58a68,0 4px 15px #063f372f}
.game-active .pile-entry.passed{background:#e5f0e1;color:#346751;font-weight:700}
.game-active .pile-entry.revealing{animation:cardReveal 1s ease-out both}
.game-active .pile-south{height:64px}
@keyframes cardReveal{0%{opacity:0;transform:translateY(-12px) scale(.9)}45%{opacity:1;transform:translateY(0) scale(1.045)}100%{opacity:1;transform:none}}
.game-active .player.action-focus{border-color:#fff2a8;background:#fff6d9;box-shadow:0 0 0 9px #fdd97777,0 0 32px 12px #f9d38299;z-index:8;animation:actorFocus 1s ease-in-out infinite}
@keyframes actorFocus{50%{box-shadow:0 0 0 13px #fdd97735,0 0 42px 17px #f9d382aa}}
.game-active .hand-count{display:flex;align-items:baseline;gap:2px;color:#275e4a;font-weight:800;line-height:1.1;margin-top:3px}
.game-active .hand-count b{font-size:25px;font-variant-numeric:tabular-nums;letter-spacing:-1px}
.game-active .hand-count small{font-size:10px;font-weight:600}
.game-active .hand-count.low{color:#dc4f32;text-shadow:0 0 10px #ef806b50;animation:lowCount 1.5s ease-in-out infinite}
@keyframes lowCount{50%{filter:saturate(1.7);transform:scale(1.06);transform-origin:left center}}
#history-backdrop:not([hidden]){position:fixed;inset:0;z-index:29;background:#072f2c99;backdrop-filter:blur(2px)}
#history-drawer{position:fixed;z-index:30;top:0;right:0;bottom:0;width:min(410px,100vw);max-width:100vw;padding:23px 20px;background:#fbfaf5;color:#345b49;box-shadow:-20px 0 60px #072f2c44;transform:translateX(105%);transition:transform .28s ease;display:flex;flex-direction:column;visibility:hidden}
#history-drawer.open{transform:translateX(0);visibility:visible}
.history-head{display:flex;align-items:start;justify-content:space-between;border-bottom:1px solid #dbe6db;padding-bottom:13px}
.history-head small{font-size:9px;letter-spacing:2px;color:#8aa78f}.history-head h2{margin:5px 0 0;font-size:22px}
#history-close{width:34px;height:34px;border:1px solid #caddca;border-radius:50%;background:#eaf3e6;font-size:24px;line-height:1}
.history-note{font-size:11px;color:#789384;margin:12px 0 16px}
#history-list{overflow-y:auto;min-height:0;flex:1;scrollbar-width:thin}
.history-item{padding:10px 0;border-bottom:1px solid #e3eae1}
.history-item>div:first-child{display:flex;justify-content:space-between;gap:8px;font-size:12px}
.history-item>div:first-child span{font-size:10px;color:#879b83}
.history-cards{display:flex;gap:2px;overflow-x:auto;margin-top:8px;padding-bottom:2px;scrollbar-width:thin}
.history-cards .mini-card{height:24px;min-width:24px;font-size:12px}
.history-empty{font-size:12px;color:#829682}
@media(max-width:700px){
  .game-active .play-pile,.game-active .pile-south{height:54px;padding:4px 6px}
  .game-active .pile-entry{min-height:23px;padding:2px 3px}
  .game-active .pile-south{top:455px}
  .game-active .hand-count b{font-size:21px}
  .game-active .hand-count small{font-size:8px}
  .game-active .player strong{line-height:1.15}
  .game-active .player{min-height:54px}
}
@media(prefers-reduced-motion:reduce){.game-active .pile-entry.revealing,.game-active .player.action-focus,.game-active .hand-count.low{animation-duration:.08s}#history-drawer{transition-duration:.08s}}

/* A played card is about half the height of a card in the south hand. Six overlap within each seat's fixed footprint. */
.game-active .play-pile{width:200px;height:96px;padding:7px 9px;gap:3px;overflow:hidden}
.game-active .pile-north,.game-active .pile-south{width:200px}
.game-active .pile-south{height:96px}
.game-active .pile-heading{display:flex;justify-content:space-between;align-items:center;gap:5px;min-height:13px;font-size:10px;overflow:hidden}
.game-active .pile-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.game-active .pile-type{flex:none;color:#e3d3a4;font-size:9px}
.game-active .pile-list{overflow:hidden;min-height:0;flex:1;align-items:center}
.game-active .pile-entry{height:66px;min-height:0;padding:2px;margin:0;overflow:hidden;border-radius:6px}
.game-active .pile-entry.latest{box-shadow:inset 0 0 0 2px #f3d58a,0 0 10px #f3d58a66}
.game-active .pile-cards{width:100%;height:61px;flex:1;display:flex;align-items:stretch;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#aed2a9 transparent;touch-action:pan-x;overscroll-behavior-inline:contain}
.game-active .pile-cards .mini-card{position:relative;display:block;flex:none;width:46px;min-width:46px;height:61px;margin:0;border:1px solid #cbd8c7;border-radius:5px;box-shadow:0 2px 4px #134f3c2c;background:#fffdf8;color:#3c654c;text-align:left}
.game-active .pile-cards .mini-card+.mini-card{margin-left:-19px}
.game-active .pile-cards .mini-card.red{color:#bd6356}
.game-active .pile-cards .mini-card b{position:absolute;top:3px;left:4px;font-size:16px;line-height:1.1}
.game-active .pile-cards .mini-card i{position:absolute;top:22px;left:5px;font-size:18px;font-style:normal;line-height:1}
.game-active .pile-entry.passed{justify-content:center;font-size:14px}
.game-active .pile-empty{display:block;width:100%;text-align:center;font-size:11px}
.history-cards .mini-card{width:28px;min-width:28px;height:33px;display:flex;flex-direction:column;gap:0;margin:0;font-size:10px;line-height:1.1}
.history-cards .mini-card b{font-size:11px}.history-cards .mini-card i{font-size:12px;font-style:normal}
@media(min-width:701px) and (max-width:1050px){
  .game-active .pile-west,.game-active .pile-east{width:min(200px,calc(39vw - 150px))}
  .game-active .pile-cards .mini-card{width:38px;min-width:38px;height:61px}
  .game-active .pile-cards .mini-card+.mini-card{margin-left:-20px}
  .game-active .pile-cards .mini-card b{font-size:14px}
  .game-active .pile-cards .mini-card i{font-size:15px}
}
@media(min-width:701px) and (max-width:760px){.game-active .pile-cards .mini-card+.mini-card{margin-left:-25px}}
@media(max-width:700px){
  .game-active .play-pile,.game-active .pile-south{height:70px;padding:4px 6px;gap:2px}
  .game-active .pile-north,.game-active .pile-south{width:145px}
  .game-active .pile-west,.game-active .pile-east{width:min(141px,calc((100vw - 108px)/2))}
  .game-active .pile-heading{min-height:10px;font-size:8px}
  .game-active .pile-type{font-size:8px}
  .game-active .pile-entry{height:53px;padding:1px}
  .game-active .pile-cards{height:50px}
  .game-active .pile-cards .mini-card{width:34px;min-width:34px;height:50px;border-radius:4px}
  .game-active .pile-cards .mini-card+.mini-card{margin-left:-15px}
  .game-active .pile-cards .mini-card b{top:2px;left:3px;font-size:13px}
  .game-active .pile-cards .mini-card i{top:18px;left:3px;font-size:14px}
  .game-active .pile-entry.passed{font-size:11px}
  .game-active .pile-empty{font-size:9px}
}
@media(max-width:350px){
  .game-active .pile-cards{height:48px}
  .game-active .pile-cards .mini-card{width:30px;min-width:30px;height:48px}
  .game-active .pile-cards .mini-card+.mini-card{margin-left:-18px}
  .game-active .pile-cards .mini-card b{font-size:12px}
  .game-active .pile-cards .mini-card i{font-size:13px}
}
.game-active .pile-cards .mini-card+.mini-card{margin-left:-20px}
@media(min-width:701px) and (max-width:1050px){.game-active .pile-cards .mini-card+.mini-card{margin-left:-21px}}
@media(min-width:701px) and (max-width:760px){.game-active .pile-cards .mini-card+.mini-card{margin-left:-26px}}
@media(max-width:700px){.game-active .pile-cards .mini-card+.mini-card{margin-left:-16px}}
@media(max-width:350px){.game-active .pile-cards .mini-card+.mini-card{margin-left:-18px}}
.game-active .pile-cards .mini-card.joker b{font-size:10px;line-height:1;letter-spacing:1px;writing-mode:vertical-rl}
.game-active .pile-cards .mini-card.joker i{left:auto;right:4px;top:4px;font-size:12px}
.history-cards .mini-card.joker{position:relative;display:block}
.history-cards .mini-card.joker b{position:absolute;left:3px;top:2px;font-size:6px;line-height:1;writing-mode:vertical-rl;letter-spacing:0}
.history-cards .mini-card.joker i{position:absolute;right:2px;top:2px;font-size:9px}
@media(max-width:700px){.game-active .pile-cards .mini-card.joker b{font-size:8px;letter-spacing:1px}.game-active .pile-cards .mini-card.joker i{right:3px;font-size:10px}}
.game-active .hand-zone{min-width:0}
.game-active .hand.grouped-hand{width:100%;max-width:100%;min-width:0;gap:0;justify-content:flex-start;overscroll-behavior-inline:contain}
.game-active .hand.grouped-hand .hand-group{position:relative;flex:none;min-width:0;padding-top:15px}
.game-active .hand.grouped-hand .hand-group + .hand-group{margin-left:var(--group-gap, 18px)}
.game-active .hand.grouped-hand .hand-group .card:not(:last-child){margin-right:calc(var(--card-step, 24px) - var(--card-width, 84px))}
.game-active .hand.grouped-hand .group-label{position:absolute;top:0;left:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}
.game-active .hand.grouped-hand .card{position:relative;z-index:0}
.game-active .hand.grouped-hand .card:hover{z-index:2}
.game-active .hand.grouped-hand .card.selected,.game-active .hand.grouped-hand .card:focus-visible{z-index:3}
.game-active .hand.grouped-hand.dragging-select .card.selected{z-index:0}
.game-active .hand.grouped-hand.has-overflow + .swipe-tip{display:block;text-align:center;font-size:9px;letter-spacing:.5px;margin:2px 0 4px}
.game-active .hand.grouped-hand .auto-tail{flex:none;align-self:flex-end;min-width:64px;height:34px;margin:0 0 8px 12px;padding:0 8px;border:1px solid #cce1c3;border-radius:11px;background:#edf7df;color:#346c56;font-size:10px;font-weight:700;white-space:nowrap;box-shadow:0 3px 8px #063f3628;position:relative;z-index:4}
.game-active .hand.grouped-hand .auto-tail.auto-on{background:#fae4bf;border-color:#ecc98a;color:#765638}
.game-active .hand.grouped-hand .auto-tail:hover{background:#fff8e7}
.game-active .no-beat-cue{display:grid;justify-items:center;gap:3px;margin:3px auto 0;padding:5px 9px;border:1px solid #f0d091;border-radius:11px;background:#fff0cfe9;color:#755638;box-shadow:0 4px 12px #073d3440;line-height:1.2;max-width:100%}
.game-active .no-beat-cue strong{font-size:18px;letter-spacing:2px}
.game-active .no-beat-cue small{font-size:9px;line-height:1.25}
@media(max-width:700px){.game-active .hand.grouped-hand .auto-tail{min-width:56px;height:31px;margin:0 0 5px 12px;padding:0 5px;font-size:9px}.game-active .no-beat-cue{gap:1px;padding:3px 4px;margin-top:1px;border-radius:8px}.game-active .no-beat-cue strong{font-size:15px;letter-spacing:1px}.game-active .no-beat-cue small{font-size:7px}}
@media(min-width:701px) and (max-width:1050px){.game-active .hand-zone{left:clamp(120px,20vw,180px);right:clamp(80px,12vw,100px)}}
@media(min-width:701px) and (max-width:1050px){.game-active .organize-bar,.game-active .flush-bar,.game-active .selection-info{margin-left:60px}}
#think-dialog{width:min(390px,calc(100vw - 32px));padding:27px;border-radius:21px;text-align:center;z-index:35}
#think-dialog .think-icon{display:block;color:#d9aa70;font-size:34px;line-height:1}
#think-dialog h2{margin:10px 0 8px;font-size:21px}
#think-dialog p{font-size:13px;line-height:1.75;color:#687e70;margin:0 0 22px}
#think-dialog .think-actions{display:flex;justify-content:center;gap:10px}
#think-dialog .think-actions button{min-width:118px;padding:10px 15px}
@media(max-width:350px){#think-dialog{padding:23px 17px}#think-dialog .think-actions button{min-width:0;flex:1;font-size:12px}}
.game-active .hand-group.major::before,.game-active .hand-group.manual::before{content:'';position:absolute;left:-2px;right:0;top:14px;bottom:0;border:1px solid #e2eed879;border-radius:8px;background:#eaf4df14;pointer-events:none}
.game-active .hand-group.manual::before{border:1px dashed #f5d9a0c9;background:#f8eac01e}
.game-active .hand-group.major .group-label,.game-active .hand-group.manual .group-label{background:#e8f3df;color:#376753;border:1px solid #c6ddbd;border-radius:5px;padding:1px 4px;line-height:1.1;z-index:1}
.game-active .hand-group.manual .group-label{background:#fff0c9;color:#765733;border-color:#e7c787}
.game-active .hand-group.loose .group-label{color:#deead9}
.game-active .manual-release{border:0;background:transparent;color:#8e633b;font-size:9px;font-weight:700;padding:0 0 0 5px;margin-left:4px;border-left:1px solid #d9b983}
.game-active .manual-release:hover{color:#ab5143}
.game-active .manual-lock{border:1px solid #e4c993;background:#f7e8c0;color:#5e6546;border-radius:7px;padding:5px 8px;font-size:10px;font-weight:700;white-space:nowrap;flex:none}
.game-active .manual-lock:not(:disabled):hover{background:#fff3d4}
.game-active .organize-bar .manual-help{margin-left:0;white-space:nowrap}
.game-active .organize-bar .group-total{margin-left:auto}
@media(max-width:700px){.game-active .manual-lock{font-size:8px;padding:4px 5px}.game-active .organize-bar .manual-help{display:inline;font-size:7px}.game-active .organize-bar .group-total{display:none}.game-active .hand-group.major .group-label,.game-active .hand-group.manual .group-label{padding:1px 2px}.game-active .manual-release{font-size:8px;margin-left:2px;padding-left:3px}}
@media(max-width:350px){.game-active .organize-bar{gap:2px}.game-active .organize-button{font-size:8px;padding:4px 5px}.game-active .manual-lock{padding:4px}.game-active .organize-bar .manual-help{font-size:6px}}
@media(min-width:701px) and (max-width:1050px){
  .game-active .pile-south{width:min(160px,calc(22vw - 4px));bottom:352px}
}
@media(max-width:700px){.game-active .pile-south{top:451px}}

/* A new rank pauses at the table center, flies to its avatar, then leaves a badge. */
.game-active .player.has-place .player-sub{visibility:hidden}
.game-active .place-badge{position:absolute;z-index:9;left:calc(100% - 9px);top:calc(100% - 12px);min-width:59px;padding:4px 8px;border:2px solid #fff6d6;border-radius:999px;background:#f5bf61;color:#5c3c21;box-shadow:0 3px 10px #69472555;font-size:13px;font-weight:900;line-height:1.2;white-space:nowrap;text-align:center;transform-origin:30% 50%}
.game-active .place-badge[data-place="头游"]{background:#ffe49c;color:#68451e}
.game-active .place-badge[data-place="二游"]{background:#d3f0cb;color:#35614b}
.game-active .place-badge[data-place="三游"]{background:#e9e4fa;color:#5e5982}
.game-active .place-badge[data-place="末游"],.game-active .place-badge[data-place="双下"]{background:#f8d6bc;color:#85543c}
.game-active .place-badge.pending{visibility:hidden}
.game-active .place-badge.landed{animation:placeLand .42s cubic-bezier(.2,.8,.2,1.2) both}
@keyframes placeLand{0%{opacity:0;transform:scale(.7)}65%{opacity:1;transform:scale(1.13)}100%{transform:scale(1)}}
.place-flight{position:fixed;z-index:28;pointer-events:none;width:200px;min-height:106px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:11px 15px;border:3px solid #fff6d6;border-radius:20px;background:#ffe49c;color:#68451e;box-shadow:0 0 0 5px #fff0bd66,0 14px 34px #133d3177;text-align:center;transform:translate(-50%,-50%) scale(1);transition:left .72s cubic-bezier(.22,.75,.2,1),top .72s cubic-bezier(.22,.75,.2,1),transform .72s cubic-bezier(.22,.75,.2,1),opacity .72s ease;animation:placeGlow 1.1s ease-in-out infinite}
.place-flight[data-place="二游"]{background:#d3f0cb;color:#35614b}.place-flight[data-place="三游"]{background:#e9e4fa;color:#5e5982}.place-flight[data-place="末游"],.place-flight[data-place="双下"]{background:#f8d6bc;color:#85543c}
.place-flight-kicker{font-size:10px;font-weight:800;letter-spacing:2px}.place-flight strong{font-size:38px;line-height:1.15;letter-spacing:5px}.place-flight-player{font-size:12px;font-weight:700;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.place-flight[data-phase="flight"]{transform:translate(-50%,-50%) scale(.23);opacity:.75;animation:none}
@keyframes placeGlow{50%{box-shadow:0 0 0 11px #fff0bd30,0 18px 43px #133d3190}}
.game-active .selection-info.opportunity-cue{color:#f9dea3;font-weight:700}
@media(max-width:700px){
  .game-active .place-badge{left:calc(100% - 8px);top:calc(100% - 12px);min-width:42px;padding:3px 5px;border-width:1px;font-size:10px}
  .game-active .selection-info.opportunity-cue{font-size:9px}
  .place-flight{width:162px;min-height:87px;padding:8px 10px;border-radius:15px}.place-flight strong{font-size:32px}.place-flight-kicker{font-size:8px}.place-flight-player{font-size:10px}
}
@media(max-width:350px){.place-flight{width:145px;min-height:81px}.place-flight strong{font-size:29px}}
@media(prefers-reduced-motion:reduce){.game-active .place-badge.landed,.place-flight{animation:none}.place-flight{transition-duration:.08s}}

/* The impact starts at the revealed pile and its circular fronts cross the whole viewport. */
.game-active .play-pile.bomb-impact{border-color:#ffe091;box-shadow:0 0 0 3px #f9d97b88,0 0 30px #ffd67c9c}
.game-active .play-pile.bomb-impact .pile-entry.latest{box-shadow:0 0 0 3px #ffdc80,0 0 20px #ffcb63;filter:brightness(1.1)}
.bomb-burst{position:fixed;inset:0;z-index:18;overflow:hidden;pointer-events:none;--wave-line:#ffe495;--wave-glow:#ffd77a9c;--word-bg:#fff0c9ee;--word-ink:#804820;--word-shadow:#dba858}
.bomb-burst[data-impact="strong"]{--wave-line:#fff1b4;--wave-glow:#ffe68acc;--word-bg:#fff0b5f2}
.bomb-burst[data-type="同花顺"]{--wave-line:#ffd4f4;--wave-glow:#ffc5ecaa;--word-bg:#fce8f8ee;--word-ink:#834a80;--word-shadow:#c98fca}
.bomb-burst .shockwave{position:absolute;background:transparent;left:var(--impact-x);top:var(--impact-y);width:var(--wave-diameter);height:var(--wave-diameter);border:4px solid var(--wave-line);border-radius:50%;box-shadow:0 0 0 10px #fff6cf30,0 0 18px 7px var(--wave-glow),inset 0 0 22px 4px var(--wave-glow);transform:translate(-50%,-50%) scale(.012);opacity:0;animation:bombWave 1.44s cubic-bezier(.3,.2,.65,.92) both;will-change:transform,opacity}
.bomb-burst .shockwave.echo{border-width:2px;animation-delay:.09s;animation-duration:1.32s;filter:brightness(1.2)}
.bomb-burst[data-impact="strong"] .shockwave.primary{border-width:6px;box-shadow:0 0 0 15px #fff6cf40,0 0 25px 11px var(--wave-glow),inset 0 0 25px 8px var(--wave-glow)}
@keyframes bombWave{0%{opacity:0;transform:translate(-50%,-50%) scale(.012)}8%{opacity:1}65%{opacity:.82}88%{opacity:.48}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
.bomb-burst .impact-flash{position:absolute;left:var(--impact-x);top:var(--impact-y);width:230px;height:230px;border-radius:50%;background:radial-gradient(circle,#fff9e58c 0%,#ffe29346 31%,transparent 70%);transform:translate(-50%,-50%) scale(.2);animation:impactFlash .66s ease-out both}
.bomb-burst[data-type="同花顺"] .impact-flash{background:radial-gradient(circle,#fff7fc9c 0%,#f5b4ed4a 31%,transparent 70%)}
@keyframes impactFlash{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}18%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(2.2)}}
.bomb-burst .impact-spark{position:absolute;left:var(--impact-x);top:var(--impact-y);color:#fff2bb;font-size:29px;text-shadow:0 0 10px #ffcd60;animation:impactSpark .85s ease-out both}
.bomb-burst .spark-a{--dx:-95px;--dy:-65px}.bomb-burst .spark-b{--dx:95px;--dy:-60px}.bomb-burst .spark-c{--dx:-72px;--dy:75px}.bomb-burst .spark-d{--dx:78px;--dy:82px}
@keyframes impactSpark{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}20%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.4)}}
.bomb-burst b{position:absolute;left:var(--impact-x);top:var(--impact-y);z-index:1;transform:translate(-50%,-50%) rotate(-6deg);padding:6px 15px;border:2px solid #fff6d6;border-radius:14px;background:linear-gradient(145deg,#fffaf0ef,var(--word-bg));color:var(--word-ink);box-shadow:0 5px 18px #073d3b88;font-family:Georgia,"STKaiti","KaiTi",serif;font-size:30px;font-weight:900;letter-spacing:4px;line-height:1.14;white-space:nowrap;-webkit-text-stroke:.5px #fff5d6;text-shadow:2px 3px 0 var(--word-shadow),0 0 18px #fff7df;animation:impactWord 1.22s ease-out both}
.bomb-burst[data-impact="strong"] b{font-size:34px}
.bomb-burst[data-type="同花顺"] b{-webkit-text-stroke:.5px #fff1fa}
@keyframes impactWord{0%{opacity:0;transform:translate(-50%,-50%) rotate(-9deg) scale(.45)}17%{opacity:1;transform:translate(-50%,-50%) rotate(-6deg) scale(1.25)}43%{transform:translate(-50%,-50%) rotate(-6deg) scale(1)}78%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) rotate(-6deg) scale(.9)}}
@media(max-width:700px){.bomb-burst b{font-size:21px;padding:4px 8px;letter-spacing:2px}.bomb-burst[data-impact="strong"] b{font-size:23px}.bomb-burst .impact-spark{font-size:21px}.bomb-burst .spark-a{--dx:-60px;--dy:-45px}.bomb-burst .spark-b{--dx:60px;--dy:-42px}.bomb-burst .spark-c{--dx:-51px;--dy:55px}.bomb-burst .spark-d{--dx:53px;--dy:58px}}
@media(prefers-reduced-motion:reduce){.bomb-burst .shockwave,.bomb-burst .impact-flash,.bomb-burst .impact-spark,.bomb-burst b{animation:none}.bomb-burst .shockwave{opacity:.7;transform:translate(-50%,-50%) scale(.1)}.bomb-burst .shockwave.echo{opacity:0}.bomb-burst .impact-flash{opacity:.18;transform:translate(-50%,-50%) scale(1)}.bomb-burst .impact-spark{opacity:0}}

/* Optional helper: every claim about unseen cards is explicitly an estimate. */
.game-active .assistant-switch{flex:none;border:1px solid #efd99b;background:#fff4d828;color:#f5e2af;border-radius:15px;padding:5px 9px;font-size:10px;white-space:nowrap;line-height:1}
.game-active .assistant-switch.on{background:#f5dfaa;color:#315f4b;box-shadow:0 0 0 2px #ffefb54d}
.game-active .assistant-card{position:absolute;z-index:4;width:162px;min-height:132px;left:22px;top:calc(34% + 91px);padding:9px 10px;border:1px solid #c6e1bdab;border-radius:12px;background:#063f3cda;color:#e5f6e7;box-shadow:0 8px 22px #06373150;backdrop-filter:blur(4px);font-size:10px;line-height:1.34}
.game-active .assistant-card.assistant-east{left:auto;right:22px}
.game-active .assistant-card strong{display:block;color:#ffdfa2;font-size:11px;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.game-active .assistant-card p{margin:3px 0}
.game-active .assistant-card .assistant-guess{color:#ffe1ab;font-weight:600}
.game-active .assistant-card small{display:block;color:#bddcca;font-size:9px;margin-top:3px}
@media(min-width:701px) and (max-width:1050px){
  .game-active .assistant-card{width:120px;top:calc(27% + 91px);font-size:9px;line-height:1.25;padding:7px}
  .game-active .assistant-card strong{font-size:10px}
  .game-active .assistant-card small{font-size:8px}
}
@media(max-width:700px){
  .game-active .playground.assistant-on,.game-active .playground.assistant-on.has-plays{height:1120px}
  .game-active .assistant-on .pile-south{top:590px}
  .game-active .assistant-card{top:435px;left:8px;width:calc((100vw - 24px)/2);min-height:139px;height:139px;padding:7px;font-size:9px;line-height:1.24}
  .game-active .assistant-card.assistant-east{left:auto;right:8px}
  .game-active .assistant-card strong{font-size:10px;margin-bottom:2px}
  .game-active .assistant-card p{margin:2px 0}
  .game-active .assistant-card small{font-size:8px;line-height:1.2;margin-top:2px}
  .game-active .assistant-switch{font-size:8px;padding:4px 6px}
}
@media(max-width:350px){
  .game-active .assistant-card{font-size:8px;line-height:1.2;padding:6px}
  .game-active .assistant-card small{font-size:7px}
  .game-active .assistant-switch{font-size:7px;padding:4px 5px}
}
@media(max-width:350px){.game-active .assistant-card{font-size:9px;line-height:1.24;padding:7px}.game-active .assistant-card small{font-size:8px}}
