@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&family=Fraunces:ital,wght@0,600;0,700;1,600&display=swap');
:root{--bg:#171429;--panel:#252039;--border:#49405d;--text:#fff5e0;--muted:#c1b7d1;--gold:#ffcf77;--mint:#84efd0}
body{font-family:Nunito,system-ui,sans-serif;background:radial-gradient(ellipse at 10% 0,#3d285366,transparent 55%),radial-gradient(ellipse at 95% 75%,#214c4966,transparent 60%),var(--bg)}
.brand,.home h1,.entry h2,dialog h2,.game-title,.champion-banner h2,.table-message h2{font-family:Fraunces,Georgia,serif;letter-spacing:-1px}.brand{letter-spacing:-2px}.home h1{font-weight:600}.home h1 em{font-family:Fraunces,Georgia,serif}.entry{background:linear-gradient(145deg,#352b49,#241f34);border-color:#5e4d71;box-shadow:0 20px 70px #0003}.entry input{background:#171429aa}.entry .colors{display:grid;grid-template-columns:repeat(8,1fr);gap:10px}.color{width:25px;height:25px;min-width:0;min-height:0}.entry input{font-size:16px}.primary{background:linear-gradient(#ffdc8f,#f4b94f);box-shadow:0 4px 0 #a9762c,0 8px 18px #0002;color:#362232;font-weight:900;min-height:46px;font-size:14px;border-radius:12px;transition:filter .15s,transform .15s}.primary:hover:enabled{filter:brightness(1.07);transform:translateY(-2px)}.primary:active:enabled{transform:translateY(2px);box-shadow:0 1px 0 #a9762c}.secondary{background:#3b3152;border-color:#67577d;border-radius:10px;min-height:44px;font-weight:800}.quiet{min-height:44px}.hero-card{animation:card-bob 5s ease-in-out infinite}.hero-card.black{animation-delay:-1s}.hero-card.back{animation:none}.hero-cards .hero-card>span{font-family:Georgia,serif}.facts small{font-size:9px}.home{min-height:800px}dialog{background:#292139}dialog h3{color:var(--gold)}.rank-order{background:#1b152a}#toast{background:#fff0cc;color:#362232;font-weight:800;border:2px solid #f4c86b;z-index:100}
.in-game header{height:74px;max-width:1100px}.in-game main{max-width:1000px;padding:0 24px}.in-game footer{max-width:1000px;margin-top:20px}.game-top{margin:22px 0 15px;gap:12px}.game-title{font-size:26px;margin:6px 0}.game-title button{font-family:Nunito,sans-serif;font-size:20px;font-weight:900;letter-spacing:2px;min-height:44px}.game-tools{flex-direction:row;align-items:center;gap:16px}.game-tools .secondary{padding:9px 14px}.round-strip{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #554365;background:#282137;padding:12px 18px;border-radius:14px;box-shadow:0 5px 20px #0002}#roundInfo{display:flex;gap:20px;font-size:12px;color:var(--muted)}#roundInfo b{color:var(--text);font-weight:900}.table-tag{font-size:10px;letter-spacing:2px;color:var(--gold);white-space:nowrap}
.arena{position:relative;isolation:isolate;height:650px;max-width:900px;margin:5px auto 0}.arena .table{display:block;position:absolute;inset:80px 64px 75px;width:auto;min-height:0;border:14px solid #88583d;border-radius:49%;padding:0;background:radial-gradient(ellipse at 45% 35%,#3c9d81,#246b59 65%,#174e45);box-shadow:0 0 0 3px #e3ad73,0 0 0 10px #593d38,0 0 0 13px #2b212e,0 25px 50px #0006,inset 0 0 45px #0d433c}
.felt-stitch{position:absolute;inset:11px;border:1px dashed #b1e1ac66;border-radius:49%;pointer-events:none}.table-mark{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);text-align:center;font:700 45px Fraunces,Georgia,serif;color:#dfedd2;opacity:.11;white-space:nowrap;letter-spacing:-2px}.table-mark span{display:block;font:800 9px Nunito,sans-serif;letter-spacing:5px;margin-top:10px}.felt-suit{position:absolute;font:70px Georgia,serif;opacity:.08;color:#c6f8d9}.suit-one{left:15%;top:30%}.suit-two{right:15%;bottom:25%}.seats{position:absolute;inset:0;z-index:6;pointer-events:none}.seat{position:absolute;width:112px;transform:translate(-50%,-50%);text-align:center;transition:left .4s,top .4s;--color:var(--gold)}.avatar-wrap{position:relative;width:83px;height:90px;margin:auto;filter:drop-shadow(0 6px 4px #0004)}.avatar{width:100%;height:100%;overflow:visible}.seat.active .avatar{animation:avatar-breathe 2s ease-in-out infinite}.seat-info{position:relative;margin-top:-5px;padding:7px 5px 6px;border:1px solid #655079;background:linear-gradient(135deg,#3d304d,#271f36);border-radius:13px;box-shadow:0 4px 0 #130f21,0 7px 14px #0003}.seat.my-seat .seat-info{border-color:var(--color)}.seat.active .seat-info{border-color:var(--gold);box-shadow:0 0 0 2px #ffcf7733,0 0 24px #ffd78333}.seat.active .avatar-wrap:before{content:'';position:absolute;inset:8px -4px 0;border-radius:50%;background:radial-gradient(ellipse,#ffdd8733,transparent 70%);z-index:-1}.player-name{font-size:12px;font-weight:900;color:#fff5e0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:100%}.player-name span{font-size:8px;color:var(--color);margin-left:3px}.hearts{font-size:24px;line-height:1.15;letter-spacing:1px;display:flex;justify-content:center;gap:3px;margin-top:3px}.hearts .alive{color:#ff708f;text-shadow:0 2px 0 #9b344f,0 0 12px #ff507533}.hearts .lost{color:#67526d;text-shadow:none}.seat-score{font-size:9px;color:#d4c8df;margin-top:4px;white-space:nowrap}.seat-score b{color:#ffdd9a;font-size:11px}.seat.out .avatar-wrap{filter:grayscale(1);opacity:.6}.seat.out .seat-info{background:#292332;opacity:.7}.thinking{position:absolute;right:-3px;top:0;color:#32203a;background:var(--gold);padding:0 7px 4px;border-radius:10px;font-weight:900;font-size:16px;animation:thinking-bob 1s ease-in-out infinite}
.closed-hand{position:absolute;left:50%;top:64px;width:50px;height:30px;transform:translateX(-50%);z-index:3}.mini-back{position:absolute;width:20px;height:29px;left:calc(50% + (var(--i) - (var(--total) - 1)/2)*11px);transform:translateX(-50%) rotate(calc((var(--i) - (var(--total) - 1)/2)*9deg));border:1.5px solid #ffe1a1;border-radius:3px;background:repeating-linear-gradient(45deg,#8162ba 0 2px,#533d82 2px 5px);box-shadow:0 2px 4px #0005}.closed-hand b{position:absolute;right:-6px;bottom:-3px;background:#21172d;color:#ffe5a6;border:1px solid #e3b56c;border-radius:8px;min-width:16px;height:16px;font-size:9px;line-height:14px;z-index:7}.closed-hand:empty{display:none}.won-pile{position:absolute;right:-26px;top:90px;width:29px;height:46px;filter:drop-shadow(0 3px 2px #0004)}.won-back{position:absolute;top:calc(var(--i)*-3px);left:calc(var(--i)*2px);width:23px;height:31px;background:repeating-linear-gradient(-45deg,#4279a3 0 2px,#274b74 2px 5px);border:1px solid #eed399;border-radius:3px}.won-pile strong{position:absolute;top:12px;right:-3px;min-width:21px;height:21px;line-height:19px;background:#ffcf77;color:#3b2434;border:1px solid #fff1c7;border-radius:50%;font-size:12px}.won-pile small{position:absolute;left:0;top:35px;color:#ffe1ab;font-size:8px;font-weight:900}.table-content{position:absolute;inset:0;z-index:4;pointer-events:none;width:auto!important}.table-message{position:absolute;left:50%;top:48%;width:240px;max-width:60%;transform:translate(-50%,-50%);text-align:center}.table-message h2{font-size:27px;color:#fff2cb;margin:12px 0}.table-message p{font-size:13px;line-height:1.6;margin:10px 0;color:#c1e9d5}.lobby-symbol{letter-spacing:8px;color:#ffe0a0;font-size:20px}.invite-code{display:block;margin-top:16px;color:#ffe3a5;font-weight:900;font-size:22px;letter-spacing:4px}.center-vira{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);z-index:5;display:flex;flex-direction:column;align-items:center;gap:7px;pointer-events:none}.vira-tag{font-size:9px;font-weight:900;letter-spacing:2px;color:#ecf7d8}.center-vira .card{width:66px;height:94px;box-shadow:0 8px 15px #0004,0 0 0 4px #c9ebd922;font-size:40px}.center-vira .corner{font-size:13px}.trump-tag{font-size:10px;font-weight:800;color:#203e36;background:#d5edc6;border:1px solid #f5e7a9;border-radius:8px;padding:3px 8px;white-space:nowrap}.trump-tag b{font-size:13px;color:#805a23}.table-play{position:absolute;transform:translate(-50%,-50%);text-align:center;width:76px}.table-play>.card{width:66px;height:94px;transform:rotate(var(--tilt));font-size:40px}.table-play .corner{font-size:14px}.table-play small{display:block;font-size:9px;font-weight:800;color:#e5f5dc;text-shadow:0 1px 3px #123f35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:5px;max-width:80px}.card{font-family:Georgia,serif;border-radius:8px;background:linear-gradient(135deg,#fff8e6,#e9debd);color:#253e36}.card.red{color:#cc405b}.card.manilha{border-color:#ffce6a;box-shadow:0 0 0 2px #ffe7a14d,0 0 20px #ffca6d66}.card-back{background:repeating-linear-gradient(45deg,#7f5ba8 0 3px,#503778 3px 7px);border:3px solid #f9dc9a;box-shadow:inset 0 0 0 4px #503778,0 6px 10px #0003;position:relative}.card-back span{display:block;font:42px Georgia,serif;color:#ffe4a4;text-shadow:0 2px #302447}.card-back:before{content:'';position:absolute;inset:8px;border:1px solid #f3d9a1aa;border-radius:3px}
.decision{display:flex;gap:13px;align-items:center;border:1px solid #5e506e;background:linear-gradient(120deg,#332843,#251f35);padding:13px 16px;border-radius:16px;max-width:660px;margin:8px auto 0;box-shadow:0 6px 20px #0002;min-height:82px}.decision>div:nth-child(2){min-width:0;flex:1}.decision strong{display:block;font-size:16px;font-weight:900;color:#f8ead7;overflow-wrap:anywhere}.decision #decisionHint{display:block;font-size:11px;line-height:1.45;margin-top:3px;color:var(--muted)}.timer-ring{--progress:100%;width:50px;height:50px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;background:conic-gradient(var(--mint) var(--progress),#50425f 0);position:relative;isolation:isolate}.timer-ring:before{content:'';position:absolute;inset:4px;background:#261f35;border-radius:50%;z-index:-1}.timer-ring span{font-size:21px;font-weight:900;font-variant-numeric:tabular-nums;color:var(--mint)}.turn-badge{background:#ffcf77;color:#3b2336;font-size:9px;font-weight:900;letter-spacing:1px;border-radius:7px;padding:7px;white-space:nowrap}.my-turn{border-color:#d9ad64;box-shadow:0 0 24px #ffcd7311}.urgent .timer-ring{background:conic-gradient(#ff788e var(--progress),#50425f 0)}.urgent .timer-ring span{color:#ff879c}.urgent.my-turn{border-color:#ff8098;animation:urgency 1s ease-in-out infinite}.action-area{display:flex;flex-direction:column;gap:12px;min-height:64px;margin:14px auto 0;max-width:660px;text-align:center}.bid-prompt{font-size:14px;font-weight:900}.bid-buttons{gap:9px;max-width:100%}.bid-buttons button{width:48px;height:48px;font-size:20px;color:#fff0c8;border-color:#8b6ba8;background:linear-gradient(145deg,#635083,#45345f);box-shadow:0 3px 0 #1b122a}.bid-buttons button:hover:enabled{border-color:#ffcf77;background:#735a91}.bid-buttons button:active:enabled{transform:translateY(3px);box-shadow:none}.game-note{font-size:12px;line-height:1.5;color:#c8bcd4;margin:5px 0}.trick-result{font-family:Fraunces,Georgia,serif;color:#ffdf92;font-size:21px}.hand-section{border:1px solid #584467;background:linear-gradient(145deg,#31253fbb,#211b2f);border-radius:20px;padding:16px 20px 0;margin:14px auto 0;max-width:660px}.hand-title{align-items:center;margin:0;gap:8px}.hand-title>div{display:flex;flex-direction:column;gap:4px}.hand-title .eyebrow{font-weight:900;letter-spacing:2px}#handHint{font-size:10px;color:var(--muted)}#toggleHand{font-size:11px;padding:8px;color:#d1bbdf}.hand{display:flex;justify-content:flex-start;gap:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;margin:0;padding:26px 10px 22px;min-height:154px;scrollbar-width:thin;scrollbar-color:#806195 transparent;scroll-snap-type:x proximity;overscroll-behavior-x:contain}.hand-card{flex:0 0 auto;scroll-snap-align:center;position:relative;transition:transform .2s;margin-right:9px;animation:hand-deal .45s both;animation-delay:calc(min(var(--deal-index),8)*35ms)}.hand-card .card{width:76px;height:110px;font-size:43px;cursor:pointer}.hand-card .corner{font-size:16px}.hand-card .card:disabled[aria-label]{filter:none;opacity:.86;cursor:default}.hand-card.selected{transform:translateY(-14px);filter:drop-shadow(0 0 8px #ffd58166)}.hand-card.selected .card{border-color:#ffd581;box-shadow:0 0 0 2px #ffd581}.hand-card .card:enabled:hover{transform:none}.hand-card:last-child{margin-right:0}.private-backs{display:flex;gap:9px}.private-backs .card{width:76px;height:110px;flex-shrink:0}.play-confirm{display:flex;justify-content:center;padding-bottom:14px;min-height:0}.play-confirm:empty{display:none}.play-confirm .primary{min-width:180px}.results{margin:20px auto;max-width:660px;background:#2a2138;border-color:#5e496f;border-radius:16px;padding:20px}.results h2{font:600 20px Fraunces,Georgia,serif;color:#ffdf9a}.result-scroll{overflow-x:auto}table{font-size:13px}td,th{border-color:#51415f;font-variant-numeric:tabular-nums;white-space:nowrap}td:first-child{max-width:150px;overflow:hidden;text-overflow:ellipsis}td:last-child{color:#ff819b;font-weight:900;font-size:16px}.time-rule{margin:18px 0;font-size:10px;color:#aa98ba}.champion-banner{text-align:center;width:100%;padding:10px}.champion-banner>span{font-size:38px;display:block;animation:thinking-bob 2s ease-in-out infinite}.champion-banner h2{font-size:27px;color:#ffdb91}.champion-banner p{font-size:13px;color:var(--muted)}.in-game .edition{font-size:8px}.is-lobby .table-mark{display:none}
@keyframes avatar-breathe{50%{transform:translateY(-3px)}}@keyframes thinking-bob{50%{transform:translateY(-4px)}}@keyframes card-bob{50%{translate:0 -7px}}@keyframes hand-deal{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@keyframes urgency{50%{box-shadow:0 0 0 3px #ff788e22}}
@media(min-width:1000px){.arena{height:640px}.arena .table{inset:70px 110px 65px}.seat{width:124px}.avatar-wrap{width:90px;height:98px}.closed-hand{top:71px}.won-pile{top:99px}.table-play{width:90px}.table-play>.card{width:75px;height:106px}.center-vira .card{width:74px;height:104px}}
@media(max-width:650px){header{height:72px;padding:0 18px}.home{min-height:0}.home h1{font-size:42px}.entry .colors{gap:9px}.entry{padding:25px}.color{width:24px;height:24px}.in-game main{padding:0 12px}.in-game header{height:62px;padding:0 16px}.in-game header .brand{font-size:25px}.in-game header .quiet{font-size:11px}.game-top{margin:12px 0 8px}.game-title{font-size:22px;margin:0}.game-title button{font-size:17px}.game-top .eyebrow{font-size:8px;letter-spacing:1.5px}.game-tools{gap:10px}.game-tools .secondary{font-size:11px;padding:9px 12px}.game-tools .quiet{font-size:11px}.round-strip{padding:9px 11px;border-radius:10px;gap:5px}#roundInfo{gap:14px;font-size:10px}.table-tag{font-size:7px;letter-spacing:1px}.arena{height:575px;margin:2px -2px 0}.arena .table{inset:72px 38px 62px;border-width:10px;border-radius:48%;box-shadow:0 0 0 2px #dda573,0 0 0 7px #593b36,0 0 0 9px #221a2d,0 16px 30px #0005,inset 0 0 30px #104638}.felt-stitch{inset:9px}.table-mark{font-size:29px}.table-mark span{font-size:6px;letter-spacing:2px}.felt-suit{font-size:46px}.seat{width:78px}.avatar-wrap{width:61px;height:66px}.seat-info{border-radius:10px;padding:5px 3px}.player-name{font-size:10px}.player-name span{font-size:7px;display:none}.my-seat .player-name:after{content:' · eu';font-size:8px;color:var(--color)}.hearts{font-size:20px;letter-spacing:0;gap:2px;line-height:1.15}.seat-score{font-size:7px;margin-top:3px}.seat-score b{font-size:9px}.thinking{font-size:13px;right:0;top:0}.closed-hand{top:45px;width:39px;height:24px}.mini-back{width:15px;height:22px;border-width:1px;left:calc(50% + (var(--i) - (var(--total) - 1)/2)*8px)}.closed-hand b{right:-5px;bottom:-2px;min-width:14px;height:14px;font-size:8px;line-height:12px}.won-pile{right:-14px;top:65px;width:21px;height:40px}.won-back{width:17px;height:24px;left:calc(var(--i)*1px);top:calc(var(--i)*-2px)}.won-pile strong{top:10px;right:-3px;min-width:18px;height:18px;line-height:16px;font-size:10px}.won-pile small{top:28px;font-size:7px}.table-play{width:53px}.table-play>.card{width:46px;height:68px;font-size:28px;border-radius:5px}.table-play .corner{font-size:10px;left:4px;top:4px}.table-play .bottom{left:auto;top:auto;right:4px;bottom:4px}.table-play small{font-size:8px;max-width:55px;margin-top:4px}.center-vira{gap:5px}.center-vira .card{width:48px;height:70px;font-size:29px;border-radius:5px}.center-vira .corner{font-size:10px;left:4px;top:4px}.center-vira .bottom{left:auto;top:auto;right:4px;bottom:4px}.vira-tag{font-size:7px;letter-spacing:2px}.trump-tag{font-size:8px;padding:2px 5px;border-radius:5px}.trump-tag b{font-size:10px}.table-message{max-width:54%;width:185px}.table-message h2{font-size:22px;line-height:1.1}.table-message p{font-size:11px}.lobby-symbol{font-size:17px;letter-spacing:4px}.invite-code{font-size:17px;letter-spacing:3px;margin-top:12px}.decision{margin-top:0;padding:11px 12px;gap:10px;min-height:80px;border-radius:13px}.decision strong{font-size:14px}.decision #decisionHint{font-size:10px}.timer-ring{width:44px;height:44px}.timer-ring span{font-size:19px}.turn-badge{font-size:8px;padding:6px;letter-spacing:.4px}.action-area{margin-top:12px;gap:8px;min-height:48px}.game-note{font-size:11px}.bid-prompt{font-size:13px}.bid-buttons{gap:8px}.bid-buttons button{width:46px;height:46px;min-width:44px;font-size:18px}.hand-section{padding:10px 12px 0;border-radius:15px;margin-top:12px}.hand-title .eyebrow{font-size:9px}#handHint{font-size:9px}#toggleHand{font-size:10px}.hand{padding:24px 5px 18px;min-height:140px}.hand-card{margin-right:8px}.hand-card .card,.private-backs .card{width:65px;height:96px;font-size:36px}.hand-card .corner{font-size:13px}.play-confirm{padding-bottom:14px}.results{padding:15px}.results h2{font-size:18px}td,th{padding:11px 6px;font-size:11px}td:last-child{font-size:14px}.in-game footer{padding:18px 16px;gap:7px}.time-rule{font-size:9px}.trick-result{font-size:19px}}
@media(max-width:370px){.arena{height:545px}.seat{width:70px}.avatar-wrap{width:54px;height:60px}.closed-hand{top:40px}.player-name{font-size:9px}.hearts{font-size:18px}.seat-score{font-size:6.5px}.won-pile{top:59px;right:-13px}.table-play>.card{width:42px;height:63px;font-size:26px}.table-play .corner{font-size:9px}.center-vira .card{width:43px;height:63px}.table-tag{display:none}.turn-badge{display:none}.entry .colors{gap:5px}.color{width:22px;height:22px}.home h1{font-size:37px}.game-tools{gap:6px}.game-title button{font-size:15px}.game-tools .secondary{padding:8px}.hand-card .card,.private-backs .card{width:60px;height:90px}.hand{min-height:134px}}
@media(orientation:landscape) and (max-height:550px){.in-game main{max-width:850px}.arena{height:520px;max-width:650px}.arena .table{inset:70px 65px}.seat{width:82px}.avatar-wrap{width:59px;height:65px}.closed-hand{top:44px}.hearts{font-size:19px}.player-name{font-size:10px}.seat-score{font-size:8px}.won-pile{top:65px}.table-play>.card{width:48px;height:70px;font-size:28px}.table-play .corner{font-size:10px}.center-vira .card{width:48px;height:70px;font-size:28px}}
#tableContent.table-content{position:absolute;inset:0;width:auto;height:auto}
#vira.center-vira .card{width:66px;height:94px;font-size:40px}
.game-top>div:first-child{min-width:0;flex:1}.game-tools{flex-shrink:0}
@media(max-width:650px){.game-top{display:grid;grid-template-columns:minmax(0,1fr) auto}.game-title{font-size:18px;line-height:1.1}.game-title button{display:block;font-size:16px;letter-spacing:1.5px;padding:0;text-align:left;min-height:32px}.game-tools .secondary{padding:8px 10px}.game-tools{gap:10px}.arena{margin-bottom:18px}#vira.center-vira .card{width:48px;height:70px;font-size:29px}}
@media(max-width:370px){#vira.center-vira .card{width:43px;height:63px;font-size:26px}}
@media(max-width:650px){.avatar-wrap{width:56px;height:60px}.closed-hand{top:40px}.won-pile{top:59px}.table-play{left:calc(var(--mx)*1%)!important;top:calc(var(--my)*1%)!important;width:44px}.table-play>.card{width:40px;height:58px;font-size:25px}.table-play .corner{font-size:8px;left:3px;top:3px}.table-play .bottom{left:auto;top:auto;right:3px;bottom:3px}.table-play small{display:none}}
@media(max-width:370px){.avatar-wrap{width:52px;height:56px}.closed-hand{top:37px}.won-pile{top:55px}.table-play>.card{width:38px;height:56px;font-size:24px}}
@media(min-width:651px){.table-play>.card{width:64px;height:90px;font-size:36px}.arena{margin-bottom:28px}}
@media(min-width:651px) and (max-width:999px){.table-play>.card{width:50px;height:72px;font-size:29px}.table-play .corner{font-size:11px}}
@media(max-width:370px){.arena{height:620px}.table-play>.card{width:32px;height:48px;font-size:22px;transform:none}.table-play .corner{font-size:7px}.table-play{width:36px}}
.card-flight{position:fixed;z-index:80;pointer-events:none;transform-style:preserve-3d}.flight-front,.flight-back{position:absolute;inset:0;width:100%;height:100%;backface-visibility:hidden}.flight-front>.card{width:100%!important;height:100%!important;transform:none!important}.flight-back{transform:rotateY(180deg)}.flight-back span{font-size:30px}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
