*,:before,:after{box-sizing:border-box}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-synthesis:none;text-rendering:optimizelegibility;line-height:1.4}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}body{min-width:320px;margin:0}:root{--ink:#1d2433;--ink-2:#4a5263;--ink-3:#7a8191;--line:#e4e1da;--paper:#fff;--paper-2:#f7f5f0;--primary:#17694f;--primary-hover:#12563f;--primary-soft:#e3f1ea;--primary-dark:#0f4634;--primary-light:#4f9a7f;--gold:#e0a526;--gold-soft:#fff6dc;--red-player:#d64545;--blue-player:#2f7fd1;--danger:#c63b3b;--radius:12px;--radius-sm:8px;--shadow-sm:0 1px 2px #1d243314;--shadow:0 4px 16px #1d24331a;--shadow-lg:0 18px 50px #1d243338;--line-strong:#d6d2c8;--hover:#fbfdfc;--panel:#fffffff2;--pill:#ffffffe6;--on-felt:#e8f3ec;--chip-gold-ink:#7a5600;--chip-gold-line:#f1d58b;--chip-green-line:#c4e2d4;--wood-1:#e6c895;--wood-2:#b98a53;--board-ink:#4a2f1a;--felt-1:#23825b;--felt-2:#0f4b34;--felt-edge:#28160873;--chart-bar:#1a8a5f;--card-w:76px;--card-h:106px;--overlap:-26px;--pile-step:-30px;--footer-h:72px;--play-h:calc(var(--card-h) + 60px);--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-card:Georgia, "Times New Roman", serif}@media (height<=860px),(width<=1100px){:root{--card-w:66px;--card-h:92px;--overlap:-24px;--pile-step:-28px}}@media (width>=1440px) and (height>=860px){:root{--card-w:90px;--card-h:126px;--overlap:-30px}}@media (width>=1800px) and (height>=1000px){:root{--card-w:104px;--card-h:146px;--overlap:-34px}}@media (width<=600px){:root{--card-w:58px;--card-h:81px;--overlap:-22px;--pile-step:-34px}}@media (width<=600px) and (height>=760px){:root{--card-w:64px;--card-h:90px;--overlap:-26px}}@media (width<=360px){:root{--card-w:52px;--card-h:73px;--overlap:-20px;--pile-step:-31px}}@media (width<=600px){:root{--footer-h:116px}}@media (height<=520px){:root{--card-w:44px;--card-h:62px;--overlap:-14px;--pile-step:-22px;--footer-h:56px;--play-h:calc(var(--card-h) * 1.25)}}@media (prefers-color-scheme:dark){:root{--ink:#e9ecf2;--ink-2:#b9c0cc;--ink-3:#8a93a3;--line:#2e3646;--line-strong:#3b4558;--paper:#171c26;--paper-2:#1f2633;--hover:#1c2a26;--primary:#24966c;--primary-hover:#1d7f5b;--primary-soft:#16362b;--primary-dark:#9fe3c6;--primary-light:#3fb487;--gold-soft:#3a2f12;--chip-gold-ink:#f3d27a;--chip-gold-line:#6b5520;--chip-green-line:#24513f;--danger:#e05252;--panel:#171c26f0;--pill:#171c26d9;--shadow-sm:0 1px 2px #0006;--shadow:0 4px 16px #00000073;--shadow-lg:0 18px 50px #0009;--wood-1:#6e4b2c;--wood-2:#352315;--board-ink:#f0d9b5;--felt-1:#185c42;--felt-2:#08281c;--felt-edge:#0009;--chart-bar:#2a9e72}.playing-card{filter:brightness(.94)}}html,body,#root{height:100%}body{font-family:var(--font);color:var(--ink);background:var(--wood-2);-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}button{font-family:inherit}.app{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);width:100%;height:100dvh;display:grid;overflow:hidden}.topbar{box-sizing:border-box;background:var(--paper);border-bottom:1px solid var(--line);min-height:56px;box-shadow:var(--shadow-sm);z-index:20;align-items:center;gap:16px;padding:8px 20px;display:flex}.brand{flex:1 1 0;align-items:center;gap:10px;min-width:0;display:flex}.brand-home{min-width:0;color:inherit;border-radius:8px;align-items:center;gap:10px;text-decoration:none;display:flex}.brand-home:hover .brand-name{text-underline-offset:4px;text-decoration:underline}.brand-home:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.setup-home{border-radius:10px;display:inline-flex}.setup-links{justify-content:center;gap:24px;margin-top:12px;display:flex}.setup-dialog .setup-links .link-btn{margin:0}.brand-name{letter-spacing:-.01em;white-space:nowrap;font-family:Georgia,Times New Roman,serif;font-size:1.15rem;font-weight:700}.phase-chip,.room-chip{white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:.72rem;font-weight:650}.phase-chip{background:var(--paper-2);color:var(--ink-2);border:1px solid var(--line)}.room-chip{background:var(--gold-soft);color:var(--chip-gold-ink);border:1px solid var(--chip-gold-line);letter-spacing:.04em}.scoreboard{flex:none;gap:8px;display:flex}.score{box-sizing:border-box;border-radius:var(--radius-sm);background:var(--paper-2);border:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:10px;min-width:96px;padding:5px 12px 6px;display:grid}.score-name{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:.78rem;font-weight:600;overflow:hidden}.score-value{text-align:right;font-variant-numeric:tabular-nums;font-size:1.15rem;font-weight:800}.score-bar{background:var(--line);border-radius:2px;grid-column:1/-1;height:3px;margin-top:3px;overflow:hidden}.score-bar>span{border-radius:inherit;height:100%;transition:width .6s;display:block}.score.red .score-bar>span{background:var(--red-player)}.score.blue .score-bar>span{background:var(--blue-player)}.score.red .score-name:before,.score.blue .score-name:before{content:"";vertical-align:1px;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.score.red .score-name:before{background:var(--red-player)}.score.blue .score-name:before{background:var(--blue-player)}.topbar-actions{flex:1 1 0;justify-content:flex-end;gap:6px;display:flex}.icon-btn{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--paper);width:36px;height:36px;color:var(--ink-2);cursor:pointer;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.icon-btn:hover{background:var(--paper-2);color:var(--ink);border-color:var(--line-strong)}.stage{min-height:0;position:relative;overflow:hidden}.stage>.board-container{position:absolute;inset:0}.table{z-index:2;gap:20px;display:flex;position:absolute;inset:58px 62px 34px}@media (width<=599px){.table{inset:44px 46px 28px}}@media (height<=520px){.table{inset:38px 48px 24px}}.table-main{grid-template-rows:auto var(--play-h) auto;flex:1;align-content:space-evenly;justify-items:center;row-gap:10px;min-width:0;display:grid}.hand-section{flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.hand-label{background:var(--pill);box-shadow:var(--shadow-sm);border:1px solid #00000014;border-radius:999px;align-items:center;gap:8px;padding:3px 4px 3px 10px;font-size:.75rem;line-height:1.4;display:inline-flex}.hand-name{color:var(--ink);padding-right:6px;font-weight:700}.hand-count{color:var(--ink-3);padding-right:6px}.hand-section.is-turn .hand-label{background:var(--pill);box-shadow:0 0 0 3px #8ff0c4b3, var(--shadow-sm);border-color:#0000}.hand-section.is-turn .hand-name{color:var(--primary-dark)}@media (prefers-color-scheme:light){.hand-section.is-turn .hand-name{color:var(--primary)}}.hand-section.is-turn .hand-name:before{content:"";vertical-align:1px;background:#22c55e;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block;box-shadow:0 0 0 2px #22c55e40}.dealer-chip{text-transform:uppercase;letter-spacing:.05em;background:var(--gold);color:#3d2c00;border-radius:999px;padding:1px 7px;font-size:.65rem;font-weight:750}.cards-list{box-sizing:content-box;min-height:var(--card-h);justify-content:center;align-items:flex-end;max-width:100%;display:flex}.cards-list .playing-card+.playing-card{margin-left:var(--overlap)}.hand-section.user .cards-list{padding-top:14px}.hand-section.opponent .cards-list .playing-card.hidden{box-shadow:0 2px 6px #0000002e}.waiting-status{min-height:var(--card-h);color:var(--on-felt);justify-content:center;align-items:center;font-size:.85rem;font-weight:600;display:flex}.play-area{width:100%;height:var(--play-h);justify-content:center;align-items:center;gap:22px;display:flex;overflow:visible}.starter-col{flex-direction:column;flex:none;align-items:center;gap:8px;display:flex}.count-badge{min-width:var(--card-w);box-sizing:border-box;border-radius:var(--radius-sm);color:#fff;box-shadow:var(--shadow);background:#10151f;flex-direction:column;align-items:center;padding:4px 6px 5px;display:flex}.count-label{text-transform:uppercase;letter-spacing:.08em;opacity:.7;font-size:.58rem;font-weight:700}.count-value{font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:800;line-height:1.1}.pile{flex:0 1 calc(var(--card-w) * 5);min-width:0;min-height:calc(var(--card-h) * 1.25);justify-content:center;align-items:center;display:flex}.pile .pegged-card-wrapper+.pegged-card-wrapper{margin-left:min(calc(var(--card-w) * -.4), calc((100% - var(--card-w) * var(--n)) / max(var(--n) - 1, 1)))}.pegged-card-wrapper{transition:transform .3s}.pc-red{transform:translateY(calc(var(--card-h) * .1))}.pc-blue{transform:translateY(calc(var(--card-h) * -.1))}.pegged-card-wrapper.last-pegged .playing-card{box-shadow:0 0 0 2px var(--gold), 0 6px 14px #0003}.show-area{flex-wrap:wrap;justify-content:center;align-items:center;gap:18px;display:flex}.show-cards{align-items:center;display:flex}.show-cards>*+*{margin-left:var(--overlap)}.show-cards>.show-starter{margin-left:12px;position:relative}.starter-tag{text-transform:uppercase;letter-spacing:.06em;background:var(--gold);color:#3d2c00;z-index:3;white-space:nowrap;border-radius:999px;padding:1px 6px;font-size:.58rem;font-weight:750;position:absolute;bottom:-9px;left:50%;transform:translate(-50%)}.breakdown{border-radius:var(--radius);background:var(--panel);min-width:180px;max-width:240px;color:var(--ink);box-shadow:var(--shadow);padding:10px 14px;font-size:.8rem}.breakdown-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.breakdown-title{font-weight:700}.breakdown-points{color:var(--primary);font-size:1.3rem;font-weight:800}.breakdown-lines{border-top:1px solid var(--line);margin:6px 0 0;padding:6px 0 0;list-style:none}.breakdown-lines li{color:var(--ink-2);justify-content:space-between;gap:12px;padding:2px 0;display:flex}.breakdown-lines li span:last-child{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700}.breakdown-lines li.muted span{color:var(--ink-3);font-weight:500}.history-panel{border-radius:var(--radius);background:var(--panel);min-height:0;box-shadow:var(--shadow);flex-direction:column;flex:0 0 248px;align-self:stretch;padding:14px 6px 6px 14px;display:none}.history-panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);margin:0 0 8px;font-size:.82rem;font-weight:750}.history-panel .history-list{padding-right:8px;overflow-y:auto}@media (width>=1200px) and (height>=600px){.history-panel{display:flex}.history-toggle{display:none}}.history-list{margin:0;padding:0;list-style:none}.history-item{border-bottom:1px solid var(--line);grid-template-columns:10px 1fr auto;align-items:start;gap:8px;padding:7px 0;font-size:.8rem;display:grid}.history-item:last-child{border-bottom:none}.history-dot{border-radius:50%;width:8px;height:8px;margin-top:5px}.history-item.red .history-dot{background:var(--red-player)}.history-item.blue .history-dot{background:var(--blue-player)}.history-main{flex-wrap:wrap;align-items:baseline;gap:2px 6px;min-width:0;display:flex}.history-who{font-weight:700}.history-reason{color:var(--ink-2)}.history-cards{flex-wrap:wrap;gap:3px;width:100%;display:flex}.mini-card{font-family:var(--font-card);background:#fff;border:1px solid #e4e1da;border-radius:4px;padding:0 4px;font-size:.72rem;font-weight:700}.history-points{color:var(--primary);font-variant-numeric:tabular-nums;font-weight:800}.empty-note{color:var(--ink-3);margin:0;font-size:.82rem}.actionbar{height:calc(var(--footer-h) + env(safe-area-inset-bottom));padding:0 20px;padding-bottom:env(safe-area-inset-bottom);box-sizing:border-box;background:var(--paper);border-top:1px solid var(--line);z-index:20;flex-wrap:nowrap;align-items:center;gap:10px 20px;display:flex;overflow:hidden;box-shadow:0 -1px 2px #1d24330d}.status{flex-direction:column;flex:260px;justify-content:center;min-width:0;height:42px;display:flex}.status-text,.status-tip{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.status-text{font-size:.95rem;font-weight:650;line-height:22px}.status-tip{color:var(--primary);min-height:18px;font-size:.78rem;font-weight:600;line-height:18px}.primary-action-area{align-items:center;gap:10px;display:flex}.hint-box{border-radius:var(--radius-sm);background:var(--gold-soft);border:1px solid var(--chip-gold-line);color:var(--chip-gold-ink);flex-basis:100%;align-items:flex-start;gap:8px;padding:8px 12px;font-size:.82rem;line-height:1.4;display:flex}.hint-box svg{color:#b07d00;flex-shrink:0;margin-top:1px}.btn-primary,.btn-secondary{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 18px;font-size:.92rem;font-weight:650;transition:background .15s,border-color .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn-primary{background:var(--primary);color:#fff;border:1px solid var(--primary);box-shadow:0 1px 2px #0f46344d}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-primary.danger{background:var(--danger);border-color:var(--danger)}.btn-primary.danger:hover{background:#a82f2f;border-color:#a82f2f}.btn-secondary{background:var(--paper);color:var(--ink);border:1px solid var(--line-strong)}.btn-secondary:hover:not(:disabled){background:var(--paper-2);border-color:var(--ink-3)}.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled){transform:translateY(1px)}.btn-primary:disabled,.btn-secondary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn-primary.large{min-width:200px;min-height:46px;padding:0 28px;font-size:1rem}.btn-secondary.icon-only{width:46px;min-height:46px;padding:0}.hint-btn{color:#b07d00}button:focus-visible,input:focus-visible,.setup-card:focus-visible{outline-offset:2px;outline:3px solid #17694f73}.overlay{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1d243373;justify-content:center;align-items:center;padding:16px;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.dialog{box-sizing:border-box;background:var(--paper);width:100%;max-width:440px;max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);border-radius:16px;padding:28px;animation:.22s cubic-bezier(.2,.9,.3,1.2) popIn;overflow-y:auto}.dialog h2{margin:0;font-size:1.25rem;font-weight:750}.dialog p{color:var(--ink-2);margin:0;line-height:1.5}.dialog .button-group{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.setup-dialog{max-width:460px}.setup-head{text-align:center;margin-bottom:20px}.setup-head h1{letter-spacing:-.01em;margin:8px 0 4px;font-family:Georgia,Times New Roman,serif;font-size:1.75rem;font-weight:700}.setup-head p{font-size:.92rem}.setup-options{flex-direction:column;gap:10px;display:flex}.setup-card{text-align:left;border-radius:var(--radius);border:1px solid var(--line);background:var(--paper);width:100%;color:var(--ink-3);cursor:pointer;align-items:center;gap:14px;padding:14px 14px 14px 12px;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.setup-card:hover{border-color:var(--primary-light);background:var(--hover);box-shadow:var(--shadow);color:var(--primary)}.setup-icon{background:var(--primary-soft);height:42px;color:var(--primary);border-radius:10px;flex:0 0 42px;justify-content:center;align-items:center;display:inline-flex}.setup-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.setup-text strong{color:var(--ink);font-size:.98rem}.setup-text span{color:var(--ink-3);font-size:.82rem}.join-form{flex-direction:column;align-items:center;gap:10px;display:flex}.join-form label{color:var(--ink-2);font-size:.85rem;font-weight:650}.join-form input{box-sizing:border-box;letter-spacing:.3em;text-align:center;text-transform:uppercase;width:250px;color:var(--ink);background:var(--paper);border:2px solid var(--line);border-radius:var(--radius-sm);outline:none;padding:10px 12px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:1.8rem;font-weight:700}.join-form input:focus{border-color:var(--primary)}.join-form .button-group{justify-content:center;margin-top:8px}.waiting-dialog{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.waiting-dialog .room-code{letter-spacing:.25em;border-radius:var(--radius);background:var(--paper-2);border:1px solid var(--line);margin:6px 0 16px;padding:8px 10px 8px 20px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:2.4rem}.spinner{border:3px solid var(--primary-soft);border-top-color:var(--primary);border-radius:50%;width:28px;height:28px;margin-bottom:6px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.confirm-dialog{max-width:400px}.confirm-dialog p{margin-top:8px}.log-dialog{flex-direction:column;max-width:420px;padding:0;display:flex}.dialog-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 16px 12px 20px;display:flex}.dialog-body{padding:8px 20px 16px;overflow-y:auto}.winner-dialog{text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:380px;display:flex}.winner-icon{background:var(--gold-soft);color:#b07d00;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;display:inline-flex}.winner-text{font-size:1.6rem!important}.final-score{gap:10px;margin:2px 0 8px;display:flex}.final{border-radius:var(--radius-sm);background:var(--paper-2);border:1px solid var(--line);border-top:3px solid;flex-direction:column;min-width:96px;padding:8px 14px;display:flex}.final.red{border-top-color:var(--red-player)}.final.blue{border-top-color:var(--blue-player)}.final-name{color:var(--ink-2);font-size:.78rem;font-weight:600}.final-value{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:800}.playing-card{width:var(--card-w);height:var(--card-h);box-sizing:border-box;border-radius:calc(var(--card-w) * .09);cursor:pointer;z-index:1;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #d5d2cb;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;transition:transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 6px #00000024}.playing-card:hover:not(.disabled){z-index:5;transform:translateY(-6px);box-shadow:0 8px 16px #0003}.playing-card.selected{border:2px solid var(--primary);transform:translateY(calc(var(--card-h) * -.16));z-index:10;box-shadow:0 10px 22px #17694f59}.playing-card.suggested{transform:translateY(calc(var(--card-h) * -.14));box-shadow:0 0 0 2px var(--gold), 0 10px 20px #b07d004d;z-index:8}.playing-card.suggested:hover:not(.disabled){transform:translateY(calc(var(--card-h) * -.18))}.playing-card.disabled{cursor:default}.hand-section.user .playing-card.disabled:not(.hidden){filter:saturate(.85)}.playing-card.hidden{padding:calc(var(--card-w) * .06);background:#fff;border-color:#c9c5bd}.card-back{border-radius:calc(var(--card-w) * .05);background-color:#233a63;background-image:repeating-linear-gradient(45deg,#ffffff21 0 2px,#0000 2px 7px),repeating-linear-gradient(-45deg,#ffffff21 0 2px,#0000 2px 7px);width:100%;height:100%}.card-pips-container{padding:calc(var(--card-h) * .15) calc(var(--card-w) * .25) calc(var(--card-h) * .16);font-size:calc(var(--card-w) * .22);box-sizing:border-box;z-index:1;pointer-events:none;grid-template-rows:repeat(13,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr));place-items:center;line-height:1;display:grid;position:absolute;inset:0}.court-card{padding:calc(var(--card-h) * .06) calc(var(--card-w) * .24);box-sizing:border-box}.court-svg{width:100%;height:100%;display:block}.pip.top-left{grid-area:1/1}.pip.top-right{grid-area:1/3}.pip.top-mid{grid-area:1/2}.pip.center-top{grid-area:3/2}.pip.center-mid-top{grid-area:4/2}.pip.center-inner-top{grid-area:5/2}.pip.mid-top-left{grid-area:4/1}.pip.mid-top-right{grid-area:4/3}.pip.inner-top-left{grid-area:5/1}.pip.inner-top-right{grid-area:5/3}.pip.mid-left{grid-area:7/1}.pip.mid-right{grid-area:7/3}.pip.center{grid-area:7/2}.pip.center-inner-bottom{grid-area:9/2}.pip.center-mid-bottom{grid-area:10/2}.pip.center-bottom{grid-area:11/2}.pip.inner-bottom-left{grid-area:9/1}.pip.inner-bottom-right{grid-area:9/3}.pip.mid-bottom-left{grid-area:10/1}.pip.mid-bottom-right{grid-area:10/3}.pip.bottom-left{grid-area:13/1}.pip.bottom-right{grid-area:13/3}.pip.bottom-mid{grid-area:13/2}.pip.rotated{transform:rotate(180deg)}.card-center{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.card-center .suit-large{font-size:calc(var(--card-w) * .42);line-height:1}.face-card .face-rank{font-family:var(--font-card);font-size:calc(var(--card-w) * .78);opacity:.1;z-index:-1;font-weight:700;position:absolute}.card-top-left,.card-bottom-right{z-index:2;pointer-events:none;flex-direction:column;align-items:center;font-weight:700;line-height:1;display:flex;position:absolute}.card-top-left{top:calc(var(--card-w) * .05);left:calc(var(--card-w) * .06)}.card-bottom-right{bottom:calc(var(--card-w) * .05);right:calc(var(--card-w) * .06);transform:rotate(180deg)}.card-top-left .rank,.card-bottom-right .rank{font-family:var(--font-card);font-size:calc(var(--card-w) * .19);letter-spacing:-.04em}.card-top-left .suit,.card-bottom-right .suit{font-size:calc(var(--card-w) * .15)}@media (height<=520px){.topbar{min-height:46px;padding:4px 14px}.actionbar{padding:0 14px}.status{height:40px}.btn-primary.large,.btn-secondary.icon-only{min-height:40px}.btn-primary.large{min-width:160px}.table-main{gap:4px}.hand-section{flex-direction:row;justify-content:center;gap:10px}.hand-section .hand-label{order:2}.hand-section.opponent .cards-list,.hand-section.opponent .waiting-status{min-height:calc(var(--card-h) * .75)}.hand-section.opponent .playing-card.hidden{width:calc(var(--card-w) * .75);height:calc(var(--card-h) * .75)}.hand-section.opponent .cards-list .playing-card+.playing-card{margin-left:calc(var(--overlap) * .75)}.hand-section.user .cards-list{padding-top:8px}.playing-card.selected{transform:translateY(-8px)}.play-area{min-height:calc(var(--card-h) * 1.2);gap:14px}.starter-col{flex-direction:row}.breakdown{padding:6px 10px;font-size:.72rem}.show-area{flex-wrap:nowrap;gap:10px}.dialog{padding:18px 20px}.setup-dialog{max-width:640px}.setup-head{justify-content:center;align-items:center;gap:12px;margin-bottom:14px;display:flex}.setup-head h1{margin:0;font-size:1.4rem}.setup-head p{display:none}.setup-options{grid-template-columns:1fr 1fr;gap:8px;display:grid}.setup-card{gap:10px;padding:10px}.setup-card>svg:last-child{display:none}}@media (width<=600px){.topbar{gap:8px;padding:6px 10px}.brand-name,.phase-chip{display:none}.scoreboard{flex:auto;justify-content:center}.score{flex:1 1 0;min-width:0;max-width:130px;padding:4px 10px 5px}.topbar-actions{flex:none}.icon-btn{width:34px;height:34px}.actionbar{padding:8px 12px env(safe-area-inset-bottom);flex-direction:column;justify-content:center;align-items:stretch;gap:6px}.status{text-align:center;flex:none;align-items:center;height:40px}.status-text{max-width:100%;font-size:.88rem}.status-tip{max-width:100%}.primary-action-area{flex:0 0 46px;justify-content:center}.primary-action-area .btn-primary.large{flex:1;min-width:0;max-width:320px}.play-area{gap:12px}.pile{flex:1 1 0}.show-area{flex-direction:column;gap:10px}.breakdown{width:100%;min-width:0;max-width:300px;padding:6px 12px}.breakdown-lines{border-top:none;flex-wrap:wrap;gap:0 10px;margin-top:2px;padding-top:2px;display:flex}.breakdown-lines li{gap:4px;padding:0;font-size:.74rem}}@media (width<=400px){.room-chip{display:none}}.match-chip{white-space:nowrap;background:var(--primary-soft);color:var(--primary-dark);border:1px solid var(--chip-green-line);border-radius:999px;padding:3px 9px;font-size:.72rem;font-weight:650}.game-options{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:8px;margin:16px 0 0;padding:12px 14px 10px;display:flex}.game-options legend{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding:0 6px;font-size:.75rem;font-weight:700}.option-row{justify-content:space-between;align-items:center;gap:12px;font-size:.88rem;display:flex}.option-row.check{cursor:pointer;justify-content:flex-start;gap:10px}.option-row.check input{width:18px;height:18px;accent-color:var(--primary);margin:0}.option-row.disabled{opacity:.5;cursor:default}.option-label{color:var(--ink-2);font-weight:600}.option-note{color:var(--ink-3);margin:2px 0 0;font-size:.75rem}.segmented{border:1px solid var(--line);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.segmented button{background:var(--paper);color:var(--ink-2);cursor:pointer;border:none;padding:6px 10px;font-size:.8rem;font-weight:600}.segmented button+button{border-left:1px solid var(--line)}.segmented button.on{background:var(--primary);color:#fff}.link-btn{color:var(--primary);cursor:pointer;text-underline-offset:3px;background:0 0;border:none;margin:12px auto 0;font-size:.85rem;font-weight:600;text-decoration:underline;display:block}.error-note{text-align:center;color:var(--danger);margin:12px 0 0;font-size:.85rem;font-weight:600}.claim{align-items:center;gap:8px;display:flex}.claim .btn-secondary.icon-only{font-size:1.3rem;font-weight:700}.claim-value{text-align:center;font-variant-numeric:tabular-nums;min-width:44px;font-size:1.5rem;font-weight:800}.claim .btn-primary.large{min-width:120px}.breakdown-lines li.count-note span{color:var(--danger);font-weight:600}.breakdown-lines li.count-note.good span{color:var(--primary)}.hand-section{position:relative}.toasts{pointer-events:none;z-index:20;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;left:0;right:0}.hand-section.opponent .toasts{top:calc(100% + 8px)}.hand-section.user .toasts{flex-direction:column-reverse;bottom:calc(100% + 8px)}.toast{color:#fff;white-space:nowrap;box-shadow:var(--shadow);background:#10151f;border-radius:999px;padding:6px 14px;font-size:.9rem;font-weight:750;animation:1.9s ease-out forwards callout}.toast.red{background:#b83434}.toast.blue{background:#2366ad}@keyframes callout{0%{opacity:0;transform:translateY(8px)scale(.9)}12%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(-6px)}}.cards-list .playing-card{animation:.32s ease-out backwards dealIn}.cards-list .playing-card:nth-child(2){animation-delay:50ms}.cards-list .playing-card:nth-child(3){animation-delay:.1s}.cards-list .playing-card:nth-child(4){animation-delay:.15s}.cards-list .playing-card:nth-child(5){animation-delay:.2s}.cards-list .playing-card:nth-child(6){animation-delay:.25s}@keyframes dealIn{0%{opacity:0;transform:translateY(-14px)scale(.96)}}.pegged-card-wrapper.pc-red .playing-card{animation:.28s ease-out playFromBelow}.pegged-card-wrapper.pc-blue .playing-card{animation:.28s ease-out playFromAbove}@keyframes playFromBelow{0%{opacity:0;transform:translateY(40px)}}@keyframes playFromAbove{0%{opacity:0;transform:translateY(-40px)}}@media (prefers-reduced-motion:reduce){.cards-list .playing-card,.pegged-card-wrapper .playing-card,.toast{animation-duration:10ms;animation-delay:0s}.toast{animation:none}}.skunk-badge{text-transform:uppercase;letter-spacing:.06em;background:var(--gold);color:#3d2c00;border-radius:999px;padding:3px 12px;font-size:.8rem;font-weight:750}.match-line{font-size:.9rem;font-weight:600;color:var(--ink-2)!important}.winner-actions{flex-direction:column;align-items:stretch;gap:8px;width:100%;max-width:260px;display:flex}.winner-actions .btn-primary.large{min-width:0}.winner-dialog .link-btn{margin-top:2px}.stats-dialog{flex-direction:column;max-width:420px;padding:0;display:flex}.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin:8px 0 4px;display:grid}.stats-grid>div{border-radius:var(--radius-sm);background:var(--paper-2);border:1px solid var(--line);padding:10px 12px}.stats-grid dt{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-size:.72rem;font-weight:700}.stats-grid dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:1.3rem;font-weight:800}.stats-grid dd small{color:var(--ink-3);font-size:.75rem;font-weight:600}@media (width<=600px){.claim{justify-content:center;width:100%}.claim .btn-primary.large{flex:1;max-width:200px}.segmented button{padding:6px 8px;font-size:.75rem}.match-chip{display:none}}@media (height<=520px){.game-options{gap:6px;margin-top:10px;padding:8px 12px}.option-note{display:none}}@media (height<=720px){.setup-dialog{padding:20px}.setup-head{margin-bottom:12px}.setup-head h1{margin:4px 0 0;font-size:1.45rem}.setup-head p{display:none}.setup-head svg{width:34px;height:34px}.setup-options{gap:8px}.setup-card{padding:9px 12px 9px 10px}.setup-icon{flex-basis:36px;height:36px}.game-options{gap:5px;margin-top:12px;padding:8px 12px}.option-row{font-size:.82rem}.option-note{display:none}.setup-dialog .link-btn,.setup-links{margin-top:8px}}@media (height<=520px){.setup-text span{display:none}.setup-head svg{width:28px;height:28px}}.deck{width:var(--card-w);height:var(--card-h);position:relative}.deck.empty{border-radius:calc(var(--card-w) * .09);box-sizing:border-box;border:2px dashed #ffffff40}.deck-layer{border-radius:calc(var(--card-w) * .09);background:#fff;border:1px solid #c9c5bd;position:absolute;inset:0;box-shadow:0 1px 2px #00000040}.deck-layer:first-child{transform:translate(4px,4px)}.deck-layer:nth-child(2){transform:translate(2px,2px)}.deck-layer.top{padding:calc(var(--card-w) * .06);box-sizing:border-box;background-clip:padding-box}.deck-layer.top:after{content:"";border-radius:calc(var(--card-w) * .05);background-color:#233a63;background-image:repeating-linear-gradient(45deg,#ffffff21 0 2px,#0000 2px 7px),repeating-linear-gradient(-45deg,#ffffff21 0 2px,#0000 2px 7px);width:100%;height:100%;display:block}.starter-card{z-index:2;animation:.45s ease-out turnUp;position:absolute;inset:0;transform:translate(-3px,-5px)rotate(-3deg)}@keyframes turnUp{0%{transform:translate(0)rotateY(90deg)}60%{transform:translate(-3px,-8px)rotateY(0)rotate(-3deg)}to{transform:translate(-3px,-5px)rotate(-3deg)}}.table-label{text-transform:uppercase;letter-spacing:.08em;color:var(--on-felt);opacity:.85;white-space:nowrap;font-size:.66rem;font-weight:700}.crib-col{flex-direction:column;flex:none;align-items:center;gap:8px;display:flex}.crib-stack{width:var(--card-w);height:var(--card-h);position:relative}.crib-slot,.crib-card{border-radius:calc(var(--card-w) * .09);box-sizing:border-box;position:absolute;inset:0}.crib-slot{border:2px dashed #ffffff40}.crib-card{padding:calc(var(--card-w) * .06);transform:translate(calc(var(--i) * 2px), calc(var(--i) * -2px)) rotate(calc(var(--i) * 3deg - 4deg));background:#fff;border:1px solid #c9c5bd;animation:.35s ease-out backwards intoCrib;box-shadow:0 1px 3px #0000004d}.crib-card:after{content:"";border-radius:calc(var(--card-w) * .05);background-color:#233a63;background-image:repeating-linear-gradient(45deg,#ffffff21 0 2px,#0000 2px 7px),repeating-linear-gradient(-45deg,#ffffff21 0 2px,#0000 2px 7px);width:100%;height:100%;display:block}@keyframes intoCrib{0%{opacity:0;transform:translateY(30px)scale(.9)}}@media (prefers-reduced-motion:reduce){.starter-card,.crib-card{animation:none}}@media (width<=600px){.table-label{letter-spacing:.04em;font-size:.6rem}}@media (height<=520px){.crib-col{flex-direction:row}.table-label{display:none}}.review-btn{min-height:46px}.review-dialog{--card-w:46px;--card-h:64px;--overlap:-14px;flex-direction:column;max-width:520px;padding:0;display:flex}.review-verdict{margin:4px 0 12px;font-weight:650;color:var(--ink)!important}.review-verdict.good{color:var(--primary)!important}.review-row{border-radius:var(--radius);border:1px solid var(--line);background:var(--paper-2);grid-template-columns:1fr auto;grid-template-areas:"label label""cards numbers";align-items:center;gap:6px 14px;margin-bottom:8px;padding:10px 12px;display:grid}.review-row.yours{border-left:4px solid var(--red-player)}.review-row.best{border-left:4px solid var(--primary)}.review-row.hindsight{border-left:4px solid var(--gold)}.review-label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);grid-area:label;font-size:.78rem;font-weight:700}.review-cards{grid-area:cards;display:flex}.review-cards .playing-card+.playing-card{margin-left:var(--overlap)}.review-cards .playing-card{animation:none}.review-numbers{color:var(--ink-2);text-align:right;flex-direction:column;grid-area:numbers;align-items:flex-end;gap:1px;font-size:.8rem;display:flex}.review-numbers strong{color:var(--ink);font-variant-numeric:tabular-nums}.review-throw{color:var(--ink-3)}.review-note{margin:6px 0 0;font-size:.75rem;color:var(--ink-3)!important}@media (width<=420px){.review-row{grid-template-columns:1fr;grid-template-areas:"label""cards""numbers"}.review-numbers{text-align:left;align-items:flex-start}}.review-section,.review-play h3,.coach-stats h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);margin:14px 0 6px;font-size:.8rem;font-weight:750}.review-section{margin-top:2px}.review-pegged{margin:0 0 8px;font-size:.88rem;color:var(--ink-2)!important}.review-pegged strong{color:var(--ink)}.review-clean{margin:0;font-size:.85rem;font-weight:600;color:var(--primary)!important}.review-moments{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.review-moments li{border-radius:var(--radius-sm);background:var(--paper-2);border:1px solid var(--line);color:var(--ink);align-items:baseline;gap:10px;padding:8px 10px;font-size:.84rem;line-height:1.4;display:flex}.moment-tag{text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border-radius:999px;flex:none;padding:2px 8px;font-size:.68rem;font-weight:750}.review-moments li.missed .moment-tag{background:var(--gold-soft);color:var(--chip-gold-ink);border:1px solid var(--chip-gold-line)}.review-moments li.gave .moment-tag{color:var(--danger);background:#d645451f;border:1px solid #d645454d}.coach-stats{border-top:1px solid var(--line);margin-top:6px;padding-top:4px}.coach-stats h3 small{text-transform:none;letter-spacing:0;color:var(--ink-3);margin-left:6px;font-weight:600}.coach-trend{margin:12px 0 4px}.coach-trend figcaption{color:var(--ink);flex-direction:column;font-size:.85rem;display:flex}.coach-trend figcaption span{color:var(--ink-3);font-size:.75rem}.trend-readout{min-height:1.2em;margin:6px 0 2px;font-size:.78rem;color:var(--ink-2)!important}.trend-readout strong{color:var(--ink)}.coach-trend svg{touch-action:manipulation;width:100%;height:auto;display:block}.trend-grid{stroke:var(--line);stroke-width:1px}.trend-tick{fill:var(--ink-3);font-variant-numeric:tabular-nums;font-size:9px}.trend-label{fill:var(--ink);font-size:10px;font-weight:700}.trend-bar{fill:var(--chart-bar);opacity:.85;transition:opacity .15s}.trend-bar.active{opacity:1}.trend-table summary{color:var(--primary);cursor:pointer;margin-top:4px;font-size:.78rem}.trend-table table{border-collapse:collapse;width:100%;margin-top:6px;font-size:.78rem}.trend-table th,.trend-table td{text-align:right;border-bottom:1px solid var(--line);color:var(--ink-2);padding:3px 6px}.trend-table th:first-child,.trend-table td:first-child{text-align:left}.trend-table th{color:var(--ink-3);font-weight:600}.stats-dialog .dialog-body{max-height:calc(100dvh - 120px);overflow-y:auto}html.easy{font-size:19px}.app.easy{--card-w:100px;--card-h:140px;--overlap:-36px;--footer-h:100px;--play-h:calc(var(--card-h) + 70px);--ink-2:var(--ink)}@media (height<=860px),(width<=1100px){.app.easy{--card-w:80px;--card-h:112px;--overlap:-30px;--play-h:calc(var(--card-h) + 56px)}}@media (width<=600px){.app.easy{--card-w:72px;--card-h:101px;--overlap:-29px;--footer-h:152px}}@media (width<=360px){.app.easy{--card-w:64px;--card-h:90px;--overlap:-26px}}@media (width<=600px) and (height<=720px){.app.easy{--card-w:60px;--card-h:84px;--overlap:-24px;--footer-h:140px;--play-h:calc(var(--card-h) + 44px)}}@media (height<=520px){.app.easy{--card-w:48px;--card-h:67px;--overlap:-14px;--footer-h:68px;--play-h:calc(var(--card-h) * 1.2)}}.playing-card.large-print{border:2px solid #8a8f98}.lp-index{top:calc(var(--card-w) * .04);left:calc(var(--card-w) * .06);pointer-events:none;flex-direction:column;align-items:center;font-weight:800;line-height:.95;display:flex;position:absolute}.lp-rank{font-family:var(--font);font-size:calc(var(--card-w) * .36);letter-spacing:-.04em}.lp-suit{font-size:calc(var(--card-w) * .3)}.lp-center{padding-left:calc(var(--card-w) * .22);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;font-weight:800;line-height:.95;display:flex;position:absolute;inset:0}.lp-big-rank{font-family:var(--font);font-size:calc(var(--card-w) * .42);letter-spacing:-.04em}.lp-big-suit{font-size:calc(var(--card-w) * .44)}.app.easy .playing-card.selected{border:4px solid var(--primary);transform:translateY(calc(var(--card-h) * -.14));box-shadow:0 0 0 4px #22c55e73,0 12px 24px #00000059}.app.easy .playing-card.hidden{border-width:1px}.app.easy .topbar{min-height:64px}.app.easy .score{padding:6px 14px 7px}.app.easy .score-name{color:var(--ink);font-size:.85rem}.app.easy .score-value{font-size:1.45rem}.app.easy .icon-btn{width:48px;height:48px}.app.easy .icon-btn svg{width:24px;height:24px}.app.easy .status{height:60px}.app.easy .status-text{font-size:1.05rem;font-weight:750;line-height:30px}.app.easy .status-tip{font-size:.85rem;line-height:24px}.app.easy .btn-primary,.app.easy .btn-secondary{border-radius:12px;min-height:52px;padding:0 22px;font-size:1rem}.app.easy .btn-primary.large{min-width:240px;min-height:64px;font-size:1.1rem}.app.easy .btn-secondary.icon-only{width:64px;min-height:64px}.app.easy .claim-value{min-width:56px;font-size:1.8rem}.app.easy .primary-action-area{gap:14px}.app.easy .hand-label{padding:4px 6px 4px 12px;font-size:.85rem}.app.easy .count-value{font-size:1.6rem}.app.easy .count-label{font-size:.65rem}.app.easy .table-label{font-size:.75rem}.app.easy .toast{padding:8px 18px;font-size:1.15rem}.app.easy .breakdown{font-size:.9rem}.app.easy .dialog{max-width:520px}.app.easy .setup-card{padding:16px}.app.easy .setup-text strong{font-size:1.1rem}.app.easy .setup-text span{color:var(--ink);font-size:.9rem}.app.easy .option-row{font-size:.95rem}.app.easy .option-row.check input{width:26px;height:26px}.app.easy .segmented button{padding:10px 12px;font-size:.9rem}@media (width<=600px){.app.easy .actionbar{gap:8px}.app.easy .primary-action-area{flex:0 0 64px}.app.easy .btn-primary.large{min-width:0}.app.easy .score{min-width:0;padding:4px 10px 5px}.app.easy .score-value{font-size:1.25rem}.app.easy .icon-btn{width:44px;height:44px}}@media (height<=520px){.app.easy .status{height:56px}.app.easy .btn-primary.large{min-height:56px}}.easy-switch{border-radius:var(--radius);border:2px solid var(--line-strong);background:var(--paper-2);width:100%;color:var(--ink);text-align:left;cursor:pointer;align-items:center;gap:14px;margin:14px 0 0;padding:12px 14px;display:flex}.easy-switch.on{border-color:var(--primary);background:var(--primary-soft)}.easy-switch-aa{background:var(--paper);border:1px solid var(--line);border-radius:10px;flex:0 0 44px;justify-content:center;align-items:center;height:44px;font-size:1.25rem;font-weight:800;display:inline-flex}.easy-switch-text{flex-direction:column;flex:1;gap:2px;display:flex}.easy-switch-text strong{font-size:1rem}.easy-switch-text span{color:var(--ink-3);font-size:.82rem}.easy-switch-state{text-transform:uppercase;letter-spacing:.06em;background:var(--line);color:var(--ink-2);border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:750}.easy-switch.on .easy-switch-state{background:var(--primary);color:#fff}.easy-toggle span{font-size:.95rem;font-weight:800}.easy-toggle.on{background:var(--primary);color:#fff;border-color:var(--primary)}@media (height<=720px){.easy-switch{margin-top:10px;padding:8px 12px}.easy-switch-text span{display:none}}@media (width<=600px){.easy-toggle{display:none}.app.easy .brand{flex:none}.app.easy .topbar{min-height:58px}}@media (width<=600px) and (height<=720px){.app.easy .status{height:52px}.app.easy .status-text{font-size:1rem;line-height:26px}.app.easy .status-tip{line-height:22px}.app.easy .btn-primary.large,.app.easy .btn-secondary.icon-only{min-height:58px}.app.easy .btn-secondary.icon-only{width:58px}}@media (height<=520px){.app.easy .topbar{min-height:48px}.app.easy .status{height:50px}.app.easy .status-text{font-size:.95rem;line-height:26px}.app.easy .btn-primary.large,.app.easy .btn-secondary.icon-only{min-height:52px}.app.easy .score-value{font-size:1.15rem}}.app:not(.easy) .easy-switch{border-width:1px;gap:10px;margin-top:10px;padding:6px 10px}.app:not(.easy) .easy-switch-aa{border-radius:8px;flex-basis:32px;height:32px;font-size:.95rem}.app:not(.easy) .easy-switch-text strong{font-size:.92rem}.app:not(.easy) .easy-switch-text span{display:none}@media (height<=900px){.setup-head{justify-content:center;align-items:center;gap:12px;margin-bottom:14px;display:flex}.setup-head h1{margin:0}.setup-head p{display:none}}@media (height<=520px){.app:not(.easy) .easy-switch{margin-top:6px;padding:3px 10px}.app:not(.easy) .easy-switch-aa{flex-basis:26px;height:26px}.app:not(.easy) .game-options{gap:3px;margin-top:6px;padding:4px 12px 6px}.app:not(.easy) .option-row{font-size:.8rem}.app:not(.easy) .segmented button{padding:4px 8px}.setup-dialog .link-btn,.setup-links{margin-top:4px}}@media (width<=600px) and (height<=720px){.app.easy{--footer-h:128px;--play-h:calc(var(--card-h) + 30px)}.app.easy .hand-section.opponent{--card-w:41px;--card-h:57px;--overlap:-14px}.app.easy .starter-col{position:relative}.app.easy .starter-col .count-badge{z-index:3;min-width:54px;padding:2px 6px 3px;position:absolute;bottom:-12px;left:50%;transform:translate(-50%)}.app.easy .actionbar{gap:4px}}@media (height<=520px){.app.easy .hand-section.opponent{--card-w:34px;--card-h:48px;--overlap:-10px}}@media (width<=600px){.app.easy .score{column-gap:6px;padding-left:8px;padding-right:8px}.app.easy .score.red .score-name:before,.app.easy .score.blue .score-name:before{display:none}}
