@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&display=swap');
.brand,.mini-brand,.home h1,.entry h2,.sheet-heading h2{font-family:'Bricolage Grotesque',Nunito,sans-serif;font-weight:800}.home h1{font-size:clamp(48px,5.4vw,79px);letter-spacing:-3.5px;line-height:1}.home h1 em{font-family:'Bricolage Grotesque',Nunito,sans-serif;font-style:normal;font-weight:800;color:#ffdb90}.home .intro>p{font-size:17px;line-height:1.7}.entry h2{font-size:36px;letter-spacing:-1.5px}.entry>p{font-size:15px}.entry label{font-size:14px;font-weight:800}.entry-note{font-size:12px}.entry .primary{font-size:17px;min-height:54px}.home-features>span{font-size:24px}.home-features small{font-size:10px}.home-scene{height:270px}.scene-card{width:114px;height:159px;animation:opening-deal .9s cubic-bezier(.15,.8,.25,1) both,scene-float 5s 1s ease-in-out infinite}.scene-cards{width:290px}.scene-back{left:12px;animation-delay:0s,1s}.scene-red{left:88px;animation-delay:.15s,1.15s}.scene-black{left:165px;animation-delay:.3s,1.3s}.scene-chip{width:58px;height:58px;font-size:28px}.chip-two{font-size:18px}.scene-caption{font-size:10px;padding:9px 14px}.scene-star{font-size:34px}.home .intro{animation:home-arrive .65s ease-out both}.home .entry{animation:home-arrive .65s .15s ease-out both}.home-sparkles span{opacity:.055}
#game{--toolbar:56px;--dock:210px}.game-top{padding:0 20px}.mini-brand{font-size:27px}#copyCode{font-size:12px;min-height:36px}#phaseLabel{font-size:12px}.icon-button{width:42px;height:42px;min-width:42px;min-height:42px;font-size:25px}.game-tools{gap:7px}#roundInfo{font-size:12px;gap:12px}.round-strip{padding:9px 12px}.manilha-order{font-size:9px;padding:7px 10px}.manilha-order>span{font-size:20px}.manilha-order b{font-size:12px}.table-mark{font-family:'Bricolage Grotesque',Nunito,sans-serif;font-size:70px}.table-mark span{font-size:9px}.player-name{font-size:var(--seat-font);line-height:1.15}.my-seat .player-name:after{font-size:9px}.seat-info{padding:5px 4px;border-radius:12px}.hearts{font-size:var(--heart-size);margin:3px 0}.seat-score{display:grid;grid-template-columns:1fr 1fr;gap:3px;font-size:10px;margin-top:4px;line-height:1}.score-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px 2px;border-radius:6px;background:#e0e7c511;border:1px solid #b1d7b51c;color:#c8dece}.score-chip small{font:900 8px Nunito,sans-serif;letter-spacing:.4px;white-space:nowrap}.score-chip b{font:900 23px/1 Nunito,sans-serif;color:#ffe5a1}.score-chip.achieved{background:#71e9c326;border-color:#83e6bd55}.score-chip.achieved b{color:#a7ffd8}.score-chip.achieved.on-target{border-color:#ffd77a88;background:#e2d48622}.score-chip.on-target b{color:#ffe79a}.won-pile{right:-23px;width:24px;height:38px}.won-back{width:18px;height:26px}.won-pile strong{font-size:11px;width:20px;min-width:20px;height:20px;line-height:18px}.won-pile small{font-size:8px;top:30px}.mini-back{width:17px;height:24px;left:calc(50% + (var(--i) - (var(--total) - 1)/2)*8px)}.closed-hand{width:42px;height:26px;top:calc(var(--avatar-h) - 19px)}.closed-hand b{font-size:9px;min-width:17px;height:17px;line-height:15px;right:-8px}.thinking{font-size:16px;padding:3px 7px 5px}.table-play .corner,#vira.center-vira .corner{font-size:calc(var(--play-w)*.27)}.table-play>.card,#vira.center-vira .card{font-size:calc(var(--play-w)*.7)}.vira-tag{font-size:10px}.trump-tag{font-size:10px;padding:3px 6px}.trump-tag b{font-size:12px}
.game-dock{grid-template-rows:46px minmax(0,1fr);padding:0 20px}.decision{height:46px;gap:11px}.timer-ring{width:36px;height:36px}.timer-ring span{font-size:18px}.decision strong{font-size:16px}.decision #decisionHint{font-size:12px}.turn-badge{font-size:10px;padding:5px 7px}.dock-score{font-size:16px;min-height:34px}.dock-score #myScore{font-size:13px}.dock-body{grid-template-columns:minmax(0,1fr) 235px;gap:20px;max-width:1100px}.hand-section{grid-template-rows:23px minmax(0,1fr) 25px}.hand-title{height:23px}.hand-title .eyebrow{font-size:11px}#handCount{font-size:12px}#toggleHand{font-size:19px;min-height:23px}#hand{--hand-card-width:76px;--hand-card-height:108px;gap:8px;padding:9px 0 0}.hand-card .card,.private-backs .card{width:var(--hand-card-width);height:var(--hand-card-height);font-size:43px}.hand-card .corner{font-size:16px;top:5px;left:6px}.hand-card .bottom{top:auto;left:auto;bottom:5px;right:6px}.private-backs{gap:8px}.hand-pager{height:25px;font-size:11px;gap:14px}.hand-pager button{height:25px;font-size:27px;min-width:44px}.action-area .primary,.play-confirm .primary{height:48px;min-height:48px;font-size:16px;border-radius:12px}.action-area .game-note{font-size:13px}.selection-hint{font-size:13px;padding:12px 8px}.bid-prompt{font-size:13px}.bid-picker{height:40px;gap:14px}.bid-picker button{width:40px;height:36px;font-size:26px}.bid-picker output{font-size:30px}.bid-limit{font-size:10px}.trick-result{font-size:17px}.score-line{font-size:14px;padding:12px}.score-line.head{font-size:11px}.score-line span:last-child{font-size:22px;font-weight:900;color:#9bf1c4}.score-line.head span:last-child{font-size:11px;color:inherit}.score-line .score-hearts{font-size:20px}
.wide-seats .seat{display:flex;align-items:center;gap:3px}.wide-seats .avatar-wrap{margin:0;flex:0 0 auto}.wide-seats .seat-info{flex:1;min-width:0;margin:0;padding:4px 3px}.wide-seats .closed-hand{left:20%;top:calc(var(--avatar-h)*.58)}.wide-seats .won-pile{top:14px;right:-18px}.wide-seats .score-chip{padding:3px 1px;gap:2px}.wide-seats .score-chip b{font-size:19px}.wide-seats .score-chip small{font-size:7px;letter-spacing:0}.dense-seats .seat-info{padding:3px}.dense-seats .seat-score{gap:2px;margin-top:2px}.dense-seats .score-chip{padding:3px 1px;gap:2px}.dense-seats .score-chip small{font-size:7px;letter-spacing:0}.dense-seats .score-chip b{font-size:17px}.dense-seats .hearts{margin:2px 0}.dense-seats .won-pile{right:-16px;scale:.8;transform-origin:left top}.dense-seats .closed-hand{scale:.75;transform-origin:center top}
.trick-announcement{position:absolute;inset:0;z-index:25;display:grid;place-items:center;pointer-events:none;animation:winning-stage 4.2s .7s both}.winner-panel{position:relative;min-width:260px;max-width:calc(100% - 32px);padding:24px 34px 25px;text-align:center;border-radius:25px;border:2px solid #ffdc87;background:radial-gradient(ellipse at 50% 0,#436c4b,#153d31 75%);box-shadow:0 0 0 6px #ffe4a115,0 22px 70px #001d25cc,0 0 90px #ffe6a133;color:#fff0bc;isolation:isolate}.winner-panel:before{content:'✦';font:150px Georgia,serif;position:absolute;left:50%;top:40%;translate:-50% -50%;color:#ffe09a16;z-index:-1;animation:winner-rays 5s linear infinite}.winner-kicker{display:block;font-size:11px;font-weight:900;letter-spacing:2px;color:#dfdcb7}.winner-medal{display:block;font:64px/1.1 Georgia,serif;color:#ffdc82;margin:5px 0;text-shadow:0 3px 0 #a07b32}.winner-name{display:block;font:800 clamp(25px,4vw,44px)/1.05 'Bricolage Grotesque',Nunito,sans-serif;color:#ffe39a;max-width:500px;overflow-wrap:anywhere}.winner-panel h2{font:900 clamp(18px,2.7vw,29px)/1.2 Nunito,sans-serif;margin:6px 0 15px;color:#fff4db}.winner-progress{display:flex;justify-content:center;align-items:center;gap:15px;color:#c8e1cc;font-size:11px;font-weight:900}.winner-progress span{display:flex;align-items:center;gap:7px}.winner-progress b{font-size:30px;color:#a6f4c8}.winner-progress i{font-size:25px;font-style:normal;opacity:.35}.winner-ribbon{display:block;margin:15px auto -35px;background:linear-gradient(#ffe394,#eeb859);border:1px solid #ffe9af;border-radius:8px;color:#33432b;padding:7px 15px;font-size:11px;font-weight:900;letter-spacing:1px;box-shadow:0 4px 10px #001f2255}.tie-panel{border-color:#b2e8db}.tie-panel .winner-medal{color:#a4e9d6}.tie-panel p{font-size:13px;color:#cee0d0;margin:0}
@keyframes opening-deal{from{opacity:0;transform:translate3d(90px,40px,0) rotate(12deg) scale(.8)}to{opacity:1;transform:translate3d(0,0,0) rotate(0) scale(1)}}@keyframes home-arrive{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}@keyframes winning-stage{0%{opacity:0;transform:scale(.7)}12%{opacity:1;transform:scale(1.05)}20%,84%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.08)}}@keyframes winner-rays{to{rotate:180deg}}
@media(max-width:650px){#game{--toolbar:51px;--dock:214px}.game-top{padding:0 10px}.mini-brand{font-size:23px}.icon-button{width:35px;height:36px;min-width:35px;min-height:36px;font-size:22px}#copyCode{font-size:9px;min-height:30px}.game-tools{gap:4px}.game-identity{gap:7px}.round-strip{padding:6px 8px}#roundInfo{font-size:10px;gap:7px}.manilha-order{font-size:7px;gap:5px;padding:4px 7px}.manilha-order>span{font-size:16px}.manilha-order b{font-size:10px}.game-dock{grid-template-rows:44px minmax(0,1fr);padding:0 10px}.decision{height:44px;gap:8px}.timer-ring{width:33px;height:33px}.timer-ring span{font-size:16px}.decision strong{font-size:13px}.decision #decisionHint{font-size:10px}.turn-badge{font-size:7px;padding:4px}.dock-score{font-size:12px;min-height:30px}.dock-score #myScore{font-size:11px}.dock-body{grid-template-columns:minmax(0,1fr) 130px;gap:10px}.hand-section{grid-template-rows:23px minmax(0,1fr) 28px}.hand-title .eyebrow{font-size:10px}#hand{--hand-card-width:64px;--hand-card-height:94px;gap:8px}.hand-card .card,.private-backs .card{font-size:36px}.hand-card .corner{font-size:13px}.hand-pager{height:28px;font-size:10px}.hand-pager button{height:28px;font-size:27px;min-width:40px}.action-area .primary,.play-confirm .primary{font-size:13px;height:45px;min-height:45px}.action-area .game-note,.selection-hint{font-size:11px}.selection-hint{padding:10px 5px}.bid-prompt{font-size:11px}.bid-picker{height:35px;gap:8px}.bid-picker button{width:33px;height:31px;font-size:23px}.bid-picker output{font-size:27px}.bid-limit{font-size:9px}.trick-result{font-size:14px}.score-line{font-size:12px;padding:9px}.score-line span:last-child{font-size:20px}.score-line .score-hearts{font-size:17px}.home h1{font-size:52px;letter-spacing:-2.5px}.home .intro>p{font-size:16px}.entry h2{font-size:32px}.home-scene{height:260px}.scene-card{width:105px;height:148px}.scene-cards{width:265px}.scene-red{left:80px}.scene-black{left:150px}.scene-back{left:15px;padding-top:34px}.scene-card span{font-size:59px}.home-features>span{font-size:20px}.home-features small{font-size:9px}.winner-panel{min-width:240px;padding:19px 22px 22px}.winner-medal{font-size:53px}.winner-name{font-size:32px}.winner-panel h2{font-size:22px}.winner-kicker{font-size:10px}.winner-progress b{font-size:27px}.winner-ribbon{font-size:10px}}
@media(max-width:370px){#game{--toolbar:48px;--dock:202px}.mini-brand{font-size:20px}.icon-button{width:31px;height:34px;min-width:31px;min-height:34px;font-size:20px}.game-tools{gap:3px}.game-identity{gap:5px}#copyCode{font-size:8px;min-height:29px}.game-top{padding:0 7px}.game-dock{padding:0 8px}.dock-body{grid-template-columns:minmax(0,1fr) 120px;gap:8px}#hand{--hand-card-width:56px;--hand-card-height:82px}.hand-card .card,.private-backs .card{font-size:33px}.hand-card .corner{font-size:12px}.decision strong{font-size:12px}.decision #decisionHint{font-size:8px}.hand-title .eyebrow{font-size:9px}.score-chip b{font-size:20px}.dense-seats .score-chip{flex-direction:row;gap:2px}.dense-seats .score-chip small{font-size:6px}.dense-seats .score-chip b{font-size:14px}.dense-seats .seat-score{gap:1px}.home h1{font-size:45px}.home-features>span{font-size:18px}.home-features small{font-size:8px}.home-scene{height:245px}.scene-card{width:95px;height:137px}.scene-cards{width:245px}.scene-red{left:75px}.scene-black{left:136px}.scene-back{left:16px}.scene-chip{width:48px;height:48px}.entry label{font-size:13px}.winner-name{font-size:28px}.winner-panel{min-width:220px}.winner-medal{font-size:44px}.winner-panel h2{font-size:20px}}
@media(orientation:landscape) and (max-height:550px){#game{--toolbar:44px;--dock:148px}.game-top{padding:0 13px}.mini-brand{font-size:23px}.icon-button{width:35px;height:35px;min-width:35px;min-height:35px;font-size:22px}#phaseLabel{font-size:10px}.game-dock{grid-template-rows:35px minmax(0,1fr);padding:0 15px}.decision{height:35px;gap:9px}.timer-ring{width:28px;height:28px}.timer-ring span{font-size:15px}.decision strong{font-size:13px}.decision #decisionHint{display:none}.turn-badge{font-size:8px}.dock-score{min-height:28px;font-size:13px}.dock-body{grid-template-columns:minmax(0,1fr) 220px;gap:15px;max-width:1000px}.hand-section{grid-template-rows:0 minmax(0,1fr) 21px}.hand-title{height:0}.hand-title #toggleHand{font-size:18px;top:5px;min-height:26px}#hand{--hand-card-width:62px;--hand-card-height:87px;padding:4px 0 0;gap:8px}.hand-card .card,.private-backs .card{font-size:35px}.hand-card .corner{font-size:13px}.hand-pager{height:21px;font-size:10px}.hand-pager button{height:21px;line-height:18px;font-size:25px;min-width:38px}.play-confirm:not(:empty){min-width:125px}.action-area .primary,.play-confirm .primary{height:44px;min-height:44px;font-size:13px}.action-area .game-note,.selection-hint{font-size:11px}.bid-prompt{font-size:11px}.bid-picker{height:30px;gap:8px}.bid-picker button{width:34px;height:28px;font-size:22px}.bid-picker output{font-size:25px}.trick-result{font-size:14px}.selection-hint{padding:9px 6px}.manilha-order{padding:4px 7px;font-size:7px}.manilha-order>span{font-size:15px}.manilha-order b{font-size:10px}#roundInfo{font-size:10px}.round-strip{padding:6px 8px}.vira-tag{font-size:8px}.trump-tag{font-size:8px;padding:2px 5px}.trump-tag b{font-size:10px}.thinking{font-size:13px}.winner-panel{padding:9px 28px 15px;min-width:275px;border-radius:17px}.winner-medal{position:absolute;left:17px;top:18px;font-size:45px}.winner-name{font-size:32px;margin-top:5px;padding:0 25px}.winner-panel h2{font-size:21px;margin:2px 0 7px}.winner-kicker{font-size:9px}.winner-progress{font-size:9px;gap:10px}.winner-progress b{font-size:23px}.winner-ribbon{margin-top:8px;margin-bottom:-25px;font-size:9px;padding:5px 12px}.tie-panel p{font-size:11px}.winner-panel:before{font-size:110px}}
@media(orientation:landscape) and (max-height:350px){#game{--toolbar:40px;--dock:138px}#hand{--hand-card-width:56px;--hand-card-height:78px}.game-dock{grid-template-rows:33px minmax(0,1fr)}.decision{height:33px}.wide-seats .score-chip b{font-size:16px}.wide-seats .score-chip small{font-size:6px}.wide-seats .seat-info{padding:2px}.wide-seats .hearts{margin:1px 0}.wide-seats .seat-score{margin-top:2px}.dense-seats .score-chip b{font-size:15px}.winner-medal{font-size:34px;top:21px}.winner-name{font-size:27px}.winner-panel h2{font-size:18px}.winner-panel{padding:7px 25px 11px}.winner-kicker{font-size:8px}.winner-progress b{font-size:20px}}
.wide-seats .seat-info{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:3px 2px}.wide-seats .player-name{grid-column:1;max-width:100%;text-align:left;font-size:11px}.wide-seats .hearts{grid-column:2;font-size:15px;margin:0;gap:0}.wide-seats .seat-score{grid-column:1/3;margin:0}.wide-seats .my-seat .player-name:after{display:none}.wide-seats.dense-seats .player-name{font-size:9px}.wide-seats.dense-seats .hearts{font-size:12px}.wide-seats .score-chip{flex-direction:column}.wide-seats .score-chip small{font-size:7px}.wide-seats .score-chip b{font-size:20px}
@media(orientation:landscape) and (max-width:650px){.wide-seats .seat-info{gap:2px 1px}.wide-seats .player-name{font-size:10px}.wide-seats .hearts{font-size:12px}.wide-seats .score-chip b{font-size:16px}.wide-seats .score-chip small{font-size:6px}.wide-seats.dense-seats .avatar-wrap{position:absolute;left:-7px;top:6px;width:20px;height:26px}.wide-seats.dense-seats .seat-info{padding-left:6px}.wide-seats.dense-seats .closed-hand{left:1px;top:23px;scale:.5}.wide-seats.dense-seats .score-chip b{font-size:15px}.wide-seats.dense-seats .thinking{font-size:8px}.wide-seats.dense-seats .score-chip small{font-size:6px}.wide-seats.dense-seats .player-name{font-size:9px}.wide-seats.dense-seats .won-pile{right:-11px;scale:.65}}
.seat{transition:none}.dense-seats .trump-tag{font-size:8px;padding:2px 4px}.dense-seats .trump-tag b{font-size:9px}.dense-seats .vira-tag{font-size:8px}.compact-play-packing .table-play>.card{transform:none}
.trick-announcement{animation:winner-arrive .6s .65s both}@keyframes winner-arrive{0%{opacity:0;transform:scale(.72)}70%{opacity:1;transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.trick-announcement{opacity:1;transform:none}}
