@font-face{font-family:Playfair Display;font-style:normal;font-display:swap;font-weight:400 900;src:url(/kozivo/assets/playfair-display-latin-ext-wght-normal-CT1r92Rl.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:italic;font-display:swap;font-weight:400 900;src:url(/kozivo/assets/playfair-display-latin-ext-wght-italic-ze_cPdSg.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:200 800;src:url(/kozivo/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:normal;font-display:swap;font-weight:400 900;src:url(/kozivo/assets/playfair-display-latin-wght-normal-BOwq7MWX.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:italic;font-display:swap;font-weight:400 900;src:url(/kozivo/assets/playfair-display-latin-wght-italic-DmbndNpe.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:200 800;src:url(/kozivo/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--cobalt: #1f4f9e;--cobalt-2: #163a7a;--deep: #0b1f48;--deeper: #071533;--ink: #1b2140;--cream: #fbf7ee;--glaze: #f3ead6;--glaze-2: #e8dcc0;--line: #d4c39c;--muted: #6d6a75;--gold: #d4a640;--gold-hi: #f2d488;--gold-lo: #9c7426;--turq: #2aa5a1;--turq-lo: #13706f;--red: #c8372d;--red-hi: #e0584c;--green: #2f7d4a;--me: #c8372d;--top-h: 54px;--display: "Playfair Display", Georgia, serif;--ui: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--gold-grad: linear-gradient(135deg, #9c7426 0%, #f2d488 30%, #d4a640 55%, #fff0b8 78%, #9c7426 100%);--porcelain: linear-gradient(170deg, #fffdf8 0%, #f6efe0 100%);color-scheme:light}*{box-sizing:border-box;font-variant-numeric:lining-nums!important}html,body{margin:0;height:100%;overflow:hidden;background:var(--deeper);color:var(--ink);font-family:var(--ui);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button,input{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}svg.suit{width:1em;height:1em;display:inline-block;vertical-align:-.12em}#app{position:fixed;inset:0;display:flex;flex-direction:column}main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 312px}.topbar{height:var(--top-h);flex:none;display:flex;align-items:center;gap:12px;padding:0 12px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));background:linear-gradient(#123373,#0b2257);color:var(--cream);position:relative;z-index:5;box-shadow:0 4px 18px #02081a8c}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:4px;background:radial-gradient(circle at 6px 2px,var(--red) 0 1.6px,transparent 2px) 0 0 / 24px 4px,radial-gradient(circle at 18px 2px,var(--turq) 0 1.6px,transparent 2px) 0 0 / 24px 4px,#efe4cc;border-top:1px solid var(--gold)}.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--cream);font:italic 800 27px/1 var(--display);flex:none;letter-spacing:.01em}.brand svg{width:38px;height:38px;overflow:visible}.b-card{fill:#fbf7ee;stroke:var(--gold);stroke-width:1.2;transition:transform .3s cubic-bezier(.3,1.6,.5,1);transform-box:fill-box;transform-origin:50% 90%}.b-2{fill:#2aa5a1}.b-tulip{fill:var(--red);stroke:#fff4d8;stroke-width:.8}.brand:hover .b-1{transform:rotate(-8deg)}.brand:hover .b-2{transform:rotate(8deg)}.scoreboard{display:flex;align-items:center;gap:8px;min-width:0}.hand-tag,.contract-chip{font:700 13px/1 var(--ui);letter-spacing:.02em;color:var(--gold-hi);border:1px solid rgba(212,166,64,.55);padding:6px 10px;border-radius:999px;white-space:nowrap;background:#0003;display:inline-flex;align-items:center;gap:6px}.contract-chip{color:var(--cream);background:#fbf7ee1a}.contract-chip .suit{width:15px;height:15px;filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 1px #fff)}.contract-chip b{font:800 15px/1 var(--display);color:var(--gold-hi)}.my-score{font:800 16px/1 var(--display);color:var(--cream);white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.my-score:before{content:"";width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3c4 0 18%,var(--gold) 40%,var(--gold-lo) 100%)}.identity{margin-left:auto;display:flex;align-items:center;gap:6px;position:relative;min-width:0}.identity-dot{width:30px;height:30px;border-radius:50%;border:2px solid var(--cream);background:var(--me);padding:0;flex:none;box-shadow:0 0 0 2px var(--gold)}.identity-dot i{display:block;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.55) 0 16%,transparent 22%)}#playerName{width:140px;min-width:0;background:#ffffff1a;border:1px solid rgba(251,247,238,.3);border-radius:8px;color:var(--cream);padding:7px 10px;font-weight:700}#playerName:focus{border-color:var(--gold);outline:none;background:#ffffff29}.color-picker{position:absolute;top:44px;left:0;background:var(--porcelain);border:1px solid var(--gold);border-radius:12px;padding:12px;box-shadow:0 16px 40px #02081a80;z-index:30}.color-grid{display:grid;grid-template-columns:repeat(5,32px);gap:9px}.color-grid button{width:32px;height:32px;border-radius:50%;border:2px solid #fff;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.5) 0 12%,transparent 20%),var(--c);box-shadow:0 1px 3px #0000004d}.color-grid button.selected{transform:scale(1.12);box-shadow:0 0 0 2px var(--cream),0 0 0 4px var(--gold)}.color-grid button:disabled{opacity:.25;cursor:not-allowed}.toolbar{display:flex;gap:6px;flex:none}.icon-button{width:36px;height:36px;border-radius:10px;border:1px solid rgba(251,247,238,.25);background:#ffffff14;color:var(--cream);display:grid;place-items:center;padding:0;font:800 17px/1 var(--ui);transition:transform .12s,border-color .12s,background .12s}.icon-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.icon-button:hover{border-color:var(--gold);background:#ffffff29}.icon-button:active{transform:translateY(1px)}.icon-button[aria-pressed=true]{color:#ffb3a8}.lang-button{font-size:12.5px;letter-spacing:.04em}#menuButton{display:none}.arena{position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--deep);touch-action:none;user-select:none;-webkit-user-select:none}#table{position:absolute;inset:0;width:100%;height:100%;display:block}.primary,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:12px 22px;border-radius:12px;font:800 16px/1 var(--ui);letter-spacing:.01em;transition:transform .12s,filter .12s,box-shadow .12s}.primary{border:1px solid #0c2a63;color:#fff;background:linear-gradient(180deg,#3570c8,#1f4f9e 55%,#163a7a);box-shadow:inset 0 1px #ffffff59,inset 0 0 0 2px #f2d48880,0 3px #0b2257,0 8px 18px #0b225759}.primary:hover{filter:brightness(1.08)}.primary:active{transform:translateY(2px);box-shadow:inset 0 1px #ffffff59,inset 0 0 0 2px #f2d48880,0 1px #0b2257}.primary:disabled{filter:grayscale(.7) opacity(.6);cursor:default}.secondary{border:1.5px solid var(--cobalt);color:var(--cobalt-2);background:var(--porcelain);box-shadow:0 2px 0 var(--line)}.secondary:hover{background:#fff}.secondary:active{transform:translateY(2px);box-shadow:none}.text-button{border:none;background:none;color:var(--cobalt);font-weight:800;padding:6px 8px;border-radius:8px}.text-button:hover{background:#1f4f9e14}.plates{position:absolute;inset:0;pointer-events:none}.plate{position:absolute;width:max-content;transform:translate(-50%,-50%);display:flex;align-items:center;gap:8px;padding:5px 12px 5px 5px;min-width:120px;max-width:170px;border-radius:999px;background:var(--porcelain);border:1px solid #b89a5a;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #d4a6408c,0 4px 14px #02081a73;transition:box-shadow .25s,transform .25s}.plate.turn{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px var(--gold),0 0 0 3px #f2d488d9,0 0 26px #f2d488bf,0 4px 14px #02081a73}.plate.away{filter:grayscale(.8);opacity:.8}.plate.mine .avatar{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--turq),0 1px 3px #00000059}.plate.bump{animation:bump .45s cubic-bezier(.3,1.8,.5,1)}@keyframes bump{40%{transform:translate(-50%,-50%) scale(1.12)}}.avatar{--c: #c8372d;--p: 0;position:relative;width:38px;height:38px;flex:none;border-radius:50%;display:grid;place-items:center;color:#fff;font:800 17px/1 var(--display);background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.45) 0 14%,transparent 26%),var(--c);box-shadow:0 0 0 2px #fff,0 1px 3px #00000059;text-shadow:0 1px 1px rgba(0,0,0,.4)}.avatar .ring{position:absolute;inset:-5px;border-radius:50%;background:conic-gradient(var(--ring, var(--turq)) calc(var(--p) * 1turn),transparent 0);-webkit-mask:radial-gradient(circle,transparent 21px,#000 22px);mask:radial-gradient(circle,transparent 21px,#000 22px)}.avatar.urgent .ring{--ring: var(--red)}.avatar .dealer{position:absolute;right:-6px;bottom:-4px;width:17px;height:17px;border-radius:50%;background:var(--gold-grad);color:#4a3510;font:900 10px/17px var(--ui);text-align:center;box-shadow:0 1px 2px #0006;text-shadow:none}.plate .info{display:grid;gap:2px;min-width:0}.plate .name{font:800 14px/1.1 var(--ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}.plate .meta{display:flex;align-items:center;gap:6px;font:700 12px/1 var(--ui);color:var(--muted);white-space:nowrap}.plate .tricks{display:inline-flex;align-items:center;gap:3px;color:var(--cobalt-2);font:800 14px/1 var(--display)}.plate .tricks:before{content:"";width:9px;height:12px;border-radius:2px;background:linear-gradient(135deg,#3570c8,#163a7a);box-shadow:2px -2px 0 -.5px #fff,2px -2px #b89a5a}.plate .score{font:800 13px/1 var(--display);color:var(--ink);display:inline-flex;align-items:center;gap:3px}.plate .score:before{content:"";width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff3c4 0 18%,var(--gold) 40%,var(--gold-lo) 100%)}.plate .score:empty{display:none}.plate .tag{font:800 10px/1 var(--ui);letter-spacing:.05em;text-transform:uppercase;padding:3px 5px;border-radius:5px;background:var(--glaze-2);color:var(--muted)}.plate .tag.partner{background:#d6f0ee;color:var(--turq-lo)}.bubble{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%) scale(.6);opacity:0;padding:5px 12px;border-radius:12px;background:#fff;border:1.5px solid var(--cobalt);font:800 18px/1 var(--display);color:var(--cobalt-2);white-space:nowrap;box-shadow:0 6px 16px #02081a59;transition:transform .3s cubic-bezier(.3,1.7,.5,1),opacity .2s}.bubble:after{content:"";position:absolute;left:50%;top:100%;width:10px;height:10px;background:#fff;border-right:1.5px solid var(--cobalt);border-bottom:1.5px solid var(--cobalt);transform:translate(-50%,-5px) rotate(45deg)}.bubble.show{opacity:1;transform:translate(-50%) scale(1)}.bubble.pass{color:var(--muted);border-color:#b9b2a2;font:800 14px/1 var(--ui)}.bubble.pass:after{border-color:#b9b2a2}.plate.below .bubble{bottom:auto;top:calc(100% + 8px)}.plate.below .bubble:after{top:auto;bottom:100%;transform:translate(-50%,5px) rotate(225deg)}.crown{position:absolute;right:-8px;top:-14px;padding:3px 9px 3px 7px;border-radius:999px;background:var(--gold-grad);color:#3c2a08;font:800 11px/1 var(--ui);white-space:nowrap;box-shadow:0 2px 6px #00000059;display:inline-flex;align-items:center;gap:4px;animation:crown .5s cubic-bezier(.3,1.8,.5,1)}.crown .suit{width:12px;height:12px;filter:drop-shadow(0 0 1px #fff)}@keyframes crown{0%{transform:translateY(8px) scale(.4);opacity:0}}.plaque{position:absolute;left:18px;top:18px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:6px;align-items:center;padding:9px 14px 9px 9px;border-radius:16px;background:var(--porcelain);border:1px solid #b89a5a;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #d4a6408c,0 8px 20px #02081a73;min-width:150px;z-index:2}.plaque.reveal{animation:plaque .6s cubic-bezier(.3,1.6,.5,1)}@keyframes plaque{0%{transform:scale(.7)}60%{transform:scale(1.08)}}.medal{grid-row:span 2;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 40% 35%,#fff 0 30%,#e9f3f1 70%);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--gold),0 2px 8px #0000004d}.medal .suit{width:30px;height:30px}.medal .nt{font:800 11px/1 var(--display);color:var(--turq-lo);text-align:center}.medal .q{font:800 22px/1 var(--display);color:var(--muted)}.plaque-text{display:grid;gap:2px}.plaque-text b{font:800 20px/1 var(--display);color:var(--ink)}.plaque-text span{font:700 12.5px/1.1 var(--ui);color:var(--muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{display:flex;flex-wrap:wrap;gap:3px;max-width:132px}.progress i{width:8px;height:11px;border-radius:2px;background:var(--glaze-2);box-shadow:inset 0 0 0 1px #cbbd9c}.progress i.got{background:linear-gradient(135deg,#3570c8,#163a7a);box-shadow:none}.progress i.over{background:linear-gradient(135deg,#f2d488,#9c7426)}.progress.lost i.got{background:linear-gradient(135deg,#e0584c,#8f2119)}.peek-button{grid-column:1 / -1;border:1px solid var(--line);background:#fff;color:var(--cobalt-2);border-radius:8px;padding:6px 8px;font:800 12px/1 var(--ui)}.peek-button:hover,.peek-button[aria-pressed=true]{border-color:var(--gold);background:#fff8e4}.hint{position:absolute;left:50%;transform:translate(-50%);bottom:var(--hint-b, 160px);padding:7px 14px;border-radius:999px;background:#071533c7;color:var(--cream);font:700 13.5px/1.2 var(--ui);white-space:nowrap;pointer-events:none;border:1px solid rgba(242,212,136,.35);transition:opacity .2s;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis}.hint:empty{opacity:0}.hint.mine{background:#1f4f9eeb;border-color:var(--gold-hi);box-shadow:0 0 18px #f2d48873}.bid-panel,.koz-panel{position:absolute;left:50%;bottom:var(--panel-b, 170px);transform:translate(-50%);z-index:4;width:min(460px,calc(100% - 20px));padding:12px 14px 14px;border-radius:18px;background:var(--porcelain);border:1px solid #b89a5a;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #d4a64099,0 18px 40px #02081a8c;animation:rise .35s cubic-bezier(.3,1.5,.5,1)}@keyframes rise{0%{transform:translate(-50%) translateY(24px);opacity:0}}.bid-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.bid-head b{font:italic 800 22px/1 var(--display);color:var(--cobalt-2)}.bid-head span{font:700 13px/1.2 var(--ui);color:var(--muted);text-align:right}.bid-grid{display:grid;grid-template-columns:repeat(var(--cols, 5),1fr);gap:7px}.bid-grid button{height:46px;border-radius:10px;border:1px solid #9fb3d6;background:linear-gradient(180deg,#fff,#eaf1fb);color:var(--cobalt-2);font:800 22px/1 var(--display);box-shadow:inset 0 -3px #c9d6ec,0 2px #9fb3d6;transition:transform .1s,background .1s}@media(hover:hover){.bid-panel.armed .bid-grid button:hover:not(:disabled){background:#dfe9f8;border-color:#3570c8;transform:translateY(-2px)}}.bid-grid button.focus{background:linear-gradient(180deg,#3570c8,#1f4f9e);color:#fff;border-color:#163a7a;box-shadow:inset 0 0 0 2px #f2d48899,0 2px #0b2257;transform:translateY(-2px)}.bid-grid button:active:not(:disabled){transform:translateY(1px)}.bid-grid button:disabled{opacity:.3;cursor:default;box-shadow:none}.bid-must{margin:10px 0 0;font:700 13px/1.3 var(--ui);color:var(--red);text-align:center}.pass-button{margin-top:10px;width:100%;height:42px;border-radius:10px;border:1px solid #8f2119;color:#fff;font:800 16px/1 var(--ui);background:linear-gradient(180deg,#e0584c,#c8372d 60%,#a52a21);box-shadow:inset 0 1px #ffffff4d,0 2px #7a1c15}@media(hover:hover){.bid-panel.armed .pass-button:hover:not(:disabled){filter:brightness(1.08)}}.pass-button.focus{box-shadow:inset 0 1px #ffffff4d,0 0 0 3px #fff8e4,0 0 0 5px var(--gold),0 2px #7a1c15}.pass-button:disabled{opacity:.35;cursor:default}.koz-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.koz-grid button{display:grid;justify-items:center;gap:4px;padding:10px 4px 8px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(180deg,#fff,#f6efe0);box-shadow:0 2px 0 var(--line);transition:transform .12s,box-shadow .12s}.koz-grid button .suit{width:40px;height:40px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.2))}.koz-grid button b{font:800 14px/1 var(--ui)}.koz-grid button small{font:700 11.5px/1 var(--ui);color:var(--muted)}.koz-grid button.best{border-color:var(--gold);box-shadow:0 0 0 2px #f2d488cc,0 2px 0 var(--gold-lo)}.koz-grid button:hover{transform:translateY(-3px);box-shadow:0 0 0 2px var(--gold),0 6px 14px #0003}.banner{position:absolute;left:50%;top:var(--banner-y, 30%);transform:translate(-50%,-50%);z-index:3;padding:10px 22px;border-radius:999px;background:#071533db;color:var(--cream);border:1px solid var(--gold);font:800 17px/1.2 var(--ui);white-space:nowrap;box-shadow:0 10px 30px #02081a80;animation:banner .4s cubic-bezier(.3,1.6,.5,1);pointer-events:none;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;display:inline-flex;align-items:center;gap:8px}.banner .suit{width:20px;height:20px;filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 2px #fff)}.banner b{font-family:var(--display);color:var(--gold-hi);font-size:20px}@keyframes banner{0%{transform:translate(-50%,-50%) scale(.6);opacity:0}}.stamp{position:absolute;left:50%;top:var(--stamp-y, 45%);z-index:6;pointer-events:none;transform:translate(-50%,-50%) rotate(-11deg)}.stamp .ink{display:block;padding:10px 30px 14px;border:6px double var(--red);border-radius:14px;color:var(--red);font:italic 900 clamp(46px,11vw,96px)/1 var(--display);letter-spacing:.02em;background:#fbf7eed1;text-shadow:2px 2px 0 rgba(200,55,45,.25);box-shadow:0 0 0 3px #fbf7eecc,0 20px 50px #02081a80;animation:slam .42s cubic-bezier(.2,1.6,.4,1) both}.stamp .sub{display:block;margin-top:8px;text-align:center;font:800 15px/1.2 var(--ui);color:var(--cream);text-shadow:0 2px 6px rgba(0,0,0,.8);animation:fadeIn .4s .35s both}.stamp.seal .ink{border:none;border-radius:50%;width:clamp(130px,22vw,190px);height:clamp(130px,22vw,190px);display:grid;place-items:center;padding:0;color:#3c2a08;font-size:clamp(26px,5vw,40px);background:radial-gradient(circle at 38% 32%,#fff6cf 0 12%,#f2d488 30%,#d4a640 62%,#9c7426);box-shadow:0 0 0 4px #fff6cfb3,0 0 0 9px #d4a64073,0 0 40px #f2d488cc,0 20px 50px #02081a80;text-shadow:0 1px 0 rgba(255,255,255,.6)}@keyframes slam{0%{transform:scale(3);opacity:0}55%{transform:scale(.92);opacity:1}to{transform:scale(1)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}}.pause-note{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:7;padding:14px 22px;border-radius:14px;background:#071533eb;color:var(--cream);font:700 15px/1.4 var(--ui);text-align:center;border:1px solid var(--gold)}.result{position:absolute;inset:0;z-index:8;display:grid;place-items:center;padding:14px;background:#040c2059;animation:fadeIn .3s}.result-card{width:min(520px,100%);max-height:100%;overflow:auto;border-radius:20px;background:var(--porcelain);border:1px solid #b89a5a;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #d4a64099,0 30px 70px #02081a99;animation:rise2 .45s cubic-bezier(.3,1.4,.5,1)}@keyframes rise2{0%{transform:translateY(30px) scale(.94);opacity:0}}.result-head{position:relative;padding:16px 20px 14px;text-align:center;color:var(--cream);border-radius:18px 18px 0 0;background:radial-gradient(circle at 20px 20px,rgba(70,196,192,.35) 0 8px,transparent 9px) 0 0 / 40px 40px,radial-gradient(circle at 0 0,rgba(255,255,255,.12) 0 3px,transparent 4px) 0 0 / 40px 40px,linear-gradient(#1f4f9e,#123373);border-bottom:3px solid var(--gold)}.result-head h2{margin:0;font:italic 900 32px/1.05 var(--display);color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.4)}.result-head h2.batak{color:#ffb3a8}.result-head h2.gold{color:var(--gold-hi)}.result-head p{margin:6px 0 0;font:700 14px/1.3 var(--ui);color:#d8e2f5;display:inline-flex;align-items:center;gap:6px}.result-head .suit{width:17px;height:17px;filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 1px #fff)}.result-body{padding:12px 16px 16px;display:grid;gap:12px}.result table{width:100%;border-collapse:collapse;font:700 14px/1.2 var(--ui)}.result th{font:800 11px/1 var(--ui);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:right;padding:6px}.result th:first-child,.result td:first-child{text-align:left}.result td{padding:8px 6px;border-top:1px solid var(--glaze-2);text-align:right;white-space:nowrap}.result td .who{display:inline-flex;align-items:center;gap:8px;max-width:170px;overflow:hidden;text-overflow:ellipsis}.result td .dot{width:12px;height:12px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px #fff,0 0 0 3px #00000026;flex:none}.result td.num{font:800 16px/1 var(--display)}.result td.plus{color:var(--green)}.result td.minus{color:var(--red)}.result tr.me td{background:#2aa5a117}.result tr.win td{background:#f2d48840}.result .badge{margin-left:6px;font:800 10px/1 var(--ui);padding:3px 6px;border-radius:5px;background:var(--gold-grad);color:#3c2a08;vertical-align:2px}.result .badge.down{background:var(--red);color:#fff}.result-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.result-actions .primary{min-width:180px}.result .countdown{text-align:center;font:700 13px/1 var(--ui);color:var(--muted)}.result .waiting{text-align:center;font:700 13px/1.3 var(--ui);color:var(--muted);margin:0}.welcome{position:absolute;inset:0;z-index:9;display:grid;place-items:center;padding:16px;background:radial-gradient(ellipse at center,#07153326,#0715338c)}.welcome-card{width:min(400px,100%);display:grid;justify-items:center;gap:12px;text-align:center;padding:24px 26px 26px;border-radius:26px;background:var(--porcelain);border:1px solid #b89a5a;box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px #d4a64099,0 30px 70px #02081a99;animation:rise2 .6s cubic-bezier(.3,1.4,.5,1)}.welcome-card h1{margin:0;font:italic 900 64px/.95 var(--display);color:var(--cobalt-2);letter-spacing:-.01em}.welcome-kicker{margin:-6px 0 0;font:800 12px/1 var(--ui);letter-spacing:.32em;text-transform:uppercase;color:var(--red)}.welcome-card p#welcomeText{margin:0;font:600 15px/1.45 var(--ui);color:#4a4856}.welcome-card .primary,.welcome-card .secondary{width:100%}.welcome-fan{position:relative;height:92px;width:200px}.wf{position:absolute;left:50%;bottom:0;width:56px;height:78px;margin-left:-28px;border-radius:7px;background:linear-gradient(170deg,#fffdf8,#f2e9d6);box-shadow:0 0 0 1px #463c284d,0 6px 14px #02081a40;transform-origin:50% 160%;display:grid;place-items:center;font:800 22px/1 var(--display);animation:fan .8s cubic-bezier(.3,1.5,.5,1) both}.wf .suit{width:26px;height:26px}.wf i{position:absolute;left:6px;top:5px;font:800 15px/1 var(--display);font-style:normal}.wf:nth-child(1){transform:rotate(-24deg);--r: -24deg}.wf:nth-child(2){transform:rotate(-8deg);--r: -8deg;animation-delay:.06s}.wf:nth-child(3){transform:rotate(8deg);--r: 8deg;animation-delay:.12s}.wf:nth-child(4){transform:rotate(24deg);--r: 24deg;animation-delay:.18s}@keyframes fan{0%{transform:rotate(0) translateY(10px);opacity:0}to{transform:rotate(var(--r));opacity:1}}.toast{position:absolute;left:50%;bottom:var(--toast-b, 180px);transform:translate(-50%);z-index:40;max-width:min(460px,calc(100vw - 24px));padding:11px 18px;border-radius:12px;background:#fff;color:var(--ink);border:1.5px solid var(--red);font:700 14.5px/1.35 var(--ui);box-shadow:0 12px 30px #02081a73;text-align:center;animation:toast .3s cubic-bezier(.3,1.6,.5,1);position:fixed}.toast .suit{width:16px;height:16px}@keyframes toast{0%{transform:translate(-50%) translateY(14px);opacity:0}}.panel{min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:14px 16px 16px;background:var(--porcelain);border-left:3px solid var(--gold);box-shadow:inset 4px 0 #efe4cc}.panel-head{display:flex;align-items:center;justify-content:space-between}.panel-head h2{margin:0;font:italic 800 24px/1 var(--display);color:var(--cobalt-2)}.panel-head .icon-button{display:none;color:var(--ink);border-color:var(--line);background:#fff}.panel-name{display:none;gap:6px;font:700 12px/1 var(--ui);color:var(--muted)}.panel-name input{border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-weight:700;background:#fff}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:12px;background:var(--glaze);border:1px solid var(--line)}.mode-switch button{border:none;border-radius:9px;padding:9px;font-weight:800;background:none;color:var(--muted)}.mode-switch button.active{background:linear-gradient(180deg,#3570c8,#1f4f9e);color:#fff;box-shadow:inset 0 0 0 1.5px #f2d48899}.row{display:flex;align-items:center;justify-content:space-between;gap:8px;font:700 13px/1.2 var(--ui);color:#4a4856}.segmented{display:flex;gap:2px;padding:3px;border-radius:10px;background:var(--glaze);border:1px solid var(--line);flex-wrap:wrap;justify-content:flex-end}.segmented button{border:none;border-radius:7px;padding:6px 9px;font:800 12.5px/1 var(--ui);background:none;color:var(--muted)}.segmented button.active{background:#fff;color:var(--cobalt-2);box-shadow:0 1px 3px #00000026,inset 0 0 0 1px var(--gold)}.segmented.small button{padding:6px 7px}.rules{border:1px solid var(--line);border-radius:12px;padding:4px 10px 10px;background:#ffffff80}.rules summary{font:800 13px/1 var(--ui);padding:8px 0;color:var(--cobalt-2);cursor:pointer}.rules[open] summary{margin-bottom:4px}.rules .row{margin-top:10px;flex-direction:column;align-items:stretch;gap:5px}.rules .segmented{justify-content:stretch;flex-wrap:nowrap}.rules .segmented button{flex:1;padding-inline:2px;white-space:nowrap}#lengthSwitch{display:grid;grid-template-columns:repeat(3,1fr)}.rules.locked{opacity:.7}.rules.locked button{pointer-events:none}.toggles{display:grid;gap:8px;margin-top:10px}.toggle{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;cursor:pointer}.toggle b{font:800 13px/1.2 var(--ui);color:#3a3846}.toggle small{grid-column:1;font:600 11.5px/1.3 var(--ui);color:var(--muted)}.toggle .switch{grid-row:1 / span 2;grid-column:2;width:40px;height:24px;border-radius:999px;background:#d9cfb8;position:relative;transition:background .2s;border:none;padding:0}.toggle .switch:after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .2s cubic-bezier(.3,1.6,.5,1)}.toggle .switch[aria-checked=true]{background:var(--turq)}.toggle .switch[aria-checked=true]:after{transform:translate(16px)}.invite-row{display:flex;gap:6px}.invite-row input{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:8px;font:600 12.5px/1 var(--ui);background:#fff}.player-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.player-list li{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:10px;background:#fff;border:1px solid var(--glaze-2);font:700 13.5px/1.2 var(--ui)}.player-list .dot{width:14px;height:14px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px #fff,0 0 0 3px #00000026;flex:none}.player-list .pname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-list small{color:var(--muted);font-weight:700;font-size:11.5px}.player-list button{border:1px solid var(--line);background:var(--cream);border-radius:7px;padding:4px 7px;font:800 11.5px/1 var(--ui);color:var(--cobalt-2)}.note{margin:0;font:600 12.5px/1.45 var(--ui);color:var(--muted)}.sheet h3{margin:0 0 6px;font:italic 800 17px/1 var(--display);color:var(--cobalt-2)}.sheet-scroll{overflow-x:auto}.sheet table{width:100%;border-collapse:collapse;font:700 12.5px/1.2 var(--ui)}.sheet th,.sheet td{padding:5px 4px;text-align:right;border-bottom:1px solid var(--glaze-2);white-space:nowrap}.sheet th:first-child,.sheet td:first-child{text-align:left}.sheet th{font:800 11px/1 var(--ui);color:var(--muted)}.sheet th .dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c);vertical-align:-1px}.sheet td.minus{color:var(--red)}.sheet tr.total td{font:800 14px/1 var(--display);border-bottom:none;border-top:2px solid var(--line)}.sheet td .suit{width:12px;height:12px}.panel-foot{margin-top:auto;display:flex;align-items:center;gap:8px;font:700 12px/1 var(--ui);color:var(--muted)}.connection:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:#b9b2a2}.connection.online:before{background:#2f9d5a}.connection.trouble:before{background:var(--red)}#leaveButton{margin-left:auto;color:var(--red)}dialog{border:1px solid #b89a5a;border-radius:18px;padding:16px 18px 18px;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 40px);background:var(--porcelain);color:var(--ink);box-shadow:0 30px 80px #02081a99}dialog::backdrop{background:#040c2099}dialog .panel-head .icon-button{display:grid}.help-body ol{margin:10px 0;padding-left:20px;display:grid;gap:8px;line-height:1.45;font-size:14px}.keys-help{color:var(--muted);font-size:13px;line-height:1.5}dialog .primary{width:100%}@media(max-width:899px){main{grid-template-columns:minmax(0,1fr)}#menuButton{display:grid}.panel{position:fixed;top:var(--top-h);right:0;bottom:0;width:min(340px,92vw);z-index:20;transform:translate(105%);visibility:hidden;transition:transform .25s ease,visibility 0s .25s;box-shadow:-14px 0 40px #02081a99}.panel.open{transform:none;visibility:visible;transition:transform .25s ease}.panel-head .icon-button{display:grid}}@media(max-width:600px){:root{--top-h: 50px}.topbar{gap:8px;padding:0 8px}.brand span,#playerName,#fullscreenButton,.hand-tag,.contract-chip,.my-score{display:none!important}.panel-name{display:grid!important}.icon-button{width:34px;height:34px}.welcome-card h1{font-size:52px}.plate{min-width:0;max-width:140px;gap:6px;padding:3px 9px 3px 3px}.avatar{width:30px;height:30px;font-size:14px}.avatar .ring{-webkit-mask:radial-gradient(circle,transparent 17px,#000 18px);mask:radial-gradient(circle,transparent 17px,#000 18px)}.plate .name{font-size:12.5px}.plate .meta{font-size:11px}.plate .tricks{font-size:12.5px}.plaque{left:8px;top:auto;bottom:var(--plaque-b, 200px);padding:6px 10px 6px 6px;min-width:0;column-gap:7px;row-gap:4px;border-radius:12px}.medal{width:36px;height:36px}.medal .suit{width:21px;height:21px}.plaque-text b{font-size:16px}.plaque-text span{font-size:11px;max-width:80px}.progress{max-width:96px;gap:2px}.progress i{width:6px;height:9px}.peek-button{padding:4px 6px;font-size:11px}.bid-grid button{height:42px;font-size:20px}.koz-grid button .suit{width:32px;height:32px}.result-head h2{font-size:27px}}@media(max-height:500px){:root{--top-h: 42px}.topbar{gap:8px}.brand{font-size:23px}.brand svg{width:30px;height:30px}.icon-button{width:32px;height:32px}#playerName{width:110px;padding:5px 8px}.welcome-card{padding:12px 18px 14px;gap:7px}.welcome-card h1{font-size:40px}.welcome-fan{display:none}.primary,.secondary{min-height:38px;padding:8px 16px}.plate{min-width:0;max-width:136px;gap:6px;padding:2px 9px 2px 2px}.avatar{width:28px;height:28px;font-size:13px}.avatar .ring{-webkit-mask:radial-gradient(circle,transparent 16px,#000 17px);mask:radial-gradient(circle,transparent 16px,#000 17px)}.plate .name{font-size:12px}.plate .meta{font-size:11px}.plaque{left:8px;top:8px;padding:5px 9px 5px 5px;min-width:0;column-gap:7px;row-gap:3px;border-radius:12px}.medal{width:32px;height:32px}.medal .suit{width:19px;height:19px}.plaque-text b{font-size:15px}.plaque-text span{font-size:10.5px}.progress i{width:6px;height:8px}.bid-panel,.koz-panel{padding:8px 10px 10px;width:min(560px,calc(100% - 20px))}.bid-head{margin-bottom:6px}.bid-head b{font-size:18px}.bid-grid button{height:34px;font-size:18px}.pass-button{height:34px;margin-top:6px}.koz-grid button{padding:6px 4px}.koz-grid button .suit{width:26px;height:26px}.result-head{padding:10px 16px 8px}.result-head h2{font-size:24px}.result-body{padding:8px 12px 12px;gap:8px}.result td{padding:5px 6px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
