:root{--paper:#f6f4ed;--ink:#173c32;--muted:#778078;--green:#194d3f;--gold:#d8b76f;--line:#dddeda;--red:#b44f45;--serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #b99040;outline-offset:4px}button{transition:background .2s,transform .2s}button:active:not(:disabled){transform:scale(.97)}.hidden{display:none!important}.masthead{height:97px;max-width:1480px;margin:auto;padding:0 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-family:var(--serif);font-weight:700;font-size:29px;letter-spacing:-1.2px;color:var(--ink);text-decoration:none}.brand-mark{display:inline-flex;align-items:center;justify-content:center;font-family:Georgia,serif;background:var(--ink);color:var(--paper);width:34px;height:38px;border-radius:5px;font-size:29px;margin-right:9px}.brand-dot{color:#b58d48}.header-right{display:flex;align-items:center;gap:35px}.connection{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:8px}.connection i,.live-dot{width:6px;height:6px;background:#68977d;border-radius:50%;display:inline-block}.connection.offline i{background:var(--red)}.text-button{border:0;background:transparent;color:var(--ink);font-size:12px;padding:9px 0}.text-button span{margin-left:8px}.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;margin:0 0 19px}.welcome{max-width:1200px;min-height:calc(100vh - 172px);margin:auto;display:grid;grid-template-columns:1.2fr 1fr;gap:10%;align-items:center;padding:64px 5%}.intro h1{font:500 clamp(43px,4.1vw,62px)/1.13 var(--serif);letter-spacing:-1.9px;margin:0 0 25px}.intro-copy{line-height:1.8;max-width:335px;color:#768078;font-size:14px}.intro-cards{height:214px;display:flex;align-items:center;justify-content:center;max-width:330px;margin:30px 0 17px}.illustration-card{width:103px;height:148px;border-radius:9px;flex-shrink:0;box-shadow:0 13px 24px #173c3218;border:1px solid #e1ded3;position:relative}.illustration-card:first-child{transform:rotate(-16deg) translate(22px,9px)}.illustration-card:nth-child(2){transform:rotate(1deg);z-index:1}.illustration-card:last-child{transform:rotate(17deg) translate(-20px,9px);z-index:2}.face{background:#fffdfa;display:flex;flex-direction:column;justify-content:space-between;padding:9px;color:var(--ink)}.face small{font:600 14px Georgia,serif}.face small:last-child{transform:rotate(180deg)}.face b{font:56px Georgia,serif;text-align:center}.red{color:var(--red)!important}.patterned,.deck-card,.card.covered{background-color:#225a49;background-image:repeating-linear-gradient(45deg,transparent,transparent 5px,#efdb9f10 5px,#efdb9f10 6px),repeating-linear-gradient(-45deg,transparent,transparent 5px,#efdb9f10 5px,#efdb9f10 6px);border:5px solid #eae4d3!important;outline:1px solid #c6ba9d}.patterned{display:flex;align-items:center;justify-content:center}.patterned span{width:62px;height:100px;display:flex;align-items:center;justify-content:center;border:1px solid #d3c18b80;border-radius:45%;font:45px Georgia;color:#d8c993}.intro-foot{font-size:11px;color:#8b9089;letter-spacing:.2px}.entry-panel{background:#fffdfa;border:1px solid #e1e2da;border-radius:13px;padding:34px 35px;box-shadow:0 13px 40px #243d2d05}.entry-panel h2{font:500 29px var(--serif);letter-spacing:-.5px;margin:0 0 12px}.entry-panel>p:not(.eyebrow):not(.private-note){color:var(--muted);font-size:12px;line-height:1.8;margin-bottom:28px}label{display:block;font-size:11px;font-weight:600;margin-bottom:9px}input{border:1px solid #d8dcd2;background:#fffefa;padding:14px;border-radius:5px;width:100%;color:var(--ink);min-width:0}input::placeholder{color:#a0a49a;font-size:12px}.primary,.secondary{border-radius:5px;padding:14px 18px;font-size:12px;font-weight:600;border:1px solid var(--ink)}.primary{background:var(--ink);color:#fff}.primary:hover:not(:disabled){background:#28604d}.secondary{background:transparent;color:var(--ink)}.secondary:hover:not(:disabled){background:#e9eee5}.wide{width:100%;margin-top:15px;display:flex;justify-content:space-between;align-items:center}.divider{display:flex;align-items:center;margin:26px 0;color:#9a9e94;font-size:10px;gap:12px}.divider:before,.divider:after{content:'';height:1px;background:#e7e7df;flex:1}.join-row{display:flex;gap:8px}.join-row input{text-transform:uppercase;font-family:monospace;letter-spacing:2px}.join-row button{flex-shrink:0}#code-help{color:#989e93;font-size:10px;display:block;margin-top:10px}.private-note{font-size:10px;border-top:1px solid #edeee6;padding-top:21px;margin:26px 0 0;color:#939a8d}.private-note span{margin-right:6px;font-size:16px}footer{border-top:1px solid var(--line);max-width:1480px;margin:auto;padding:23px 6%;font-size:10px;color:#92988e;display:flex;justify-content:space-between}.game{max-width:1480px;margin:0 auto;padding:33px 5% 38px}.room-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.room-heading .eyebrow{margin-bottom:7px;font-size:9px}.room-heading h1{font:500 29px var(--serif);margin:0;letter-spacing:-.6px}.room-tools{display:flex;align-items:center;gap:22px}.invite-button{background:#eceee4;border:1px solid #dfe3d5;padding:9px 13px;border-radius:5px;display:grid;grid-template-columns:1fr auto;gap:3px 16px;text-align:left;color:var(--ink)}.invite-button span:first-child{font-size:8px;letter-spacing:1px}.invite-button strong{grid-column:1;font-family:monospace;font-size:16px;letter-spacing:2px}.invite-button span:last-child{grid-column:2;grid-row:1 / 3;align-self:center;font-size:23px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 274px;gap:29px}.table-topline,.table-bottomline{display:flex;justify-content:space-between;color:#8b9487;font-size:9px;letter-spacing:1px;padding:0 3px 13px}.table-topline span:first-child{font-weight:600;color:#55644f}.table-bottomline{padding:14px 3px 0;font-size:9px;letter-spacing:0;gap:12px}.legend-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#bf9b50;margin-right:6px}.felt-table{height:620px;position:relative;border-radius:180px;background:radial-gradient(ellipse at 50% 45%,#245c48,#154735 75%);border:10px solid #b19b72;box-shadow:0 0 0 1px #987f55,0 0 0 6px #e2daca,inset 0 0 0 2px #e1c17d45,inset 0 0 50px #052e20a0,0 15px 25px #173c3210;isolation:isolate;overflow:hidden}.felt-grain{position:absolute;inset:0;z-index:-1;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.45' filter='url(%23n)'/%3E%3C/svg%3E");pointer-events:none}.table-brand{position:absolute;top:39%;left:50%;transform:translate(-50%,-50%);font:600 32px var(--serif);color:#e5d9b715;letter-spacing:-1px;text-align:center;white-space:nowrap}.table-brand span{display:block;font:7px var(--sans);letter-spacing:3px;margin-top:6px;color:#e5d9b72b}.table-center{position:absolute;top:51%;left:50%;transform:translate(-50%,-50%);text-align:center;z-index:3}.piles{display:flex;gap:19px;align-items:center;justify-content:center}.card{width:47px;height:68px;border-radius:5px;position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid #ece5d1;color:var(--ink);background:#fffdf5;box-shadow:0 3px 5px #09291b33;padding:0;transition:transform .28s,box-shadow .2s;background-clip:padding-box}.card .back-symbol{color:#d8cc9d;font:27px Georgia;border:1px solid #d8cc9d55;border-radius:50%;padding:3px}.deck-card{width:53px;height:76px;box-shadow:2px 2px #ded8c9,4px 4px #a19885,5px 6px 8px #082a1d55}.deck-card:hover:not(:disabled){transform:translateY(-4px)}.card .rank{position:absolute;left:4px;top:3px;font:bold 11px Georgia}.card .suit{font:27px Georgia}.card .rank-bottom{position:absolute;right:4px;bottom:3px;transform:rotate(180deg);font:bold 11px Georgia}.card.joker .suit{font:22px Georgia}.card.joker .rank{font-size:6px;top:7px}.empty-card{background:#e3d6ac07;border:1px dashed #c7d2b747;width:53px;height:76px;box-shadow:none;color:#b5c7a47a}.empty-card span{font-size:7px;letter-spacing:1px}.table-center>p{font-size:8px;color:#b9c9b69c;margin-top:15px;white-space:nowrap}.players{position:absolute;inset:0;z-index:2}.player{position:absolute;transform:translate(-50%,-50%);width:166px;text-align:center;transition:left .4s,top .4s}.player-nameplate{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:#e3ead9;margin-bottom:9px;max-width:170px}.player-nameplate .avatar{background:#ddd4b422;border:1px solid #e1d8b840;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:600;flex-shrink:0}.player-name{max-width:90px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player.active .avatar{border-color:var(--gold);box-shadow:0 0 0 3px #d8b76f20}.player.active .player-nameplate{color:#f1db9b}.you-tag{font-size:7px;border:1px solid #d3e1c74a;border-radius:3px;padding:2px 3px}.host-crown{color:#d8b76f;font-size:11px}.player-hand{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;margin:auto;max-width:153px;min-height:68px}.player-hand .card{width:42px;height:60px}.player-hand .card:nth-child(3n+1){transform:rotate(-3deg)}.player-hand .card:nth-child(3n){transform:rotate(3deg)}.player-hand .card.playable{cursor:pointer}.player-hand .card.playable:hover{transform:translateY(-9px) rotate(0);box-shadow:0 7px 14px #001f1a66;outline:2px solid #e2c17a}.player-hand .card.selected{transform:translateY(-9px)!important;outline:2px solid #e2c17a}.card-number{position:absolute;bottom:-13px;font-size:7px;color:#adbea4;left:50%;transform:translateX(-50%)}.player-status{font-size:8px;color:#b6c9aa;min-height:12px;margin:15px 0 0}.player.empty-hand .player-hand{border:1px dashed #c6d0b633;border-radius:7px;color:#cdd5ba;align-items:center;font:italic 11px var(--serif);max-width:100px}.action-panel,.activity-panel{border:1px solid #dce0d3;border-radius:7px;background:#fffdf8;padding:21px}.panel-top{display:flex;justify-content:space-between;align-items:center;gap:7px}.panel-top .eyebrow{font-size:8px;letter-spacing:1.3px;margin:0}.phase-badge{font-size:8px;border:1px solid #dde3d5;border-radius:3px;padding:4px 6px;color:#73816b;white-space:nowrap}.action-panel h2{font:500 25px/1.2 var(--serif);margin:22px 0 12px;letter-spacing:-.4px}.action-panel p{font-size:11px;color:#86907d;line-height:1.8;margin:0}.action-controls{display:flex;flex-direction:column;gap:9px;margin-top:21px}.action-controls:empty{margin:0}.action-controls button{font-size:11px}.action-controls .text-button{text-align:center}.timer{margin-top:21px}.timer-label{display:flex;justify-content:space-between;font-size:9px;color:#89917f;margin-bottom:8px}.timer-label strong{color:#64714e;font-variant-numeric:tabular-nums}.timer-track{height:3px;background:#e7e9dc;border-radius:3px;overflow:hidden}.timer-track>div{height:100%;background:#baa05c;transition:width .1s linear}.timer.urgent .timer-track>div{background:var(--red)}.activity-panel{margin-top:16px;padding-bottom:12px}.activity-list{list-style:none;padding:0;margin:17px 0 0}.activity-list li{font-size:10px;line-height:1.6;padding:10px 0;border-top:1px solid #eceee4;color:#88917f}.activity-list li:first-child{border-top:0;color:#4c6247}.score-guide{padding:25px 4px 10px}.score-guide>.eyebrow{font-size:8px;letter-spacing:1.3px}.score-guide>div{display:flex;justify-content:space-between;margin-top:14px}.score-guide>div>span{font:14px Georgia;color:#69785d;text-align:center}.score-guide b{display:block;font:10px var(--sans);margin-top:8px;color:#9a9f8d;font-weight:400}.score-guide p{font-size:9px;color:#a0a490;margin-top:15px}.danger{color:#a57060;font-size:10px;margin-left:4px}.selection-note{font-size:10px;line-height:1.7;background:#f0f1e5;padding:10px;border-radius:4px;margin-top:15px;color:#71805e}.draw-preview{position:absolute;left:50%;top:-29px;transform:translate(-50%,-100%);background:#f8f5e9;border:1px solid #d6c492;padding:10px 14px;border-radius:8px;box-shadow:0 8px 18px #052b2188}.draw-preview:after{content:'';position:absolute;bottom:-6px;left:calc(50% - 5px);width:10px;height:10px;background:#f8f5e9;transform:rotate(45deg)}.draw-preview .card{width:56px;height:80px}.draw-preview small{font-size:8px;display:block;color:#71805e;margin-bottom:8px;white-space:nowrap}.alzheimer-banner{position:absolute;left:50%;top:31%;transform:translate(-50%,-50%);max-width:85%;padding:8px 16px;background:#ede4c4;color:#37513b;border-radius:5px;font-size:10px;z-index:8;text-align:center;box-shadow:0 4px 12px #042a1a40}.toast,.error-toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:100;background:var(--ink);color:#fff;padding:14px 22px;border-radius:7px;box-shadow:0 6px 25px #123c3225;max-width:90vw;font-size:12px;animation:toast-in .25s ease}.error-toast{background:#984c40;bottom:80px}dialog{border:1px solid #d6dbca;border-radius:12px;padding:38px;max-width:620px;width:calc(100% - 32px);color:var(--ink);background:var(--paper);max-height:85vh}dialog::backdrop{background:#0a2c26a6;backdrop-filter:blur(4px)}dialog h2{font:32px var(--serif);margin:0 0 20px}dialog h3{font:22px var(--serif);margin-top:27px}dialog p,dialog li,dialog dd{font-size:12px;line-height:1.9;color:#737e6c}dialog li{margin-bottom:12px;padding-left:5px}dialog ol{padding-left:20px}dialog dt{font-size:12px;font-weight:600;margin-top:13px}dialog dd{margin:3px 0 0}.rules-score{border-top:1px solid #d9dfcd;padding-top:15px}.dialog-close{position:absolute;top:16px;right:18px;background:none;border:0;color:#78856c;font-size:25px}.leaderboard{list-style:none;padding:0;margin:17px 0 0}.leaderboard li{display:flex;align-items:center;gap:9px;font-size:11px;padding:11px 0;border-bottom:1px solid #eceee4}.leaderboard li strong{margin-left:auto;font:17px var(--serif)}.leaderboard .place{font-size:9px;color:#9ba28d}.leaderboard li:first-child{color:#aa853f}.new-card{animation:deal-in .55s ease both}.flipped{animation:flip-card .45s ease}.swap-flash{animation:shuffle-cards .65s ease}.discard-flash{animation:discard-in .4s ease}.notify-card{box-shadow:0 0 0 3px #d8b76f,0 0 20px #f4dc7b88!important}.player-target{border:1px dashed #d8b76f88;border-radius:9px;padding:8px;cursor:pointer}.player-target:hover{background:#ede4c419}.busy{pointer-events:none;opacity:.65}@keyframes deal-in{from{opacity:0;transform:translateY(-35px) rotate(-18deg) scale(.7)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}@keyframes flip-card{0%{transform:rotateY(90deg) scale(.96)}100%{transform:rotateY(0) scale(1)}}@keyframes shuffle-cards{0%,100%{transform:translateX(0)}25%{transform:translateX(-12px) rotate(-9deg)}75%{transform:translateX(12px) rotate(9deg)}}@keyframes discard-in{from{transform:translate(20px,-30px) rotate(18deg);opacity:.3}to{transform:translate(0) rotate(0);opacity:1}}@keyframes toast-in{from{opacity:0;margin-bottom:-8px}to{opacity:1;margin-bottom:0}}@media(min-width:1500px){.felt-table{height:660px}.game{padding-top:45px}}@media(max-width:1100px){.game{padding:27px 4%}.game-layout{grid-template-columns:minmax(0,1fr) 240px;gap:22px}.felt-table{height:610px;border-radius:140px}.player{width:138px}.player-hand{gap:4px;max-width:134px}.player-hand .card{width:38px;height:55px}.action-panel,.activity-panel{padding:17px}.welcome{gap:6%}}@media(max-width:850px){.masthead{height:78px;padding:0 5%}.connection{display:none}.header-right{gap:0}.welcome{gap:5%;padding:50px 5%}.intro h1{font-size:43px}.entry-panel{padding:25px}.game-layout{grid-template-columns:1fr}.felt-table{height:650px;border-radius:165px}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:15px}.activity-panel{margin:0}.score-guide{padding:10px 4px}.danger{align-self:start;justify-self:end}.room-heading h1{font-size:25px}.table-bottomline{padding-bottom:3px}}@media(max-width:600px){.brand{font-size:25px}.brand-mark{width:28px;height:32px;font-size:25px}.text-button{font-size:10px}.welcome{display:flex;flex-direction:column;gap:33px;padding:34px 6% 40px}.intro{width:100%}.intro .eyebrow{font-size:8px;letter-spacing:1.6px;margin-bottom:17px}.intro h1{font-size:43px;margin-bottom:16px}.intro-copy{font-size:12px;max-width:300px}.intro-cards{position:absolute;right:4%;top:195px;opacity:.18;z-index:-1;transform:scale(.7);transform-origin:right center;margin:0}.intro-foot{display:none}.entry-panel{width:100%;max-width:430px;padding:28px}.entry-panel h2{font-size:27px}.masthead{height:71px}.game{padding:25px 4%}.room-heading{gap:15px;align-items:flex-start;margin-bottom:23px}.room-heading h1{font-size:23px;max-width:170px;line-height:1.2}.room-heading .eyebrow{font-size:7px;letter-spacing:1.1px}.room-tools{gap:9px;align-items:flex-end;flex-direction:column}.invite-button{padding:7px 9px;gap:3px 9px}.invite-button span:first-child{font-size:6px}.invite-button strong{font-size:12px;letter-spacing:1px}.invite-button span:last-child{font-size:18px}.room-tools>.text-button{padding:0}.felt-table{height:650px;border-radius:105px;border-width:7px;box-shadow:0 0 0 1px #987f55,0 0 0 4px #e2daca,inset 0 0 40px #052e20a0}.player{width:114px}.player-hand{gap:3px;max-width:113px}.player-hand .card{width:32px;height:46px;border-width:3px!important}.card .back-symbol{font-size:19px;padding:1px}.card .rank,.card .rank-bottom{font-size:9px;left:2px;top:2px}.card .rank-bottom{left:auto;right:2px;top:auto;bottom:2px}.card .suit{font-size:22px}.player-nameplate{font-size:8px;gap:4px;margin-bottom:7px}.player-nameplate .avatar{width:21px;height:21px;font-size:8px}.player-name{max-width:61px}.player-status{font-size:7px;margin-top:13px}.player-hand{min-height:46px}.player-hand .card .card-number{bottom:-11px;font-size:6px}.deck-card,.empty-card{width:43px;height:62px}.piles{gap:13px}.table-center>p{font-size:6px}.table-brand{font-size:27px;top:41%}.table-brand span{font-size:5px;letter-spacing:2px}.table-center{top:53%}.table-topline{font-size:7px;letter-spacing:.7px}.table-bottomline{font-size:7px;line-height:1.6}.sidebar{grid-template-columns:1fr}.action-panel h2{margin-top:16px;font-size:25px}.action-panel{padding:22px}.activity-panel{padding:21px}.score-guide{padding:12px 6px}.score-guide>div{max-width:270px}.danger{justify-self:start}.alzheimer-banner{font-size:8px;top:36%;padding:7px 9px;max-width:92%;width:max-content}footer{padding:20px 6%;font-size:8px;gap:20px;line-height:1.6}footer span:last-child{display:none}dialog{padding:30px 24px}.draw-preview{padding:7px 10px}.draw-preview .card{width:43px;height:62px}.draw-preview small{font-size:7px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Covered hands remain legible while only currently valid moves are interactive. */
.card:disabled{opacity:1}
.player-hand{row-gap:15px}
.player-hand.large-hand{max-height:159px;overflow-y:auto;overflow-x:hidden;padding:10px 3px 17px;scrollbar-width:thin;scrollbar-color:#c8bd8a77 #173c3240;overscroll-behavior:contain;align-content:start}
.player-hand.large-hand:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:5px}
@media(max-width:600px){
.player-hand{row-gap:13px}
.player-hand.large-hand{max-height:126px}
.player.crowded{width:90px}
.crowded .player-nameplate{gap:3px;font-size:7px;max-width:95px;flex-wrap:nowrap}
.crowded .player-nameplate .avatar{width:16px;height:16px;font-size:7px}
.crowded .player-name{max-width:42px}
.crowded .you-tag{font-size:5px;padding:1px 2px}
.crowded .host-crown{font-size:9px}
.crowded .player-hand{max-width:86px;gap:12px 3px;min-height:35px}
.crowded .player-hand .card{width:24px;height:35px;border-width:2px!important;border-radius:3px}
.crowded .player-hand .card .back-symbol{font-size:14px;border:0}
.crowded .player-hand .card .suit{font-size:17px}
.crowded .player-hand .card .rank,.crowded .player-hand .card .rank-bottom{font-size:6px}
.crowded .player-hand .card.joker .rank{font-size:4px;top:3px}
.crowded .player-hand.large-hand{max-height:105px}
.crowded .player-status{font-size:6px;margin-top:12px}
}

.remembered-marker{position:absolute;right:-5px;top:-6px;width:13px;height:13px;border-radius:50%;background:#d6c080;color:#244933;font:700 9px/13px var(--sans);box-shadow:0 1px 3px #0b34274d;z-index:2}
@media(max-width:360px){
.player.crowded{width:70px}
.crowded .player-hand{max-width:70px;gap:12px 3px}
.crowded .player-hand .card{width:20px;height:30px}
.crowded .player-hand .card .back-symbol{font-size:12px}
.crowded .player-name{max-width:32px}
.crowded .player-nameplate{gap:2px;font-size:6px}
.crowded .player-nameplate .avatar{width:14px;height:14px;font-size:6px}
}
.player-target .card{pointer-events:none}

.card.card-flight{position:fixed;z-index:90;pointer-events:none!important;transform-origin:top left;animation:none!important;transition:none!important;box-shadow:0 9px 17px #062f3260;will-change:transform;visibility:visible!important}
@media(prefers-reduced-motion:reduce){.card-flight{display:none!important}}
