:root{--heart-berry:#b62e5b;--heart-berry-deep:#7d193f;--heart-rose:#ef8ca7;--heart-mint:#9bcfbb;--heart-mint-deep:#397f70;--heart-cream:#fff9ea;--heart-paper:#fffdf7;--heart-gold:#d6a442;--heart-ink:#49323b;--heart-muted:#7d6570;--heart-shadow:0 18px 54px rgba(80,31,39,.28);--heart-focus:0 0 0 3px #fff,0 0 0 6px #e74d7d;--hearts-sans:"Outfit",system-ui,-apple-system,"Segoe UI",sans-serif;--serif:var(--hearts-sans);--card-font:var(--hearts-sans);--suit-red:#d9264e;--suit-black:#27212a;--court-bg:#fff2e8;color-scheme:light}body[data-hearts-theme]{color:var(--heart-cream);font:500 16px/1.4 var(--hearts-sans);background:#7bb49f}body[data-hearts-theme]:before{content:"";position:fixed;inset:0;z-index:-2;background:var(--hearts-scene) center/cover no-repeat}body[data-hearts-theme]:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(81,32,47,.12),transparent 22%,transparent 76%,rgba(83,39,35,.14))}body[data-hearts-theme] #bar{display:none!important}body[data-hearts-theme] #table{inset:0}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.patisserie-hud{position:absolute;z-index:70;top:max(14px,env(safe-area-inset-top));left:50%;width:min(1000px,calc(100% - 32px));min-height:64px;transform:translate(-50%);display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(250px,1fr);align-items:center;gap:16px;padding:8px 10px 8px 17px;border:1px solid rgba(255,255,255,.45);border-radius:22px;background:linear-gradient(100deg,#9b2850e0,#5b8b7cc7);box-shadow:0 12px 34px #521e2a45,inset 0 1px #ffffff61;backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2)}.patisserie-brand{display:flex;align-items:center;gap:11px;min-width:0;font-size:25px;font-weight:760;letter-spacing:-.025em;text-shadow:0 2px 10px rgba(91,18,48,.3)}.brand-mark{position:relative;width:41px;height:41px;flex:none;display:grid;place-items:center;border-radius:50%;color:#fff8eb;background:linear-gradient(145deg,#f7a4b7,#cf426e);box-shadow:0 3px 10px #4a11274d,inset 0 1px #ffffffa6}.brand-mark svg{width:22px;height:22px;stroke-width:1.8}.brand-mark i{position:absolute;inset:5px;border:1px dashed rgba(255,255,255,.5);border-radius:50%}.patisserie-stats{display:flex;align-items:stretch;gap:7px}.patisserie-stat{min-width:108px;min-height:47px;padding:5px 12px;display:grid;place-items:center;align-content:center;border:1px solid rgba(255,255,255,.35);border-radius:15px;background:#fffbefc2;color:var(--heart-ink);box-shadow:inset 0 1px #fff9;font-variant-numeric:tabular-nums}.patisserie-stat span{font-size:10px;line-height:1;font-weight:760;letter-spacing:.09em;text-transform:uppercase;color:#71535e}.patisserie-stat b{margin-top:3px;font-size:18px;line-height:1;font-weight:800}.patisserie-stat.stat-status b{color:var(--heart-mint-deep);text-transform:uppercase;font-size:14px}.patisserie-stat.stat-status.broken{background:#ffdde2e0}.patisserie-stat.stat-status.broken b{color:#bc214e}.patisserie-actions{justify-self:end;display:flex;gap:6px}.patisserie-button{position:relative;width:42px;height:42px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:#ffffff24;color:#fffdf4;cursor:pointer;transition:transform .16s ease,background .16s ease,opacity .16s ease}.patisserie-button svg{width:20px;height:20px}.patisserie-button:hover:not(:disabled){transform:translateY(-2px);background:#ffffff3d}.patisserie-button:active:not(:disabled){transform:translateY(1px) scale(.95)}.patisserie-button:focus-visible{outline:none;box-shadow:var(--heart-focus)}.patisserie-button:disabled{opacity:.38;cursor:default}.patisserie-button:after{content:attr(data-tooltip);position:absolute;top:calc(100% + 10px);left:50%;transform:translate(-50%,-4px);width:max-content;max-width:180px;padding:6px 9px;border-radius:8px;background:#45252ef0;color:#fff;font-size:12px;font-weight:650;opacity:0;pointer-events:none;transition:.15s ease}.patisserie-button:hover:not(:disabled):after,.patisserie-button:focus-visible:after{opacity:1;transform:translate(-50%)}.hearts-arena{position:absolute;inset:0;min-width:320px;overflow:hidden;isolation:isolate;--motion-scale:1}.hearts-arena:before{content:"";position:absolute;z-index:0;inset:22% 9% 5%;border:1px solid rgba(193,135,50,.28);border-radius:50%;pointer-events:none;box-shadow:inset 0 0 50px #ffffff1a}.score-rail,.hearts-goal{display:none}.seat{position:absolute;z-index:8;display:flex;align-items:center;gap:8px;color:#51323d;filter:drop-shadow(0 3px 5px rgba(70,31,34,.22));transition:transform .2s ease,filter .2s ease}.seat-2{top:91px;left:50%;transform:translate(-50%)}.seat-1{left:max(16px,3.5vw);top:43%}.seat-3{right:max(16px,3.5vw);top:43%;flex-direction:row-reverse;text-align:right}.seat.active{filter:drop-shadow(0 0 11px rgba(255,230,135,.95))}.seat.active .avatar{transform:scale(1.08);box-shadow:0 0 0 4px #fff3bcd9,0 8px 22px #561f2747}.avatar{width:62px;height:62px;flex:none;overflow:hidden;border:3px solid #fff8e7;border-radius:50%;background:#fff;box-shadow:0 0 0 2px #d5a644,0 7px 18px #55242840;transition:.2s ease}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.seat-info{position:relative;display:grid;grid-template-columns:auto auto;align-items:center;gap:2px 7px;min-width:95px;padding:7px 9px;border:1px solid rgba(255,255,255,.6);border-radius:14px;background:#fff9e9e0;box-shadow:0 5px 14px #50242926;backdrop-filter:blur(8px)}.seat-info strong{font-size:14px;line-height:1;font-weight:760}.seat-info em{min-width:28px;padding:2px 7px;border-radius:999px;background:var(--heart-berry);color:#fff;font-size:13px;line-height:1.4;font-style:normal;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}.seat-info span{grid-column:1/-1;font-size:11px;color:var(--heart-muted);white-space:nowrap}.mini-stack{position:absolute;width:205px;height:72px;pointer-events:none;--cw:38px}.mini-stack .card{left:calc((var(--i) - var(--mid))*18px + 82px);top:16px;transform:rotate(calc((var(--i) - var(--mid))*2.5deg));transform-origin:50% 120%}.mini-stack .card .back{border:1px solid #fff6e8;box-shadow:0 2px 5px #431c233d}.seat-2 .mini-stack{left:50%;top:51px;transform:translate(-50%)}.seat-1 .mini-stack{left:48px;top:55px;transform:rotate(90deg);transform-origin:0 0}.seat-3 .mini-stack{right:48px;top:55px;transform:rotate(-90deg);transform-origin:100% 0}.opponent-count{position:absolute;right:1px;bottom:1px;min-width:24px;padding:2px 7px;border-radius:99px;background:#462c31d6;color:#fff;font-size:11px;font-weight:800;text-align:center}.trick-centre{position:absolute;z-index:5;left:50%;top:49%;width:min(430px,48vw);height:min(330px,40vh);transform:translate(-50%,-50%)}.trick-centre:before{content:"";position:absolute;inset:12% 15%;border:1px dashed rgba(164,111,57,.34);border-radius:50%;background:radial-gradient(ellipse,rgba(255,250,232,.2),transparent 70%)}.broken-badge{position:absolute;z-index:3;left:50%;top:1px;transform:translate(-50%);display:flex;align-items:center;gap:6px;min-height:30px;padding:4px 10px;border:1px solid rgba(255,255,255,.66);border-radius:999px;background:#fff9ead1;color:#617c71;box-shadow:0 4px 12px #4524271f;backdrop-filter:blur(8px);font-size:12px;font-weight:720;white-space:nowrap}.broken-badge span{color:#82a99a;font-size:18px}.broken-badge.broken{color:#a71946;background:#ffe8ebe0}.broken-badge.broken span{color:#d92858}.broken-badge.just-broken span{animation:heart-pop calc(.4s*var(--motion-scale)) ease-out}.trick-layer{position:absolute;inset:0;--cw:clamp(62px,6.6vw,96px)}.trick-card{left:calc(50% - var(--cw)/2);top:calc(50% - var(--cw)*.7);animation:play-in calc(.32s*var(--motion-scale)) cubic-bezier(.18,.9,.25,1.12) both;box-shadow:0 10px 24px #4e282c3b}.trick-card.from-0{--entry-x:0;--entry-y:230px;transform:translateY(40%)}.trick-card.from-2{--entry-x:0;--entry-y:-190px;transform:translateY(-40%)}.trick-card.from-1{--entry-x:-230px;--entry-y:0;transform:translate(-65%) rotate(-5deg)}.trick-card.from-3{--entry-x:230px;--entry-y:0;transform:translate(65%) rotate(5deg)}.trick-layer.collect-to-0 .trick-card{animation:collect-bottom calc(.4s*var(--motion-scale)) ease-in both}.trick-layer.collect-to-1 .trick-card{animation:collect-left calc(.4s*var(--motion-scale)) ease-in both}.trick-layer.collect-to-2 .trick-card{animation:collect-top calc(.4s*var(--motion-scale)) ease-in both}.trick-layer.collect-to-3 .trick-card{animation:collect-right calc(.4s*var(--motion-scale)) ease-in both}.turn-prompt{position:absolute;left:50%;bottom:-4px;transform:translate(-50%);min-height:34px;display:grid;place-items:center;padding:6px 14px;border:1px solid rgba(255,255,255,.65);border-radius:999px;background:#663d3ec2;color:#fff;box-shadow:0 5px 18px #4522272e;backdrop-filter:blur(10px);font-size:13px;font-weight:700;white-space:nowrap}.player-hand{position:absolute;z-index:12;left:0;right:0;bottom:-34px;height:205px;--cw:96px}.player-hand .card{bottom:0;transform:translateY(calc(-1*var(--row-lift,0px))) rotate(var(--fan));transform-origin:50% 120%;cursor:pointer;transition:transform .18s ease,filter .18s ease,opacity .18s ease,translate .08s linear}.player-hand .card:after{content:"";position:absolute;left:0;right:0;bottom:-15px;height:18px}@media (hover:hover) and (pointer:fine){.player-hand .card:hover:not(.illegal):not(.waiting){transform:translateY(calc(-12px - var(--row-lift,0px))) rotate(var(--fan));z-index:30!important}}.player-hand .card:focus-visible{outline:none;transform:translateY(calc(-12px - var(--row-lift,0px))) rotate(var(--fan));filter:drop-shadow(0 0 8px #fff3a6);z-index:31!important}.player-hand .card.illegal{filter:saturate(.45) brightness(.8);opacity:.58;cursor:not-allowed}.player-hand .card.waiting{filter:saturate(.72)}.player-hand .card.pass-selected{transform:translateY(calc(-26px - var(--row-lift,0px))) rotate(var(--fan));filter:drop-shadow(0 0 8px #fff4b2)}.player-hand .card.hinted{animation:hint-pulse .6s ease-in-out infinite alternate}.player-hand .card.received:before{content:"NEW";position:absolute;z-index:5;top:-8px;right:-8px;padding:2px 5px;border-radius:6px;background:#d4a33d;color:#fff;font-size:9px;font-weight:800;letter-spacing:.05em;box-shadow:0 2px 5px #3c1e1e40}.player-hand .card.dragging{z-index:90!important;transition:transform .18s ease,filter .18s ease,opacity .18s ease,translate .02s linear;filter:drop-shadow(0 16px 18px rgba(55,24,30,.3))}.card{border-radius:calc(var(--cw,96px)*.085)}.card .face{background:#fffefa;box-shadow:0 0 0 1px #5332372e,0 4px 12px #4a2a2b33}.card .face svg text{font-family:var(--hearts-sans);font-weight:800}.card .back{background:#c84d73 var(--hearts-card-back) center/cover no-repeat!important;border:2px solid #fff8ec;box-shadow:0 0 0 1px #5e2d332e,0 4px 10px #49252740}.pass-panel,.hand-summary{position:absolute;z-index:35;left:50%;bottom:min(181px,24vh);transform:translate(-50%)}.pass-panel{min-width:min(430px,calc(100vw - 24px));display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 10px 9px 15px;border:1px solid rgba(255,255,255,.7);border-radius:18px;background:#fff8e9e6;color:var(--heart-ink);box-shadow:0 12px 28px #4c232733;backdrop-filter:blur(12px)}.pass-panel[hidden],.hand-summary[hidden]{display:none}.pass-copy{display:grid}.pass-copy strong{font-size:15px}.pass-copy strong span{color:var(--heart-berry)}.pass-copy small{color:var(--heart-muted);font-size:12px}.pass-button,.hand-summary button{min-height:44px;border:0;border-radius:13px;padding:0 16px;background:linear-gradient(180deg,#d94c77,#b72f5b);color:#fff;box-shadow:0 4px 12px #9b264a40;font:700 14px var(--hearts-sans);cursor:pointer}.pass-button:disabled{opacity:.5;cursor:default}.pass-button:focus-visible,.hand-summary button:focus-visible{outline:none;box-shadow:var(--heart-focus)}.hand-summary{width:min(590px,calc(100vw - 24px));display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:10px;border:1px solid rgba(255,255,255,.7);border-radius:18px;background:#fff8e9eb;color:var(--heart-ink);box-shadow:0 12px 28px #4c232733;backdrop-filter:blur(12px)}.hand-summary>div{display:grid}.hand-summary b{color:var(--heart-berry);font-size:16px}.hand-summary span,.hand-summary small{color:var(--heart-muted);font-size:12px}.hand-summary small{grid-column:1/-1;text-align:center}.hand-summary .review-hand{color:var(--heart-berry-deep);background:#fff;border:1px solid #e8ced5;box-shadow:none}.hand-two-row .pass-panel,.hand-two-row .hand-summary{bottom:calc(min(181px,24vh) + var(--hand-row-lift,0px))}body[data-hearts-theme] #veil{padding:18px;background:#42232d94;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}body[data-hearts-theme] #veil.on{animation:veil-in .2s ease both}body[data-hearts-theme] #veil.on .dlg{animation:dialog-in .2s cubic-bezier(.2,.8,.2,1) both}body[data-hearts-theme] .dlg{width:min(530px,100%);max-height:calc(100dvh - 36px);overflow:auto;overscroll-behavior:contain;padding:20px;border:1px solid rgba(151,91,103,.17);border-radius:24px;background:linear-gradient(145deg,#fffdf7fa,#fff2effa);color:var(--heart-ink);box-shadow:0 26px 70px #3a1c2452;font-family:var(--hearts-sans)}body[data-hearts-theme] .dlg.wide{width:min(790px,100%)}.dialog-header{min-height:44px;display:grid;grid-template-columns:40px 1fr 40px;align-items:center;gap:10px;margin-bottom:12px}.dialog-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:#f8dde3;color:var(--heart-berry)}.dialog-icon svg{width:21px;height:21px}body[data-hearts-theme] .dlg h2{margin:0;color:var(--heart-ink);font:760 27px/1.1 var(--hearts-sans);letter-spacing:-.025em}.dialog-close{width:40px;height:40px;display:grid;place-items:center;padding:0;border:1px solid #ead7da;border-radius:50%;background:#ffffffbf;color:#755d66;cursor:pointer}.dialog-close[hidden]{display:none}.dialog-close svg{width:19px;height:19px}.dialog-close:hover{background:#fff;color:var(--heart-berry)}.dialog-close:focus-visible{outline:none;box-shadow:var(--heart-focus)}body[data-hearts-theme] .dlg p{color:var(--heart-ink);font-size:15px;line-height:1.5}body[data-hearts-theme] .dlg .row{gap:9px;margin-top:18px}body[data-hearts-theme] .dlg .btn{min-height:46px;height:auto;padding:10px 18px;border:1px solid #e5cdd3;border-radius:14px;background:#fff;color:var(--heart-berry-deep);box-shadow:none;font:700 14px var(--hearts-sans)}body[data-hearts-theme] .dlg .btn.primary{border-color:#b62e5b;background:linear-gradient(180deg,#d84b77,#b52b58);color:#fff;box-shadow:0 8px 20px #b12c5638}body[data-hearts-theme] .dlg .btn:focus-visible,body[data-hearts-theme] .dlg .choice:focus-visible{outline:none;box-shadow:var(--heart-focus)}body[data-hearts-theme] .dlg .choice{min-height:54px;border:1px solid #ead7da;border-radius:14px;background:#ffffffb8;color:var(--heart-ink);box-shadow:none;font:650 14px var(--hearts-sans)}body[data-hearts-theme] .dlg .choice small{color:var(--heart-muted)}body[data-hearts-theme] .dlg .choice.on{border-color:var(--heart-berry);background:#fff1f3;box-shadow:inset 0 0 0 1px var(--heart-berry)}body[data-hearts-theme] .dlg .statgrid{grid-template-columns:repeat(3,1fr);gap:9px}body[data-hearts-theme] .dlg .stat{min-height:86px;display:grid;place-items:center;align-content:center;border:1px solid #eadde0;border-radius:17px;background:#ffffffc2;box-shadow:none}body[data-hearts-theme] .dlg .stat b{color:var(--heart-berry);font:800 28px var(--hearts-sans)}body[data-hearts-theme] .dlg .stat span{color:var(--heart-muted);font-size:11px;font-weight:700}body[data-hearts-theme] .dlg table.lb td{border-bottom:1px solid #eadde0}body[data-hearts-theme] .dlg table.lb td:first-child{color:var(--heart-berry)}body[data-hearts-theme] .dlg table.lb tr.me td{background:#fff0f3}body[data-hearts-theme] .dlg .xpbar{background:#efdee2}body[data-hearts-theme] .dlg .xpbar i{background:linear-gradient(90deg,var(--heart-berry),#ef8ca7)}body[data-hearts-theme] .dlg .ach{border:1px solid #eadde0;border-radius:14px;background:#fff}body[data-hearts-theme] .dlg .ach.got{border-color:#d99bad;background:#fff0f3}.patisserie-menu-dialog{width:min(470px,calc(100vw - 36px))!important;position:absolute;top:88px;right:max(18px,calc((100vw - 1000px)/2));max-height:calc(100dvh - 106px)!important}.menu-intro{margin:-4px 0 9px!important;color:var(--heart-muted)!important;font-size:13px!important}.patisserie-menu-grid{display:grid;gap:3px}.patisserie-menu-item{width:100%;min-height:54px;display:grid;grid-template-columns:38px 1fr 18px;align-items:center;gap:10px;padding:7px 9px;border:0;border-radius:13px;background:transparent;color:var(--heart-ink);text-align:left;cursor:pointer}.patisserie-menu-item:hover{background:#fbe9ed}.patisserie-menu-item:focus-visible{outline:none;box-shadow:var(--heart-focus)}.patisserie-menu-item i{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:#e3f1eb;color:var(--heart-mint-deep);font-style:normal}.patisserie-menu-item:nth-child(1) i,.patisserie-menu-item:nth-child(2) i{background:#f9dfe5;color:var(--heart-berry)}.patisserie-menu-item i svg{width:19px;height:19px}.patisserie-menu-item b{display:block;font-size:14px;font-weight:730}.patisserie-menu-item small{display:block;margin-top:1px;color:var(--heart-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.patisserie-menu-item em{color:#b79ba2;font-size:21px;font-style:normal}.settings-group{margin-top:15px}.settings-label{display:block;margin-bottom:7px;color:#71535d;font-size:12px;font-weight:760;letter-spacing:.06em;text-transform:uppercase}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;padding:3px;border-radius:13px;background:#f0e4e5}.segmented button{min-height:39px;border:0;border-radius:10px;background:transparent;color:var(--heart-muted);font:650 13px var(--hearts-sans);cursor:pointer}.segmented button.on{background:#fff;color:var(--heart-berry-deep);box-shadow:0 2px 9px #4a2a311a}.segmented button:focus-visible{outline:none;box-shadow:var(--heart-focus)}.native-setting{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.look-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.look-picker.back{grid-template-columns:repeat(5,minmax(0,1fr))}.look-picker button{min-width:0;padding:5px;border:1px solid #ead8dc;border-radius:12px;background:#ffffff94;color:var(--heart-muted);cursor:pointer;font:600 11px var(--hearts-sans)}.look-picker button.on{border-color:var(--heart-berry);background:#fff;box-shadow:0 3px 12px #5d2d361f;color:var(--heart-berry-deep)}.look-picker button:focus-visible{outline:none;box-shadow:var(--heart-focus)}.look-picker img{width:100%;aspect-ratio:16/9;display:block;object-fit:cover;border-radius:8px;margin-bottom:4px}.look-picker.back img{aspect-ratio:5/7;object-fit:contain}.look-picker span{display:block;overflow-wrap:anywhere}.toggle-list{margin-top:16px;border-top:1px solid #eadde0}body[data-hearts-theme] .dlg label.opt{min-height:58px;padding:8px 0;border-bottom:1px solid #eadde0;color:var(--heart-ink);font:650 14px var(--hearts-sans)}body[data-hearts-theme] .dlg label.opt>span{display:grid}body[data-hearts-theme] .dlg label.opt small{color:var(--heart-muted);font-size:12px;font-weight:500}body[data-hearts-theme] .dlg input[type=checkbox]{appearance:none;width:46px;height:26px;flex:none;position:relative;border:0;border-radius:99px;background:#d8c8cb;cursor:pointer;transition:.18s}body[data-hearts-theme] .dlg input[type=checkbox]:after{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #361c2133;transition:transform .18s}body[data-hearts-theme] .dlg input[type=checkbox]:checked{background:var(--heart-berry)}body[data-hearts-theme] .dlg input[type=checkbox]:checked:after{transform:translate(20px)}body[data-hearts-theme] .dlg input[type=checkbox]:focus-visible{outline:none;box-shadow:var(--heart-focus)}body[data-hearts-theme] .dlg input.vol{accent-color:var(--heart-berry)}.settings-note{color:var(--heart-muted)!important;font-size:12px!important}.rules-lead{display:grid;grid-template-columns:45px 1fr;align-items:center;gap:12px;margin-bottom:12px;padding:12px;border-radius:16px;background:#f9e5e9}.rules-lead>span,.rule-heading>span{display:grid;place-items:center;color:var(--heart-berry)}.rules-lead svg{width:27px;height:27px}.rules-lead p{margin:0!important;font-weight:650}.rule-section{padding:13px 0;border-top:1px solid #eadde0}.rule-heading{display:flex;align-items:center;gap:9px}.rule-heading span{width:30px;height:30px;border-radius:9px;background:#e6f2ed;color:var(--heart-mint-deep)}.rule-heading svg{width:17px;height:17px}body[data-hearts-theme] .dlg .rules h3{margin:0;color:var(--heart-ink);font:730 16px var(--hearts-sans)}body[data-hearts-theme] .dlg .rules p,body[data-hearts-theme] .dlg .rules li{font-size:13px;line-height:1.5}body[data-hearts-theme] .dlg .rules ul{margin:8px 0 0;padding-left:18px}body[data-hearts-theme] .dlg kbd{padding:2px 6px;border:1px solid #e3cfd4;border-radius:6px;background:#fff;box-shadow:0 1px #e3cfd4;font:700 12px var(--hearts-sans)}.goal-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 14px}.goal-tile{display:grid;place-items:center;gap:5px;padding:13px 6px;border:1px solid #eadde0;border-radius:15px;background:#fff}.goal-tile span{color:var(--heart-muted);font-size:12px;font-weight:700}.goal-tile b{color:#d29a2d;font-size:17px;letter-spacing:.05em}.goal-progress{display:flex;justify-content:space-between;padding:10px 12px;border-top:1px solid #eadde0}.goal-progress b{color:var(--heart-berry)}.daily-countdown{display:grid;justify-items:center;padding:14px;border-radius:16px;background:#f7e7e9}.daily-countdown span{color:var(--heart-muted);font-size:12px}.daily-countdown b{color:var(--heart-berry);font-size:25px}.score-table{overflow:hidden;border:1px solid #eadde0;border-radius:16px;background:#fff}.score-head,.score-row{display:grid;grid-template-columns:1fr 68px 68px;gap:6px;align-items:center;padding:9px 12px}.score-head{color:var(--heart-muted);background:#f7eaec;font-size:11px;font-weight:750;letter-spacing:.04em;text-transform:uppercase}.score-row{border-top:1px solid #eee2e4;color:var(--heart-ink);font-size:14px}.score-row.human{background:#fff5f6}.score-row.moon{color:var(--heart-berry)}.score-row span:nth-child(n+2),.score-row strong,.score-head span:nth-child(n+2){text-align:right}.hand-history{max-height:200px;overflow:auto;margin-top:12px;border:1px solid #eadde0;border-radius:14px}.hand-history>button{width:100%;display:grid;grid-template-columns:1fr repeat(4,52px);gap:3px;min-height:45px;padding:8px;border:0;border-bottom:1px solid #eadde0;background:#fff;color:var(--heart-ink);font:650 13px var(--hearts-sans);text-align:left;cursor:pointer}.hand-history>button:hover{background:#fff3f5}.hand-history b{text-align:right}.review-note{color:var(--heart-muted)!important;font-size:12px!important}.trick-review{max-height:min(430px,55vh);overflow:auto;border:1px solid #eadde0;border-radius:14px;background:#fff}.review-trick{display:grid;grid-template-columns:28px repeat(4,minmax(65px,1fr)) minmax(90px,auto);align-items:center;gap:5px;padding:9px;border-bottom:1px solid #eadde0;color:var(--heart-ink);font-size:12px}.review-trick:last-child{border-bottom:0}.review-trick>b,.review-trick .red{color:var(--heart-berry)}.review-trick strong{text-align:right}.hearts-win-dialog{text-align:center;border-top:5px solid var(--heart-berry)!important}.hearts-win-dialog .dialog-header{text-align:left}.hearts-win-dialog .statgrid{margin-top:15px}#toast{bottom:max(22px,env(safe-area-inset-bottom));z-index:95;border:1px solid rgba(255,255,255,.36);border-radius:999px;background:#5b2739db;color:#fffdf4;box-shadow:0 12px 32px #461d273d;backdrop-filter:blur(12px);font:650 14px var(--hearts-sans)}.hearts-celebration{position:fixed;inset:0;z-index:130;overflow:hidden;background:radial-gradient(circle at 50% 55%,#fff6da1f,#701c3d5c);cursor:pointer;animation:veil-in .25s ease both}.hearts-celebration.moon{background:radial-gradient(circle,#cde5da33,#42315847)}.hearts-celebration.leaving{opacity:0;transition:opacity .2s ease}.hearts-celebration i{position:absolute;left:var(--x);top:-40px;display:block;animation:sweet-fall var(--duration) var(--delay) cubic-bezier(.2,.55,.4,1) both}.spark-particle{width:9px;height:9px;border-radius:50%;background:#ffd56e;box-shadow:0 0 12px #ffe59d}.petal-particle{width:15px;height:9px;border-radius:80% 15%;background:linear-gradient(135deg,#ffd1dc,#e9608b)}.macaron-particle{width:21px;height:14px;border-radius:50%;background:linear-gradient(#e65c86 0 40%,#fff0ce 41% 58%,#c83d6d 59%);box-shadow:0 3px 5px #461e2833}.celebration-copy{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);min-width:min(410px,calc(100vw - 32px));display:grid;place-items:center;gap:4px;padding:24px;border:1px solid rgba(255,255,255,.7);border-radius:25px;background:#fff8e8e6;color:var(--heart-berry-deep);box-shadow:0 25px 70px #421c2447;backdrop-filter:blur(14px);animation:celebration-pop .55s .2s cubic-bezier(.18,.9,.3,1.2) both}.celebration-copy span{font-size:42px;color:var(--heart-berry)}.celebration-copy b{font-size:clamp(28px,5vw,46px);letter-spacing:-.04em}.celebration-copy small{color:var(--heart-muted);font-size:13px}@keyframes veil-in{0%{opacity:0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px) scale(.97)}}@keyframes celebration-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.75)}}@keyframes sweet-fall{0%{opacity:0;translate:0 -20px;rotate:0}12%{opacity:1}to{opacity:.9;translate:var(--drift) 108vh;rotate:var(--spin)}}@keyframes play-in{0%{opacity:0;scale:.72;translate:var(--entry-x) var(--entry-y)}to{opacity:1;scale:1;translate:0 0}}@keyframes collect-bottom{to{opacity:0;translate:var(--collect-x,0) var(--collect-y,250px);scale:.72}}@keyframes collect-left{to{opacity:0;translate:var(--collect-x,-280px) var(--collect-y,0);scale:.72}}@keyframes collect-top{to{opacity:0;translate:var(--collect-x,0) var(--collect-y,-230px);scale:.72}}@keyframes collect-right{to{opacity:0;translate:var(--collect-x,280px) var(--collect-y,0);scale:.72}}@keyframes hint-pulse{to{filter:drop-shadow(0 0 12px #fff19a)}}@keyframes heart-pop{50%{scale:1.5}}@keyframes shake{25%{translate:-6px}75%{translate:6px}}.shake{animation:shake .3s ease}@media (max-width:760px) and (min-height:520px){.patisserie-hud{top:max(8px,env(safe-area-inset-top));width:calc(100% - 16px);min-height:98px;grid-template-columns:1fr auto;grid-template-rows:43px 39px;gap:4px 8px;padding:6px 8px 7px 12px;border-radius:19px}.patisserie-brand{font-size:21px}.brand-mark{width:35px;height:35px}.brand-mark svg{width:19px;height:19px}.patisserie-actions{gap:3px}.patisserie-button{width:38px;height:38px}.patisserie-button:after{display:none}.patisserie-stats{grid-column:1/-1;justify-content:center;gap:5px}.patisserie-stat{min-width:91px;min-height:37px;grid-auto-flow:column;gap:6px;padding:4px 9px;border-radius:12px}.patisserie-stat span{font-size:9px}.patisserie-stat b,.patisserie-stat.stat-status b{margin:0;font-size:14px}.seat-2{top:116px}.seat-1,.seat-3{top:40%}.seat-1{left:6px}.seat-3{right:6px}.avatar{width:48px;height:48px;border-width:2px}.seat-info{min-width:0;grid-template-columns:auto auto;padding:5px 6px}.seat-info strong{font-size:12px}.seat-info em{min-width:25px;padding:1px 5px;font-size:12px}.seat-info span,.mini-stack{display:none}.trick-centre{top:50%;width:270px;height:238px}.trick-layer{--cw:58px}.turn-prompt{bottom:1px;font-size:12px}.broken-badge{top:-2px}.player-hand{height:154px;bottom:-30px}.pass-panel,.hand-summary{bottom:min(142px,21vh)}.hand-two-row .pass-panel,.hand-two-row .hand-summary{bottom:calc(min(142px,21vh) + var(--hand-row-lift,0px))}.pass-panel{min-width:calc(100vw - 16px)}.pass-copy strong{font-size:13px}.hand-summary{grid-template-columns:1fr auto}.hand-summary .review-hand{display:none}.hand-summary small{grid-column:1/-1}.patisserie-menu-dialog{position:fixed;inset:auto 8px 8px!important;width:auto!important;max-height:min(720px,calc(100dvh - 24px))!important;border-radius:24px!important}.patisserie-menu-grid{gap:1px}.patisserie-menu-item{min-height:50px}.patisserie-menu-item small{font-size:11px}body[data-hearts-theme] .dlg{max-height:calc(100dvh - 20px);padding:17px}.look-picker{grid-template-columns:repeat(2,1fr)}.look-picker.back{grid-template-columns:repeat(3,1fr)}}@media (max-width:430px) and (min-height:520px){.patisserie-brand>span:last-child{font-size:19px}.patisserie-actions .hud-new{display:none}.patisserie-stat{min-width:0;flex:1}.seat-1 .seat-info,.seat-3 .seat-info{position:absolute;top:46px}.seat-1 .seat-info{left:0}.seat-3 .seat-info{right:0}.seat-info strong{display:none}.seat-info em{min-width:31px}.pass-panel{gap:7px;padding-left:10px}.pass-button{min-width:128px;padding:0 9px}body[data-hearts-theme] .dlg .statgrid{grid-template-columns:repeat(3,1fr)}.review-trick{grid-template-columns:24px repeat(2,1fr)}.review-trick span{white-space:normal}.review-trick strong{grid-column:2/-1;text-align:left}}@media (max-height:519px){.patisserie-hud{top:max(5px,env(safe-area-inset-top));width:min(870px,calc(100% - 12px));min-height:48px;grid-template-columns:minmax(115px,1fr) auto minmax(190px,1fr);gap:7px;padding:4px 6px 4px 10px;border-radius:16px}.patisserie-brand{gap:7px;font-size:18px}.brand-mark{width:32px;height:32px}.brand-mark svg{width:17px;height:17px}.patisserie-stat{min-width:80px;min-height:34px;grid-auto-flow:column;gap:5px;padding:3px 8px;border-radius:11px}.patisserie-stat span{font-size:8px}.patisserie-stat b,.patisserie-stat.stat-status b{margin:0;font-size:13px}.patisserie-button{width:34px;height:34px}.patisserie-button svg{width:17px;height:17px}.patisserie-button:after{display:none}.seat-2{top:58px}.seat-1,.seat-3{top:39%}.avatar{width:40px;height:40px;border-width:2px}.seat-info{min-width:75px;padding:4px 6px}.seat-info strong,.seat-info em{font-size:11px}.seat-info span,.mini-stack{display:none}.trick-centre{top:50%;width:260px;height:184px}.trick-layer{--cw:52px}.broken-badge{top:-4px;min-height:25px;padding:2px 8px;font-size:10px}.turn-prompt{bottom:-2px;min-height:27px;padding:3px 10px;font-size:11px}.player-hand{height:100px;bottom:-25px}.pass-panel,.hand-summary{bottom:88px}.hand-two-row .pass-panel,.hand-two-row .hand-summary{bottom:calc(88px + var(--hand-row-lift,0px))}.pass-panel{min-width:360px;padding:5px 6px 5px 10px}.pass-button,.hand-summary button{min-height:40px}.hand-summary{padding:5px}}@media (max-width:680px) and (max-height:360px){.patisserie-hud{grid-template-columns:auto 1fr auto}.patisserie-brand>span:last-child{display:none}.patisserie-actions .hud-restart,.patisserie-actions .hud-new{display:none}.patisserie-stat{min-width:64px}.patisserie-stat span,.seat-info{display:none}.seat-1{left:4px}.seat-3{right:4px}}@media (max-width:400px) and (max-height:270px){.patisserie-hud{top:3px;width:calc(100% - 6px);min-height:38px;grid-template-columns:30px 1fr auto;padding:2px 4px;border-radius:12px}.brand-mark{width:28px;height:28px}.patisserie-stats{gap:2px;justify-content:center}.patisserie-stat{min-width:48px;min-height:28px;padding:2px 5px;border-radius:8px}.patisserie-stat b,.patisserie-stat.stat-status b{font-size:11px}.patisserie-actions{gap:2px}.patisserie-button{width:30px;height:30px}.patisserie-actions .hud-restart,.patisserie-actions .hud-new{display:none}.seat-2{top:41px}.seat-1,.seat-3{top:40%}.avatar{width:29px;height:29px;border-width:1px}.trick-centre{top:52%;width:195px;height:130px}.trick-layer{--cw:38px}.broken-badge{top:-2px;min-height:20px;font-size:9px}.broken-badge span{font-size:12px}.turn-prompt{min-height:21px;font-size:9px}.player-hand{height:70px;bottom:-20px}.pass-panel,.hand-summary{bottom:57px;min-width:280px;max-width:calc(100vw - 8px);border-radius:11px}.pass-copy small{display:none}.pass-button,.hand-summary button{min-height:34px;font-size:11px}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.hearts-celebration i{display:none}}.player-hand{bottom:6px}body[data-hearts-theme] .pass-panel,body[data-hearts-theme] .hand-summary{border-color:#ffffffb3!important;background:#fff8e9eb!important;box-shadow:0 12px 28px #4c232733!important}body[data-hearts-theme] .turn-prompt{border-color:#ffffff80!important;background:#5b2739d1!important;box-shadow:0 5px 18px #4522272e!important}body[data-hearts-theme] .card .face svg text{font-family:var(--hearts-sans)}.is-passing .turn-prompt{display:none}@media (max-width:760px) and (min-height:520px){.patisserie-brand{grid-column:1;grid-row:1}.patisserie-actions{grid-column:2;grid-row:1}.patisserie-stats{grid-column:1/-1;grid-row:2}.patisserie-button{width:42px;height:42px}.patisserie-stat span{font-size:12px}.segmented button{min-height:42px}.player-hand{bottom:0}}@media (max-height:519px) and (min-width:401px){.patisserie-button{width:40px;height:40px}}body[data-hearts-theme]{background-color:#7bb49f;background-image:var(--hearts-scene);background-position:center;background-size:cover;background-repeat:no-repeat;background-attachment:fixed}body[data-hearts-theme]:before,body[data-hearts-theme]:after{content:none}body[data-hearts-theme] #table{background:transparent}.mini-stack{width:260px;height:86px;--cw:50px}.mini-stack .card{left:calc((var(--i) - var(--mid))*22px + 105px);top:8px;transform:rotate(calc((var(--i) - var(--mid))*2deg));transform-origin:50% 125%}.seat-2 .mini-stack{top:64px}.seat-1 .mini-stack,.seat-3 .mini-stack{top:24px;width:78px;height:220px;transform:none;transform-origin:50% 50%}.seat-1 .mini-stack{left:170px}.seat-3 .mini-stack{right:170px}.seat-1 .mini-stack .card,.seat-3 .mini-stack .card{left:14px;top:calc((var(--i) - var(--mid))*16px + 70px);transform:rotate(calc((var(--i) - var(--mid))*1.5deg));transform-origin:50% 125%}.player-hand{bottom:18px}.pass-panel,.hand-summary{bottom:190px}.hand-two-row .pass-panel,.hand-two-row .hand-summary{bottom:calc(190px + var(--hand-row-lift,0px))}body[data-hearts-theme] #toast{top:auto;bottom:210px;padding:8px 15px;font-size:13px}body[data-hearts-theme]:has(#toast.on) .turn-prompt{opacity:0}@media (max-width:760px) and (min-height:520px){.player-hand{bottom:12px}.pass-panel,.hand-summary{bottom:174px}.hand-two-row .pass-panel,.hand-two-row .hand-summary{bottom:calc(174px + var(--hand-row-lift,0px))}body[data-hearts-theme] #toast{bottom:188px}.mini-stack{display:block;--cw:30px}.seat-2 .mini-stack{top:39px;width:150px;height:50px}.seat-2 .mini-stack .card{left:calc((var(--i) - var(--mid))*13px + 60px);top:5px}.seat-1 .mini-stack,.seat-3 .mini-stack{top:16px;width:48px;height:125px}.seat-1 .mini-stack{left:43px}.seat-3 .mini-stack{right:43px}.seat-1 .mini-stack .card,.seat-3 .mini-stack .card{left:9px;top:calc((var(--i) - var(--mid))*8px + 35px)}.opponent-count{font-size:9px;min-width:20px;padding:1px 5px}.trick-card.from-1{--entry-x:-16vw}.trick-card.from-3{--entry-x:34vw}.trick-layer.collect-to-1 .trick-card{--collect-x:-16vw}.trick-layer.collect-to-3 .trick-card{--collect-x:32vw}}@media (max-height:519px){.player-hand{bottom:8px}.broken-badge{display:none}.mini-stack{display:block;--cw:30px}.seat-2 .mini-stack{top:34px;width:150px;height:48px}.seat-2 .mini-stack .card{left:calc((var(--i) - var(--mid))*13px + 60px);top:4px}.seat-1 .mini-stack,.seat-3 .mini-stack{top:14px;width:48px;height:116px}.seat-1 .mini-stack{left:36px}.seat-3 .mini-stack{right:36px}.seat-1 .mini-stack .card,.seat-3 .mini-stack .card{left:9px;top:calc((var(--i) - var(--mid))*8px + 34px)}.pass-panel,.hand-summary,.hand-two-row .pass-panel,.hand-two-row .hand-summary{top:53%;bottom:auto;transform:translate(-50%,-50%)}body[data-hearts-theme] #toast{top:58px;bottom:auto;padding:6px 12px;font-size:11px}body[data-hearts-theme]:has(#toast.on) .seat-2{visibility:hidden}.trick-card.from-0{--entry-y:80px}.trick-card.from-2{--entry-y:-70px}.trick-layer.collect-to-0 .trick-card{--collect-y:80px}.trick-layer.collect-to-2 .trick-card{--collect-y:-70px}}@media (min-width:681px) and (max-height:519px){.seat-1 .mini-stack{left:120px}.seat-3 .mini-stack{right:120px}}@media (max-width:680px) and (max-height:360px){.patisserie-stat span{display:block}.seat-info{display:none}}@media (max-width:400px) and (max-height:270px){.patisserie-stat{grid-auto-flow:row;gap:0;padding:1px 3px}.patisserie-stat span{display:block;font-size:0;line-height:1}.patisserie-stat span:after{font-size:7px;letter-spacing:.03em}.patisserie-stat.stat-hand span:after{content:"HAND"}.patisserie-stat.stat-score span:after{content:"YOU"}.patisserie-stat.stat-status span:after{content:"HEARTS"}.patisserie-stat b,.patisserie-stat.stat-status b{font-size:10px}.player-hand{bottom:6px}.seat-1,.seat-3{top:72px}.mini-stack{display:block;width:62px;height:28px;--cw:16px}.seat-2 .mini-stack{left:34px;top:2px;width:62px;height:28px;transform:none}.seat-1 .mini-stack,.seat-3 .mini-stack{top:0;width:62px;height:28px;transform:none}.seat-1 .mini-stack{left:31px}.seat-3 .mini-stack{right:31px}.seat-2 .mini-stack .card,.seat-1 .mini-stack .card,.seat-3 .mini-stack .card{left:calc((var(--i) - var(--mid))*5px + 22px);top:3px;transform:rotate(calc((var(--i) - var(--mid))*1.4deg));transform-origin:50% 125%}.opponent-count{right:-1px;bottom:-1px;min-width:14px;padding:0 3px;font-size:7px}.trick-centre{top:42%;height:100px}.trick-layer{--cw:30px}.trick-card.from-0{transform:translate(-45%) rotate(-2deg)}.trick-card.from-1{transform:translate(-140%) rotate(-5deg)}.trick-card.from-2{transform:translate(45%) rotate(2deg)}.trick-card.from-3{transform:translate(140%) rotate(5deg)}.trick-card.from-0{--entry-y:36px}.trick-card.from-1{--entry-x:-90px}.trick-card.from-2{--entry-y:-30px}.trick-card.from-3{--entry-x:90px}.trick-layer.collect-to-0 .trick-card{--collect-y:36px}.trick-layer.collect-to-1 .trick-card{--collect-x:-90px}.trick-layer.collect-to-2 .trick-card{--collect-y:-30px}.trick-layer.collect-to-3 .trick-card{--collect-x:90px}.pass-panel,.hand-summary,.hand-two-row .pass-panel,.hand-two-row .hand-summary{top:72px;bottom:auto;transform:translate(-50%)}.pass-panel{width:min(160px,calc(100vw - 190px));min-width:0;max-width:none;gap:4px;padding:2px 4px 2px 7px;border-radius:10px}.pass-copy{grid-auto-flow:column;align-items:center;gap:3px}.pass-copy strong{font-size:10px}.pass-copy small{display:none}.pass-button,.hand-summary button{min-width:0;min-height:26px;padding:0 7px;border-radius:8px;font-size:9px}.player-hand .card.pass-selected{transform:translateY(calc(-6px - var(--row-lift,0px))) rotate(var(--fan))}body[data-hearts-theme] #toast{top:43px;bottom:auto;max-width:250px;padding:5px 9px;font-size:10px}.turn-prompt{display:none}}:root{--felt: #134a32;--felt-deep: #0b3022;--felt-tex: none;--ink: #f7f0e1;--ink-dim: rgba(247, 240, 225, .72);--ivory: #fbf6ea;--card-ink: #1d1a17;--brass: #e3b23c;--brass-deep: #b8861f;--red: #c0262f;--blue: #1f3f8f;--panel: rgba(9, 22, 16, .86);--panel-line: rgba(227, 178, 60, .28);--good: #5fd28a;--bad: #ff6b5e;--bar-h: 58px;--radius: 14px;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--serif: "Playfair Display", Georgia, serif;--sans: "Source Sans 3", system-ui, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--felt-deep);background-image:radial-gradient(ellipse at 50% 30%,#ffffff12,#00000059 80%),var(--felt-tex);background-size:auto,512px;background-attachment:fixed;color:var(--ink);font:16px/1.4 var(--sans);overflow:hidden;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;touch-action:manipulation}button{font:inherit;color:inherit}#bar{position:fixed;inset:0 0 auto;height:var(--bar-h);z-index:50;display:flex;align-items:center;gap:10px;padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));background:linear-gradient(#050e0aeb,#050e0ac7);border-bottom:1px solid var(--panel-line);backdrop-filter:blur(6px)}#bar .home{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font-weight:700;padding:6px 10px 6px 4px;border-radius:10px}#bar .home:hover{background:#ffffff0f}#bar .home svg{width:20px;height:20px}#bar h1{margin:0;font:900 23px var(--serif);letter-spacing:.3px;white-space:nowrap;color:var(--ivory)}#bar .stats{flex:1;display:flex;justify-content:center;gap:18px;font-weight:600;color:var(--ink-dim);font-variant-numeric:tabular-nums;min-width:0}#bar .stats b{color:var(--ink);font-weight:800}#bar .tools{display:flex;gap:6px}.tb{display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 14px;border-radius:10px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;cursor:pointer;font-weight:700;font-size:15px;white-space:nowrap}.tb:hover{background:#ffffff1f}.tb:disabled{opacity:.4;cursor:default}.tb svg{width:18px;height:18px;flex:none}.tb.primary{background:var(--brass);color:#2a1d05;border-color:transparent}.tb.primary:hover{background:#efc355}@media (max-width: 760px){#bar{gap:6px}#bar h1{font-size:19px}#bar .home span,.tb span{display:none}.tb{padding:0 10px}#bar .stats{gap:10px;font-size:14px}}@media (max-width: 480px){#bar h1{display:none}}#table{position:fixed;inset:var(--bar-h) 0 0 0;overflow:hidden}#veil{position:fixed;inset:0;z-index:100;background:#0000008c;display:none;align-items:center;justify-content:center;padding:16px}#veil.on{display:flex;animation:fade .18s ease-out}.dlg{width:min(480px,100%);max-height:calc(100vh - 32px);overflow:auto;background:linear-gradient(#fdf8ec,#f3ead6);color:var(--card-ink);border-radius:18px;box-shadow:var(--shadow);padding:24px 24px 20px;border:1px solid #d9c9a3;user-select:text;-webkit-user-select:text}.dlg h2{margin:0 0 10px;font:900 30px/1.1 var(--serif);color:#1d3b2c}.dlg p{margin:0 0 12px;font-size:17px}.dlg .row{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-top:18px}.dlg .btn{height:46px;padding:0 20px;border-radius:12px;border:1px solid #c8b78f;background:#fff;font-weight:800;font-size:16px;cursor:pointer;color:#2b2418}.dlg .btn:hover{background:#f6efdd}.dlg .btn.primary{background:#1d5a3c;color:#fff;border-color:transparent}.dlg .btn.primary:hover{background:#237049}.dlg .choices{display:grid;gap:8px;margin:10px 0 4px}.dlg .choice{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid #d6c59d;background:#fff;cursor:pointer;font-size:16px;font-weight:700;text-align:left;color:#2b2418}.dlg .choice small{font-weight:600;color:#6b5f48;font-size:14px}.dlg .choice.on{border-color:#1d5a3c;box-shadow:inset 0 0 0 2px #1d5a3c;background:#eef6f0}.dlg .statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin:12px 0}.dlg .stat{background:#fff;border:1px solid #e0d2b0;border-radius:12px;padding:10px;text-align:center}.dlg .stat b{display:block;font:900 26px var(--serif);color:#1d3b2c}.dlg .stat span{font-size:13px;color:#6b5f48;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.dlg label.opt{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #e5d8ba;font-size:16px;font-weight:600}.dlg .rules h3{font:800 18px var(--sans);margin:14px 0 4px;color:#1d3b2c}.dlg .rules p,.dlg .rules li{font-size:16px}.dlg .rules ul{padding-left:20px;margin:0 0 8px}#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%) translateY(20px);z-index:90;background:var(--panel);border:1px solid var(--panel-line);color:var(--ink);padding:12px 20px;border-radius:999px;font-weight:700;font-size:16px;opacity:0;transition:.25s;pointer-events:none;max-width:calc(100vw - 32px);text-align:center}#toast.on{opacity:1;transform:translate(-50%)}@keyframes fade{0%{opacity:0}}.card{position:absolute;width:var(--cw, 96px);height:calc(var(--cw, 96px) * 1.4);border-radius:calc(var(--cw, 96px) * .075)}.card .face,.card .back{position:absolute;inset:0;border-radius:inherit;overflow:hidden;backface-visibility:hidden}.card .face{background:var(--ivory);box-shadow:0 1px 2px #00000059,0 0 0 1px #00000024 inset}.card .face svg,.card .face img{position:absolute;inset:0;width:100%;height:100%;display:block}.card .back{background:#7d1620 var(--card-back) center/cover;box-shadow:0 1px 2px #0006,0 0 0 1px #00000040 inset}.card.down .face{display:none}.card:not(.down) .back{display:none}.dlg input.vol{width:min(220px,50%);accent-color:#1d5a3c;height:28px}@media (max-width: 760px){body.with-stats{--bar-h: 86px}body.with-stats #bar{flex-wrap:wrap;align-content:center;row-gap:2px;padding-top:4px;padding-bottom:4px}body.with-stats #bar .tools{margin-left:auto}body.with-stats #bar .stats{order:3;flex:0 0 100%;justify-content:center;font-size:14px;gap:14px;white-space:nowrap}}.club-chip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:10px;border:1px solid rgba(227,178,60,.35);background:#e3b23c1a;cursor:pointer;font-weight:800;font-size:15px;color:var(--ivory);white-space:nowrap}.club-chip i{width:38px;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--brass) var(--p),rgba(255,255,255,.15) var(--p))}.dlg table.lb{width:100%;border-collapse:collapse;margin:8px 0;font-size:16px}.dlg table.lb td{padding:8px 10px;border-bottom:1px solid #e5d8ba}.dlg table.lb td:first-child{width:44px;font-weight:800;color:#1d5a3c}.dlg table.lb td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.dlg table.lb tr.me td{background:#eef6f0;font-weight:800}.dlg .lbtabs{display:flex;gap:6px;margin-bottom:8px}.dlg .lbtabs .choice{flex:1;justify-content:center;padding:8px}.dlg .lbtotal{font-size:14px;color:#6b5f48;margin:4px 0 0}.dlg .xpbar{height:10px;border-radius:5px;background:#e5d8ba;overflow:hidden;margin:6px 0}.dlg .xpbar i{display:block;height:100%;background:linear-gradient(90deg,#1d5a3c,#3a9a68)}.dlg .achs{display:grid;gap:6px}.dlg .ach{padding:8px 12px;border-radius:10px;border:1px solid #e0d2b0;background:#fff;opacity:.6}.dlg .ach.got{opacity:1;border-color:#1d5a3c}.dlg .ach b{display:block;font-size:15px}.dlg .ach span{font-size:14px;color:#6b5f48}@media (max-width: 760px){.club-chip i{display:none}.club-chip{padding:0 8px}}#bar{flex-wrap:nowrap}#bar.compact .tb span{display:none}#bar.compact .tb{padding:0 10px}#bar.compact h1{font-size:20px}body.bar-two-line{--bar-h: 86px}#bar.two-line{flex-wrap:wrap;align-content:center;row-gap:2px;padding-top:4px;padding-bottom:4px}#bar.two-line .tools{margin-left:auto}#bar.two-line .stats{order:3;flex:0 0 100%;justify-content:center;font-size:14px;gap:14px;white-space:nowrap}#bar .stats{overflow:hidden}:root{--felt: #4549d6;--felt-deep: #3b3fc4;--felt-tex: none !important;--ink: #ffffff;--ink-dim: #d9dcff;--ivory: #ffffff;--card-ink: #23264d;--brass: #ffc83d;--brass-deep: #e09b00;--red: #ff6b6b;--blue: #4549d6;--panel: rgba(36, 34, 132, .78);--panel-line: rgba(255, 255, 255, .18);--good: #3fe0a6;--bad: #ff8a8a;--bar-h: 58px;--radius: 18px;--shadow: 0 6px 0 rgba(20, 18, 90, .45), 0 18px 36px rgba(20, 18, 90, .35);--serif: "Fredoka", "Nunito", system-ui, sans-serif;--sans: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:dark;--bg-top: #4a4fe0;--bg-bottom: #3236b4;--shape-a: rgba(130, 140, 255, .35);--shape-b: rgba(255, 200, 61, .16);--shape-c: rgba(255, 107, 107, .18);--accent-2: #ff6b6b;--accent-3: #2ad4b0;--on-accent: #2a1d05;--accent-press: #d99100;--chip: #2f32a8;--chip-press: #23268a;--line: rgba(255, 255, 255, .16);--dlg-bg: #fffaf2;--dlg-ink: #23264d;--dlg-muted: #6a6d93;--dlg-line: #ebe5f5;--dlg-field: #ffffff;--dlg-tint: #eef0ff;--dlg-accent: #4549d6;--dlg-accent-ink: #ffffff;--dlg-press: #2f32a8;--card-face: #ffffff;--card-edge: rgba(35, 38, 77, .16);--card-font: "Nunito", system-ui, sans-serif;--suit-red: #d81e3c;--suit-black: #23264d;--court-bg: #fff3d6;--focus: 0 0 0 3px #fff, 0 0 0 6px rgba(255, 200, 61, .9);--ease: cubic-bezier(.3, 1.4, .5, 1)}body{background-color:var(--bg-bottom);background-image:radial-gradient(rgba(255,255,255,.07) 1.6px,transparent 1.8px),linear-gradient(170deg,var(--bg-top),var(--bg-bottom));background-size:26px 26px,auto;background-attachment:fixed;color:var(--ink);font:700 16px/1.4 var(--sans)}body:before{content:"";position:fixed;inset:-10%;z-index:-1;pointer-events:none;background:radial-gradient(circle at 12% 78%,var(--shape-a) 0 14%,transparent 14.2%),radial-gradient(circle at 90% 20%,var(--shape-b) 0 11%,transparent 11.2%),radial-gradient(circle at 76% 92%,var(--shape-c) 0 8%,transparent 8.2%),radial-gradient(circle at 30% 8%,rgba(42,212,176,.14) 0 6%,transparent 6.2%);animation:bp-bob 24s ease-in-out infinite alternate}@keyframes bp-bob{to{transform:translate3d(1.5%,-2%,0)}}#bar{background:var(--chip);border-bottom:0;box-shadow:0 4px 0 var(--chip-press),0 10px 24px #14125a4d;backdrop-filter:none}#bar .home{color:#fff;font-weight:800;border-radius:14px}#bar .home:hover{background:#ffffff1a}#bar h1{font:700 24px/1 var(--serif);letter-spacing:0;color:#fff}#bar .stats{color:var(--ink-dim);font-weight:700}#bar .stats b{color:var(--brass);font-weight:900}.tb{height:40px;border-radius:14px;border:0;background:#4549d6;color:#fff;font-weight:800;box-shadow:0 3px #1f2178;transition:transform .12s var(--ease),box-shadow .12s,background .12s}.tb:hover{background:#5357e6}.tb:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 #1f2178}.tb:focus-visible,.club-chip:focus-visible,#bar .home:focus-visible{outline:none;box-shadow:var(--focus)}.tb.primary{background:var(--brass);color:var(--on-accent);box-shadow:0 3px 0 var(--accent-press)}.tb.primary:hover{background:#ffd35f}.tb.primary:active:not(:disabled){box-shadow:0 0 0 var(--accent-press)}.tb.active{background:var(--brass)!important;color:var(--on-accent)!important;box-shadow:0 3px 0 var(--accent-press)!important}.club-chip{border-radius:14px;border:0;background:#4549d6;box-shadow:0 3px #1f2178;color:#fff;font-weight:900}.club-chip b{color:var(--brass)}.club-chip i{height:8px;border-radius:4px;background:linear-gradient(90deg,var(--brass) var(--p),rgba(255,255,255,.2) var(--p))}#veil{background:#1a18608c}#veil.on .dlg{animation:bp-pop .32s var(--ease)}@keyframes bp-pop{0%{opacity:0;transform:scale(.9) translateY(8px)}}.dlg{background:var(--dlg-bg);color:var(--dlg-ink);border:0;border-radius:28px;box-shadow:0 8px #d6d0ff,0 24px 48px #14125a66;padding:26px 24px 22px}.dlg h2{font:700 30px/1.1 var(--serif);color:var(--dlg-ink)}.dlg h3{color:var(--dlg-ink)}.dlg p{color:var(--dlg-ink);font-weight:600}.dlg p[style*="6b5f48"]{color:var(--dlg-muted)!important}.dlg .btn{height:48px;border-radius:16px;border:2px solid var(--dlg-line);background:var(--dlg-field);color:var(--dlg-ink);font-weight:900;box-shadow:0 4px 0 var(--dlg-line);transition:transform .12s var(--ease),box-shadow .12s}.dlg .btn:hover{background:#fbfaff}.dlg .btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--dlg-line)}.dlg .btn:focus-visible,.dlg .choice:focus-visible{outline:none;box-shadow:0 0 0 3px #fff,0 0 0 6px var(--dlg-accent)}.dlg .btn.primary{background:var(--dlg-accent);color:var(--dlg-accent-ink);border-color:var(--dlg-accent);box-shadow:0 4px 0 var(--dlg-press)}.dlg .btn.primary:hover{background:#5357e6}.dlg .btn.primary:active{box-shadow:0 0 0 var(--dlg-press)}.dlg .choice{border-radius:16px;border:2px solid var(--dlg-line);background:var(--dlg-field);color:var(--dlg-ink);font-weight:800;box-shadow:0 3px 0 var(--dlg-line)}.dlg .choice:hover{border-color:#c9ccff}.dlg .choice small{color:var(--dlg-muted);font-weight:700}.dlg .choice.on{border-color:var(--dlg-accent);box-shadow:0 3px 0 var(--dlg-press);background:var(--dlg-tint)}.dlg .stat{background:var(--dlg-field);border:2px solid var(--dlg-line);border-radius:18px;box-shadow:0 3px 0 var(--dlg-line)}.dlg .stat b{font:700 28px var(--serif);color:var(--dlg-accent)}.dlg .stat span{color:var(--dlg-muted);font-size:13px;font-weight:800;letter-spacing:.05em}.dlg label.opt{border-bottom:2px solid var(--dlg-line);color:var(--dlg-ink);font-weight:800}.dlg select{min-height:42px;padding:0 10px;border-radius:12px;border:2px solid var(--dlg-line);background:var(--dlg-field);color:var(--dlg-ink);font:800 15px var(--sans)}.dlg input.vol,.dlg input[type=checkbox]{accent-color:var(--dlg-accent)}.dlg .rules h3{font:700 19px var(--serif);color:var(--dlg-accent)}.dlg table.lb td{border-bottom:2px solid var(--dlg-line)}.dlg table.lb td:first-child{color:var(--dlg-accent);font-weight:900}.dlg table.lb tr.me td{background:#fff1c7}.dlg .lbtotal{color:var(--dlg-muted)}.dlg .xpbar{height:14px;border-radius:7px;background:var(--dlg-line)}.dlg .xpbar i{background:linear-gradient(90deg,var(--brass),#ffab2e);border-radius:7px}.dlg .ach{border:2px solid var(--dlg-line);background:var(--dlg-field);border-radius:14px}.dlg .ach.got{border-color:var(--brass);background:#fff8e1}.dlg .ach span{color:var(--dlg-muted)}#toast{background:#fff;color:var(--dlg-ink);border:0;border-radius:999px;box-shadow:0 4px #d6d0ff,0 12px 26px #14125a59;font-weight:900}.card{border-radius:calc(var(--cw, 96px) * .1)}.card .face{background:var(--card-face);box-shadow:0 0 0 1px var(--card-edge),0 3px #14125a47,0 6px 14px #14125a2e}.card .face svg text{font-family:var(--card-font);font-weight:900;letter-spacing:-1px}.card .face svg text:not([font-size="38"]){font-size:48px}.card .face svg text[font-size="38"]{font-size:41px;letter-spacing:-4px}.card .face svg [fill="#c0262f"]{fill:var(--suit-red)}.card .face svg [fill="#1d1a17"]{fill:var(--suit-black)}.card .face svg circle[stroke="#1d1a17"]{stroke:var(--suit-black);stroke-width:4px}.card .face svg circle[stroke="#b8861f"]{stroke:var(--brass);stroke-width:4px;stroke-dasharray:none}.card .face svg rect[fill="#f4ead2"]{fill:var(--court-bg)}.card .face svg rect[stroke="#c0262f"],.card .face svg line[stroke="#c0262f"]{stroke:var(--suit-red);stroke-width:4px}.card .face svg rect[stroke="#1f3f8f"],.card .face svg line[stroke="#1f3f8f"]{stroke:var(--suit-black);stroke-width:4px}.card .face svg rect[stroke="#b8861f"]{stroke:transparent}.card .back{background:radial-gradient(rgba(255,255,255,.9) 18%,transparent 20%) 0 0 / calc(var(--cw, 96px) * .2) calc(var(--cw, 96px) * .2),linear-gradient(160deg,#ff8080,#ff5a5f);box-shadow:inset 0 0 0 calc(var(--cw, 96px) * .05) #fff,0 0 0 1px var(--card-edge),0 3px #14125a47}html[data-back=blue] .card .back{background:radial-gradient(rgba(255,200,61,.95) 18%,transparent 20%) 0 0 / calc(var(--cw, 96px) * .2) calc(var(--cw, 96px) * .2),linear-gradient(160deg,#6c70ff,#4549d6)}.slot{border-color:#ffffff47;border-style:dashed;background:#14125a2e;color:#ffffff59}.slot.foundation[data-suit=H],.slot.foundation[data-suit=D]{color:#ffa0aa80}.card.selected:after,.card.hint-source:after{border-width:4px;box-shadow:0 0 0 3px #ffc83d59}.stock-count,.pass-count,.deal-badge,.turn-prompt,.score-rail,.hearts-goal,.pass-panel,.hand-summary,.field-status,.daily-status,.hint-box,.game-strip,.zoom-controls{background:var(--chip)!important;border-color:transparent!important;box-shadow:0 3px 0 var(--chip-press)}.hearts-arena:before{border:3px dashed rgba(255,255,255,.14);box-shadow:none}.trick-centre:before{border:3px dashed rgba(255,255,255,.14);background:radial-gradient(ellipse,rgba(20,18,90,.25),transparent 68%)}.paper{border-color:#fff;border-radius:18px;box-shadow:0 6px #14125a73,0 22px 40px #14125a59}.sudoku-cell,.paper{background:#fff}.sudoku-cell{color:var(--dlg-accent)}.grid{background:#c9ccef;border-color:var(--dlg-ink)}.sudoku-cell.box-right{box-shadow:3px 0 0 var(--dlg-ink)}.sudoku-cell.box-bottom:after{background:var(--dlg-ink)}.sudoku-cell.related{background:#f1f2ff}.sudoku-cell.same{background:#dfe1ff}.sudoku-cell.selected,.sudoku-cell.selected.box-right{background:#fff1c7;box-shadow:inset 0 0 0 3px var(--brass-deep)}.sudoku-cell.given .digit{color:var(--dlg-ink);font-weight:900}.number-key{background:#fff;border:0;box-shadow:0 4px #c9ccef;border-radius:14px}.number-key strong{color:var(--dlg-accent);font-family:var(--serif)}.number-key small{color:var(--dlg-muted)}.control{border:0;background:#4549d6;box-shadow:0 3px #1f2178;border-radius:12px}.control.on{box-shadow:0 3px 0 var(--accent-press)}.mine-board{border:0;border-radius:18px;background:#2f32a8;box-shadow:0 6px #1f2178,0 18px 36px #14125a59}.mine-cell.hidden{border:0;color:var(--suit-red);background:linear-gradient(180deg,#8a8eff,#6c70ff);box-shadow:inset 0 -3px #4549d6,inset 0 2px #ffffff59}.mine-cell.revealed{border:0;background:#f4f4ff;box-shadow:inset 0 2px 3px #23264d26}.mine-cell.n1{color:#4549d6}.mine-cell.n2{color:#12936b}.mine-cell.n3{color:#d81e3c}.mine-cell.n4{color:#6b2fb3}.mine-cell.n5{color:#b4441b}.mine-cell.n6{color:#0f7f86}.mine-cell.n7{color:#23264d}.mine-cell.n8{color:#6a6d93}.retention-status,.daily-status{color:var(--ink-dim)!important}.mah-tile:before{background:linear-gradient(135deg,#6c70ff,#3236b4 72%)}.dlg{color-scheme:light}.mine-board:focus-visible{box-shadow:0 6px #1f2178,var(--focus)}@media (prefers-reduced-motion: reduce){body:before,#veil.on .dlg{animation:none}.tb,.dlg .btn{transition:none}}
