.hearts-table{--gold:#f2c97f;--rose:#ff8fa3;--mint:#8fe0bf;--violet:#b49cff;position:relative;isolation:isolate;max-width:1000px;margin:auto;padding:18px 22px 16px;color:#fff4ee;background:radial-gradient(ellipse 90% 60% at 50% 0%,#43213a,#24121f 75%);border:1px solid #5d3550;border-radius:24px;box-shadow:0 20px 60px #2a0f2240;overflow:hidden}
.hearts-table *{box-sizing:border-box}.hearts-table p{margin:0}.hearts-table button{font:inherit;cursor:pointer}.hearts-table .gin-card:disabled{opacity:1}
.hearts-table .gin-card:focus-visible,.hearts-table button:focus-visible,.hearts-table summary:focus-visible{outline:3px solid #9ee8e0;outline-offset:3px;z-index:6}
.hearts-hud{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.hearts-score{position:relative;display:grid;gap:2px;min-width:0;padding:9px 12px 14px;border-radius:14px;background:#ffffff0a;border:1px solid #ffffff17;transition:border-color .3s,box-shadow .3s}.hearts-score.is-you{background:#f2c97f0f;border-color:#f2c97f50}
.hearts-score.is-turn{border-color:#f2c97fcc;box-shadow:0 0 0 1px #f2c97f40,0 0 22px #f2c97f2e}
.hearts-score-name{font-size:13px;color:#ead6df;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hearts-score-line{display:flex;align-items:baseline;gap:6px;position:relative}.hearts-score-line strong{font:800 28px/1 Bricolage,DM,system-ui,sans-serif;color:#ffe2b0;font-variant-numeric:tabular-nums}
.hearts-low{font:800 10px/1 DM,system-ui,sans-serif;font-style:normal;letter-spacing:.08em;text-transform:uppercase;padding:3px 6px;border-radius:999px;background:var(--mint);color:#173a31}
.hearts-score-bar{position:absolute;left:12px;right:12px;bottom:6px;height:3px;border-radius:3px;background:#ffffff14;overflow:hidden}.hearts-score-bar:after{content:'';position:absolute;inset:0 auto 0 0;width:calc(var(--p,0)*100%);background:linear-gradient(90deg,var(--gold),#ff7f8f);border-radius:inherit;transition:width .8s}
.hearts-felt{position:relative;height:400px;margin:14px 0 0;border-radius:50%/46%;background:repeating-linear-gradient(90deg,#ffffff04 0 1px,#0000 1px 4px),radial-gradient(ellipse at 50% 42%,#8c2c43,#62192e 58%,#3d0f1e);box-shadow:inset 0 0 0 6px #d9a67955,inset 0 0 0 8px #0004,inset 0 0 90px #1a0410c0}
.hearts-watermark{position:absolute;left:50%;top:50%;width:150px;transform:translate(-50%,-50%);opacity:.08;pointer-events:none}.hearts-watermark svg{display:block;width:100%}.hearts-watermark path{fill:#ffd6de}
.hearts-seat{position:absolute;z-index:2;display:grid;justify-items:center;gap:3px;min-width:100px;max-width:31%;padding:7px 12px 8px;border-radius:14px;background:#1d0d18e0;border:1px solid #ffffff1c;font-size:13px;text-align:center;transition:border-color .3s,box-shadow .3s}
.hearts-seat b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.hearts-seat-status{display:flex;align-items:center;gap:6px;min-height:18px;font-size:12px;color:#e9d7de;font-variant-numeric:tabular-nums}
.hearts-taken{opacity:.75}.hearts-taken.has-points{opacity:1;color:#ffb3c0;font-weight:800}.hearts-qchip{padding:1px 6px;border-radius:6px;background:var(--violet);color:#1d1238;font-weight:800;font-size:11px;letter-spacing:.02em}
.hearts-seat-0{bottom:8px;left:50%;transform:translateX(-50%)}.hearts-seat-1{left:12px;top:50%;transform:translateY(-50%)}.hearts-seat-2{top:8px;left:50%;transform:translateX(-50%)}.hearts-seat-3{right:12px;top:50%;transform:translateY(-50%)}
.hearts-seat.is-turn{border-color:var(--gold);box-shadow:0 0 0 2px #f2c97f55,0 0 26px #f2c97f40}.hearts-seat.is-turn b:before{content:'';display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold);vertical-align:1px;animation:card-turn 1.4s ease-in-out infinite}
.hearts-seat.is-ready .hearts-seat-status{color:var(--mint)}.hearts-seat.is-target{border-color:var(--rose);box-shadow:0 0 0 2px #ff8fa355,0 0 24px #ff8fa355}
.hearts-seat.is-taking{animation:hearts-take .7s .35s ease-out}.hearts-seat.is-queened{animation:hearts-queened 1.1s .35s ease-out}
@keyframes hearts-take{40%{box-shadow:0 0 0 3px var(--gold),0 0 34px #f2c97f99}}@keyframes hearts-queened{35%{box-shadow:0 0 0 3px var(--violet),0 0 44px #8a6cffcc;scale:1.06}}
.hearts-pop{position:absolute;right:-10px;top:-12px;padding:3px 8px;border-radius:999px;background:var(--rose);color:#3b0f1d;font:800 13px/1.2 DM,system-ui,sans-serif;pointer-events:none;box-shadow:0 4px 10px #0006;animation:card-pop 1.6s .35s ease-out both}.hearts-pop.is-queen{background:var(--violet);color:#1d1238}
.hearts-fan{display:flex;justify-content:center;height:22px;padding-left:9px}.hearts-fan .gin-back{--cw:15px;margin-left:-9px;border-width:1px;border-radius:2px;box-shadow:0 1px 2px #0007}
.hearts-trick{position:absolute;left:50%;top:50%;width:240px;height:210px;transform:translate(-50%,-50%);border-radius:40%;transition:background .2s,box-shadow .2s}.hearts-trick.is-drop{background:#f2c97f1a;box-shadow:0 0 0 2px #f2c97f80}
.hearts-played{position:absolute!important;--cw:62px}.hearts-played-0{left:50%;bottom:0;margin-left:-31px;rotate:-4deg}.hearts-played-2{left:50%;top:0;margin-left:-31px;rotate:3deg}.hearts-played-1{left:4px;top:50%;margin-top:-43px;rotate:-10deg}.hearts-played-3{right:4px;top:50%;margin-top:-43px;rotate:9deg}
.hearts-played.is-leading{box-shadow:inset 0 0 0 1px #fff,0 0 0 2px #f2c97fb0,0 8px 14px -6px #000a}.hearts-played.is-winner{box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--gold),0 0 26px #f2c97faa;z-index:3}
.hearts-played.is-point:not(.is-winner){box-shadow:inset 0 0 0 1px #fff,0 0 0 2px #ff8fa3aa,0 8px 14px -6px #000a}
.hearts-played.is-queen{z-index:4;box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--violet),0 0 30px #8a6cffdd;animation:hearts-queen-in 1.3s ease-out}
@keyframes hearts-queen-in{0%{scale:1;filter:brightness(1)}25%{scale:1.22;filter:brightness(1.12)}55%{scale:1.08}100%{scale:1;filter:brightness(1)}}
.hearts-trick-caption{position:absolute;left:50%;top:50%;width:110px;transform:translate(-50%,-50%);text-align:center;font-size:11px;line-height:1.3;color:#ffe9d6;letter-spacing:.02em;text-shadow:0 1px 2px #0008;pointer-events:none}
/* Passing: an arrow toward the receiving seat and three slots. */
.hearts-pass{position:absolute;inset:0;display:grid;justify-items:center;align-content:center;gap:2px;border-radius:30%;transition:background .2s,box-shadow .2s;--dx:10px;--dy:0px}.hearts-pass.is-drop{background:#ff8fa31f;box-shadow:0 0 0 2px #ff8fa380}
.hearts-pass.is-left{--dx:-10px}.hearts-pass.is-across{--dx:0px;--dy:-8px}
.hearts-arrow{display:block;width:92px;color:var(--rose);filter:drop-shadow(0 2px 6px #0007);animation:hearts-nudge 1.6s ease-in-out infinite}.hearts-arrow svg{display:block;width:100%}.hearts-pass.is-left .hearts-arrow{rotate:180deg;--dx:10px}.hearts-pass.is-across .hearts-arrow{rotate:-90deg;width:64px;margin:20px 0 22px;--dx:8px;--dy:0px}
@keyframes hearts-nudge{50%{translate:var(--dx) var(--dy)}}
.hearts-pass-dir{font:800 18px/1.1 Bricolage,DM,system-ui,sans-serif;color:#fff0e6;text-transform:capitalize}.hearts-pass-to{font-size:12px;color:#f3d6de}
.hearts-tray{display:flex;gap:6px;margin-top:6px}.hearts-slot{width:38px;aspect-ratio:5/7;border-radius:9%/6.5%;border:2px dashed #ffd5df66;transition:border-color .2s}.hearts-slot.is-full{border-color:transparent}.hearts-slot .gin-card{--cw:38px;animation:hearts-slot-in .25s cubic-bezier(.2,.8,.3,1.3)}
@keyframes hearts-slot-in{from{scale:.6;opacity:0}}
/* Moments */
.hearts-fx{position:absolute;inset:0;z-index:5;pointer-events:none;border-radius:inherit;overflow:hidden}
.hearts-burst{position:absolute;left:50%;top:50%;display:grid;justify-items:center;gap:6px;transform:translate(-50%,-58%)}.hearts-burst svg{width:86px;overflow:visible;filter:drop-shadow(0 4px 14px #ff4d6d99)}
.hearts-half{fill:#ff5f7e;stroke:#fff;stroke-width:3;stroke-linejoin:round;transform-box:fill-box;transform-origin:50% 100%;animation:hearts-pop-in 1.8s var(--age,0ms) both}
.hearts-half.is-left{animation-name:hearts-split-l}.hearts-half.is-right{animation-name:hearts-split-r}
@keyframes hearts-split-l{0%{opacity:0;scale:.3}14%{opacity:1;scale:1.12}26%{scale:1;translate:0 0;rotate:0deg}44%{translate:-9px 2px;rotate:-14deg}85%{opacity:1}100%{opacity:0;translate:-13px 6px;rotate:-18deg}}
@keyframes hearts-split-r{0%{opacity:0;scale:.3}14%{opacity:1;scale:1.12}26%{scale:1;translate:0 0;rotate:0deg}44%{translate:9px 2px;rotate:14deg}85%{opacity:1}100%{opacity:0;translate:13px 6px;rotate:18deg}}
.hearts-burst b{padding:5px 12px;border-radius:999px;background:#fff2f4;color:#8c1d36;font:800 13px/1.2 DM,system-ui,sans-serif;letter-spacing:.04em;text-transform:uppercase;box-shadow:0 6px 16px #0007;animation:hearts-tag 1.8s var(--age,0ms) both}
@keyframes hearts-tag{0%,22%{opacity:0;translate:0 8px}34%,82%{opacity:1;translate:0 0}100%{opacity:0}}
.hearts-burst:before{content:'';position:absolute;left:50%;top:34%;width:40px;height:40px;margin:-20px;border-radius:50%;border:3px solid #ff8fa3;opacity:0;animation:hearts-ring 1.8s var(--age,0ms) ease-out both}
@keyframes hearts-ring{0%,20%{opacity:0;scale:.4}26%{opacity:.9}60%,100%{opacity:0;scale:4}}
.hearts-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,#0000 28%,#1f0b3bd9 100%);animation:hearts-dim 2.2s var(--age,0ms) both}
@keyframes hearts-dim{0%{opacity:0}14%,72%{opacity:1}100%{opacity:0}}
.hearts-sky{position:absolute;inset:0;display:grid;justify-items:center;align-content:center;background:radial-gradient(ellipse at 50% 40%,#2c1b4fd0,#140a24f0 75%);animation:hearts-dim 4.2s var(--age,0ms) both}.hearts-sky svg{width:min(240px,70%);animation:hearts-rise 4.2s var(--age,0ms) cubic-bezier(.2,.8,.3,1) both}
.hearts-sky b{margin-top:4px;font:800 clamp(18px,3vw,26px)/1.2 Bricolage,DM,system-ui,sans-serif;color:#ffe7a3;text-shadow:0 2px 12px #000a;animation:hearts-tag 4.2s var(--age,0ms) both}
@keyframes hearts-rise{0%{translate:0 50px;opacity:0}30%,100%{translate:0 0;opacity:1}}
.hearts-stars path,.hearts-stars circle{transform-box:fill-box;transform-origin:center;animation:hearts-twinkle 1.8s ease-in-out infinite}.hearts-stars :nth-child(2n){animation-delay:.5s}.hearts-stars :nth-child(3n){animation-delay:1s}
@keyframes hearts-twinkle{50%{opacity:.35;scale:.7}}
.hearts-message{display:grid;justify-items:center;gap:3px;min-height:46px;margin:14px 0 4px!important;text-align:center;line-height:1.3}.hearts-message strong{font-size:clamp(15px,2vw,17px);font-weight:750}.hearts-recap{font-size:13px;color:#ffc9d3}
/* Your hand */
.hearts-hand{container-type:inline-size;display:flex;flex-wrap:wrap;justify-content:center;row-gap:12px;padding:24px 0 6px 14px;min-height:124px}
.hearts-hand .gin-card{--cw:min(72px,calc((100cqw + 168px - 30px)/13));margin-left:-14px;cursor:pointer}.hearts-hand .gin-card.is-suit-start{margin-left:-4px}
.hearts-hand .gin-card.is-legal{transform:translateY(-8px)}.hearts-hand .gin-card.is-unplayable{filter:saturate(.35) brightness(.6);cursor:not-allowed}
@media(hover:hover){.hearts-hand .gin-card:not(.is-unplayable):not(.is-selected):hover{transform:translateY(-13px)}}
.hearts-hand .gin-card.is-selected{transform:translateY(-22px);box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--gold),0 18px 22px -8px #000c;z-index:4}
.hearts-table.is-your-turn[data-stage="play"] .hearts-hand .gin-card.is-legal{box-shadow:inset 0 0 0 1px #ffffffb0,0 2px 0 #b9ab8a,0 0 0 2px var(--mint),0 12px 16px -8px #000b}
.hearts-hand .gin-card.is-received:not(.is-selected){box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--rose),0 0 18px #ff8fa399,0 10px 16px -8px #000b}.hearts-hand .gin-card.is-received[data-tag]::after{background:var(--rose);color:#3b0f1d}
.hearts-hand .gin-card.is-selected[data-tag]::after{background:var(--gold)}.hearts-hand .gin-card[data-tag]::after{right:auto;left:50%;translate:-50% 0}
.hearts-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center;margin-top:16px;min-height:48px}.hearts-actions .gin-primary{min-height:48px;min-width:180px}.hearts-actions .gin-primary:disabled{opacity:.45}
.hearts-table .gin-secondary{background:#3a1830;color:#ffeef2;border:1px solid #ffffff2e;box-shadow:0 3px 0 #1a0812}
.hearts-note{font-size:12px;color:#dccbd3;text-align:center;margin:14px 0!important}.hearts-note .is-broken{color:#ffb3c0;font-weight:700}
/* Hand results */
.hearts-results{position:relative;max-width:560px;margin:14px auto 0;padding:18px 20px;border-radius:18px;text-align:center;color:#2a1724;background:linear-gradient(#fff8f0,#f6e5d6);box-shadow:0 2px 0 #c9a98c,0 18px 30px -12px #000a;animation:gin-rise .5s .15s cubic-bezier(.2,.8,.3,1) both}.hearts-results.is-late{animation-delay:1.35s}
.hearts-results h3{margin:0 0 4px;font:800 clamp(21px,3vw,27px)/1.2 Bricolage,DM,system-ui,sans-serif;color:#6b1730}.hearts-results-sub{font-size:14px;color:#5c4352;margin:2px 0 8px!important}
.hearts-results.is-moon{color:#f8ecff;background:radial-gradient(ellipse at 50% 0%,#3b2366,#1a0f30 75%);box-shadow:0 0 0 1px #b49cff66,0 18px 40px -12px #000c}.hearts-results.is-moon h3{color:#ffe7a3}.hearts-results.is-moon .hearts-results-sub{color:#dcd0f2}
.hearts-moon{display:block;width:180px;margin:-6px auto 2px}.hearts-moon svg{display:block;width:100%}.hearts-moon .hearts-moon-body{animation:hearts-rise 1.4s cubic-bezier(.2,.8,.3,1) both}
.hearts-rows{display:grid;gap:6px;margin:8px 0 6px;padding:0;list-style:none}
.hearts-rows li{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto 54px 44px;align-items:center;gap:10px;padding:9px 12px 12px;border-radius:12px;background:#ffffffa8;text-align:left;font-size:14px}.hearts-rows li.is-you{background:#fff;box-shadow:0 0 0 2px #f2c97f}
.hearts-rows b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hearts-row-take{display:flex;gap:6px;align-items:center;font-size:13px}.hearts-rows .hearts-taken{color:#7a5a68;opacity:1}.hearts-rows .hearts-taken.has-points{color:#b8283a}
.hearts-row-delta{text-align:right;font-weight:800;color:#b8283a;font-variant-numeric:tabular-nums}.hearts-row-delta.is-minus{color:#1d7a5c}.hearts-rows strong{text-align:right;font:800 20px/1 Bricolage,DM,system-ui,sans-serif;font-variant-numeric:tabular-nums}
.hearts-row-bar{position:absolute;left:12px;right:12px;bottom:5px;height:3px;border-radius:3px;background:#2a172418;overflow:hidden}.hearts-row-bar:after{content:'';position:absolute;inset:0 auto 0 0;width:calc(var(--p,0)*100%);background:linear-gradient(90deg,#e7a64a,#d2405c);border-radius:inherit;animation:hearts-grow 1.1s .5s cubic-bezier(.3,.7,.3,1) backwards}
@keyframes hearts-grow{from{width:calc(var(--from,0)*100%)}}
.hearts-rows b .hearts-low{margin-left:8px;vertical-align:2px}
.hearts-results.is-moon .hearts-rows li{background:#ffffff14;color:#f8ecff}.hearts-results.is-moon .hearts-rows li.is-you{background:#ffffff26}.hearts-results.is-moon .hearts-rows .hearts-taken{color:#e5d9f7}.hearts-results.is-moon .hearts-row-delta{color:#ffb3c0}.hearts-results.is-moon .hearts-row-delta.is-minus{color:var(--mint)}.hearts-results.is-moon .hearts-row-bar{background:#ffffff20}
.hearts-moon-choice{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}.hearts-moon-option{display:grid!important;gap:4px;justify-items:center;padding:12px!important;text-align:center}.hearts-moon-option b{font-size:15px}.hearts-moon-option small{font-size:11px;font-weight:600;opacity:.85}.hearts-moon-option em{font-style:normal;font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:999px;background:#16302d;color:#ffe7a3}
.hearts-help{border-top:1px solid #ffffff30;padding-top:14px;font-size:14px}.hearts-help summary{min-height:44px;cursor:pointer;display:flex;align-items:center}.hearts-help p{color:#ead9e0;font-size:14px;line-height:1.6;margin:0 0 10px!important}
.hearts-scorecard{width:100%;border-collapse:collapse;font-size:13px;margin:6px 0 10px}.hearts-scorecard caption{text-align:left;padding:8px 0;font-weight:700}.hearts-scorecard th,.hearts-scorecard td{text-align:left;padding:8px 6px;border-bottom:1px solid #ffffff22;font-variant-numeric:tabular-nums}
/* Pages */
.hearts-shell{max-width:1050px;margin:auto}.hearts-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.hearts-heading h1{font-size:clamp(36px,6vw,64px);margin:0}
.hearts-start{padding:36px;border-radius:24px;background:#f9ecef;margin:20px 0}.hearts-start h2{margin-top:0}.hearts-start .button{margin:14px 8px 10px 0}
.hearts-level{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:560px;margin:18px 0 6px;padding:0;border:0}.hearts-level legend{font-weight:800;margin-bottom:8px;padding:0}
.hearts-level label{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;min-height:56px;padding:12px 14px;border-radius:14px;background:#fff;border:2px solid #ead2d9;cursor:pointer}.hearts-level label:has(input:checked){border-color:#b8283a;box-shadow:0 0 0 3px #b8283a22}.hearts-level input{width:20px;height:20px;accent-color:#b8283a;grid-row:span 2}.hearts-level span{font-size:13px;color:#5e4a54}
.hearts-more{color:#ffd6de;font-weight:700;text-underline-offset:3px;padding:12px 6px}
.hearts-landing{display:grid;grid-template-columns:1fr 1.1fr;gap:38px;align-items:center}.hearts-landing h1{font-size:clamp(40px,6vw,68px);line-height:1.03;margin:14px 0 22px}.hearts-landing p{font-size:18px;max-width:480px}
.hearts-hero{position:relative;display:block;border-radius:28px;overflow:hidden;aspect-ratio:4/3;background:#2b1424;box-shadow:0 20px 40px #3a102430}.hearts-hero img{display:block;width:100%;height:100%;object-fit:cover}
.hearts-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:30px 0}.hearts-facts h3{font-size:20px;margin:0 0 6px}.hearts-facts p{font-size:15px;margin:0}
.hearts-steps{display:grid;gap:10px;padding-left:22px;max-width:820px}.hearts-steps li{line-height:1.6}
.hearts-faq details{border-top:1px solid #e5d9de;padding:4px 0}.hearts-faq summary{min-height:48px;display:flex;align-items:center;cursor:pointer;font-weight:700}.hearts-faq p{max-width:820px;line-height:1.65}
@media(max-width:800px){.hearts-landing{grid-template-columns:1fr}.hearts-facts{grid-template-columns:1fr;gap:12px}}
@media(max-width:600px){.hearts-shell{padding:20px 10px}.hearts-heading{margin-bottom:14px}.hearts-start{padding:22px}.hearts-level{grid-template-columns:1fr}
 .hearts-table{padding:12px 10px;border-radius:18px}.hearts-hud{gap:5px}.hearts-score{padding:6px 7px 11px;border-radius:11px}.hearts-score-name{font-size:11px}.hearts-score-line strong{font-size:21px}.hearts-low{font-size:8px;padding:2px 4px}.hearts-score-bar{left:7px;right:7px;bottom:4px}
 .hearts-felt{height:300px;margin-top:10px;border-radius:38%/30%}.hearts-watermark{width:110px}.hearts-seat{display:flex;align-items:center;gap:5px;min-width:0;max-width:30%;padding:5px 8px;font-size:11px;border-radius:10px}.hearts-seat b{font-size:11px}.hearts-seat-status{font-size:11px;gap:4px;min-height:0}.hearts-fan{display:none}
 .hearts-seat-1{left:4px}.hearts-seat-3{right:4px}.hearts-seat-0{bottom:6px}.hearts-seat-2{top:6px}.hearts-seat-1,.hearts-seat-3{flex-direction:column;gap:1px}.hearts-qchip{font-size:10px;padding:0 4px}
 .hearts-trick{width:172px;height:200px}.hearts-played{--cw:50px}.hearts-played-0,.hearts-played-2{margin-left:-25px}.hearts-played-1,.hearts-played-3{margin-top:-35px}.hearts-played-1{left:0}.hearts-played-3{right:0}.hearts-trick-caption{width:72px;font-size:10px}
 .hearts-arrow{width:70px}.hearts-pass.is-across .hearts-arrow{width:48px;margin:14px 0 16px}.hearts-pass-dir{font-size:16px}.hearts-slot,.hearts-slot .gin-card{--cw:34px;width:34px}.hearts-burst svg{width:70px}
 .hearts-message{min-height:40px;margin-top:10px!important}.hearts-message strong{font-size:14px}.hearts-recap{font-size:12px}
 .hearts-hand{padding:22px 0 6px 8px;row-gap:14px}.hearts-hand .gin-card,.hearts-hand .gin-card.is-suit-start{--cw:calc((100cqw + 40px)/7);margin-left:-8px}
 .hearts-actions{margin-top:10px}.hearts-actions .gin-primary{font-size:14px;padding:12px;min-width:0;flex:1 1 auto}.hearts-actions .gin-secondary{padding:12px 14px}.hearts-note{margin:10px 0!important}
 .hearts-results{padding:14px 12px}.hearts-rows li{grid-template-columns:minmax(0,1fr) auto 42px 36px;gap:6px;padding:8px 9px 11px;font-size:13px}.hearts-rows strong{font-size:17px}.hearts-moon-choice{grid-template-columns:1fr}.hearts-moon{width:140px}}
@media(prefers-reduced-motion:reduce){.hearts-table *,.hearts-hero *{animation:none!important;transition:none!important}.hearts-half.is-left{translate:-6px 0;rotate:-10deg}.hearts-half.is-right{translate:6px 0;rotate:10deg}}
.hearts-played.is-queen::after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(115deg,#0000 35%,#e4d9ffaa 50%,#0000 65%) -150% 0/250% 100% no-repeat;pointer-events:none;animation:hearts-glint 1.1s .25s ease-out both}
@keyframes hearts-glint{to{background-position:150% 0}}
.hearts-confetti{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}.hearts-confetti i{position:absolute;top:-24px;left:calc(var(--x,50)*1%);font-style:normal;font-size:16px;color:#e0485f;opacity:0;animation:hearts-fall 2.8s ease-in forwards}
.hearts-confetti i:nth-child(1){--x:6;animation-delay:.5s}.hearts-confetti i:nth-child(2){--x:14;animation-delay:.9s;color:#f2c97f}.hearts-confetti i:nth-child(3){--x:22;animation-delay:.6s}.hearts-confetti i:nth-child(4){--x:31;animation-delay:1.2s;color:#b49cff}.hearts-confetti i:nth-child(5){--x:39;animation-delay:.7s}.hearts-confetti i:nth-child(6){--x:47;animation-delay:1s;color:#f2c97f}.hearts-confetti i:nth-child(7){--x:55;animation-delay:.55s}
.hearts-confetti i:nth-child(8){--x:62;animation-delay:1.3s;color:#b49cff}.hearts-confetti i:nth-child(9){--x:69;animation-delay:.8s}.hearts-confetti i:nth-child(10){--x:76;animation-delay:1.1s;color:#f2c97f}.hearts-confetti i:nth-child(11){--x:83;animation-delay:.65s}.hearts-confetti i:nth-child(12){--x:90;animation-delay:1.4s}.hearts-confetti i:nth-child(13){--x:95;animation-delay:.95s;color:#b49cff}.hearts-confetti i:nth-child(14){--x:3;animation-delay:1.5s;color:#f2c97f}
@keyframes hearts-fall{0%{opacity:0;translate:0 0;rotate:0deg}10%{opacity:1}100%{opacity:0;translate:-12px 340px;rotate:200deg}}
@media(prefers-reduced-motion:reduce){.hearts-confetti{display:none}}
.hearts-table[data-stage] .hearts-hand .gin-card.is-selected,.hearts-table.is-your-turn[data-stage] .hearts-hand .gin-card.is-legal.is-selected{transform:translateY(-22px);box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--gold),0 0 18px #f2c97f80,0 18px 22px -8px #000c}
