*,*:before,*:after{box-sizing:border-box}*{margin:0}:root,:root[data-theme=blue]{--font-display: "Fredoka", "Nunito", ui-rounded, system-ui, sans-serif;--font-body: "Nunito", ui-sans-serif, system-ui, sans-serif;--felt: #c5d8e8;--felt-deep: #a3bdd2;--felt-light: #edf3f9;--table-start: rgba(237, 243, 249, .98);--table-end: rgba(163, 189, 210, .94);--panel-start: rgba(255, 255, 255, .72);--panel-end: rgba(255, 255, 255, .42);--modal-start: #ffffff;--modal-end: #f6f9fc;--cream: #3d5a73;--ink: #2f4858;--muted: rgba(61, 90, 115, .58);--red-card: #e57373;--black-card: #455a64;--gold: #d4a843;--gold-deep: #b8923a;--turn-bg: #fff8e1;--turn-bg-deep: #ffecb3;--turn-border: #ffc107;--turn-text: #7a5900;--turn-glow: rgba(255, 193, 7, .45);--accent: #6a9bc3;--accent-hot: #c17f6a;--accent-contrast: #3d5a73;--btn-top: #e4eef6;--btn-bottom: #8eb4d4;--btn-shadow: rgba(61, 90, 115, .14);--overlay: rgba(47, 72, 88, .28);--inset-line: rgba(61, 90, 115, .1);--card-shadow: rgba(36, 55, 71, .32);--card-outline: rgba(36, 55, 71, .55);--card-edge: #243747;--card-back-top: #527595;--card-back-bottom: #3a5872;--card-back-accent: rgba(255, 255, 255, .95);--slot: rgba(255, 255, 255, .72);--slot-border: rgba(255, 255, 255, .9);--bubble-shadow: 0 4px 0 var(--btn-shadow), 0 8px 18px rgba(61, 90, 115, .08);--card-width: clamp(46px, 5.3vw, 86px);--card-height: calc(var(--card-width) * 1.55);--column-gap: clamp(10px, 1.4vw, 24px);--stack-gap: clamp(22px, 2.4vw, 32px);color:var(--cream);background:var(--felt-light);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{min-width:320px;min-height:100dvh;overflow-x:hidden;background:linear-gradient(180deg,var(--felt-light) 0%,var(--felt) 52%,var(--felt-deep) 100%);transition:background .18s ease}:root[data-theme=green]{--felt: #b8efcb;--felt-deep: #7ed99a;--felt-light: #eafff2;--table-start: rgba(210, 250, 225, .98);--table-end: rgba(126, 217, 154, .94);--modal-start: #ffffff;--modal-end: #f0fff6;--cream: #1f4d32;--muted: rgba(31, 77, 50, .62);--accent: #43a047;--accent-contrast: #1f4d32;--btn-top: #b9f6ca;--btn-bottom: #43a047;--btn-shadow: rgba(31, 90, 55, .2);--overlay: rgba(31, 77, 50, .35);--inset-line: rgba(31, 77, 50, .12);--card-shadow: rgba(31, 77, 50, .32);--card-outline: rgba(31, 77, 50, .5);--card-edge: #1f4d32;--card-back-top: #4a8f62;--card-back-bottom: #2f6b45;--card-back-accent: rgba(255, 255, 255, .95);--bubble-shadow: 0 8px 0 var(--btn-shadow), 0 14px 28px rgba(31, 90, 55, .1)}:root[data-theme=red]{--felt: #ffd4b8;--felt-deep: #ffb07a;--felt-light: #fff3ea;--table-start: rgba(255, 230, 210, .98);--table-end: rgba(255, 176, 122, .94);--modal-start: #ffffff;--modal-end: #fff8f2;--cream: #6b3418;--muted: rgba(107, 52, 24, .62);--accent: #ff7043;--accent-contrast: #6b3418;--btn-top: #ffccbc;--btn-bottom: #ff7043;--btn-shadow: rgba(140, 70, 30, .2);--overlay: rgba(107, 52, 24, .35);--inset-line: rgba(107, 52, 24, .12);--card-shadow: rgba(107, 52, 24, .32);--card-outline: rgba(107, 52, 24, .5);--card-edge: #6b3418;--card-back-top: #c4845a;--card-back-bottom: #9a5f3a;--card-back-accent: rgba(255, 255, 255, .95);--bubble-shadow: 0 8px 0 var(--btn-shadow), 0 14px 28px rgba(140, 70, 30, .1)}h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:.01em}button{border:0;font:inherit;font-family:var(--font-body)}#root{min-height:100dvh;overflow-x:hidden}@media(max-width:720px){:root{--column-gap: clamp(5px, 1vw, 8px);--card-width: calc((100vw - 48px - (var(--column-gap) * 6)) / 7);--card-height: calc(var(--card-width) * 1.55);--stack-gap: clamp(22px, 6.4vw, 30px)}}@media(max-width:620px){:root{--column-gap: clamp(4px, 1.5vw, 7px);--card-width: calc((100vw - 24px - (var(--column-gap) * 6)) / 7);--stack-gap: clamp(23px, 7vw, 31px)}}.app-shell{display:grid;grid-template-rows:minmax(0,1fr);width:100%;height:100dvh;margin:0 auto;overflow:hidden;padding:0}.home-screen,.setup-screen{display:grid;min-height:100dvh;place-items:center;padding:24px;background:linear-gradient(180deg,var(--felt-light) 0%,var(--felt) 52%,var(--felt-deep) 100%)}.home-panel{display:flex;flex-direction:column;align-items:center;gap:0;text-align:center;width:min(460px,100%);padding:clamp(28px,5vw,40px);border-radius:32px;background:#ffffffd1;border:3px solid rgba(255,255,255,.95);box-shadow:var(--bubble-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.home-logo-wrap{display:grid;width:clamp(230px,72vw,430px);aspect-ratio:1;place-items:center;margin-top:clamp(8px,2vh,18px);margin-bottom:clamp(-30px,-3.4vh,-18px)}.home-logo{display:block;width:100%;height:100%;object-fit:contain;opacity:.72;filter:saturate(.68) contrast(.9) brightness(1.05) drop-shadow(0 8px 14px rgba(61,90,115,.12))}.home-panel h1{font-size:clamp(3rem,12vw,4.8rem);line-height:.95;color:var(--cream);text-shadow:none;margin:0}.home-brand{color:var(--cream);font-family:var(--font-display);font-size:.88rem;font-weight:800;letter-spacing:.08em;line-height:1.1;text-transform:uppercase}.home-tagline{margin-top:8px;color:var(--muted);font-size:.82rem;font-weight:800;letter-spacing:.08em}.home-actions{display:flex;flex-direction:column;gap:12px;width:100%;margin-top:clamp(22px,4vh,32px)}.home-actions .btn-primary{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:58px;border-radius:999px;background:linear-gradient(180deg,var(--btn-top),var(--btn-bottom));box-shadow:var(--bubble-shadow);color:var(--accent-contrast);font-family:var(--font-display);font-size:1.2rem;font-weight:700;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.home-actions .btn-primary:hover{transform:translateY(-2px)}.home-actions .btn-primary:active{transform:translateY(4px);box-shadow:0 4px 0 var(--btn-shadow)}.home-actions .btn-secondary{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;border-radius:999px;background:#ffffffb8;box-shadow:inset 0 0 0 2px var(--inset-line);color:var(--cream);font-family:var(--font-display);font-size:1.05rem;font-weight:700;cursor:pointer;transition:background .12s ease,transform .1s ease}.home-actions .btn-secondary:hover{background:#ffffffeb;transform:translateY(-1px)}.setup-panel{width:min(520px,100%);border:4px solid rgba(255,255,255,.95);border-radius:28px;padding:clamp(28px,5vw,44px);text-align:left;background:#ffffffdb;box-shadow:var(--bubble-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.setup-kicker{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:.85rem;font-weight:800;margin-bottom:8px}.setup-panel h1{font-size:clamp(2rem,7vw,2.8rem);color:var(--cream);line-height:1;margin:0 0 24px;text-shadow:none}.name-field{display:grid;gap:8px;margin-bottom:22px}.name-field span{color:var(--muted);font-size:.85rem;font-weight:800}.name-field input{min-height:52px;border:2px solid var(--inset-line);border-radius:16px;padding:0 16px;color:var(--cream);background:#ffffffeb;outline:none;font:inherit;font-size:1.05rem;font-weight:700;transition:border-color .12s ease,box-shadow .12s ease}.name-field input:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 24%,transparent)}.name-field input::placeholder{color:color-mix(in srgb,var(--cream) 35%,transparent)}.theme-label{color:var(--muted);font-size:.85rem;font-weight:800;margin-bottom:10px}.theme-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:28px}.theme-option{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 10px;border-radius:18px;border:3px solid transparent;background:#ffffffb8;color:var(--cream);font-family:var(--font-display);font-size:.9rem;font-weight:700;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .1s ease}.theme-option:hover{transform:translateY(-2px);background:#fffffff2}.theme-option.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,white)}.theme-swatch{width:46px;height:32px;border-radius:10px;border:2px solid rgba(255,255,255,.85);box-shadow:0 4px 10px color-mix(in srgb,var(--card-shadow) 115%,transparent)}.theme-swatch.green{background:linear-gradient(145deg,#b8efcb,#7ed99a)}.theme-swatch.red{background:linear-gradient(145deg,#ffd4b8,#ffb07a)}.theme-swatch.blue{background:linear-gradient(145deg,#edf3f9,#a3bdd2)}.setup-actions{display:grid;grid-template-columns:auto 1fr;gap:10px}.setup-actions button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:54px;border-radius:999px;font-family:var(--font-display);font-size:1.05rem;font-weight:700;cursor:pointer;transition:transform .1s ease,background .12s ease}.setup-actions button:first-child{padding:0 22px;background:#ffffffb8;box-shadow:inset 0 0 0 2px var(--inset-line);color:var(--cream)}.setup-actions button:first-child:hover{background:#fffffff2}.setup-actions button.primary{background:linear-gradient(180deg,var(--btn-top),var(--btn-bottom));box-shadow:var(--bubble-shadow);color:var(--accent-contrast)}.setup-actions button.primary:hover{transform:translateY(-2px)}@media(max-width:480px){.home-screen,.setup-screen{padding:16px}.home-panel,.setup-panel{border-radius:24px;padding:22px 18px}.home-logo-wrap{width:clamp(220px,72vw,320px);margin-top:8px;margin-bottom:-22px}.home-brand{font-size:.76rem}.home-tagline{max-width:28ch;font-size:.76rem;line-height:1.25}.theme-picker,.setup-actions{grid-template-columns:1fr}}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:var(--overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:110}.confirm-modal{width:min(430px,100%);border:4px solid rgba(255,255,255,.95);border-radius:24px;padding:clamp(22px,5vw,34px);color:var(--cream);background:linear-gradient(180deg,var(--modal-start),var(--modal-end));box-shadow:var(--bubble-shadow)}.confirm-modal p{color:var(--muted);font-size:.85rem;font-weight:800}.confirm-modal h2{margin-top:6px;font-size:clamp(1.8rem,7vw,2.6rem);line-height:1}.confirm-modal>span{display:block;margin-top:12px;color:var(--muted);line-height:1.5;font-weight:700}.confirm-actions{display:grid;grid-template-columns:1fr 2fr;gap:10px;margin-top:24px}.confirm-actions button{min-height:48px;border-radius:999px;cursor:pointer;color:var(--cream);background:#ffffffb8;box-shadow:inset 0 0 0 2px var(--inset-line);font-family:var(--font-display);font-weight:700;transition:transform .1s ease}.confirm-actions button:hover{transform:translateY(-1px)}.confirm-actions .confirm-primary{color:var(--accent-contrast);background:linear-gradient(180deg,var(--btn-top),var(--btn-bottom));box-shadow:var(--bubble-shadow)}.card{position:relative;width:var(--card-width);height:var(--card-height);flex:0 0 auto;container-type:inline-size;border-radius:14px;box-shadow:0 0 0 2px var(--card-edge),0 7px 0 var(--card-shadow),0 14px 28px #24374757}.card-face{display:grid;place-items:center;cursor:pointer;touch-action:none;background:radial-gradient(ellipse at 35% 30%,rgba(255,255,255,.34) 0%,transparent 65%),var(--rank-color, #888);color:#fff;border:3px solid var(--card-edge);border-radius:14px;box-shadow:inset 0 0 0 1px #ffffff47;transition:transform .14s ease,box-shadow .14s ease}.card-face.dragging{opacity:.55}.touch-drag-preview{position:fixed;pointer-events:none;z-index:9999;opacity:.92;filter:drop-shadow(0 18px 28px rgba(0,0,0,.35))}.card-corner{position:absolute;display:grid;justify-items:center;gap:0;color:#fff;font-family:var(--font-display);font-size:clamp(.65rem,1.5vw,.95rem);font-weight:700;line-height:1;text-shadow:0 1px 3px rgba(0,0,0,.45)}.card-corner.top{top:5px;left:6px}.card-corner.bottom{right:6px;bottom:5px;transform:rotate(180deg)}.card-center-icon{font-size:clamp(1.5rem,4.2vw,3rem);line-height:1;pointer-events:none;filter:drop-shadow(0 2px 5px rgba(0,0,0,.28))}.card-face.old-maid-face .card-center-icon{font-size:clamp(3rem,8.5vw,6rem)}.card-face.old-maid-face .card-corner{gap:2px;color:#fff;font-size:clamp(.55rem,1.6vw,.95rem);letter-spacing:.04em;line-height:1.05;text-shadow:0 1px 2px rgba(0,0,0,.55)}.card-face.old-maid-face .card-corner strong{color:#fff;font-weight:800;text-transform:uppercase}.trick-card-slot .card-face.old-maid-face .card-corner{font-size:clamp(.78rem,2vw,1.15rem)}.trick-card-slot .card-center-icon{font-size:clamp(2rem,5vw,3.2rem)}.trick-card-slot .card-face.old-maid-face .card-center-icon{font-size:clamp(3.4rem,10vw,6.8rem)}.trick-card-slot .card-corner{font-size:clamp(.9rem,2vw,1.4rem)}.trick-card-slot .card-corner.top{top:10px;left:10px}.trick-card-slot .card-corner.bottom{right:10px;bottom:10px}.card-back{display:grid;place-items:center;border:3px solid var(--card-edge);border-radius:14px;background:linear-gradient(155deg,var(--card-back-top),var(--card-back-bottom));overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff2e,inset 0 -12px 24px #0000001f;isolation:isolate}.card-back:before{content:"";position:absolute;top:8%;right:8%;bottom:8%;left:8%;background:url(/gofish.png) center / contain no-repeat;opacity:.13;mix-blend-mode:multiply;filter:brightness(.82) saturate(.68) contrast(.95);pointer-events:none;z-index:0}.card-back-text{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(1px,5cqi,4px);padding:0 clamp(2px,6cqi,8px);max-width:90%;font-family:var(--font-display);font-size:clamp(.54rem,23cqi,1.28rem);font-weight:700;letter-spacing:clamp(.02em,1.2cqi,.05em);line-height:1.02;text-align:center;-webkit-user-select:none;user-select:none;pointer-events:none;color:color-mix(in srgb,var(--card-back-bottom) 82%,#243747);opacity:.72;position:relative;z-index:1;text-shadow:.1em .1em .05em rgba(255,255,255,.48),-.1em -.1em .12em rgba(20,32,44,.32)}.card-back-text span{display:block}@container (max-width: 76px){.card-back{border-width:2px}.card-back-text{gap:clamp(0px,3cqi,2px);font-weight:800;opacity:.78;text-shadow:.08em .08em .04em rgba(255,255,255,.52),-.08em -.08em .1em rgba(20,32,44,.38)}}@media(max-width:620px){.card,.card-face,.card-back{border-radius:10px}.card-corner.top{top:4px;left:4px}.card-corner.bottom{right:4px;bottom:4px}.card-center-icon{font-size:clamp(1rem,10vw,1.8rem)}.card-face.old-maid-face .card-center-icon{font-size:clamp(2.1rem,20vw,3.6rem)}.card-face.old-maid-face .card-corner{font-size:clamp(.48rem,4.5vw,.78rem)}}.hearts-board{--card-transfer-duration: 2.2s;--card-center-arrive-duration: .52s;--card-hand-slide-duration: .9s;--card-deck-draw-duration: .52s;--card-book-discard-duration: .65s;--z-discard: 8;--z-table-play: 20;--z-seat: 14;--z-bubble: 160;position:relative;width:100%;height:100%;min-height:0;overflow:hidden;background:linear-gradient(180deg,var(--felt-light) 0%,var(--felt) 52%,var(--felt-deep) 100%)}.hearts-board:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:0;width:clamp(320px,44vw,720px);aspect-ratio:1;background:url(/gofish.png) center / contain no-repeat;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.11;mix-blend-mode:multiply;filter:brightness(.82) saturate(.68) contrast(.95)}.table-layout{position:relative;width:100%;height:100%;z-index:1}.table-layout:before{content:"";position:absolute;top:14%;left:8%;right:8%;bottom:18%;border-radius:50%;background:color-mix(in srgb,var(--felt-deep) 42%,transparent);border:2px solid rgba(36,55,71,.1);pointer-events:none;z-index:0}.opponent-seat{position:absolute;display:flex;align-items:center;z-index:var(--z-seat)}.opponent-seat.has-table-talk{z-index:var(--z-bubble);overflow:visible}.opponent-seat.north{top:0;left:50%;flex-direction:column;gap:0;width:min(1120px,82vw);transform:translate(-50%)}.north .opponent-hand{order:1;--card-width: clamp(92px, 8vw, 138px);--card-height: calc(var(--card-width) * 1.55);display:flex;flex-direction:row;justify-content:center;width:100%;height:var(--card-height);overflow:visible;margin-top:calc(var(--card-height) * -.5 + 3em)}.north .seat-info{order:2;margin-top:6px}.opponent-seat.west{top:50%;left:0;flex-direction:row;gap:clamp(22px,3vw,42px);transform:translateY(-50%)}.west .opponent-hand{order:1;margin-left:calc(var(--card-height) * -.5 + 3em)}.west .seat-info{order:2;flex-direction:column;gap:6px}.opponent-seat.east{top:50%;right:0;flex-direction:row-reverse;gap:clamp(22px,3vw,42px);transform:translateY(-50%)}.east .opponent-hand{order:1;margin-right:calc(var(--card-height) * -.5 + 3em)}.east .seat-info{order:2;flex-direction:column;gap:6px}.seat-info{position:relative;display:flex;align-items:center;gap:8px;z-index:1}.seat-label{display:inline-flex;align-items:center;color:var(--cream);font-family:var(--font-display);font-size:clamp(1rem,1.9vw,1.55rem);font-weight:700;line-height:1;white-space:nowrap;padding:6px 14px;border:2px solid transparent;border-radius:999px;text-shadow:0 1px 2px rgba(255,255,255,.65);transition:color .2s ease,background .2s ease,border-color .2s ease}.seat-label.active-turn,.human-info p.active-turn{color:var(--turn-text);background:linear-gradient(180deg,var(--turn-bg),var(--turn-bg-deep));border-color:var(--turn-border);text-shadow:none}.point-heart{position:relative;display:grid;width:clamp(38px,3.6vw,54px);aspect-ratio:1;place-items:center;color:#fff;filter:drop-shadow(0 3px 0 rgba(0,0,0,.38));font-weight:800;flex-shrink:0}.point-heart:before,.point-heart:after{position:absolute;width:58%;height:82%;border:2px solid rgba(78,0,0,.5);border-radius:999px 999px 0 0;background:linear-gradient(#e82020,#a00000);content:""}.point-heart:before{left:17%;transform:rotate(-45deg);transform-origin:50% 78%}.point-heart:after{right:17%;transform:rotate(45deg);transform-origin:50% 78%}.point-heart span{position:relative;z-index:1;padding-top:5px;font-size:clamp(1rem,2.2vw,1.75rem);line-height:1;text-shadow:0 2px 0 rgba(0,0,0,.55)}.opponent-hand{--card-width: clamp(68px, 6.5vw, 108px);position:relative;width:calc(var(--card-width) + 24px);height:var(--card-height);flex-shrink:0}.opponent-hand .card{position:absolute;top:0;left:24px;transform:none;transform-origin:center center}.opponent-hand .card:nth-last-child(1){left:0;z-index:13}.opponent-hand .card:nth-last-child(2){left:2px;z-index:12}.opponent-hand .card:nth-last-child(3){left:4px;z-index:11}.opponent-hand .card:nth-last-child(4){left:6px;z-index:10}.opponent-hand .card:nth-last-child(5){left:8px;z-index:9}.opponent-hand .card:nth-last-child(6){left:10px;z-index:8}.opponent-hand .card:nth-last-child(7){left:12px;z-index:7}.opponent-hand .card:nth-last-child(8){left:14px;z-index:6}.opponent-hand .card:nth-last-child(9){left:16px;z-index:5}.opponent-hand .card:nth-last-child(10){left:18px;z-index:4}.opponent-hand .card:nth-last-child(11){left:20px;z-index:3}.opponent-hand .card:nth-last-child(12){left:22px;z-index:2}.opponent-hand .card:nth-last-child(13){left:24px;z-index:1}.north .opponent-hand .card{position:relative;top:auto;left:auto;flex:0 0 var(--card-width);transform:none;z-index:auto}.north .opponent-hand .card+.card{margin-left:calc(var(--card-width) * -.42)}.west .opponent-hand,.east .opponent-hand{--card-width: clamp(92px, 8vw, 138px);--card-height: calc(var(--card-width) * 1.55);display:flex;flex-direction:column;align-items:center;width:var(--card-height);height:auto;overflow:visible}.west .opponent-hand .card,.east .opponent-hand .card{position:relative;left:auto;top:auto;z-index:auto;flex:0 0 auto}.west .opponent-hand .card{transform:rotate(-90deg);transition:transform .14s ease,box-shadow .14s ease}.east .opponent-hand .card{transform:rotate(90deg);transition:transform .14s ease,box-shadow .14s ease}.west .opponent-hand .card+.card,.east .opponent-hand .card+.card{margin-top:calc(var(--card-height) * -.76)}.trick-zone{position:absolute;top:49%;left:50%;display:grid;width:min(640px,66vw);justify-items:center;gap:18px;transform:translate(-50%,-50%);z-index:20}.phase-passing .trick-zone{top:46%}.trick-table{--card-width: clamp(100px, 9vw, 138px);--card-height: calc(var(--card-width) * 1.55);position:relative;width:calc(var(--card-width) * 3.2);height:calc(var(--card-height) * 2.05)}.phase-passing .trick-table{display:none}.trick-card-slot{position:absolute;display:grid;width:var(--card-width);height:var(--card-height);place-items:center}.trick-card-slot>span{display:none}.trick-card-slot.north{top:0;left:50%;z-index:3;transform:translate(-50%)}.trick-card-slot.south{bottom:0;left:50%;z-index:4;transform:translate(-50%)}.trick-card-slot.west{top:50%;left:0;z-index:1;transform:translateY(-50%)}.trick-card-slot.east{top:50%;right:0;z-index:2;transform:translateY(-50%)}.trick-card-slot .card{box-shadow:0 0 0 2px var(--card-edge),0 10px 0 var(--card-shadow),0 16px 32px #2437475c;border-radius:10px}.trick-card-slot .card-face{transition:none}@keyframes play-from-south{0%{transform:translateY(42vh) scale(1.08);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes play-from-north{0%{transform:translateY(-38vh) scale(.55);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes play-from-west{0%{transform:translate(-42vw) scale(.55);opacity:0}to{transform:translate(0) scale(1);opacity:1}}@keyframes play-from-east{0%{transform:translate(42vw) scale(.55);opacity:0}to{transform:translate(0) scale(1);opacity:1}}.phase-playing .trick-card-slot.south .card{animation:play-from-south .42s cubic-bezier(.18,.85,.38,1) both}.phase-playing .trick-card-slot.north .card{animation:play-from-north .42s cubic-bezier(.18,.85,.38,1) both}.phase-playing .trick-card-slot.west .card{animation:play-from-west .42s cubic-bezier(.18,.85,.38,1) both}.phase-playing .trick-card-slot.east .card{animation:play-from-east .42s cubic-bezier(.18,.85,.38,1) both}@keyframes trick-take-north{0%,60%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(-55vh) scale(.2);opacity:0}}@keyframes trick-take-south{0%,60%{transform:translate(0) scale(1);opacity:1}to{transform:translateY(48vh) scale(.2);opacity:0}}@keyframes trick-take-west{0%,60%{transform:translate(0) scale(1);opacity:1}to{transform:translate(-55vw) scale(.2);opacity:0}}@keyframes trick-take-east{0%,60%{transform:translate(0) scale(1);opacity:1}to{transform:translate(55vw) scale(.2);opacity:0}}.trick-completed[data-trick-winner=north] .trick-card-slot.north .card,.trick-completed[data-trick-winner=north] .trick-card-slot.south .card,.trick-completed[data-trick-winner=north] .trick-card-slot.west .card,.trick-completed[data-trick-winner=north] .trick-card-slot.east .card{animation:trick-take-north 1.35s cubic-bezier(.4,0,.7,.15) both}.trick-completed[data-trick-winner=south] .trick-card-slot.north .card,.trick-completed[data-trick-winner=south] .trick-card-slot.south .card,.trick-completed[data-trick-winner=south] .trick-card-slot.west .card,.trick-completed[data-trick-winner=south] .trick-card-slot.east .card{animation:trick-take-south 1.35s cubic-bezier(.4,0,.7,.15) both}.trick-completed[data-trick-winner=west] .trick-card-slot.north .card,.trick-completed[data-trick-winner=west] .trick-card-slot.south .card,.trick-completed[data-trick-winner=west] .trick-card-slot.west .card,.trick-completed[data-trick-winner=west] .trick-card-slot.east .card{animation:trick-take-west 1.35s cubic-bezier(.4,0,.7,.15) both}.trick-completed[data-trick-winner=east] .trick-card-slot.north .card,.trick-completed[data-trick-winner=east] .trick-card-slot.south .card,.trick-completed[data-trick-winner=east] .trick-card-slot.west .card,.trick-completed[data-trick-winner=east] .trick-card-slot.east .card{animation:trick-take-east 1.35s cubic-bezier(.4,0,.7,.15) both}.pass-panel{display:grid;width:100%;justify-items:center;gap:clamp(14px,2vw,24px);justify-content:center}.pass-header{display:flex;flex-direction:column;align-items:center;gap:6px}.pass-panel p{color:var(--cream);font-size:clamp(1.2rem,2.4vw,1.8rem);font-weight:700;line-height:1.2;text-align:center;text-shadow:0 2px 4px rgba(0,0,0,.5)}.pass-destination{display:flex;align-items:center;gap:10px}.pass-dir-arrow{font-size:clamp(2rem,4vw,3rem);line-height:1;animation:arrow-pulse 1.1s ease-in-out infinite}.pass-dest-name{color:var(--gold);font-size:clamp(1.1rem,2.2vw,1.65rem);font-weight:800;text-shadow:0 2px 4px rgba(0,0,0,.5)}@keyframes arrow-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.75}}.pass-panel>span{display:none}.pass-slots{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:clamp(18px,2.5vw,36px);width:min(700px,92%)}.pass-slots div{display:grid;aspect-ratio:.72;place-items:center;border:3px solid rgba(255,255,255,.5);border-radius:18px;color:#ffffff6b;background:#0000001f;box-shadow:inset 0 0 12px #0000002e,0 6px 16px #0003;font-size:clamp(4.5rem,8.5vw,7.5rem);font-weight:800;line-height:1}.pass-slots div.filled{border-color:#ffffffd9;background:transparent;padding:0;overflow:hidden}.pass-slots div.filled .card{width:100%;height:100%;border-radius:16px;animation:slot-flip-in .35s cubic-bezier(.34,1.56,.64,1) both}@keyframes slot-flip-in{0%{transform:rotateY(-90deg) scale(.6);opacity:0}to{transform:rotateY(0) scale(1);opacity:1}}@keyframes fly-to-north{0%{transform:translate(0) scale(1);opacity:1}70%{opacity:.9}to{transform:translateY(-52vh) scale(.22);opacity:0}}@keyframes fly-to-west{0%{transform:translate(0) scale(1);opacity:1}70%{opacity:.9}to{transform:translate(-54vw,-6vh) scale(.22);opacity:0}}@keyframes fly-to-east{0%{transform:translate(0) scale(1);opacity:1}70%{opacity:.9}to{transform:translate(54vw,-6vh) scale(.22);opacity:0}}.passing-out-across .pass-slots div.filled{animation:fly-to-north .54s cubic-bezier(.3,0,.7,.1) forwards}.passing-out-left .pass-slots div.filled{animation:fly-to-west .54s cubic-bezier(.3,0,.7,.1) forwards}.passing-out-right .pass-slots div.filled{animation:fly-to-east .54s cubic-bezier(.3,0,.7,.1) forwards}.passing-out-across .pass-slots div.filled:nth-child(2),.passing-out-left .pass-slots div.filled:nth-child(2),.passing-out-right .pass-slots div.filled:nth-child(2){animation-delay:70ms}.passing-out-across .pass-slots div.filled:nth-child(3),.passing-out-left .pass-slots div.filled:nth-child(3),.passing-out-right .pass-slots div.filled:nth-child(3){animation-delay:.14s}.passing-out-across .pass-arrow,.passing-out-left .pass-arrow,.passing-out-right .pass-arrow{pointer-events:none;opacity:.35;transition:opacity .12s ease}.passing-out-across .pass-header,.passing-out-left .pass-header,.passing-out-right .pass-header{opacity:0;transition:opacity .2s ease}.pass-arrow{display:grid;width:min(260px,100%);height:66px;place-items:center;border-radius:10px;border:2px solid rgba(255,255,255,.15);color:#fff;background:var(--felt-deep);box-shadow:0 5px #0006;cursor:pointer;font-size:clamp(1.4rem,2.6vw,2rem);font-weight:800;line-height:1;letter-spacing:.05em;text-transform:uppercase}.pass-arrow:disabled{cursor:not-allowed;opacity:.5}.human-seat{--card-width: clamp(112px, 9vw, 156px);--card-height: calc(var(--card-width) * 1.55);position:absolute;right:0;bottom:calc(var(--card-height) * -.5 + 3em);left:0;display:grid;justify-items:center;gap:10px;z-index:var(--z-seat)}.human-seat.has-table-talk{z-index:var(--z-bubble)}.human-info{display:flex;justify-content:center;width:100%;margin-bottom:2px;position:relative;z-index:var(--z-bubble)}.human-info-anchor{position:relative;display:inline-flex;align-items:flex-end}.turn-thought-bubble{position:absolute;z-index:var(--z-bubble);left:calc(100% + clamp(18px,2.8vw,32px));bottom:0;flex-shrink:0;padding:12px 20px;min-width:min(280px,38vw);max-width:min(460px,58vw);border:2px solid var(--card-edge);border-radius:18px;background:linear-gradient(180deg,#fff,#f7fbff);box-shadow:var(--bubble-shadow);text-align:left;animation:thought-pop .32s cubic-bezier(.18,.85,.28,1) both}.turn-thought-bubble:before,.turn-thought-bubble:after{content:"";position:absolute;left:-13px;bottom:12px;width:0;height:0;pointer-events:none}.turn-thought-bubble:before{border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:13px solid var(--card-edge)}.turn-thought-bubble:after{left:-9px;bottom:14px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:11px solid #ffffff}.turn-thought-bubble p{display:block;margin:0;color:var(--accent-contrast);font-family:var(--font-display);font-size:clamp(.82rem,1.6vw,1.05rem);font-weight:700;line-height:1.35;text-shadow:none;white-space:normal}.ask-card-ref{display:inline;white-space:nowrap}.ask-card-color:after{content:" "}.ask-card-color,.ask-card-number{color:var(--ask-card-color);font-weight:800}.ask-card-number{font-size:1.08em;letter-spacing:.01em}@keyframes thought-pop{0%{opacity:0;transform:translate(-8px) scale(.94)}to{opacity:1;transform:translate(0) scale(1)}}.human-info>.human-info-anchor>p.active-turn{flex-shrink:0;display:inline-flex;align-items:center;color:var(--cream);font-family:var(--font-display);font-size:clamp(1.1rem,2.2vw,1.65rem);font-weight:700;line-height:1;padding:6px 14px;border:2px solid transparent;border-radius:999px;text-shadow:0 1px 2px rgba(255,255,255,.65);transition:color .2s ease,background .2s ease,border-color .2s ease}.hand-row{--card-width: clamp(112px, 9vw, 156px);--card-height: calc(var(--card-width) * 1.55);display:flex;width:min(1180px,88vw);min-height:var(--card-height);justify-content:center;overflow:visible}.hand-card{flex:0 0 var(--card-width);transition:transform .14s ease}.hand-card+.hand-card{margin-left:calc(var(--card-width) * -.42)}.hand-card.rank-group-start{margin-left:calc(var(--card-width) * -.12)}.hand-card.playable{transform:translateY(-10px)}.hand-card.selected-pass{transform:translateY(-18px)}.phase-passing .hand-card.selected-pass .card{filter:brightness(.55) saturate(.6);transition:filter .18s ease}.phase-playing .hand-card:not(.playable) .card-face{filter:saturate(.45) brightness(.72)}.old-maid-board.phase-playing .hand-card:not(.ask-dimmed) .card-face{filter:none}.old-maid-center{position:absolute;top:48%;left:50%;display:flex;width:min(420px,52vw);min-height:190px;justify-content:center;align-items:center;gap:clamp(10px,2vw,22px);padding:0;background:transparent;text-align:center;transform:translate(-50%,-50%);z-index:var(--z-table-play)}.go-fish-center{width:min(560px,58vw);min-height:220px}.fish-deck{--card-width: clamp(82px, 7.2vw, 112px);--card-height: calc(var(--card-width) * 1.55);position:relative;width:calc(var(--card-width) + 18px);height:calc(var(--card-height) + 18px);flex:0 0 auto}.fish-deck-card{position:absolute;top:var(--deck-offset);left:var(--deck-offset);width:var(--card-width);height:var(--card-height)}.fish-deck-card .card{width:100%;height:100%}.fish-deck.empty{display:grid;place-items:center;border:3px dashed rgba(255,255,255,.45);border-radius:14px;color:var(--cream);font-family:var(--font-display);font-size:clamp(1.6rem,4vw,2.6rem);font-weight:800}.fish-deck.empty .fish-deck-card{position:static;width:auto;height:auto}.player-thought-bubble{position:absolute;z-index:var(--z-bubble);width:max-content;max-width:min(260px,30vw);padding:10px 14px;border:2px solid var(--card-edge);border-radius:16px;color:var(--accent-contrast);background:linear-gradient(180deg,#fff,#f7fbff);box-shadow:var(--bubble-shadow);animation:thought-pop .26s cubic-bezier(.18,.85,.28,1) both}.player-thought-bubble p{margin:0;font-family:var(--font-display);font-size:clamp(.78rem,1.45vw,.98rem);font-weight:700;line-height:1.2;text-shadow:none;white-space:normal}.north .player-thought-bubble{top:calc(100% + 8px);left:50%;transform:translate(-50%)}.west .player-thought-bubble{top:50%;left:calc(100% + 12px);transform:translateY(-50%)}.east .player-thought-bubble{top:50%;right:calc(100% + 12px);transform:translateY(-50%)}.turn-thought-bubble.table-talk{left:auto;right:calc(100% + clamp(18px,2.8vw,32px))}.turn-thought-bubble.table-talk:before,.turn-thought-bubble.table-talk:after{right:-13px;left:auto;border-right:none;border-left:13px solid var(--card-edge)}.turn-thought-bubble.table-talk:after{right:-9px;border-left-color:#fff;border-left-width:11px}.turn-kicker{color:#ffffff9e;font-size:clamp(.72rem,1.4vw,.9rem);font-weight:900;letter-spacing:.14em;line-height:1;text-transform:uppercase}.old-maid-center h2{max-width:32rem;color:var(--cream);font-size:clamp(1.05rem,2.2vw,1.6rem);line-height:1.25;text-shadow:0 2px 8px rgba(0,0,0,.58)}.drawn-card{--card-width: clamp(96px, 9vw, 132px);--from-x: 0;--from-y: 0;--to-x: 0;--to-y: 0;width:var(--card-width);height:calc(var(--card-width) * 1.55);pointer-events:none}.drawn-card .card{width:100%;height:100%;animation:old-maid-card-transfer var(--card-transfer-duration) cubic-bezier(.18,.85,.28,1) both}.drawn-card.drawn-for-human:not(.drawn-phase-to-hand) .card{animation:old-maid-human-draw var(--card-center-arrive-duration) cubic-bezier(.18,.85,.28,1) both}.hand-card.slide-target-hidden{visibility:hidden}.fly-to-hand-card{position:fixed;top:var(--fly-from-y);left:var(--fly-from-x);width:var(--fly-from-w);height:calc(var(--fly-from-w) * 1.55);z-index:180;pointer-events:none;filter:drop-shadow(0 10px 22px rgba(0,0,0,.38));will-change:transform;transform-origin:top left}.fly-to-hand-card.fly-mode-from-opponent{animation:fly-to-hand-slot var(--card-hand-slide-duration) cubic-bezier(.22,.92,.32,1) both}.fly-to-hand-card.fly-mode-from-deck{animation:fly-to-hand-slot var(--card-deck-draw-duration) cubic-bezier(.22,.92,.32,1) both}.fly-to-hand-card.fly-cluster-card{z-index:calc(180 + var(--cluster-index))}.fly-to-hand-card.fly-mode-to-discard{animation:fly-to-discard-slot var(--card-book-discard-duration) cubic-bezier(.2,.88,.28,1) both;transform-origin:center}.fly-to-hand-card .card{width:100%;height:100%;--card-width: 100%;--card-height: 100%;transition:none}.fly-to-hand-card .card-face .card-corner{font-size:clamp(1rem,22cqi,1.65rem);font-weight:800}.fly-to-hand-card .card-face .card-corner.top{top:7px;left:8px}.fly-to-hand-card .card-face .card-corner.bottom{right:8px;bottom:7px}.fly-to-hand-card .card-face .card-center-icon{font-size:clamp(1.2rem,38cqi,2.8rem)}@keyframes fly-to-hand-slot{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--fly-dx),var(--fly-dy)) scale(var(--fly-scale));opacity:1}}@keyframes fly-to-discard-slot{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--fly-dx),var(--fly-dy)) scale(var(--fly-scale));opacity:.92}}.drawn-card.drawn-match-card .card{animation:old-maid-match-to-center .48s cubic-bezier(.18,.85,.38,1) both}.drawn-card.drawn-phase-to-discard .card{animation:old-maid-center-to-discard var(--card-book-discard-duration) cubic-bezier(.18,.85,.28,1) both}.drawn-card.drawn-phase-to-discard.drawn-match-card .card{animation-delay:70ms}.drawn-from-north{--from-x: 0;--from-y: -36vh}.drawn-from-west{--from-x: -40vw;--from-y: 0}.drawn-from-east{--from-x: 40vw;--from-y: 0}.drawn-from-south{--from-x: 0;--from-y: 36vh}.drawn-to-north{--to-x: 0;--to-y: -36vh}.drawn-to-west{--to-x: -40vw;--to-y: 0}.drawn-to-east{--to-x: 40vw;--to-y: 0}.drawn-to-south{--to-x: 0;--to-y: 36vh}@keyframes old-maid-card-transfer{0%{transform:translate(var(--from-x),var(--from-y)) scale(.44) rotate(-7deg);opacity:0}12%{opacity:1}45%{transform:translate(0) scale(1) rotate(0);opacity:1}72%{transform:translate(0) scale(1) rotate(0);opacity:1}to{transform:translate(var(--to-x),var(--to-y)) scale(.44) rotate(7deg);opacity:0}}@keyframes old-maid-human-draw{0%{transform:translate(var(--from-x),var(--from-y)) scale(.44) rotate(-7deg);opacity:0}24%{opacity:1}to{transform:translate(0) scale(1) rotate(0);opacity:1}}@keyframes old-maid-match-to-center{0%{transform:translateY(42vh) scale(1.08) rotate(6deg);opacity:0}to{transform:translate(0) scale(1) rotate(0);opacity:1}}@keyframes old-maid-center-to-discard{0%{transform:translate(0) scale(1) rotate(0);opacity:1}to{transform:translateY(30vh) scale(.44) rotate(7deg);opacity:0}}.discard-strip{display:flex;justify-content:center;width:100%;min-height:78px}.discard-strip .card{--card-width: clamp(48px, 5vw, 68px);width:var(--card-width);height:calc(var(--card-width) * 1.55);box-shadow:0 8px 20px #00000047}.discard-strip .card+.card{margin-left:calc(clamp(48px,5vw,68px)*-.32)}.discard-pile{--pile-card-width: clamp(42px, 4.2vw, 62px);--pile-from-x: 0;--pile-from-y: 0;position:absolute;width:calc(var(--pile-card-width) * 3.2);height:calc(var(--pile-card-width) * 2.8);pointer-events:none;z-index:var(--z-discard)}.discard-pile.north{--pile-from-y: 32vh;top:calc(clamp(92px,8vw,138px)*1.05 + 3em + 0rem);left:50%;transform:translate(-50%)}.discard-pile.west{--pile-from-x: 36vw;--side-rotation: -90deg;top:50%;left:calc(clamp(155px,13vw,250px) + 3em + 3rem);width:calc(var(--pile-card-width) * 3.2);height:calc(var(--pile-card-width) * 2.8);transform:translateY(-50%)}.discard-pile.east{--pile-from-x: -36vw;--side-rotation: 270deg;top:50%;right:calc(clamp(155px,13vw,250px) + 3em + 3rem);width:calc(var(--pile-card-width) * 3.2);height:calc(var(--pile-card-width) * 2.8);transform:translateY(-50%)}.discard-pile.south{--pile-from-y: -30vh;bottom:calc(clamp(112px,9vw,156px)*1.08 + 3em + 0rem);left:50%;transform:translate(-50%)}.discard-card{position:absolute;top:50%;left:50%;width:var(--pile-card-width);height:calc(var(--pile-card-width) * 1.55);z-index:calc(var(--pile-index) + 1);transform:translate(calc(-50% + var(--pile-ox, 0%)),calc(-50% + var(--pile-oy, 0%))) rotate(var(--pile-rot, 0deg))}.discard-pile.west .discard-card,.discard-pile.east .discard-card{width:calc(var(--pile-card-width) * 1.55);height:var(--pile-card-width);z-index:calc(var(--pile-index) + 1);transform:translate(calc(-50% + var(--pile-ox, 0%)),calc(-50% + var(--pile-oy, 0%)))}.discard-pile.west .discard-card .card,.discard-pile.east .discard-card .card{position:absolute;top:50%;left:50%;width:var(--pile-card-width);height:calc(var(--pile-card-width) * 1.55)}.discard-pile.west .discard-card .card{transform:translate(-50%,-50%) rotate(calc(-90deg + var(--pile-rot, 0deg)))}.discard-pile.east .discard-card .card{transform:translate(-50%,-50%) rotate(calc(270deg + var(--pile-rot, 0deg)))}.discard-card .card{width:100%;height:100%;box-shadow:0 8px 18px #00000052}.discard-card.fresh .card{animation:pair-to-pile .62s cubic-bezier(.18,.85,.28,1) both}.discard-pile.west .discard-card.fresh .card,.discard-pile.east .discard-card.fresh .card{animation:pair-to-side-pile .62s cubic-bezier(.18,.85,.28,1) both}@keyframes pair-to-pile{0%{opacity:0;transform:translate(var(--pile-from-x),var(--pile-from-y)) scale(1.5) rotate(-7deg)}30%{opacity:1}to{opacity:1;transform:translate(0) scale(1) rotate(0)}}@keyframes pair-to-side-pile{0%{opacity:0;transform:translate(-50%,-50%) translate(var(--pile-from-x),var(--pile-from-y)) scale(1.5) rotate(var(--side-rotation))}30%{opacity:1}to{opacity:1;transform:translate(-50%,-50%) rotate(calc(var(--side-rotation) + var(--pile-rot, 0deg)))}}.card-count{width:clamp(34px,3.2vw,46px);border:2px solid rgba(255,255,255,.44);border-radius:999px;background:#0000003d}.card-count:before,.card-count:after{display:none}.card-count span{padding-top:0;color:var(--cream);font-size:clamp(.9rem,1.8vw,1.25rem)}.opponent-hand.ask-hand{cursor:pointer;transition:filter .2s ease}.opponent-hand.ask-hand .card{pointer-events:none}.opponent-seat.draw-target .opponent-hand.ask-hand:before{content:"";position:absolute;top:-12px;right:-12px;bottom:-12px;left:-12px;border-radius:22px;border:3px solid transparent;box-shadow:none;background:transparent;pointer-events:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;z-index:20}.old-maid-card .card-face{box-shadow:0 0 0 3px #f5c84247,0 10px 22px #00000059}.hand-row .hand-card .card.card-face{transition:filter .18s ease}.hand-row .hand-card .card-face .card-corner{font-size:clamp(1rem,22cqi,1.65rem);font-weight:800}.hand-row .hand-card .card-face .card-corner.top{top:7px;left:8px}.hand-row .hand-card .card-face .card-corner.bottom{right:8px;bottom:7px}.hand-row .hand-card .card-face .card-center-icon{font-size:clamp(1.2rem,38cqi,2.8rem)}.hand-row .hand-card.ask-selectable .card.card-face,.hand-row .hand-card.ask-dimmed .card.card-face,.hand-row .hand-card.ask-selected .card.card-face{cursor:pointer}.hand-card.ask-selected{transform:translateY(-16px);z-index:3}.hand-card.ask-dimmed{z-index:1;transition:transform .14s ease}.old-maid-board.phase-playing .hand-card.ask-dimmed .card-face,.hand-card.ask-dimmed .card-face{filter:brightness(.9) saturate(.88);transition:filter .18s ease,transform .14s ease}.hand-card.ask-dimmed .card.card-face:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:11px;background:#24374724;pointer-events:none}.hand-card.ask-selected .card-face{filter:brightness(1.03) saturate(1.04)}.hearts-board.dealing .hand-card .card,.hearts-board.dealing .opponent-hand .card{animation:deal-around .76s cubic-bezier(.18,.8,.22,1) backwards}.hearts-board.dealing .hand-card:nth-child(2n) .card,.hearts-board.dealing .opponent-hand .card:nth-child(2n){animation-delay:45ms}.hearts-board.dealing .hand-card:nth-child(3n) .card,.hearts-board.dealing .opponent-hand .card:nth-child(3n){animation-delay:90ms}@keyframes deal-around{0%{opacity:0;transform:translate(var(--deal-x, 0),var(--deal-y, 0)) rotate(-18deg) scale(.72)}62%{opacity:1}to{opacity:1}}.north .card{--deal-y: 180px}.west .card{--deal-x: 200px}.east .card{--deal-x: -200px}.human-seat .card{--deal-y: -200px}@media(max-width:920px){.table-layout:before{top:16%;left:18%;right:18%;bottom:30%}.hearts-board:after{width:clamp(240px,72vw,460px);opacity:.1}.old-maid-center{top:48%}.go-fish-center{top:47%;width:min(380px,46vw);min-height:150px}.fish-deck{--card-width: clamp(60px, 13vw, 82px)}.player-thought-bubble{max-width:min(220px,52vw);padding:8px 11px}.opponent-seat.north{top:0;left:50%;width:min(100%,92vw);max-width:100vw;padding-inline:10px;transform:translate(-50%)}.north .opponent-hand{--card-width: inherit;--card-height: calc(var(--card-width) * 1.55);margin-top:0;padding-top:max(8px,env(safe-area-inset-top));width:100%;max-width:100%;margin-inline:auto;justify-content:flex-start}.north .opponent-hand .card+.card{margin-left:calc(var(--card-width) * var(--hand-overlap, -.42))}.north .seat-info{margin-top:4px}.north .player-thought-bubble{top:calc(100% + 8px);bottom:auto;left:50%;transform:translate(-50%);max-width:min(260px,84vw);z-index:var(--z-bubble)}.west .player-thought-bubble,.east .player-thought-bubble{top:calc(100% + 6px);bottom:auto;max-width:min(260px,calc(100vw - 24px));width:fit-content;transform:none}.west .player-thought-bubble{left:0;right:auto}.east .player-thought-bubble{right:0;left:auto}.discard-pile.north{--pile-card-width: clamp(40px, 10vw, 54px);top:calc(max(8px,env(safe-area-inset-top)) + var(--north-card-height, 72px) + 16px);left:50%;bottom:auto;right:auto;transform:translate(-50%);width:calc(var(--pile-card-width) * 2.8);height:calc(var(--pile-card-width) * 2.4)}.opponent-seat.west{top:50%;left:8px;right:auto;transform:translateY(-50%);flex-direction:column;align-items:center;gap:6px}.opponent-seat.east{top:50%;right:8px;left:auto;transform:translateY(-50%);flex-direction:column;align-items:center;gap:6px}.west .seat-info,.east .seat-info{order:0}.west .opponent-hand,.east .opponent-hand{order:1;--card-width: clamp(52px, 13vw, 68px);--card-height: calc(var(--card-width) * 1.55);display:flex;flex-direction:column;align-items:center;width:var(--card-height);height:auto;margin-left:0;margin-right:0}.west .opponent-hand .card,.east .opponent-hand .card{position:relative;left:auto;top:auto;flex:0 0 auto;transition:transform .14s ease,box-shadow .14s ease}.west .opponent-hand .card{transform:rotate(-90deg)}.east .opponent-hand .card{transform:rotate(90deg)}.west .opponent-hand .card:nth-last-child(n),.east .opponent-hand .card:nth-last-child(n){left:auto;z-index:auto}.west .opponent-hand .card+.card,.east .opponent-hand .card+.card{margin-left:0;margin-top:calc(var(--card-height) * -.68)}.discard-pile.west,.discard-pile.east{--side-card: clamp(52px, 13vw, 68px);--side-pile: clamp(40px, 10vw, 54px);--pile-card-width: var(--side-pile);top:calc(50% - var(--side-card) * 1.8 - var(--side-pile) * 2.4 + 8px);bottom:auto;transform:none;width:calc(var(--pile-card-width) * 2.8);height:calc(var(--pile-card-width) * 2.4)}.discard-pile.west{left:8px;right:auto}.discard-pile.east{right:8px;left:auto}.discard-pile.west .discard-card,.discard-pile.east .discard-card{width:calc(var(--pile-card-width) * 1.55);height:var(--pile-card-width)}.discard-pile.west .discard-card .card{transform:translate(-50%,-50%) rotate(calc(-90deg + var(--pile-rot, 0deg)))}.discard-pile.east .discard-card .card{transform:translate(-50%,-50%) rotate(calc(270deg + var(--pile-rot, 0deg)))}.discard-pile.west .discard-card.fresh .card,.discard-pile.east .discard-card.fresh .card{animation:pair-to-side-pile .62s cubic-bezier(.18,.85,.28,1) both}.west .seat-label,.east .seat-label{font-size:clamp(.95rem,3.8vw,1.15rem);padding:4px 10px}.discard-pile.south{--pile-card-width: clamp(40px, 10vw, 54px);top:calc(47% + clamp(72px,18vw,100px));bottom:auto;left:50%;right:auto;transform:translate(-50%);width:calc(var(--pile-card-width) * 2.8);height:calc(var(--pile-card-width) * 2.4)}.discard-pile .discard-card .card{--card-width: var(--pile-card-width);--card-height: calc(var(--pile-card-width) * 1.55)}.discard-pile .discard-card .card-face{border-width:2px;place-items:center}.discard-pile .discard-card .card-center-icon{display:grid;place-items:center;font-size:calc(var(--pile-card-width) * .46);line-height:1;text-align:center}.discard-pile .discard-card .card-face.old-maid-face .card-center-icon{font-size:calc(var(--pile-card-width) * .72)}.discard-pile .discard-card .card-corner{font-size:calc(var(--pile-card-width) * .22)}.discard-pile .discard-card .card-corner.top{top:5%;left:7%}.discard-pile .discard-card .card-corner.bottom{right:7%;bottom:5%}.human-seat{--card-width: min(72px, 16vw);bottom:0;left:0;right:0;width:100%;padding-inline:max(12px,env(safe-area-inset-left),env(safe-area-inset-right));padding-bottom:max(10px,env(safe-area-inset-bottom));gap:4px;justify-items:center;z-index:var(--z-seat)}.human-seat.has-table-talk,.opponent-seat.has-table-talk{z-index:var(--z-bubble)}.hand-row{--card-width: inherit;--card-height: calc(var(--card-width) * 1.55);--mobile-row-overlap: calc(var(--card-height) * .24);display:flex;width:100%;max-width:100%;flex-wrap:wrap;justify-content:center;column-gap:6px;row-gap:6px;margin-inline:auto;overflow:hidden;scrollbar-width:none;-ms-overflow-style:none;max-height:calc(var(--card-height) * 2 - var(--mobile-row-overlap) + 16px);padding-top:16px;box-sizing:border-box}.hand-row::-webkit-scrollbar{display:none}.hand-card{flex:0 0 var(--card-width);min-width:0}.hand-card+.hand-card{margin-left:0}.hand-card.rank-group-start{margin-left:0}.hand-card.mobile-second-row{margin-top:calc(var(--mobile-row-overlap) * -1)}.hand-card.ask-selected{transform:translateY(-8px)}.hand-card.mobile-second-row.ask-selected{transform:translateY(-6px)}.hand-card.ask-dimmed .card-face{filter:brightness(.82) saturate(.8)}.hand-card.ask-dimmed .card.card-face:after{background:#24374738}.human-info>.human-info-anchor>p.active-turn{padding:4px 10px;font-size:clamp(1rem,4vw,1.25rem)}.human-info{justify-content:center;z-index:var(--z-bubble)}.human-info-anchor{display:flex;flex-direction:column;align-items:center;position:relative;z-index:var(--z-bubble)}.turn-thought-bubble{position:relative;left:auto;bottom:auto;order:-1;margin-bottom:10px;max-width:min(360px,92vw);min-width:min(260px,84vw);text-align:center;white-space:normal;z-index:var(--z-bubble)}.turn-thought-bubble:before{top:auto;bottom:-13px;left:50%;transform:translate(-50%);border-top:13px solid var(--card-edge);border-right:10px solid transparent;border-bottom:none;border-left:10px solid transparent}.turn-thought-bubble:after{top:auto;bottom:-9px;left:50%;transform:translate(-50%);border-top:11px solid #ffffff;border-right:8px solid transparent;border-bottom:none;border-left:8px solid transparent}.turn-thought-bubble.table-talk{right:auto}.turn-thought-bubble.table-talk:before,.turn-thought-bubble.table-talk:after{right:auto;border-left:10px solid transparent}.turn-thought-bubble.table-talk:after{border-left-width:8px}}@media(max-width:900px){.trick-zone{width:min(500px,72vw)}.trick-table{--card-width: clamp(82px, 9vw, 114px);--card-height: calc(var(--card-width) * 1.55)}.pass-slots{grid-template-columns:repeat(3,minmax(90px,1fr))}}@media(max-width:620px){.trick-zone{top:44%;width:88vw}.pass-panel p{font-size:clamp(.95rem,4vw,1.2rem)}.pass-dest-name{font-size:clamp(.9rem,4vw,1.1rem)}.pass-dir-arrow{font-size:clamp(1.2rem,5vw,1.8rem)}.trick-table{--card-width: clamp(72px, 17vw, 96px);--card-height: calc(var(--card-width) * 1.55)}.pass-slots{grid-template-columns:repeat(3,minmax(56px,1fr));gap:8px}.pass-slots div{font-size:clamp(2.2rem,8vw,3.5rem);border-radius:12px;border-width:2px}.pass-arrow{height:48px;font-size:1.1rem}.hand-card.playable{transform:translateY(-6px)}.hand-card.selected-pass{transform:translateY(-10px)}}.game-controls{position:fixed;top:16px;right:16px;z-index:12}.game-actions{display:flex;gap:10px}.control-button{display:inline-flex;min-height:46px;align-items:center;justify-content:center;gap:8px;border-radius:999px;padding:0 16px;color:var(--accent-contrast);background:#ffffffe6;box-shadow:var(--bubble-shadow);cursor:pointer;font-family:var(--font-display);font-weight:700;transition:transform .1s ease}.control-button:hover{transform:translateY(-2px)}.control-button:active{transform:translateY(2px)}.settings-button{background:linear-gradient(180deg,#ffffff,var(--felt));color:var(--accent-contrast)}@media(max-width:720px){.game-controls{top:10px;right:10px}.settings-button{width:46px;padding:0}.control-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}.pause-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:var(--overlay);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:30}.pause-modal{width:min(420px,100%);border:4px solid rgba(255,255,255,.95);border-radius:28px;padding:clamp(28px,6vw,44px);text-align:center;color:var(--cream);background:linear-gradient(180deg,var(--modal-start),var(--modal-end));box-shadow:var(--bubble-shadow)}.pause-modal p{color:var(--muted);font-size:.85rem;font-weight:800}.pause-modal h2{margin-top:6px;font-size:clamp(2.4rem,10vw,3.6rem);line-height:.95}.pause-modal button{display:inline-flex;min-height:54px;align-items:center;justify-content:center;gap:9px;margin-top:24px;border-radius:999px;padding:0 28px;cursor:pointer;color:var(--accent-contrast);background:linear-gradient(180deg,var(--btn-top),var(--btn-bottom));box-shadow:var(--bubble-shadow);font-family:var(--font-display);font-size:1.1rem;font-weight:700;transition:transform .1s ease}.pause-modal button:hover{transform:translateY(-2px)}.scoreboard-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:18px;background:var(--overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.scoreboard-modal{display:grid;width:min(720px,96vw);min-height:min(520px,82dvh);grid-template-rows:auto minmax(0,1fr) auto auto;overflow:hidden;border:4px solid rgba(255,255,255,.95);border-radius:28px;color:var(--cream);background:linear-gradient(180deg,var(--modal-start),var(--modal-end));box-shadow:var(--bubble-shadow)}.scoreboard-top{display:grid;min-height:72px;place-items:center;border-bottom:2px solid var(--inset-line);background:#ffffff73}.scoreboard-top h2{color:var(--cream);font-size:clamp(1.8rem,6vw,2.8rem);line-height:1}.scoreboard-table-wrap{overflow:auto;padding:22px clamp(14px,3vw,32px)}.scoreboard-table{width:100%;border-collapse:separate;border-spacing:0 8px;table-layout:fixed;font-size:clamp(.95rem,2vw,1.15rem)}.scoreboard-table th,.scoreboard-table td{padding:12px 10px;text-align:center;background:#ffffff9e;border:none}.scoreboard-table thead th:first-child{border-radius:14px 0 0 14px}.scoreboard-table thead th:last-child{border-radius:0 14px 14px 0}.scoreboard-table tbody th:first-child{border-radius:14px 0 0 14px;text-align:left;padding-left:16px}.scoreboard-table tbody td:last-child{border-radius:0 14px 14px 0}.scoreboard-table th{color:var(--cream);font-weight:800}.scoreboard-table .you-column{color:var(--accent)}.scoreboard-table td{font-weight:800}.scoreboard-table td span,.scoreboard-table td strong{display:inline-flex;width:48%;justify-content:center}.scoreboard-table td span{border-right:2px dotted var(--inset-line);color:var(--muted)}.scoreboard-empty{padding:28px 0;color:var(--muted);text-align:center;font-size:1rem;font-weight:700}.scoreboard-note{padding:0 24px 12px;color:var(--muted);text-align:center;font-weight:800}.scoreboard-actions{display:flex;justify-content:center;gap:12px;padding:18px 20px 22px}.scoreboard-actions button{min-width:160px;min-height:52px;border-radius:999px;color:var(--cream);background:#ffffffb8;box-shadow:inset 0 0 0 2px var(--inset-line);cursor:pointer;font-family:var(--font-display);font-size:clamp(1rem,2.4vw,1.2rem);font-weight:700;transition:transform .1s ease}.scoreboard-actions button:hover{transform:translateY(-2px)}.scoreboard-actions .scoreboard-primary{color:var(--accent-contrast);background:linear-gradient(180deg,var(--btn-top),var(--btn-bottom));box-shadow:var(--bubble-shadow)}@media(max-width:620px){.scoreboard-backdrop{padding:10px;align-items:flex-end}.scoreboard-modal{width:100%;min-height:72dvh;max-height:92dvh;border-radius:24px 24px 16px 16px}.scoreboard-top{min-height:56px}.scoreboard-table-wrap{padding:14px 8px}.scoreboard-table{font-size:clamp(.82rem,2.8vw,1rem)}.scoreboard-actions{flex-direction:column-reverse;gap:8px;padding:12px}.scoreboard-actions button{width:100%;min-height:50px}}.settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:var(--overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100}.settings-modal{width:min(400px,100%);border:4px solid rgba(255,255,255,.95);border-radius:24px;padding:20px 22px 24px;color:var(--cream);background:linear-gradient(180deg,var(--modal-start),var(--modal-end));box-shadow:var(--bubble-shadow)}.settings-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.settings-heading p{display:none}.settings-heading h2{font-size:1.35rem;font-weight:700;line-height:1}.settings-close{display:inline-flex;width:38px;min-height:38px;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;color:var(--cream);background:#ffffffb8;box-shadow:inset 0 0 0 2px var(--inset-line);flex-shrink:0;transition:transform .1s ease}.settings-close:hover{transform:scale(1.05)}.settings-menu{display:grid;gap:8px}.settings-menu button,.settings-theme-panel button,.settings-back{display:inline-flex;width:100%;min-height:46px;align-items:center;justify-content:flex-start;gap:10px;padding:0 14px;border-radius:14px;cursor:pointer;color:var(--cream);background:#ffffffb8;box-shadow:inset 0 0 0 2px var(--inset-line);font-size:.95rem;font-weight:800;transition:transform .1s ease,background .12s ease}.settings-menu button:hover,.settings-theme-panel button:hover,.settings-back:hover{background:#fffffff2;transform:translateY(-1px)}.rules-panel{margin-top:4px}.rules-panel ul{display:grid;gap:10px;padding-left:0;list-style:none;color:var(--muted);font-size:.92rem;line-height:1.45;font-weight:700;margin-bottom:16px}.rules-panel li{padding:10px 12px;border-radius:12px;background:#ffffff8c}.settings-back{width:auto;padding:0 14px}.settings-theme-panel{display:grid;gap:8px}.settings-theme-panel button.active{outline:3px solid var(--accent);outline-offset:1px;background:color-mix(in srgb,var(--accent) 16%,white)}
