:root{color-scheme:dark;--felt: #0b5d3b;--felt-dark: #063d27;--accent: #d4af37;--panel: #14161a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:#101114;color:#f2f2f2}.home{max-width:420px;margin:10vh auto;padding:2rem;background:var(--panel);border-radius:12px}.home h1{color:var(--accent)}.home input{width:100%;padding:.6rem;margin:.4rem 0 1rem;border-radius:6px;border:1px solid #333;background:#1c1e22;color:#fff}.home button,.action-bar button{padding:.6rem 1rem;border-radius:6px;border:none;background:var(--accent);color:#101114;font-weight:600;cursor:pointer;margin-right:.5rem}.home button:disabled,.action-bar button:disabled{opacity:.4;cursor:not-allowed}.error-banner{background:#4a1a1a;color:#ffb3b3;padding:.6rem 1rem;border-radius:6px;margin-bottom:1rem}.table-layout{display:grid;grid-template-columns:1fr 320px;min-height:100vh}.felt{background-color:#765033;background-image:url(/assets/wood-grain-DH7Bji3E.png);background-repeat:repeat;background-size:700px auto;padding:2rem;position:relative}.seats{display:grid;grid-template-areas:".    top    ." "left center right" ".    bottom .";grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);gap:1rem;min-height:60vh;align-items:center}.seat-0{grid-area:bottom}.seat-1{grid-area:left}.seat-2{grid-area:top}.seat-3{grid-area:right}.seat{background:#00000059;border-radius:10px;padding:.75rem;text-align:center}.seat-1,.seat-3{width:100%;min-width:0;height:13.25rem}.seat.active{outline:2px solid var(--accent)}.seat-role-badge{position:absolute;z-index:35;top:.35rem;padding:.18rem .38rem;border:1px solid rgba(212,175,55,.82);border-radius:999px;background:#000000b8;color:#fff4c2;font-size:.62rem;font-weight:900;line-height:1;letter-spacing:.025em;white-space:nowrap;pointer-events:none}.seat-dealer-badge{left:.35rem}.seat-utg-badge{right:.35rem}.seat-turn-status{min-height:1.1rem;margin-top:.25rem;color:#ffffffd1;font-size:.78rem;font-weight:800;line-height:1.1rem;text-align:center;white-space:nowrap}.seat-turn-status.active{color:#fff4c2}@media(max-width:850px),(pointer:coarse){.seats{min-height:0;gap:.5rem}.felt{padding:1rem .75rem}.seat{padding:.45rem}.seat-1,.seat-3{width:100%;min-width:0;height:10.25rem}.seat-role-badge{top:.25rem;padding:.14rem .28rem;font-size:.54rem}.seat-dealer-badge{left:.25rem}.seat-utg-badge{right:.25rem}.seat-turn-status{min-height:.95rem;margin-top:.18rem;font-size:.68rem;line-height:.95rem}}.trick-center{grid-area:center;display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;min-width:0}.playing-card{position:relative;width:54px;height:76px;background:#fff;color:#111;border-radius:6px;display:block;font-weight:700;font-size:1.25rem;cursor:pointer;border:2px solid transparent;-webkit-user-select:none;user-select:none}.playing-card.red{color:#c0392b}.playing-card.muted{opacity:.35;cursor:default}.playing-card:hover:not(.muted){border-color:var(--accent);transform:translateY(-4px)}.card-rank{position:absolute;top:6px;left:0;width:100%;height:27px;font-family:Segoe UI,Arial,sans-serif;font-size:1.55rem;font-weight:800;font-variant-numeric:lining-nums tabular-nums;line-height:27px;text-align:center;white-space:nowrap}.card-rank.two-digit{font-size:1.55rem;letter-spacing:-2px;transform:scaleX(.82);transform-origin:center}.card-suit{position:absolute;top:37px;left:0;width:100%;height:31px;font-size:1.9rem;line-height:31px;text-align:center}@media(max-width:850px),(pointer:coarse){.playing-card:not(.playing-card-compact) .card-suit{top:34px;height:36px;font-size:2.2rem;line-height:36px}.playing-card-compact .card-suit{top:auto!important;bottom:3px!important;height:auto!important;font-size:30px!important;line-height:1!important}}.hand-row{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center;margin-top:1rem}.sidebar{background:var(--panel);padding:1.5rem;overflow-y:auto}.sidebar h2{color:var(--accent);font-size:1rem;text-transform:uppercase;letter-spacing:.05em}.score-row{display:flex;justify-content:space-between;padding:.3rem 0;border-bottom:1px solid #2a2c30}.action-bar{margin-top:1rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.invitation-code{font-size:1.5rem;letter-spacing:.2em;font-weight:700;color:var(--accent)}.bid-log{max-height:160px;overflow-y:auto;font-size:.85rem}.bid-log div{padding:.2rem 0}.scorecard{margin-top:.5rem}.scorecard-team-names{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:.9rem}.scorecard-team-names>div{min-width:0}.scorecard-team-names strong{display:block;color:var(--accent);font-size:1.05rem}.scorecard-team-names span{display:block;margin-top:.15rem;color:#b8bbc2;font-size:.78rem;line-height:1.25}.scorecard-grid{display:grid;grid-template-columns:1fr 1fr;text-align:center}.scorecard-header{padding:.4rem 0;border-top:1px solid #34373d;border-bottom:1px solid #34373d;color:#b8bbc2;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.scorecard-row{padding:.55rem 0;border-bottom:1px solid #2a2c30;font-family:Georgia,Times New Roman,serif;font-size:1.45rem;font-weight:700;font-variant-numeric:tabular-nums}.scorecard-row span:first-child,.scorecard-header span:first-child{border-right:1px solid #34373d}.scorecard-empty{padding:.8rem 0;color:#92959c;font-size:.85rem;text-align:center}.game-complete{color:var(--accent);font-weight:700}.seats{position:relative}.card-back{position:relative;overflow:hidden;cursor:default;border:3px solid #f4f0df;background:linear-gradient(45deg,rgba(255,255,255,.14) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.14) 75%),linear-gradient(45deg,rgba(255,255,255,.14) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.14) 75%),#173f79;background-position:0 0,6px 6px;background-size:12px 12px;box-shadow:0 2px 5px #00000059}.card-back:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border:1px solid rgba(255,255,255,.65);border-radius:3px}.card-back:hover{border-color:#f4f0df!important;transform:none}.deal-deck{grid-area:center;display:flex;align-items:center;justify-content:center;pointer-events:none}.deal-deck .playing-card{transform:rotate(-3deg);box-shadow:3px 3px #f4f0df,6px 6px #173f79,8px 9px 7px #0006}.face-down-packet{width:66px;height:86px;pointer-events:none}.packet-card{position:absolute;inset:0 auto auto 0}.dealing-packet{position:absolute;z-index:50;left:50%;top:50%;margin-left:-27px;margin-top:-38px}.dealing-to-seat-0{animation:deal-to-bottom 425ms cubic-bezier(.2,.75,.25,1) forwards}.dealing-to-seat-1{animation:deal-to-left 425ms cubic-bezier(.2,.75,.25,1) forwards}.dealing-to-seat-2{animation:deal-to-top 425ms cubic-bezier(.2,.75,.25,1) forwards}.dealing-to-seat-3{animation:deal-to-right 425ms cubic-bezier(.2,.75,.25,1) forwards}@keyframes deal-to-bottom{0%{transform:translate(0) rotate(0);opacity:.95}to{transform:translateY(22vh) rotate(7deg);opacity:1}}@keyframes deal-to-left{0%{transform:translate(0) rotate(0);opacity:.95}to{transform:translate(-29vw) rotate(-10deg);opacity:1}}@keyframes deal-to-top{0%{transform:translate(0) rotate(0);opacity:.95}to{transform:translateY(-22vh) rotate(-5deg);opacity:1}}@keyframes deal-to-right{0%{transform:translate(0) rotate(0);opacity:.95}to{transform:translate(29vw) rotate(10deg);opacity:1}}.dealt-hand-stack{position:relative;width:82px;height:48px;margin:.65rem auto 0}.dealt-card-back{position:absolute;left:0;top:0;width:34px;height:48px;border-width:2px}.deal-status{margin-top:1rem;text-align:center;font-weight:700;color:#f4e5a6}.pickup-hand-panel{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-top:1.25rem}.pickup-hand-panel button{padding:.75rem 1.25rem;border:none;border-radius:8px;background:var(--accent);color:#101114;font-size:1rem;font-weight:800;cursor:pointer}.pickup-hand-preview{position:relative;width:150px;height:84px}.pickup-card-back{position:absolute;left:0;bottom:0;transform-origin:bottom center}@media(prefers-reduced-motion:reduce){.dealing-packet{animation-duration:1ms}}@media(max-width:850px){@keyframes deal-to-left{0%{transform:translate(0)}to{transform:translate(-32vw) rotate(-8deg)}}@keyframes deal-to-right{0%{transform:translate(0)}to{transform:translate(32vw) rotate(8deg)}}}.hand-card-slot{touch-action:manipulation}.hand-arrange-launch{display:flex;justify-content:center;margin-top:1rem}.hand-arrange-launch.compact{justify-content:flex-end;margin:.75rem auto 0;max-width:760px}.arrange-hand-button,.arrange-hand-done,.move-trump-left-button{border:none;border-radius:8px;background:var(--accent);color:#101114;font-weight:800;cursor:pointer}.arrange-hand-button.prominent{min-width:220px;padding:.85rem 1.35rem;font-size:1.05rem;box-shadow:0 5px 18px #0000004d}.arrange-hand-button.compact{padding:.45rem .75rem;font-size:.85rem}.arrange-hand-panel{max-width:100%;margin-top:1rem;padding:1rem;border:2px solid rgba(212,175,55,.88);border-radius:12px;background:#343434;color:#fff;box-shadow:0 8px 22px #00000047}.arrange-hand-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.9rem}.arrange-hand-header strong,.arrange-hand-header span{display:block}.arrange-hand-header strong{color:#fff;font-size:1.05rem}.arrange-hand-header span{margin-top:.2rem;color:#ddd;font-size:.85rem}.arrange-hand-actions{display:flex;align-items:center;justify-content:flex-end;gap:.6rem;flex-wrap:wrap}.move-trump-left-button{padding:.65rem 1rem;background:#ffffff1f;color:#f4f0df;border:1px solid rgba(212,175,55,.85);font-size:.9rem}.move-trump-left-button:hover{background:#d4af3733}.arrange-hand-done{flex:0 0 auto;padding:.65rem 1.1rem;font-size:.95rem}.hand-row.arranging{margin-top:0;padding:.65rem .35rem .8rem;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overscroll-behavior-x:contain;touch-action:pan-x}.hand-row.arranging .hand-card-slot{flex:0 0 auto;cursor:grab;touch-action:none}.hand-row.arranging .hand-card-slot.dragging{cursor:grabbing;opacity:.88}.hand-row.arranging .playing-card{cursor:grab}.hand-row.arranging .playing-card:hover{border-color:transparent;transform:none}@media(max-width:850px){.arrange-hand-panel{padding:.8rem}.arrange-hand-header{align-items:flex-start;flex-direction:column}.arrange-hand-actions{width:100%;justify-content:space-between}.hand-arrange-launch.compact{padding-right:.25rem}}.hand-row.play-hand .hand-card-slot{position:relative;transition:transform .14s ease,filter .14s ease}.hand-row.play-hand.two-tap-play .hand-card-slot.selected-for-play{transform:translateY(-10px);z-index:2}.hand-row.play-hand.two-tap-play .hand-card-slot.selected-for-play .playing-card{border-color:var(--accent);box-shadow:0 0 0 2px #d4af3747,0 8px 16px #00000057}@media(max-width:850px),(pointer:coarse){.hand-row.play-hand.two-tap-play{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overflow-y:visible;padding:.75rem .65rem .9rem;scroll-padding-inline:.65rem;overscroll-behavior-x:contain;touch-action:pan-x;-webkit-overflow-scrolling:touch}.hand-row.play-hand.two-tap-play .hand-card-slot{flex:0 0 auto;padding-top:10px;touch-action:pan-x}.hand-row.play-hand.two-tap-play .playing-card:hover:not(.muted){transform:none}}@media(max-width:850px),(pointer:coarse){.hand-row.play-hand.mobile-carousel{position:relative;display:block;width:100%;max-width:100vw;height:118px;margin-top:-1.25rem;padding:0 12px 12px;overflow:visible;touch-action:pan-y;-webkit-user-select:none;user-select:none}.hand-row.play-hand.mobile-carousel .hand-card-slot{--fan-step: clamp(31px, 9.4vw, 43px);position:absolute;left:50%;bottom:10px;margin-left:-27px;padding-top:0;transition:bottom .12s cubic-bezier(.22,1,.36,1),transform 115ms cubic-bezier(.22,1,.36,1),filter .11s ease;touch-action:manipulation}.hand-row.play-hand.mobile-carousel.two-tap-play .hand-card-slot.selected-for-play{z-index:100}.hand-row.play-hand.mobile-carousel .hand-card-slot .playing-card{position:relative;top:0;transition:top .12s cubic-bezier(.22,1,.36,1),box-shadow .11s ease,border-color .11s ease}.hand-row.play-hand.mobile-carousel.two-tap-play .hand-card-slot.selected-for-play .playing-card{top:-14px}}@media(hover:hover)and (pointer:fine){.playing-card:hover:not(.muted){border-color:var(--accent);transform:translateY(-4px)}}@media(max-width:850px),(pointer:coarse){.hand-row.play-hand.mobile-carousel.frozen-hand{touch-action:pan-y}.hand-row.play-hand.mobile-carousel.frozen-hand .hand-card-slot,.hand-row.play-hand.mobile-carousel.frozen-hand .playing-card{pointer-events:none;touch-action:pan-y;cursor:default}}.special-outcome-celebration{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5000;display:grid;place-items:center;padding:clamp(1rem,4vw,3rem);isolation:isolate;animation:special-outcome-enable 1ms linear .78s both}.special-outcome-celebration-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2;background:radial-gradient(circle at center,#0003,#000000e6 72%),#000000b8;backdrop-filter:blur(3px) saturate(.75);-webkit-backdrop-filter:blur(3px) saturate(.75);opacity:0;animation:special-outcome-backdrop-in .52s ease-out .78s forwards}.special-outcome-celebration-card{position:relative;width:min(94vw,980px);padding:clamp(1.5rem,5vw,4.5rem) clamp(1rem,4vw,3.5rem);overflow:hidden;border:clamp(3px,.55vw,7px) solid rgba(255,235,150,.98);border-radius:clamp(18px,3vw,34px);background:linear-gradient(135deg,rgba(212,175,55,.17),transparent 38%),linear-gradient(315deg,rgba(212,175,55,.12),transparent 42%),#080a0cf5;box-shadow:0 0 0 2px #000000d9 inset,0 0 70px #d4af377a,0 28px 80px #000000b8;text-align:center;opacity:0;transform:scale(1.42) rotate(-1.2deg);animation:special-outcome-card-slam .62s cubic-bezier(.16,1.15,.26,1) .96s forwards}.special-outcome-celebration.lost .special-outcome-celebration-card{border-color:#ff7e7efa;box-shadow:0 0 0 2px #000000d9 inset,0 0 74px #b9232394,0 28px 80px #000000c2}.special-outcome-celebration-card:before,.special-outcome-celebration-card:after{content:"";position:absolute;left:-10%;width:120%;height:4px;background:currentColor;opacity:.38}.special-outcome-celebration-card:before{top:18%}.special-outcome-celebration-card:after{bottom:18%}.special-outcome-celebration-kicker{margin-bottom:clamp(.65rem,2vw,1.35rem);color:#f4d56d;font-size:clamp(1.05rem,3.8vw,2.45rem);font-weight:1000;letter-spacing:clamp(.09em,.7vw,.22em);line-height:1;text-transform:uppercase}.special-outcome-celebration-message{color:#fff;font-size:clamp(2.25rem,8.5vw,7.6rem);font-weight:1000;letter-spacing:-.045em;line-height:.88;text-wrap:balance;text-transform:uppercase;text-shadow:0 5px 0 rgba(0,0,0,.68),0 0 28px rgba(255,255,255,.22)}.special-outcome-celebration.won .special-outcome-celebration-message{color:#fff9dd}.special-outcome-celebration.lost .special-outcome-celebration-message{color:#ffd7d7}.special-outcome-celebration-variant{display:inline-block;margin-top:clamp(1.15rem,3vw,2.25rem);padding:.45em .85em;border:2px solid currentColor;border-radius:999px;color:#d4af37;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.15rem,3.4vw,2.45rem);font-style:italic;font-weight:900;letter-spacing:.055em;line-height:1;text-transform:uppercase}.special-outcome-celebration.lost .special-outcome-celebration-variant{color:#ff9292}.special-outcome-celebration-dismiss{display:block;min-width:9rem;margin:clamp(1.5rem,4vw,2.75rem) auto 0;padding:.72rem 1.35rem;border:2px solid rgba(255,255,255,.72);border-radius:999px;background:#ffffff1a;color:#fff;font-size:.95rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.special-outcome-celebration-dismiss:hover,.special-outcome-celebration-dismiss:focus-visible{background:#d4af373d;border-color:#ffeb96;outline:none;transform:translateY(-2px)}@keyframes special-outcome-enable{0%,to{visibility:visible}}@keyframes special-outcome-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes special-outcome-card-slam{0%{opacity:0;transform:scale(1.42) rotate(-1.2deg)}68%{opacity:1;transform:scale(.96) rotate(.35deg)}84%{opacity:1;transform:scale(1.025) rotate(-.12deg)}to{opacity:1;transform:scale(1) rotate(0)}}@media(max-width:600px){.special-outcome-celebration{padding:.75rem}.special-outcome-celebration-card{width:100%;padding-top:2.4rem;padding-bottom:2.1rem}.special-outcome-celebration-message{line-height:.94}}@media(prefers-reduced-motion:reduce){.special-outcome-celebration,.special-outcome-celebration-backdrop,.special-outcome-celebration-card{animation-delay:0ms;animation-duration:1ms}}@media(max-width:850px),(pointer:coarse){.completed-trick-card .card-suit{top:auto!important;bottom:3px!important;height:auto!important;font-size:30px!important;line-height:1!important}.boss-laydown-card .card-suit,.sweep-flight-card .card-suit{font-size:30px!important;line-height:1!important}.previous-hand-captured-cards .playing-card-compact .card-suit{top:auto!important;bottom:3px!important;height:auto!important;font-size:25px!important;line-height:1!important}}.completed-trick-grid{grid-template-rows:59px 59px 59px!important;min-height:181px}@media(max-width:850px),(pointer:coarse){.mobile-table-state-slot{display:flex;align-items:center;justify-content:center;width:100%;height:30px;min-height:30px;max-height:30px;margin:0;padding:0 .5rem;box-sizing:border-box;pointer-events:none}.mobile-hand-state-badge{z-index:92;display:inline-flex;align-items:center;gap:.35rem;max-width:46vw;padding:.28rem .55rem;border:1px solid rgba(255,255,255,.42);border-radius:999px;background:#000000b8;color:#fff;box-shadow:0 3px 10px #00000047;font-size:.68rem;font-weight:850;line-height:1;white-space:nowrap;pointer-events:none}.mobile-hand-state-badge strong{color:#ffe98d;font-size:.82rem;font-variant-numeric:tabular-nums}.mobile-hand-state-badge.pas-datout{border-color:#e19bffdb;background:#53186cd1}.trick-play-stable-frame{grid-area:center;height:225px;min-height:225px;max-height:225px;overflow:visible;align-self:center}.trick-play-stable-frame .completed-trick-grid{grid-template-rows:59px 59px 59px!important;min-height:181px!important}}.sidebar-previous-hand{margin-bottom:.85rem;padding:.65rem .7rem;border:1px solid rgba(212,175,55,.55);border-radius:.7rem;background:#d4af3714}.sidebar-previous-hand-result{font-size:.8rem;font-weight:850;line-height:1.25}.sidebar-previous-hand-toggle{margin-top:.45rem;padding:0;border:0;background:transparent;color:var(--accent);font:inherit;font-size:.78rem;font-weight:850;cursor:pointer}.sidebar-captured-cards{display:flex;flex-wrap:wrap;gap:.3rem;max-height:180px;overflow-y:auto;margin-top:.55rem;padding:.5rem;border-radius:.55rem;background:#00000047}@media(max-width:850px),(pointer:coarse){.mobile-center-stable-frame{grid-area:center;display:flex;align-items:center;justify-content:center;width:100%;height:225px;min-height:225px;max-height:225px;overflow:visible;align-self:center;justify-self:stretch}.mobile-center-stable-frame>.trick-center,.mobile-center-stable-frame>.trick-play-stable-frame{margin-top:0;margin-bottom:0}}
