:root{color-scheme:dark;--gold:#d4ae63;--gold-light:#f4d994;--ink:#100a17;--purple:#511b63;--felt:#3f164d;--card-w:clamp(69px,8vw,112px);--card-h:calc(var(--card-w)*1.48);--step:clamp(29px,4.6vw,63px);font-family:Arial,Helvetica,sans-serif;background:#100a17;color:#f3e9dc}
*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:linear-gradient(0deg,#120a19d9,#14091a22 70%),url('/assets/lounge.png') center top/cover fixed}body[data-theme=teras]{--felt:#2b234c;--purple:#45416c;background-image:linear-gradient(0deg,#0e1223dc,#1b163655 70%),url('/assets/lounge.png')}body[data-theme=obsidyen]{--felt:#19171f;--purple:#322b41;background-image:linear-gradient(0deg,#07070ee6,#18101c88 70%),url('/assets/lounge.png')}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.3}button{border:0}button:focus-visible,input:focus-visible{outline:2px solid #f3d18b;outline-offset:4px}button, a{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}h1,h2,p{margin:0}h1,h2,.brand,.table-heading strong,.table-name{font-family:Georgia,'Times New Roman',serif}button:hover:not(:disabled){filter:brightness(1.13)}button:active:not(:disabled){filter:brightness(.95)}.red{color:#a52138!important}
.topbar{height:104px;padding:18px 3.2%;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:15;background:linear-gradient(#0d071750,transparent)}.brand-button{background:none;padding:0;text-align:left}.brand{display:flex;align-items:center;gap:10px;color:var(--gold-light);font-size:clamp(28px,3.1vw,44px);letter-spacing:-1.5px;text-shadow:0 2px 18px #000}.brand small{font-size:12px;display:block;letter-spacing:3px;text-align:center;color:var(--gold);font-family:Georgia,serif;margin-top:3px}.crown{font-size:37px;line-height:1;transform:translateY(-6px)}.topbar nav{display:flex;gap:10px}.icon-button,.round-control{border:1px solid #a48245;background:linear-gradient(145deg,#1f1622,#0b0811);color:var(--gold-light);border-radius:50%;width:42px;height:42px;font-size:23px;box-shadow:inset 0 0 0 3px #100c1666,0 3px 10px #0004}.header-tag{color:#c6b4c8;font-size:12px;letter-spacing:2px;padding-right:40px}.table-heading{position:absolute;left:50%;transform:translateX(-50%);text-align:center;line-height:1.6}.table-heading>span{font-size:9px;letter-spacing:3px;color:#baa2bf}.table-heading strong{display:block;color:var(--gold-light);font-size:23px}.eyebrow{font-size:10px;color:var(--gold);letter-spacing:3px;font-weight:700}
.lobby{max-width:1250px;min-height:calc(100dvh - 166px);margin:auto;display:grid;grid-template-columns:1fr 480px;align-items:center;gap:80px;padding:25px 60px 65px}.lobby-copy{padding-bottom:10px}.lobby-copy h1{font-size:clamp(48px,5.3vw,79px);font-weight:400;line-height:1.09;letter-spacing:-2px;margin:25px 0}.lobby-copy em{color:var(--gold-light);font-weight:400}.lobby-copy p{font-size:16px;line-height:1.9;color:#c9b8ce}.lobby-decor{display:flex;align-items:center;gap:15px;color:var(--gold);margin-top:38px;font-size:17px}.lobby-decor span{font-size:10px;letter-spacing:3px}.lobby-panel{position:relative;padding-top:105px}.join-panel{position:relative;background:linear-gradient(145deg,#221029ee,#100b19f5);border:1px solid #9e78434f;border-radius:22px;padding:30px;box-shadow:0 28px 100px #0009,inset 0 0 0 5px #aa834308}.join-title{padding-bottom:22px}.join-title>span{font-size:8px;letter-spacing:3px;color:var(--gold)}.join-title h2{font-size:31px;font-weight:400;margin-top:7px;color:#f4e7d7}.profile-line{display:flex;align-items:center;gap:15px;margin-bottom:25px}.profile-line .avatar{width:57px;height:57px;border:1px solid var(--gold);border-radius:50%;flex-shrink:0}.profile-line label{font-size:10px;color:#bdaac4;flex:1;letter-spacing:.4px}.profile-line input{display:block;width:100%;color:#eee0ce;background:transparent;border:0;border-bottom:1px solid #94704480;padding:10px 0 8px;margin-top:3px;outline:none;font-size:17px}.profile-line input::placeholder{color:#93849a}.theme-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:24px}.theme-choice{background:#160d1d;border:1px solid #8e6c3638;padding:15px 6px 12px;border-radius:9px;text-align:center}.theme-choice>span{display:block;color:var(--gold);font-size:22px;margin-bottom:10px}.theme-choice b{font-size:10px;display:block;font-weight:500}.theme-choice small{font-size:8px;display:block;color:#91809c;margin-top:6px}.theme-choice.chosen{border-color:var(--gold);background:linear-gradient(#55255988,#35143e);box-shadow:0 0 14px #ab6db212,inset 0 0 0 2px #dbb5790b}.primary{border:1px solid #e1ba6b;border-radius:8px;background:linear-gradient(130deg,#dbb673,#ae7b37);color:#22102c;padding:15px 23px;font-weight:700;font-size:14px;box-shadow:0 5px 24px #ba893b2d}.primary span{font-size:21px;float:right;margin-top:-3px}.secondary{border:1px solid #a97e4b66;border-radius:8px;background:#1c1028b8;color:var(--gold-light);padding:12px 20px;font-size:12px}.full{width:100%}.full+.full{margin-top:11px}.join-note{font-size:9px;display:flex;align-items:center;justify-content:center;gap:12px;margin-top:22px;color:#a890af}.join-note i{font-style:normal;color:#997346}.preview-cards{position:absolute;top:0;height:165px;width:300px;left:50%;transform:translateX(-50%);pointer-events:none}.preview-card{position:absolute!important;left:calc(50% - var(--card-w)/2 + (var(--i) - 1)*64px);top:9px;transform:rotate(var(--angle));box-shadow:0 10px 25px #0008!important}.lobby-footer{padding:0 4% 20px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#9c829e}.lobby-footer button{background:none;color:var(--gold);font-size:10px}
.avatar{display:inline-block;background:url('/assets/court.png');background-size:400% 200%;background-position:calc(var(--portrait)*100%/3) 16%;width:70px;height:70px;vertical-align:middle;box-shadow:inset 0 0 15px #0002}
.card{width:var(--card-w);height:var(--card-h);border-radius:7px;background:radial-gradient(ellipse at 30% 20%,#fffdf0,#f3e6cc 76%,#e6d1ae);position:relative;color:#15111c;border:1px solid #ac874e;box-shadow:0 3px 7px #0005,inset 0 0 0 2px #fffbdd,inset 0 0 0 4px #dfc294;flex-shrink:0;padding:0;user-select:none;display:inline-block}.card::after{content:'';pointer-events:none;position:absolute;inset:6px;border:1px solid #b9904538;border-radius:3px}.corner{position:absolute;left:8%;top:5%;z-index:2;font-family:Georgia,serif;display:flex;flex-direction:column;align-items:center;line-height:.93}.corner b{font-size:calc(var(--card-w)*.24);font-weight:700;letter-spacing:-1px}.corner>span{font-size:calc(var(--card-w)*.23);margin-top:3px}.opposite{left:auto;top:auto;right:8%;bottom:5%;transform:rotate(180deg)}.card-inner{position:absolute;inset:14% 18%;display:block}.pips{position:absolute;inset:0}.pips>span{position:absolute;font-size:calc(var(--card-w)*.29);line-height:1}.ace-art{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:calc(var(--card-w)*.8);color:inherit;text-shadow:1px 1px #d3b77c,-1px -1px #94713d}.ace-caption{position:absolute;bottom:1%;width:100%;text-align:center;font-size:calc(var(--card-w)*.055);color:#8f6c33;letter-spacing:.9px}.court-art{position:absolute;inset:-5% -3%;border:1px solid #c6a465;background-image:url('/assets/court.png');background-size:400% 100%;background-position:calc(var(--portrait)*100%/3) center;box-shadow:inset 0 0 0 2px #cfb07c}.court-suit{position:absolute;right:0;bottom:0;background:#f6e9cf;border:1px solid #c2a776;border-radius:50%;height:25%;width:43%;font-size:calc(var(--card-w)*.26);display:flex;align-items:center;justify-content:center;color:inherit}.card-back{display:block;width:100%;height:100%;border-radius:4px;border:2px solid #c4a568;background:repeating-linear-gradient(45deg,#b48b581b 0px,#b48b581b 1px,transparent 1px,transparent 7px),repeating-linear-gradient(-45deg,#b48b581b 0px,#b48b581b 1px,transparent 1px,transparent 7px),radial-gradient(#64265e,#2b123e);box-shadow:inset 0 0 0 2px #301333,inset 0 0 0 3px #b4904b,0 2px 4px #0006;padding:8px}.card-back>span{width:100%;height:100%;display:flex;align-items:center;justify-content:center;border:1px solid #c9a15999;border-radius:40%;color:var(--gold);font-size:28px}
.table-stage{position:relative;width:83%;max-width:1280px;height:clamp(330px,59dvh,650px);max-height:calc(100dvh - 260px);margin:85px auto 95px;perspective:1200px}.table-rim{position:absolute;inset:0;padding:17px;border-radius:80px/58px;border:2px solid #a27b43;box-shadow:0 0 0 3px #0d0912,0 0 0 5px #a4834880,0 18px 30px #000c,inset 0 0 0 3px #caa66670,inset 0 0 24px #000;background:repeating-linear-gradient(127deg,transparent 0%,transparent 11%,#eee4f912 11.15%,transparent 11.4%,transparent 22%),linear-gradient(100deg,#09090f,#29222c 18%,#08090e 25%,#1d1924 65%,#09070e)}.table-rim::after{content:'';position:absolute;inset:9px;border:1px solid #d3ad6466;border-radius:71px/50px;pointer-events:none}.table-felt{height:100%;position:relative;border-radius:63px/44px;box-shadow:inset 0 0 0 2px #b6925599,inset 0 0 75px #000b,inset 0 0 0 5px #220d2b;background:radial-gradient(ellipse at 45% 30%,#ffffff08,transparent 55%),repeating-radial-gradient(circle at 25% 25%,#0000000c 0px,transparent .8px,transparent 2px),var(--felt);overflow:visible}.felt-pattern{position:absolute;inset:11px;border:1px solid #9f7f4b2b;border-radius:53px/37px;pointer-events:none}.felt-pattern::before,.felt-pattern::after{content:'❧';font-family:Georgia,serif;position:absolute;font-size:65px;color:#d7ae6355;top:10%;left:1.5%;transform:rotate(-45deg)}.felt-pattern::after{left:auto;right:1.5%;transform:scaleX(-1) rotate(-45deg)}.table-emblem{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#e7bf9112;border:1px solid #d4ae6312;width:175px;height:175px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 9px #d4ae6306,0 0 0 10px #d4ae6310}.table-emblem>span{font-size:115px;line-height:1}.table-emblem small{font-size:8px;letter-spacing:3px}.table-name{position:absolute;top:-31px;left:50%;transform:translateX(-50%);border:1px solid #b49350;border-radius:50% / 25%;padding:9px 38px;background:linear-gradient(#241529,#120e19);color:#efcf87;font-size:19px;white-space:nowrap;box-shadow:0 3px 10px #0008,inset 0 0 0 3px #d6ac5b0a}.game-hud{position:absolute;top:111px;right:3.4%;z-index:10;display:flex;background:linear-gradient(120deg,#150d20f2,#0e0b17f2);border:1px solid #b58b4950;border-radius:9px;box-shadow:0 8px 20px #0005}.game-hud>div{min-width:53px;padding:10px 14px;text-align:center;border-right:1px solid #b28c4233}.game-hud small{font-size:8px;color:#a58aad;display:block;letter-spacing:1px;margin-bottom:5px}.game-hud strong{color:var(--gold-light);font-family:Georgia,serif;font-size:21px;font-weight:400}.game-hud em{font-size:11px;color:#977e99;font-style:normal;margin-left:3px}.game-hud button{background:none;color:var(--gold);font-size:25px;padding:0 13px}
.player{position:absolute;z-index:5;display:flex;align-items:center;gap:9px;flex-direction:column;width:140px;pointer-events:none}.player-portrait{position:relative;border-radius:50%;padding:4px;background:linear-gradient(140deg,#f1d28f,#7d552b 50%,#cfac62);box-shadow:0 0 0 3px #190f23,0 5px 16px #0009;width:83px;height:83px}.player-portrait .avatar{width:75px;height:75px;border-radius:50%}.player.active .player-portrait{box-shadow:0 0 0 3px #190f23,0 0 0 4px #bd72d5,0 0 23px #c878e566}.player.active .player-label{border-color:#d096db}.player-label{text-align:center;border:1px solid #ae864b88;border-radius:5px;background:linear-gradient(130deg,#1e1029f5,#0d0a17f5);padding:7px 12px;min-width:110px;box-shadow:0 5px 12px #0006;margin-top:-13px;z-index:2}.player-label strong{display:block;color:#f5e4c6;font-family:Georgia,serif;font-size:17px;font-weight:400;white-space:nowrap;max-width:145px;overflow:hidden;text-overflow:ellipsis}.player-label strong small{font-size:8px;font-family:Arial,sans-serif;margin-left:5px;color:#aa84b7}.player-label>span{font-size:9px;color:#a791b0;display:block;margin-top:4px}.player-label b{color:var(--gold-light);font-size:11px}.player-label i{font-style:normal;margin:0 3px}.declarer-badge{position:absolute;right:-3px;bottom:1px;background:#13091e;color:#eed39b;font-size:18px;border:1px solid #b48943;border-radius:50%;width:25px;height:25px;text-align:center;z-index:3}.seat-2{top:-72px;left:50%;transform:translateX(-50%);flex-direction:row;width:auto;gap:12px}.seat-2 .player-label{margin:0}.seat-2 .opponent-hand{top:82px;left:24px;width:180px}.seat-1{left:-54px;top:29%}.seat-3{right:-54px;top:29%}.seat-0{bottom:-79px;left:50%;transform:translateX(-50%);flex-direction:row;gap:7px;width:auto}.seat-0 .player-portrait{width:62px;height:62px}.seat-0 .avatar{width:54px;height:54px}.seat-0 .player-label{margin:0;background:#170d23}.opponent-hand{position:absolute;width:110px;height:60px;top:120px;left:15px;pointer-events:none}.opponent-hand>span{position:absolute;left:calc(50% + (var(--i) - (var(--n) - 1)/2)*10px);transform:translateX(-50%) rotate(calc((var(--i) - (var(--n) - 1)/2)*9deg));transform-origin:50% 110%;width:36px;height:52px}.opponent-hand .card-back{padding:4px;border-width:1px}.opponent-hand .card-back>span{font-size:14px}.opponent-hand small{position:absolute;top:60px;width:100%;text-align:center;color:#b7a1bd;font-size:8px;letter-spacing:1px}.seat-1 .opponent-hand{left:92px;top:50px;transform:rotate(22deg)}.seat-3 .opponent-hand{left:-62px;top:50px;transform:rotate(-22deg)}
.hand{position:absolute;bottom:-13px;left:50%;width:calc(var(--card-w) + (var(--count) - 1)*var(--step));height:calc(var(--card-h) + 28px);transform:translateX(-50%);z-index:8;pointer-events:none}.hand .card{position:absolute;left:calc(var(--i)*var(--step));bottom:calc(15px - var(--offset));transform:rotate(var(--angle));transform-origin:50% 150%;z-index:calc(var(--i) + 1);pointer-events:auto;transition:transform .18s,bottom .18s,box-shadow .18s;box-shadow:-3px 2px 6px #0006,0 6px 15px #0005}.hand .card:hover,.hand .card:focus-visible{transform:translateY(-20px) rotate(var(--angle));z-index:30;box-shadow:0 0 0 2px #b47bd5,0 4px 30px #0007}.hand .card.unplayable{filter:saturate(.6) brightness(.77)}.hand .card:not(.unplayable){box-shadow:-3px 2px 6px #0006,0 5px 15px #0005,0 -2px 0 #a67cb250}.trick-zone{position:absolute;inset:18% 20% 27%;pointer-events:none;display:flex;align-items:center;justify-content:center}.trick-card{position:absolute;left:calc(50% - var(--card-w)/2);top:calc(50% - var(--card-h)/2);transform:rotate(var(--angle));--angle:0deg;filter:drop-shadow(0 8px 7px #0005)}.trick-0{transform:translateY(33px) rotate(-3deg);z-index:4}.trick-1{transform:translateX(-77px) rotate(-12deg);z-index:1}.trick-2{transform:translateY(-35px) rotate(5deg);z-index:2}.trick-3{transform:translateX(77px) rotate(13deg);z-index:3}.trick-card>span{position:absolute;bottom:-21px;left:0;width:100%;text-align:center;color:#d3bdcf;font-size:9px;text-shadow:0 1px 4px #000}.trick-caption{position:absolute;text-align:center;left:0;right:0;bottom:18%;font-family:Georgia,serif;font-size:13px;font-style:italic;color:#c9a3c56b}.arrive{animation:card-in .28s ease-out}@keyframes card-in{from{opacity:0;margin-top:25px}to{opacity:1;margin-top:0}}
.choice-panel{position:absolute;top:22%;left:50%;transform:translateX(-50%);width:360px;max-width:70%;text-align:center;background:linear-gradient(145deg,#1e0e2bec,#0f0b1beb);border:1px solid #b792534d;border-radius:14px;padding:23px;z-index:7;box-shadow:0 15px 40px #0005}.choice-panel>small{font-size:8px;letter-spacing:3px;color:var(--gold)}.choice-panel h2{font-size:25px;color:#f1ddbd;font-weight:400;margin:6px 0 8px}.choice-panel p{font-size:10px;color:#b9a2c3;margin-bottom:17px}.bid-values{display:grid;grid-template-columns:repeat(9,1fr);gap:4px;margin-bottom:15px}.bid-values button{padding:9px 0;background:#52305a;border:1px solid #b5936155;border-radius:4px;color:var(--gold-light);font-family:Georgia,serif;font-size:16px}.bid-values button:not(:disabled):hover{background:#744783;border-color:#e1bb77}.trump-values{display:flex;gap:9px;justify-content:center}.trump-values button{background:#f2e5cc;border:1px solid #e1bf77;border-radius:7px;color:#140e1e;width:61px;padding:6px 3px 10px}.trump-values button>span{font-size:32px}.trump-values button>small{display:block;font-size:9px;margin-top:3px}.table-footer{position:fixed;bottom:max(13px,env(safe-area-inset-bottom));left:0;right:0;display:flex;align-items:center;justify-content:center;gap:26px;z-index:11;pointer-events:none}.table-footer>*{pointer-events:auto}.round-control{width:36px;height:36px;font-size:21px}.turn-pill{color:#d4badc;background:linear-gradient(130deg,#271334,#160d20);border:1px solid #9563a666;border-radius:30px;padding:10px 26px;display:flex;align-items:center;gap:9px;font-family:Georgia,serif;font-size:16px;box-shadow:0 7px 16px #0005}.turn-pill>small{font-family:Arial,sans-serif;font-size:9px;color:#987ca2;border-left:1px solid #77538377;padding-left:10px;margin-left:7px}.your-turn{border-color:#ce96df;color:#f2d7fb;box-shadow:0 0 16px #aa65c13b,inset 0 0 10px #aa65c11a}.turn-dot{width:5px;height:5px;border-radius:50%;background:#a570b7}.your-turn .turn-dot{background:#dfa1f1;box-shadow:0 0 8px #dfa1f1}.speech{position:absolute;top:-35px;left:50%;transform:translateX(-50%);padding:9px 13px;border-radius:9px;background:#f3e5cd;color:#391a47;border:1px solid #d2b875;box-shadow:0 3px 12px #0006;white-space:nowrap;font-size:12px;z-index:20;animation:pop .18s ease-out}.speech::after{content:'';position:absolute;bottom:-5px;left:calc(50% - 5px);width:10px;height:10px;background:#f3e5cd;transform:rotate(45deg);border-bottom:1px solid #d2b875;border-right:1px solid #d2b875}.seat-0 .speech{top:-35px}.seat-2 .speech{top:-40px}@keyframes pop{from{opacity:0;margin-top:8px}to{opacity:1;margin-top:0}}
.modal-backdrop{position:fixed;inset:0;background:#07050ed6;backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.modal{position:relative;width:470px;max-width:100%;max-height:90dvh;overflow:auto;background:linear-gradient(145deg,#24122d,#100c1b);border:1px solid #ba955658;padding:35px;border-radius:15px;box-shadow:0 30px 100px #0009}.modal h2{font-weight:400;font-size:30px;margin:10px 0 24px;color:#f4dba9}.modal-close{position:absolute;right:14px;top:14px;width:30px;height:30px;font-size:21px}.modal-lead{font-family:Georgia,serif;color:#c5afcd;font-style:italic;font-size:15px;margin:0 0 15px}.rules{padding-left:17px;margin:15px 0;color:#baa8c7;font-size:12px;line-height:1.7}.rules li+li{margin-top:12px}.rules b{color:#ebcd94}.info-note{font-size:10px;line-height:1.8;color:#9d85a9;border-top:1px solid #a784402b;padding-top:15px;margin-top:20px}.avatar-picker{display:flex;gap:15px;margin:10px 0 28px;justify-content:center}.avatar-picker button{border-radius:50%;padding:3px;background:#85613833;border:1px solid #ac844847}.avatar-picker button .avatar{border-radius:50%;width:60px;height:60px}.avatar-picker button.chosen{border-color:#d6b271;box-shadow:0 0 0 2px #ae78c766}.setting-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #88613933;padding:18px 0;font-size:13px;color:#ddc7e6}.setting-row small{display:block;font-size:9px;color:#9f85af;margin-top:6px}.setting-row input{appearance:none;background:#271c36;width:40px;height:22px;border-radius:20px;border:1px solid #675074;position:relative;cursor:pointer}.setting-row input::after{content:'';position:absolute;width:16px;height:16px;border-radius:50%;background:#8d779b;top:2px;left:3px;transition:left .15s}.setting-row input:checked{background:#695039;border-color:#d8b675}.setting-row input:checked::after{left:19px;background:#efd299}.emoji-palette{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin-bottom:18px}.emoji-palette button{background:#3b234a;border:1px solid #b38e4c33;border-radius:8px;padding:10px 0;font-size:24px}.message-palette{display:flex;flex-wrap:wrap;gap:8px}.message-palette button{padding:12px 14px;background:#34203f;border:1px solid #b38e4c33;border-radius:6px;font-size:12px;color:#e5d3eb}
.result-screen{min-height:calc(100dvh - 115px);display:flex;align-items:center;justify-content:center;padding:25px 20px 60px}.result-panel{width:480px;padding:35px;background:linear-gradient(145deg,#281232ed,#100d1bef);border:1px solid #ad844554;border-radius:18px;text-align:center;box-shadow:0 30px 80px #0008}.result-crown{font-size:52px;color:var(--gold);display:block;margin-bottom:16px}.result-panel h1{font-weight:400;font-size:35px;color:#f6dbab;margin:12px 0}.result-panel>p{font-size:12px;color:#b5a0bf;margin-bottom:25px}.score-list{text-align:left;margin:18px 0 25px}.score-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #a9894e29}.score-row .avatar{width:42px;height:42px;border-radius:50%;border:1px solid #a5895a}.score-row strong{font-size:13px;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis}.score-row small{display:block;font-size:9px;color:#a188ad;margin-top:6px}.score-row>b{font-family:Georgia,serif;color:#e7c989;font-weight:400;font-size:23px;text-align:right}.score-row>b small{font-family:Arial,sans-serif;font-size:8px;text-align:right}.score-row.you{background:linear-gradient(90deg,#62347136,transparent);border-radius:5px}.rank{font-family:Georgia,serif;color:#967843;width:15px;text-align:center;font-size:16px}.delta{color:#b69ac9;font-size:12px}.negative{color:#ee9a99}.round-note{font-size:9px;color:#a88aac;display:block;margin-top:18px}
#toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(15px);padding:12px 20px;background:#2a163ce8;border:1px solid #aa85bd70;box-shadow:0 5px 20px #0006;border-radius:8px;color:#ecd7f4;font-size:12px;pointer-events:none;opacity:0;transition:.2s;z-index:100;max-width:90%;text-align:center}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.splash{height:100dvh;background:radial-gradient(ellipse,#4d235158,#10081bdb 65%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.splash-mark{font-family:Georgia,serif;font-size:86px;background:linear-gradient(#f3dda5,#b48645);background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 25px #ad75ba44);animation:splash-glow 2.6s ease-in-out infinite}.splash h1{font-size:clamp(46px,7vw,80px);font-weight:400;letter-spacing:-2px;color:#f0d199;margin-top:4px}.splash h1 span{color:#efe5db}.splash p{letter-spacing:4px;color:#b098c0;font-size:9px;margin:20px 0 50px}.splash .secondary{min-width:170px}.splash .secondary span{padding-left:20px}@keyframes splash-glow{50%{filter:drop-shadow(0 0 35px #c78bdd88)}}
body.reduced-motion *,body.reduced-motion *::before,body.reduced-motion *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
@media(min-width:1500px){.table-stage{margin-top:115px}.table-rim{padding:22px}.player-portrait{width:96px;height:96px}.player-portrait .avatar{width:88px;height:88px}.seat-1{left:-60px}.seat-3{right:-60px}.seat-2{top:-89px}.seat-2 .opponent-hand{top:97px}.seat-0{bottom:-81px}.choice-panel{top:26%;width:410px}.lobby{gap:130px}.game-hud{top:133px}.table-emblem{width:225px;height:225px}.table-emblem>span{font-size:145px}}
@media(max-width:1000px){.lobby{grid-template-columns:1fr 390px;gap:40px;padding:25px 35px 50px}.lobby-copy h1{font-size:52px}.join-panel{padding:24px}.game-hud{right:2%;top:101px}.game-hud>div{min-width:40px;padding:8px}.table-stage{width:84%;margin-top:86px}.seat-1{left:-48px}.seat-3{right:-48px}.seat-1 .opponent-hand{left:78px}.seat-3 .opponent-hand{left:-53px}.hand{--step:4.9vw}.player-portrait{width:72px;height:72px}.player-portrait .avatar{width:64px;height:64px}.player-label strong{font-size:14px}.seat-2{top:-65px}.seat-2 .opponent-hand{top:71px}.table-name{font-size:17px;padding:8px 32px;top:-27px}.table-rim{padding:12px}.table-rim::after{inset:6px}.choice-panel{padding:17px;top:21%}}
@media(max-width:700px){:root{--card-w:66px;--card-h:98px;--step:26px}.topbar{height:79px;padding:13px 4%}.brand{font-size:29px}.brand small{font-size:9px;letter-spacing:2px}.crown{font-size:26px}.topbar nav{gap:7px}.icon-button{width:33px;height:33px;font-size:19px}.header-tag{display:none}.table-heading{top:83px}.table-heading>span{display:none}.table-heading strong{font-size:17px}.lobby{display:flex;flex-direction:column;gap:8px;padding:25px 24px 35px;min-height:calc(100dvh - 120px)}.lobby-copy{align-self:flex-start;padding-left:4px}.lobby-copy h1{font-size:46px;line-height:1.06;margin:15px 0;letter-spacing:-1px}.lobby-copy p{font-size:12px;line-height:1.7}.lobby-decor{display:none}.lobby-copy .eyebrow{font-size:8px}.lobby-panel{width:100%;max-width:420px;padding-top:73px}.preview-cards{top:-4px;height:115px;--card-w:75px;--card-h:112px}.preview-card{left:calc(50% - var(--card-w)/2 + (var(--i) - 1)*53px)}.join-panel{padding:24px 22px 20px}.join-title{padding-bottom:14px}.join-title h2{font-size:26px}.profile-line{margin-bottom:20px}.theme-choices{margin-bottom:20px}.lobby-footer{padding:5px 6% 20px}.table-stage{width:84%;height:calc(100dvh - 285px);min-height:340px;max-height:650px;margin:113px auto 95px}.table-rim{border-radius:50px/38px;padding:10px}.table-felt{border-radius:40px/29px}.table-rim::after{border-radius:45px/33px}.felt-pattern{border-radius:30px/20px;inset:8px}.felt-pattern::before,.felt-pattern::after{font-size:45px;top:20%}.table-name{font-size:12px;top:-24px;padding:8px 24px}.game-hud{top:116px;left:50%;right:auto;transform:translateX(-50%);border-radius:6px;white-space:nowrap}.game-hud>div{min-width:45px;padding:5px 10px}.game-hud small{font-size:7px;margin-bottom:3px}.game-hud strong{font-size:17px}.game-hud button{font-size:21px;padding:0 10px}.seat-2{top:-43px;left:50%;flex-direction:row;transform:translateX(-50%);gap:6px;z-index:12}.seat-2 .opponent-hand{display:none}.player-portrait{width:52px;height:52px;padding:3px}.player-portrait .avatar{width:46px;height:46px}.player-label{min-width:76px;padding:5px 7px;margin-top:-8px}.player-label strong{font-size:12px;max-width:85px}.player-label>span{font-size:8px;margin-top:3px}.player-label b{font-size:9px}.seat-1{left:-27px;top:27%;width:85px}.seat-3{right:-27px;top:27%;width:85px}.seat-1 .opponent-hand{top:108px;left:4px;transform:none;width:78px}.seat-3 .opponent-hand{top:108px;left:4px;transform:none;width:78px}.opponent-hand>span{width:25px;height:37px;left:calc(50% + (var(--i) - (var(--n) - 1)/2)*5px)}.opponent-hand .card-back{padding:2px}.opponent-hand .card-back>span{font-size:11px}.opponent-hand small{top:44px;font-size:7px}.declarer-badge{font-size:13px;width:19px;height:19px;right:-3px}.seat-0{bottom:-69px;gap:6px}.seat-0 .player-portrait{width:48px;height:48px}.seat-0 .avatar{width:40px;height:40px}.hand{bottom:-9px;--step:calc((83vw - var(--card-w))/12);height:130px;max-width:calc(100vw - 18px)}.hand .card{--angle:0deg;--offset:0px;transform:none;bottom:9px}.hand .card:hover,.hand .card:focus-visible{transform:translateY(-14px)}.card .corner{left:7%;top:5%}.card .corner b{font-size:17px}.card .corner>span{font-size:17px}.card .opposite{left:auto;top:auto;right:7%;bottom:5%}.trick-zone{inset:18% 15% 28%}.trick-1{transform:translateX(-40px) rotate(-12deg)}.trick-3{transform:translateX(40px) rotate(12deg)}.trick-0{transform:translateY(29px) rotate(-2deg)}.trick-2{transform:translateY(-31px) rotate(3deg)}.trick-card>span{font-size:8px;bottom:-16px}.choice-panel{top:20%;padding:18px 12px;width:250px;max-width:75%;border-radius:10px}.choice-panel h2{font-size:22px}.choice-panel p{font-size:9px;line-height:1.5;margin-bottom:12px}.bid-values{grid-template-columns:repeat(5,1fr);gap:5px;margin-bottom:10px}.bid-values button{padding:7px 0;font-size:15px}.choice-panel>small{font-size:7px;letter-spacing:2px}.choice-panel .secondary{padding:9px 16px;font-size:10px}.trump-values{gap:5px}.trump-values button{width:44px}.trump-values button>span{font-size:26px}.trump-values button>small{font-size:8px}.table-footer{bottom:max(12px,env(safe-area-inset-bottom));gap:18px}.turn-pill{font-size:13px;padding:10px 17px;max-width:73vw;gap:6px}.turn-pill small{display:none}.table-footer .round-control{width:32px;height:32px;font-size:19px}.table-emblem{width:125px;height:125px}.table-emblem>span{font-size:81px}.table-emblem small{font-size:6px}.trick-caption{font-size:10px;bottom:3%}.modal{padding:29px 24px}.modal h2{font-size:27px}.emoji-palette button{font-size:21px}.avatar-picker{gap:10px}.avatar-picker button .avatar{width:52px;height:52px}.result-screen{min-height:calc(100dvh - 79px);padding:15px 20px 35px}.result-panel{padding:25px 22px}.result-panel h1{font-size:30px}.result-crown{font-size:38px;margin-bottom:12px}.result-panel .eyebrow{font-size:8px;letter-spacing:2px}.score-row{gap:9px}.score-row strong{font-size:12px}}
@media(max-height:650px) and (min-width:701px){.topbar{height:70px;padding:10px 3%}.brand{font-size:30px}.brand small{font-size:9px}.crown{font-size:26px}.icon-button{height:33px;width:33px;font-size:18px}.table-stage{height:calc(100dvh - 193px);min-height:240px;max-height:none;margin-top:49px;margin-bottom:70px;--card-w:76px;--card-h:113px;--step:41px}.game-hud{top:75px}.game-hud>div{padding:5px 10px}.game-hud small{font-size:7px;margin-bottom:3px}.game-hud strong{font-size:16px}.player-portrait{width:55px;height:55px;padding:3px}.player-portrait .avatar{width:49px;height:49px}.seat-2{top:-44px}.seat-2 .opponent-hand{top:50px;left:10px;transform:scale(.8)}.seat-1,.seat-3{top:25%}.seat-1 .opponent-hand,.seat-3 .opponent-hand{top:48px;transform:scale(.8)}.player-label{padding:5px 9px}.player-label strong{font-size:12px}.seat-0{bottom:-48px}.seat-0 .player-portrait{width:42px;height:42px}.seat-0 .avatar{width:34px;height:34px}.seat-0 .player-label{padding:5px 10px}.hand{bottom:0;height:135px}.choice-panel{top:16%;padding:14px;width:330px}.choice-panel h2{font-size:20px;margin:4px 0 7px}.choice-panel p{margin-bottom:9px}.bid-values{margin-bottom:8px}.bid-values button{padding:6px 0}.choice-panel .secondary{padding:7px 15px}.table-footer{bottom:7px;gap:20px}.turn-pill{padding:7px 19px;font-size:13px}.round-control{width:28px;height:28px;font-size:17px}.lobby{min-height:calc(100dvh - 100px);gap:50px;padding:10px 60px 25px;grid-template-columns:1fr 360px}.lobby-copy h1{font-size:48px;margin:15px 0}.lobby-copy p{font-size:13px}.lobby-decor{margin-top:18px}.lobby-panel{padding-top:53px}.preview-cards{--card-w:70px;--card-h:103px;top:-11px}.join-panel{padding:20px}.join-title{padding-bottom:12px}.join-title h2{font-size:25px}.profile-line{margin-bottom:14px}.profile-line .avatar{width:44px;height:44px}.theme-choices{margin-bottom:15px}.theme-choice{padding:8px 3px}.theme-choice>span{font-size:18px;margin-bottom:5px}.theme-choice small{display:none}.primary{padding:12px 20px}.join-note{margin-top:12px}.lobby-footer{padding-bottom:10px}.result-screen{min-height:calc(100dvh - 70px);padding:10px 15px 20px}.result-panel{padding:15px 25px;width:420px}.result-crown{font-size:30px;margin-bottom:8px}.result-panel h1{font-size:26px;margin:7px 0}.result-panel>p{margin-bottom:10px}.score-list{margin:10px 0 15px}.score-row{padding:8px 0}.score-row .avatar{width:33px;height:33px}.round-note{margin-top:10px}}
@media(max-width:700px) and (max-height:500px){.topbar{height:55px;padding:7px 3%}.brand{font-size:24px}.brand small{font-size:7px}.topbar .crown{font-size:21px}.table-heading{top:55px}.table-heading strong{font-size:12px}.game-hud{top:74px;right:2%;left:auto;transform:none}.game-hud>div{min-width:33px;padding:3px 6px}.game-hud small{font-size:6px}.game-hud strong{font-size:13px}.table-stage{width:83%;height:calc(100dvh - 157px);min-height:200px;max-height:none;margin-top:38px;--card-w:56px;--card-h:84px}.seat-2{top:-35px}.seat-2 .player-portrait{width:42px;height:42px}.seat-2 .avatar{width:36px;height:36px}.seat-1,.seat-3{top:20%}.opponent-hand{display:none}.seat-0{bottom:-45px}.seat-0 .player-portrait{width:36px;height:36px}.seat-0 .avatar{width:28px;height:28px}.seat-0 .player-label strong{font-size:10px}.seat-0 .player-label>span{font-size:7px}.choice-panel{top:13%;padding:10px;max-width:65%;width:270px}.choice-panel h2{font-size:18px;margin:4px 0}.choice-panel p{font-size:8px;margin-bottom:7px}.bid-values{grid-template-columns:repeat(9,1fr);gap:3px}.bid-values button{padding:5px 0;font-size:12px}.choice-panel .secondary{padding:6px 12px}.hand{height:103px;--step:calc((76vw - var(--card-w))/12);bottom:-5px}.table-footer{bottom:5px;gap:18px}.turn-pill{padding:6px 17px;font-size:11px}.round-control{width:25px!important;height:25px!important;font-size:16px!important}}
.table-rim{background:transparent url('/assets/table.png') center/100% 100% no-repeat;border:0;box-shadow:0 18px 32px #000a;padding:5.2% 7.2%;border-radius:80px/55px}.table-rim::after{display:none}.table-felt{background:transparent;box-shadow:none;border-radius:0}.felt-pattern{border:0}.felt-pattern::before,.felt-pattern::after{display:none}.table-emblem{color:#e7bf911c}.table-name{top:-23px;font-size:14px;padding:6px 27px}.choice-panel{top:15%}.seat-2{top:-88px}.seat-2 .opponent-hand{top:15px;left:210px;width:110px}.seat-0 .player-portrait .avatar{width:54px;height:54px}body[data-theme=teras] .table-rim{filter:hue-rotate(16deg) saturate(.78)}body[data-theme=obsidyen] .table-rim{filter:saturate(.65) brightness(.7)}
@media(min-width:1500px){:root{--card-w:145px;--card-h:215px;--step:80px}.table-stage{max-width:1750px}.seat-2{top:-102px}.seat-2 .opponent-hand{top:25px;left:235px}.table-name{font-size:17px}.seat-0 .player-portrait .avatar{width:54px;height:54px}}
@media(max-width:1000px){.seat-2 .opponent-hand{top:13px;left:175px}.seat-2{top:-78px}}
@media(max-width:700px){.table-rim{padding:16% 7.2%;border-radius:50px/38px}.table-name{top:-12px;font-size:10px;padding:5px 20px}.seat-2{top:24px}.table-felt .choice-panel{top:14%;max-width:92%;width:260px}.trick-zone{inset:17% 4% 17%}.seat-0 .player-portrait .avatar{width:40px;height:40px}.table-emblem{width:110px;height:110px}}
@media(max-height:650px) and (min-width:701px){.seat-2{top:-43px}.seat-2 .opponent-hand{left:150px;top:5px}.table-rim{padding:3.4% 7.2%}.table-felt .choice-panel{top:7%;max-width:80%}.seat-0 .player-portrait .avatar{width:34px;height:34px}}
@media(max-width:700px) and (max-height:500px){.seat-2{top:-30px}.table-rim{padding:3.4% 7.2%}.table-felt .choice-panel{top:6%}.seat-0 .player-portrait .avatar{width:28px;height:28px}}
@media(max-width:700px){.table-name{display:none}}
@media(max-height:450px) and (min-width:701px){.table-stage{min-height:190px;--card-w:60px;--card-h:89px;--step:38px}.hand{height:108px}.table-felt .choice-panel{top:-25px;padding:10px;width:330px}.choice-panel>small,.choice-panel>p{display:none}.choice-panel h2{font-size:18px;margin:0 0 8px}.bid-values button{font-size:13px;padding:5px 0}.choice-panel .secondary{font-size:10px;padding:6px 15px}.table-emblem{width:100px;height:100px}.table-emblem>span{font-size:68px}.table-name{display:none}.seat-2 .opponent-hand{left:170px;width:95px}}
.seat-0{bottom:-65px}
@media(min-width:1500px){.table-stage{height:clamp(480px,70dvh,950px);max-height:calc(100dvh - 380px)}.seat-0{bottom:-72px}}
@media(max-height:650px) and (min-width:701px){.seat-0{bottom:-31px}}
@media(max-width:700px){.table-stage{height:calc(100dvh - 285px - env(safe-area-inset-bottom));margin-bottom:90px}.seat-0{bottom:-42px}.seat-0 .player-portrait{width:40px;height:40px;padding:3px}.seat-0 .player-portrait .avatar{width:34px;height:34px}}
@media(max-width:700px) and (max-height:500px){.table-stage{height:calc(100dvh - 157px - env(safe-area-inset-bottom))}.seat-0{bottom:-27px}.seat-0 .player-portrait{width:30px;height:30px;padding:3px}.seat-0 .player-portrait .avatar{width:24px;height:24px}}
