:root{--paper:#f4efe6;--paper-light:#faf6ee;--paper-deep:#ebe2d2;--ink:#2b2a28;--ink-soft:#6a655d;--wood:#c08c58;--wood-light:#d9aa72;--wood-dark:#8f6339;--wood-deep:#6b4728;--brass:#c9a03d;--red:#b24a3e;--green:#6f8f5c;--blue:#5f87b0;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--paper);background-image:radial-gradient(ellipse at 50% 0%, #faf5ea 0%, var(--paper) 60%, #ece3d3 100%);min-height:100vh;color:var(--ink);font-family:var(--sans);margin:0;line-height:1.45}a{color:var(--ink)}a:focus-visible,button:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.desk{max-width:1500px;margin:0 auto;padding:.9rem 1rem 2rem}header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.25rem 1rem;margin-bottom:.7rem;display:flex}h1{font-family:var(--serif);margin:0;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:500;line-height:1.05}.tagline{color:var(--ink-soft);margin:.15rem 0 0;font-size:.95rem}.aside{color:var(--ink-soft);margin:0;font-size:.88rem}.table{grid-template-columns:11.5rem minmax(0,1fr) 13rem;align-items:start;gap:.8rem;display:grid}.panel{background:#faf6eed9;border:1px solid #8f63392e;border-radius:12px;padding:0 .6rem .7rem;box-shadow:inset 0 1px #fffc,0 8px 22px -16px #2b2a2866}.band{background:var(--wood-deep);color:#f6ead6;font:600 .78rem var(--sans);letter-spacing:.14em;text-transform:uppercase;border-radius:12px 12px 0 0;margin:0 -.6rem .6rem;padding:.45rem .8rem}.tray{gap:.4rem;display:grid}.piece{width:100%;font:500 .88rem var(--sans);letter-spacing:0;text-transform:none;text-align:left;color:var(--ink);cursor:pointer;background:#fffdf8;border:1.5px solid #2b2a281f;border-radius:9px;align-items:center;gap:.55rem;padding:.3rem .5rem;transition:transform .14s,box-shadow .14s,border-color .14s;display:flex;box-shadow:0 2px #2b2a2814}.piece svg{flex:none;width:2.6rem;height:1.7rem}.piece kbd{opacity:.55;margin-left:auto}.piece:hover:not(:disabled){transform:translate(2px);box-shadow:0 3px #2b2a281a}.piece[aria-pressed=true]{border-color:var(--wood-dark);background:#f6e9d6;transform:translate(3px)}.piece:disabled{opacity:.4;cursor:default}.piece.bomb[aria-pressed=true]{border-color:var(--red);background:#f6e1dc}.actions{gap:.4rem;margin-top:.7rem;display:grid}.actions .row{grid-template-columns:1fr 1fr;gap:.4rem;display:grid}.tray-panel.idle .tray,.tray-panel.idle .actions{opacity:.45;pointer-events:none}button{font:inherit;letter-spacing:.05em;text-transform:uppercase;border:1.5px solid var(--ink);background:var(--paper-light);color:var(--ink);cursor:pointer;border-radius:999px;padding:.42rem .6rem;font-size:.74rem;font-weight:600}button:disabled{opacity:.38;cursor:default}button.quiet{color:var(--ink-soft);border-color:#2b2a284d}button.quiet:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}button.primary{background:var(--ink);color:var(--paper);padding:.55rem}button.primary:hover:not(:disabled){background:var(--wood-dark);border-color:var(--wood-dark)}button.danger{background:var(--red);border-color:var(--red)}.stage{background:linear-gradient(180deg, var(--wood-light), var(--wood) 30%, var(--wood-dark));border-radius:14px;padding:10px;position:relative;box-shadow:inset 0 1px #ffffff80,0 16px 30px -18px #2b2a2899}.game{aspect-ratio:16/9;background:var(--paper-light);border-radius:6px;width:100%;overflow:hidden;box-shadow:inset 0 3px 8px #2b2a2840}.game canvas{display:block}.overlay{pointer-events:none;place-items:center;display:grid;position:absolute;inset:10px}.overlay[hidden]{display:none}.count{min-width:7rem;font-family:var(--serif);background:#faf6eee6;border-radius:14px;place-items:center;padding:.4rem 1.6rem;font-size:clamp(2.6rem,7vw,5rem);line-height:1.1;animation:.9s ease-out both beat;display:grid;box-shadow:0 10px 26px -14px #2b2a2880}@keyframes beat{0%{opacity:0;transform:scale(1.2)}25%{opacity:1;transform:scale(1)}to{opacity:.9;transform:scale(.97)}}.card{text-align:center;pointer-events:auto;background:#fcf9f2f5;border-radius:14px;min-width:min(24rem,86%);padding:1rem 1.4rem 1.1rem;box-shadow:0 14px 34px -14px #2b2a2880}.card h2{font-family:var(--serif);margin:0 0 .3rem;font-size:1.45rem;font-weight:500}.card p{color:var(--ink-soft);margin:.2rem 0}.card table{border-collapse:collapse;width:100%;margin:.6rem 0 .2rem;font-size:.92rem}.card td{text-align:right;padding:.18rem .3rem}.card td:first-child{text-align:left}.card .who{align-items:center;gap:.4rem;display:inline-flex}.card .gain{color:var(--green);font-weight:600}.card .first td{font-weight:700}.card.round{opacity:0;min-width:min(31rem,92%);transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .26s;position:relative;transform:translateY(10px)scale(.98)}.card.round.shown{opacity:1;transform:none}.tracks{text-align:left;gap:.45rem;margin:.7rem 0 .2rem;padding:0;list-style:none;display:grid}.track-row{background:#2b2a2809;border-radius:9px;grid-template-columns:1.6rem minmax(5.5rem,7rem) 1fr 2.4rem 2.2rem;align-items:center;gap:.5rem;padding:.3rem .5rem;transition:background .4s,box-shadow .4s;display:grid}.track-row .who{font-size:.9rem;font-weight:600;line-height:1.15;display:grid}.track-row .who small{color:var(--ink-soft);font-size:.72rem;font-weight:400}.track{background:#eadbc4;border-radius:99px;height:.8rem;position:relative;overflow:visible;box-shadow:inset 0 0 0 1.5px #c9ab83}.track i{z-index:2;background:#c9ab83;width:1.5px;position:absolute;top:2px;bottom:2px}.track b{border-radius:99px;position:absolute;top:0;bottom:0;left:0}.track .was{background:var(--c);opacity:.55}.track .now{background:var(--c);transition:width .9s cubic-bezier(.2,.7,.2,1);box-shadow:inset 0 -2px #2b2a282e}.goal-flag{background:var(--brass);z-index:3;width:2px;height:1.4rem;position:absolute;top:-.75rem;right:-.2rem}.goal-flag:after{content:"";border-top:.3rem solid #0000;border-bottom:.3rem solid #0000;border-left:.65rem solid #b8b0a3;transition:border-color .3s;position:absolute;top:0;left:2px}.track-row .gain{color:var(--green);text-align:right;opacity:0;font-size:.85rem;font-weight:700;transition:opacity .3s,transform .3s;transform:translateY(4px)}.track-row.filled .gain{opacity:1;transform:none}.track-row .pts{font:700 1.05rem var(--serif);text-align:right;font-variant-numeric:tabular-nums}.track-row.won.filled{background:#fbefd2;transition-delay:.8s;box-shadow:0 0 0 1.5px #e0bf77}.track-row.won.filled .goal-flag:after{border-left-color:var(--red);transition-delay:.8s}.goal-note{font-size:.78rem;margin-top:.4rem!important}.card.round.simple .body{animation:1.7s both under-stamp}@keyframes under-stamp{0%,70%{opacity:.25;filter:blur(1px)}to{opacity:1;filter:none}}.stamp{z-index:5;pointer-events:none;color:var(--red);font-family:var(--serif);place-content:center;justify-items:center;animation:2.6s cubic-bezier(.2,.9,.3,1) both stamp;display:grid;position:absolute;inset:0}.stamp span,.stamp small{letter-spacing:.06em;background:#fcf9f2eb;border:3px solid;padding:0 .6rem;display:block;transform:rotate(-6deg)}.stamp span{text-transform:uppercase;border-radius:6px 6px 0 0;font-size:clamp(2rem,5vw,3.1rem);font-weight:600;line-height:1.15}.stamp small{text-transform:uppercase;border-top:none;border-radius:0 0 6px 6px;margin-top:-3px;padding-bottom:.15rem;font-size:1rem}@keyframes stamp{0%{opacity:0;transform:scale(2.2)}14%{opacity:1;transform:scale(.94)}20%{transform:scale(1.03)}26%,62%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)translateY(-28%)}}.tally{font-size:.85rem}.head{flex:none;width:1.5rem;height:1.5rem;display:inline-grid}.head svg{width:100%;height:100%}.dot{border-radius:50%;flex:none;width:.7rem;height:.7rem;display:inline-block}.round-panel{padding-top:.7rem}.round{font-family:var(--serif);margin:0;font-size:1.35rem}.pill{font:600 .82rem var(--sans);letter-spacing:.08em;text-transform:uppercase;background:#f3dfb3;border:1px solid #e0bf77;border-radius:8px;margin:.35rem 0 .7rem;padding:.3rem .9rem;display:inline-block}.pill.run{background:#dfe8d4;border-color:#a9c094}.pill.end{background:#e4dfd6;border-color:#c9bfae}.roster{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.roster li{grid-template-columns:auto 1fr auto;align-items:center;gap:.1rem .5rem;font-size:.9rem;display:grid}.roster .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.roster .me .name{font-weight:700}.roster .pts{font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:600}.roster .tag{color:var(--ink-soft);letter-spacing:.02em;margin-left:.25rem;font:600 .72rem ui-monospace,SFMono-Regular,Menlo,monospace}.roster .state{color:var(--ink-soft);grid-column:2/4;align-items:center;gap:.3rem;font-size:.78rem;display:flex}.roster .state.ok:before{content:"✓";color:var(--green);font-weight:700}.roster .state.wait:before{content:"○"}.roster .state.out:before{content:"×";color:var(--red);font-weight:700}.roster .watching{opacity:.6}.guide{background:var(--paper-deep);color:#4b4740;border-radius:9px;margin:.8rem 0 0;padding:.6rem .7rem;font-size:.84rem}.guide .deadline{color:var(--red);margin-top:.25rem;font-weight:600;display:block}.message{text-align:center;min-height:1.4em;margin:.6rem 0 0;font-size:.95rem}.message.error{color:var(--red)}.steps{grid-template-columns:repeat(4,1fr);gap:.6rem;margin:.6rem 0 0;padding:0;list-style:none;display:grid}.steps li{color:var(--ink-soft);background:#faf6ee99;border:1px solid #8f633926;border-radius:10px;padding:.55rem .7rem .6rem 2.3rem;font-size:.8rem;transition:background .2s,border-color .2s;position:relative}.steps b{font-family:var(--serif);color:var(--ink);letter-spacing:.02em;font-size:.98rem;font-weight:500;display:block}.steps .n{background:var(--paper-deep);width:1.2rem;height:1.2rem;font:700 .7rem var(--sans);color:var(--ink-soft);border-radius:50%;place-items:center;display:grid;position:absolute;top:.6rem;left:.65rem}.steps li.now{color:#4b4740;background:#fbf0dc;border-color:#e0bf77}.steps li.now .n{background:var(--ink);color:var(--paper)}.help{text-align:center;color:var(--ink-soft);margin:.5rem 0 0;font-size:.82rem}kbd{font:600 .72rem var(--sans);background:#fffdf8;border:1px solid #2b2a2840;border-bottom-width:2px;border-radius:4px;padding:0 .3rem}.card.heroes{min-width:min(34rem,94%)}.hero-row{grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:.7rem;display:grid}.hero{text-transform:none;letter-spacing:0;background:#fffdf8;border:1.5px solid #2b2a2824;border-radius:12px;justify-items:center;gap:.2rem;padding:.6rem .4rem .5rem;font-weight:400;transition:transform .14s,border-color .14s,box-shadow .14s;display:grid}.hero .portrait .head{width:3.2rem;height:3.2rem}.hero .portrait svg{width:100%;height:100%}.hero .hname{font:500 1rem var(--serif);color:var(--ink)}.hero .hstate{color:var(--ink-soft);font-size:.74rem}.hero:hover:not(:disabled){border-color:var(--c);box-shadow:0 8px 16px -10px var(--c);transform:translateY(-3px)}.hero:disabled{opacity:.45;cursor:not-allowed}button.link{color:var(--ink-soft);font:inherit;text-transform:none;letter-spacing:0;cursor:pointer;background:0 0;border:0;margin-left:.4rem;padding:0;font-size:.8rem;text-decoration:underline}.seat-picks{flex-wrap:wrap;gap:.3rem;margin-top:.35rem;display:flex}.seat-pick{text-transform:none;letter-spacing:0;align-items:center;gap:.25rem;padding:.15rem .45rem .15rem .2rem;font-size:.75rem;display:inline-flex}.aside .copy{text-transform:none;letter-spacing:0;margin-left:.2rem;padding:.05rem .45rem;font-size:.72rem}.card.draw{background:#fcf9f2;min-width:min(30rem,94%)}.wheel{width:min(19rem,70vw);margin:.3rem auto .2rem}.wheel svg{filter:drop-shadow(0 8px 10px #2b2a2840);width:100%;height:auto;display:block;overflow:visible}.wheel .sl-n{font:600 30px var(--serif);fill:#3d2a18;text-anchor:middle}.wheel .sl-p{font:700 13px var(--sans);fill:#4a3420;text-anchor:middle;opacity:.8}.wheel .voter{transform-box:fill-box;transform-origin:50%;animation:drop-in .42s cubic-bezier(.3, 1.6, .5, 1) var(--d) both}@keyframes drop-in{0%{opacity:0;translate:0 -40px;scale:.4}to{opacity:1;translate:0;scale:1}}.wheel .slice{transition:opacity .4s,filter .4s}.card.draw.landed .slice:not(.won){opacity:.45;filter:saturate(.5)}.card.draw.landed .slice.won{filter:brightness(1.08)}.odds{color:var(--ink-soft);flex-wrap:wrap;justify-content:center;gap:.3rem .9rem;margin:.2rem 0 0;padding:0;font-size:.82rem;list-style:none;display:flex}.odds i{background:var(--c);vertical-align:-.05rem;border-radius:3px;width:.7rem;height:.7rem;margin-right:.3rem;display:inline-block;box-shadow:inset 0 0 0 1px #6b472880}.odds b{color:var(--ink);margin-left:.3rem}.drawn{min-height:1.6em;font:600 1.4rem var(--serif);color:var(--wood-deep)!important;margin-top:.4rem!important}.card.draw.landed .drawn{animation:.5s cubic-bezier(.3,1.5,.5,1) both drawn-pop}@keyframes drawn-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:none}}.mute{margin-left:.4rem}.lobby{max-width:54rem}.rooms-panel .lead{color:var(--ink-soft);margin:0 0 .7rem;font-size:.92rem}.rooms-panel .row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.rooms-panel .primary{padding:.55rem 1.1rem}.join{align-items:center;gap:.4rem;display:flex}.join label{color:var(--ink-soft);font-size:.85rem}.join input{width:6.5rem;font:600 1rem var(--sans);letter-spacing:.12em;text-transform:uppercase;background:#fffdf8;border:1px solid #2b2a284d;border-radius:8px;padding:.42rem .5rem}.rooms{gap:.45rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.rooms a{background:#fffdf8;border:1px solid #8f633933;border-radius:10px;grid-template-columns:4.2rem 5rem minmax(0,1fr) auto;align-items:center;gap:.7rem;padding:.55rem .8rem;text-decoration:none;transition:transform .14s,box-shadow .14s;display:grid}.rooms a:hover{transform:translateY(-2px);box-shadow:0 8px 16px -12px #2b2a2899}.rooms .code{font:700 1.05rem var(--sans);letter-spacing:.12em}.rooms .seats{gap:.25rem;display:flex}.rooms .seats i{border:1.5px solid var(--c);border-radius:50%;width:.8rem;height:.8rem}.rooms .seats i.taken{background:var(--c)}.rooms .what{color:var(--ink-soft);font-size:.85rem}.rooms .go{font:600 .8rem var(--sans);text-transform:uppercase;letter-spacing:.06em}.rooms .empty{color:var(--ink-soft);text-align:center;padding:.8rem;font-size:.9rem}@media (width<=640px){.desk{padding:.6rem .5rem 1.5rem}.stage{border-radius:10px;padding:6px}.overlay:has(.card){z-index:50;background:#2b2a284d;padding:.6rem;position:fixed;inset:0}.card{width:100%;max-height:92vh;padding:.8rem .9rem;overflow:auto;min-width:0!important}.card h2{font-size:1.15rem}.wheel{width:min(13rem,52vw)}.rooms a{grid-template-columns:4rem minmax(0,1fr) auto}.rooms .seats{display:none}.hero-row{grid-template-columns:repeat(2,1fr)}}.card.final{min-width:min(30rem,92%)}.board{text-align:left;gap:.35rem;margin:.7rem 0 .3rem;padding:0;list-style:none;display:grid}.board .row{opacity:0;background:#ebe2d280;border-radius:9px;grid-template-columns:1.4rem 1.6rem minmax(6rem,1fr) 5.5rem 2.6rem;align-items:center;gap:.45rem;padding:.3rem .5rem;transition:opacity .32s ease-out,transform .32s ease-out,background .4s,box-shadow .4s;display:grid;transform:translateY(10px)}.board .row.shown{opacity:1;transform:none}.board .rank{font:700 .8rem var(--sans);color:var(--ink-soft);text-align:center}.board .who{font-size:.92rem;font-weight:600;display:grid}.board .who small{color:var(--ink-soft);font-size:.74rem;font-weight:400}.board .bar{background:#2b2a2814;border-radius:99px;height:.55rem;overflow:hidden}.board .bar span{border-radius:99px;width:0;height:100%;transition:width .8s cubic-bezier(.2,.7,.2,1);display:block}.board .pts{font:700 1.05rem var(--serif);text-align:right;font-variant-numeric:tabular-nums}.board .row.winner{background:#fbefd2;box-shadow:0 0 0 1.5px #e0bf77}.board .row.winner .rank:before{content:"★ ";color:var(--brass)}.card.final .tally{opacity:0;transition:opacity .4s}.card.final.ready .tally{opacity:1}.pad{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;grid-column:2;justify-content:space-between;align-items:center;gap:1rem;margin-top:-.3rem;display:flex}.pad[hidden]{display:none}.pad-dir{gap:.7rem;display:flex}.pad-btn{border:2px solid var(--wood-deep);background:radial-gradient(circle at 35% 30%, var(--wood-light), var(--wood) 70%);width:4.6rem;height:4.6rem;box-shadow:0 4px 0 var(--wood-deep), 0 8px 14px -8px #2b2a2899;color:#3d2a18;touch-action:none;border-radius:50%;place-items:center;padding:0;transition:transform 60ms,box-shadow 60ms;display:grid}.pad-btn svg{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;width:2rem;height:2rem}.pad-btn.down{box-shadow:0 1px 0 var(--wood-deep), 0 3px 6px -4px #2b2a2899;background:var(--wood-dark);color:var(--paper);transform:translateY(3px)}.pad-btn.jump{background:radial-gradient(circle at 35% 30%, #f0c66a, var(--brass) 70%);width:5.6rem;height:5.6rem}.pad-btn.jump span{font:700 .7rem var(--sans);text-transform:uppercase;letter-spacing:.06em;margin-top:-.6rem}body.touch .help kbd{display:none}@media (width<=1100px){.table{grid-template-columns:minmax(0,1fr)}.stage{order:-2}.pad{order:-1;grid-column:1;margin-top:0;padding:0 .3rem}.tray{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr))}.actions{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr))}.steps{grid-template-columns:repeat(2,1fr)}}.reduce-motion .count{animation:none}.reduce-motion :is(.piece,.steps li,.board .row,.board .bar span,.card.round,.track .now,.track-row .gain,.hero,.rooms a,.wheel .slice){transition:none}.reduce-motion .stamp{animation:2.6s linear both stamp-still}@keyframes stamp-still{0%,62%{opacity:1}to{opacity:0}}.reduce-motion :is(.wheel .voter,.card.draw.landed .drawn),.reduce-motion .card.round.simple .body{animation:none}
