.tile{position:relative;flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:var(--tile-w);height:var(--tile-h);border-radius:var(--tile-radius);background:var(--tile-bg);border:1px solid var(--tile-border);box-shadow:var(--tile-shadow);font-family:var(--tile-font-family);font-size:var(--tile-font);font-weight:700;line-height:1;color:var(--tile-black);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none;transition:box-shadow .12s ease,transform .12s ease}.tile__bar{position:absolute;left:3px;top:var(--tile-bar-inset);bottom:var(--tile-bar-inset);width:var(--tile-bar-w);border-radius:2px;background:var(--tile-black-bar);pointer-events:none}.tile[data-color=black]{color:var(--tile-black)}.tile[data-color=black] .tile__bar{background:var(--tile-black-bar)}.tile[data-color=red]{color:var(--tile-red)}.tile[data-color=red] .tile__bar{background:var(--tile-red-bar)}.tile[data-color=blue]{color:var(--tile-blue)}.tile[data-color=blue] .tile__bar{background:var(--tile-blue-bar)}.tile[data-color=orange]{color:var(--tile-orange)}.tile[data-color=orange] .tile__bar{background:var(--tile-orange-bar)}.tile[data-color=joker]{color:var(--tile-joker);font-size:20px}.tile[data-color=joker] .tile__bar{background:var(--tile-joker-bar)}.tile[data-wide=true]{font-size:var(--tile-font-wide);letter-spacing:var(--tile-letter-spacing-wide);padding-left:6px}.tile[data-clickable=true]{cursor:pointer}.tile[data-clickable=true]:hover{box-shadow:var(--tile-shadow-hover);transform:translateY(-2px)}.tile[data-selected=true]{transform:translateY(-6px);box-shadow:var(--tile-shadow-hover),0 0 0 2px var(--accent)}.tile[data-invalid=true]{box-shadow:var(--tile-shadow),0 0 0 2px var(--bad)}.tile[data-fx=redeem]{animation:tile-redeem var(--dur-base) var(--ease-out) 2}@keyframes tile-redeem{0%,to{box-shadow:var(--tile-shadow)}50%{box-shadow:var(--tile-shadow),0 0 0 3px var(--gold)}}.tile-back{position:relative;flex:0 0 auto;width:var(--tile-back-w, var(--tile-w));height:var(--tile-back-h, var(--tile-h));border-radius:var(--tile-radius);background:var(--tile-back-bg);border:1px solid var(--tile-back-border);box-shadow:var(--tile-shadow);overflow:hidden;-webkit-user-select:none;user-select:none}.tile-back:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid var(--tile-back-mark);border-radius:3px}.tile-back--sm{--tile-back-w: 28px;--tile-back-h: 39px}@media(max-width:560px){.rack .tile{touch-action:pan-x}}@media(prefers-reduced-motion:reduce){.tile[data-fx=redeem]{animation:none;box-shadow:var(--tile-shadow),0 0 0 3px var(--gold)}}.table{flex:1 1 auto;overflow:auto;padding:18px 20px 22px;background:var(--felt-bg);border:1px solid var(--felt-border);border-radius:var(--radius);display:flex;flex-direction:column;gap:10px}.table__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:var(--ink-2);font-size:12px}.table__sets{display:flex;flex-direction:row;flex-wrap:wrap;align-content:flex-start;gap:10px}.table__empty{color:var(--ink-3);font-size:13px;padding:28px 0;text-align:center}.set{display:flex;align-items:flex-end;gap:8px;padding:6px 10px 6px 6px;background:var(--set-bg);border:1px solid transparent;border-radius:10px;flex:0 0 auto;max-width:100%}.set[data-invalid=true]{background:#a32b2b14;border-color:var(--bad)}.set__remove{align-self:center;width:18px;height:18px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--panel);color:var(--ink-3);font-size:12px;line-height:1;cursor:pointer}.set__remove:hover{border-color:var(--bad);color:var(--bad)}.set[data-fx=reject]{animation:set-reject-pulse var(--dur-base) var(--ease-move),set-reject-shake var(--dur-base) var(--ease-move)}@keyframes set-reject-pulse{0%,to{border-color:transparent;box-shadow:0 0 #a32b2b00}25%,75%{border-color:var(--bad);box-shadow:0 0 0 3px #a32b2b38}}@keyframes set-reject-shake{0%,to{transform:translate(0)}15%{transform:translate(-3px)}40%{transform:translate(3px)}65%{transform:translate(-3px)}85%{transform:translate(3px)}}.set[data-fx=appear]{animation:set-appear var(--dur-base) var(--ease-settle)}@keyframes set-appear{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.set[data-fx=accept]{animation:set-settle var(--dur-base) var(--ease-settle)}@keyframes set-settle{0%{box-shadow:0 0 #0000}45%{box-shadow:0 7px 16px #0003}to{box-shadow:0 0 #0000}}.set[data-gold=true]{animation:set-gold var(--dur-slow) var(--ease-out)}@keyframes set-gold{0%{background:var(--set-bg)}35%{background:var(--gold-soft)}to{background:var(--set-bg)}}.set__index{flex:0 0 auto;width:20px;padding-bottom:6px;color:var(--ink-3);font-size:11px;font-variant-numeric:tabular-nums;text-align:right}.set__tiles{display:flex;gap:var(--tile-gap);align-items:flex-end;flex-wrap:wrap;min-width:0}.rack{flex:0 0 auto;padding:14px 20px 18px;background:var(--panel);border-top:1px solid var(--line);transition:border-top-color var(--dur-base) var(--ease-move)}.rack[data-disabled=false]{border-top-color:var(--accent)}.rack[data-fx=deal] .rack__slot{animation:rack-deal var(--dur-slow) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 25ms)}@keyframes rack-deal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.rack__head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.rack__title{font-size:13px;font-weight:600}.rack__count{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}.rack__tiles{display:flex;gap:var(--tile-gap);flex-wrap:wrap;align-items:flex-end;min-height:var(--tile-h)}.rack__slot{display:flex;align-items:flex-end}.rack__slot--tail{align-self:stretch;width:22px;border-radius:10px;border:1px dashed transparent}.rack__hint{font-size:11px;color:var(--ink-3)}.rack__empty{color:var(--ink-3);font-size:13px}.players{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.player{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:6px 10px;border-left:3px solid transparent;border-radius:6px;font-size:13px;transition:background-color var(--dur-base) var(--ease-move),border-left-color var(--dur-base) var(--ease-move)}.player[data-current=true]{border-left-color:var(--accent);background:var(--current-bg)}.player[data-current=true] .player__name{color:var(--accent)}.player__name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color var(--dur-base) var(--ease-move)}.player__meta{color:var(--ink-2);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.player__meta b{color:var(--ink);font-weight:600}.player[data-pulse=true]{animation:player-pulse var(--dur-slow) var(--ease-out) 2}@keyframes player-pulse{0%{box-shadow:0 0 0 0 var(--gold-soft)}to{box-shadow:0 0 0 7px transparent}}.player__thinking{margin-left:auto;display:inline-flex;align-items:center;gap:5px;color:var(--ink-3);font-size:11px}.player__dots{display:inline-flex;gap:3px}.player__dots i{width:4px;height:4px;border-radius:50%;background:currentColor;animation:thinking-dot 1.2s ease-in-out infinite}.player__dots i:nth-child(2){animation-delay:.15s}.player__dots i:nth-child(3){animation-delay:.3s}@keyframes thinking-dot{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.player__thinking-text{display:none}@media(max-width:560px){.table{padding:8px 10px 10px;gap:8px}.table__head{font-size:11px}.table__empty{padding:10px 0;font-size:12px}.set{padding:4px 7px 4px 4px;gap:6px}.set__index{width:14px;padding-bottom:4px;font-size:10px}.players{flex-direction:row;flex-wrap:nowrap;gap:4px}.player{flex:0 0 auto;padding:3px 7px;font-size:12px;white-space:nowrap}.player__meta{font-size:11px}.rack{padding:6px 10px 8px}.rack__head{gap:8px;margin-bottom:4px}.rack__title{font-size:12px}.rack__count{font-size:11px}.rack__tiles{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:2px}.rack__slot{flex:0 0 auto}.table__sets{min-width:0}}@media(prefers-reduced-motion:reduce){.set[data-fx=reject]{animation:none;border-color:var(--bad)}.set[data-gold=true]{animation:none;background:var(--gold-soft)}.set[data-fx=appear],.set[data-fx=accept],.player[data-pulse=true],.rack[data-fx=deal] .rack__slot{animation:none}.player__dots{display:none}.player__thinking-text{display:inline}.player,.player__name,.rack{transition:none}}.lobby{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:32px 20px;overflow:auto}.lobby__card{width:min(780px,100%);display:flex;flex-direction:column;gap:24px;padding:30px 34px 26px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 34px #00000017}.lobby__head{position:relative}.lobby__head .theme-toggle{position:absolute;top:0;right:0}.lobby__head h1{margin:0;padding-right:88px;font-family:var(--tile-font-family);font-size:34px;font-weight:700;letter-spacing:.5px}.lobby__head h1 span{margin-left:10px;font-family:inherit;font-size:15px;font-weight:400;color:var(--ink-3)}.lobby__head p{margin:8px 0 0;font-size:12.5px;color:var(--ink-2)}.lobby__head p b{color:var(--accent)}.lobby__fields{display:grid;gap:18px}.lobby__field{margin:0;padding:0;border:0;min-width:0}.lobby__field legend{display:flex;align-items:baseline;gap:8px;padding:0 0 8px;font-size:12px;font-weight:600;letter-spacing:.4px;color:var(--ink-2)}.lobby__legend-note{font-size:11px;font-weight:400;color:var(--ink-3)}.lobby__options{display:flex;flex-wrap:wrap;gap:8px}.opt{flex:1 1 180px;display:flex;flex-direction:column;gap:3px;padding:12px 14px;text-align:left;background:var(--panel-2);border:1px solid var(--line);border-radius:10px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.opt:hover{border-color:var(--ink-3)}.opt b{font-size:14px}.opt i{font-size:11px;font-style:normal;color:var(--ink-3)}.opt[data-active=true]{background:var(--panel);border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.opt[data-active=true] b{color:var(--accent)}.opt--compact{flex:0 1 auto;align-items:center;padding:9px 16px;text-align:center}.lobby__foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:20px;border-top:1px solid var(--line)}.lobby__summary{margin-left:auto;font-size:12px;color:var(--ink-3)}@media(max-width:560px){.lobby{padding:16px 12px;align-items:flex-start}.lobby__card{padding:22px 18px 20px;gap:18px}.lobby__head h1{font-size:26px}.opt{flex:1 1 100%}.lobby__summary{margin-left:0;width:100%}}.result{margin:12px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);animation:result-rise var(--dur-slow) var(--ease-out)}@keyframes result-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.result__title{font-size:15px;font-weight:700;margin-bottom:8px;animation:result-title var(--dur-slow) var(--ease-settle)}@keyframes result-title{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.result__round{font-size:12px;color:var(--ink-3);margin-bottom:8px}.result__list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px}.result__row{display:grid;grid-template-columns:1fr auto auto auto;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums;animation:result-row-in var(--dur-slow) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 60ms)}@keyframes result-row-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.result__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result__round-score,.result__wins{font-size:12px;color:var(--ink-3)}.result__points{min-width:44px;text-align:right;font-weight:600}.result__row[data-positive=true]{color:var(--ok);font-weight:600}.result__row[data-positive=false]{color:var(--bad)}.result__leader{font-size:12px;color:var(--ink-2);margin-bottom:10px}.result__champion{font-size:14px;font-weight:700;color:var(--ok);margin-bottom:10px;animation:champion-glow .64s var(--ease-out)}@keyframes champion-glow{0%,to{text-shadow:0 0 0 transparent;transform:scale(1)}50%{text-shadow:0 0 10px var(--gold-soft);transform:scale(1.04)}}@media(prefers-reduced-motion:reduce){.result,.result__title,.result__row,.result__champion{animation:none}}.turnbar{flex:0 0 auto;display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:8px 14px;padding:10px 16px 12px;background:var(--panel);border-top:1px solid var(--line)}.turnbar__who{grid-area:1 / 1;font-size:14px;white-space:nowrap}.turnbar__who b{font-size:15px}.turnbar__timer{grid-column:2;display:flex;align-items:center;gap:8px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel-2)}.turnbar__label{font-size:11px;color:var(--ink-3)}.turnbar__seconds{min-width:46px;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;color:var(--ink)}.turnbar__track{display:block;width:160px;height:8px;border-radius:4px;background:var(--line);overflow:hidden}.turnbar__fill{display:block;height:100%;border-radius:4px;background:var(--ok);transition:width .9s linear,background .3s ease}.turnbar__timer[data-level=warn] .turnbar__fill{background:var(--warn)}.turnbar__timer[data-level=warn] .turnbar__seconds{color:var(--warn)}.turnbar__timer[data-level=urgent]{border-color:var(--bad);background:var(--urgent-bg);animation:turnbar-pulse 1s ease-in-out infinite}.turnbar__timer[data-level=urgent] .turnbar__fill{background:var(--bad)}.turnbar__timer[data-level=urgent] .turnbar__seconds{color:var(--bad)}.turnbar__timer--idle{font-size:12px;color:var(--ink-3);padding:4px 10px}@keyframes turnbar-pulse{0%,to{box-shadow:0 0 #a32b2b00}50%{box-shadow:0 0 0 4px #a32b2b2e}}.turnbar__timer[data-fx=penalty]{animation:turnbar-pulse 1s ease-in-out 2}.turnbar__hint{grid-column:1 / -1;margin:0;padding:6px 12px;border-left:3px solid var(--line);border-radius:0 8px 8px 0;background:var(--panel-2);font-size:13px;color:var(--ink-2)}.turnbar__hint[data-tone=ready]{border-left-color:var(--ok);background:#1f6b3a14;color:var(--ok)}.turnbar__hint[data-tone=error]{border-left-color:var(--bad);background:#a32b2b14;color:var(--bad);font-weight:600}.turnbar__actions{grid-area:1 / 4;justify-self:end;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}@media(max-width:720px){.turnbar{grid-template-columns:auto 1fr}.turnbar__who{grid-area:1 / 1}.turnbar__timer{grid-area:1 / 2;justify-self:start}.turnbar__hint{grid-area:2 / 1 / 3 / -1}.turnbar__actions{grid-area:3 / 1 / 4 / -1;justify-self:stretch;justify-content:flex-start}.turnbar__track{width:100px}}@media(max-width:560px){.turnbar{padding:6px 10px 8px;gap:6px 10px}.turnbar__who{font-size:13px}.turnbar__who b{font-size:14px}.turnbar__timer{padding:4px 9px;gap:6px}.turnbar__track{width:64px}.turnbar__seconds{min-width:36px;font-size:15px}.turnbar__hint{font-size:12px;padding:5px 9px}.turnbar__actions{gap:6px}.turnbar__actions .btn{padding:6px 9px;font-size:12px}}.drag-ghost{position:fixed;top:0;left:0;z-index:100;pointer-events:none;will-change:transform}.drag-ghost .tile{box-shadow:0 14px 26px #00000057;transform:rotate(-3deg) scale(1.08);transition:none}.drag-ghost[data-multi=true]{display:flex;gap:4px}.drag-ghost[data-multi=true] .tile:not(:first-child){margin-top:4px}@media(prefers-reduced-motion:no-preference){.drag-ghost .tile{animation:ghost-lift var(--dur-instant) var(--ease-out)}@keyframes ghost-lift{0%{transform:rotate(-3deg) scale(1);box-shadow:0 4px 10px #0003}to{transform:rotate(-3deg) scale(1.08);box-shadow:0 14px 26px #00000057}}}.drag-ghost[data-drop-active=true] .tile{box-shadow:0 14px 26px #00000057,0 0 0 2px var(--accent)}.tile[data-dragging=true]{opacity:.3;box-shadow:none}[data-drop-id]{outline-color:transparent;transition:outline-color var(--dur-fast) var(--ease-out)}[data-drop-id][data-drop-active=true]{outline:2px dashed var(--accent);outline-offset:2px;border-radius:10px}.drop-new{align-self:stretch;min-height:var(--tile-h);margin-top:2px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--felt-border);border-radius:10px;color:var(--ink-3);font-size:12px}@media(prefers-reduced-motion:reduce){[data-drop-id]{transition:none}}.app{display:flex;flex-direction:column;height:100%;min-height:100%}.app__bar{display:flex;align-items:center;gap:var(--gap);padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}.app__brand{font-size:16px;font-weight:700;letter-spacing:.5px}.app__brand span{margin-left:6px;font-size:12px;font-weight:400;color:var(--ink-3)}.app__tabs{display:flex;gap:4px;padding:3px;background:var(--panel-2);border-radius:999px}.tab{border:0;background:transparent;color:var(--ink-2);padding:5px 14px;border-radius:999px;cursor:pointer;font-size:13px}.tab[data-active=true]{background:var(--panel);color:var(--ink);box-shadow:0 1px 2px #0000001f;font-weight:600}.theme-toggle{border:1px solid var(--line)}.app__meta{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:12px;color:var(--ink-2)}.app__meta b{color:var(--ink)}.app__modes{display:flex;align-items:center;gap:4px;padding:3px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line)}.chip{border:0;background:transparent;color:var(--ink-2);padding:4px 10px;border-radius:999px;cursor:pointer;font-size:12px}.chip[data-active=true]{background:var(--panel);color:var(--ink);font-weight:600;box-shadow:0 1px 2px #0000001f}.chip--select{border:1px solid var(--line);background:var(--panel);color:var(--ink);padding:4px 6px}.rack[data-disabled=true] .tile{cursor:default}.app__main{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:232px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"side table" "side rack";gap:var(--gap);padding:var(--gap)}.app__main--gallery{display:block;overflow:auto}.app__main>.table{grid-area:table;min-height:0}.app__main>.rack{grid-area:rack;border:1px solid var(--line);border-radius:var(--radius);border-top:1px solid var(--line)}.app__side{grid-area:side;display:flex;flex-direction:column;gap:var(--gap);min-height:0;overflow:auto}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.panel__head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink-2);margin-bottom:8px}.pool__backs{display:flex;gap:3px;flex-wrap:wrap}.app__foot{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:8px 16px;background:var(--panel);border-top:1px solid var(--line);font-size:12px;color:var(--ink-2)}.app__foot [data-valid=true]{color:var(--ok)}.app__foot [data-valid=false]{color:var(--bad);font-weight:600}.app__notice{color:var(--ink-2)}@keyframes notice-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.app__notice[data-tone=error]{padding:3px 10px;border-radius:999px;background:#a32b2b1a;color:var(--bad);font-weight:600;animation:notice-in var(--dur-fast) var(--ease-out)}.app__notice[data-tone=ok]{padding:3px 10px;border-radius:999px;background:#1f6b3a1a;color:var(--ok);font-weight:600;animation:notice-in var(--dur-fast) var(--ease-out)}.flying-back{position:fixed;top:0;left:0;z-index:90;pointer-events:none;transition:transform var(--dur-base) var(--ease-move)}@media(prefers-reduced-motion:reduce){.app__notice{animation:none}.flying-back{display:none}}.confirm{position:fixed;top:0;right:0;bottom:0;left:0;z-index:110;display:grid;place-items:center;padding:var(--gap);background:#00000059;animation:confirm-in var(--dur-fast) var(--ease-out)}.confirm__card{width:min(340px,100%);padding:18px 20px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 32px #00000038}.confirm__title{font-size:15px;font-weight:700;margin-bottom:6px}.confirm__text{color:var(--ink-2);font-size:13px;line-height:1.6;margin-bottom:14px}.confirm__actions{display:flex;gap:var(--gap);justify-content:flex-end}@keyframes confirm-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.confirm{animation:none}}.gallery{display:flex;flex-wrap:wrap;gap:var(--tile-gap)}@media(max-width:860px){.app__main{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"side" "table" "rack"}.app__side{flex-direction:row;flex-wrap:wrap}.app__side .panel{flex:1 1 200px}}@media(max-width:560px){.app__meta>span{display:none}.app__bar{gap:6px;padding:8px 10px}.app__brand{display:none}.tab{padding:5px 10px;font-size:12px;white-space:nowrap}.app__main{grid-template-rows:minmax(38px,auto) minmax(170px,1fr) auto;gap:6px;padding:6px}.app__side{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:6px}.app__side .panel{flex:0 0 auto;padding:4px 8px}.app__side .panel__head{margin-bottom:3px;font-size:11px}.app__side>.panel:first-child .panel__head{display:none}.pool__backs{display:none}.app__foot{gap:4px 10px;padding:4px 10px calc(4px + env(safe-area-inset-bottom,0px));font-size:11px}}:root{--tile-w: 46px;--tile-h: 64px;--tile-radius: 6px;--tile-gap: 6px;--tile-font: 26px;--tile-font-wide: 22px;--tile-letter-spacing-wide: -1.5px;--tile-bar-w: 3px;--tile-bar-inset: 11px;--tile-bg: linear-gradient(178deg, #fffdf7 0%, #f4efe2 100%);--tile-border: #cfc7b4;--tile-shadow: inset 0 1px 0 #fff, inset 0 -2px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12);--tile-shadow-hover: inset 0 1px 0 #fff, inset 0 -2px 3px rgba(0, 0, 0, .06), 0 3px 8px rgba(0, 0, 0, .18);--tile-font-family: Georgia, "Times New Roman", "Songti SC", serif;--tile-black: #1a1a1a;--tile-red: #c0392b;--tile-blue: #1f5fa8;--tile-orange: #e08a1e;--tile-joker: #b8860b;--tile-black-bar: #1a1a1a;--tile-red-bar: #c0392b;--tile-blue-bar: #1f5fa8;--tile-orange-bar: #e08a1e;--tile-joker-bar: #b8860b;--tile-back-bg: linear-gradient(160deg, #b3452f 0%, #8d2f20 100%);--tile-back-border: #7a2718;--tile-back-mark: rgba(255, 255, 255, .55);--felt-bg: #eae7de;--felt-border: #d8d3c6;--bg: #f6f5f2;--panel: #ffffff;--panel-2: #f3f1ec;--ink: #1c1b19;--ink-2: #5c5a55;--ink-3: #8a877e;--line: #e3e0d9;--accent: #c2410c;--ok: #1f6b3a;--warn: #b45309;--bad: #a32b2b;--gold: #b8860b;--gold-soft: rgba(184, 134, 11, .28);--set-bg: rgba(255, 255, 255, .55);--current-bg: #fff4ee;--urgent-bg: #fdf3f3;--dur-instant: 90ms;--dur-fast: .15s;--dur-base: .22s;--dur-slow: .32s;--dur-score: .6s;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-move: cubic-bezier(.4, 0, .2, 1);--ease-settle: cubic-bezier(.34, 1.4, .64, 1);--rack-h: 96px;--radius: 14px;--gap: 12px}:root[data-tile-size=a11y]{--tile-w: 50px;--tile-h: 70px;--tile-font: 34px;--tile-font-wide: 30px}:root[data-theme=dark]{--felt-bg: #1b1d22;--felt-border: #2c2f36;--bg: #16181d;--panel: #212429;--panel-2: #2a2d33;--ink: #e6e8ec;--ink-2: #9aa1ad;--ink-3: #7c828e;--line: #343945;--tile-bg: linear-gradient(178deg, #2b2f37 0%, #23262c 100%);--tile-border: #3d424b;--tile-shadow: 0 0 0 1px rgba(255, 255, 255, .03), 0 3px 6px rgba(0, 0, 0, .5);--tile-shadow-hover: 0 0 0 1px rgba(255, 255, 255, .06), 0 6px 14px rgba(0, 0, 0, .6);--tile-black: #e6e8ec;--tile-red: #ff6b6b;--tile-blue: #5aa9ff;--tile-orange: #ffb454;--tile-joker: #ffd166;--tile-back-bg: linear-gradient(160deg, #7a2718 0%, #4d1a11 100%);--tile-back-border: #3d1410;--set-bg: rgba(255, 255, 255, .06);--current-bg: #33251c;--urgent-bg: #3a2120;--gold: #ffd166;--gold-soft: rgba(255, 209, 102, .26)}@media(max-width:560px){:root{--tile-w: 40px;--tile-h: 56px;--tile-radius: 5px;--tile-gap: 5px;--tile-font: 22px;--tile-font-wide: 19px;--tile-bar-w: 3px;--tile-bar-inset: 9px;--radius: 12px;--gap: 8px}}@media(prefers-reduced-motion:reduce){:root{--dur-instant: 1ms;--dur-fast: 1ms;--dur-base: 1ms;--dur-slow: 1ms;--dur-score: 1ms}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}button{font:inherit;color:inherit}.btn{padding:7px 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);cursor:pointer;font-size:13px;transition:background .12s ease,border-color .12s ease}.btn:hover:not(:disabled){border-color:var(--ink-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn--primary:hover:not(:disabled){background:#a8360a}.btn--ghost{background:transparent;color:var(--ink-2)}.btn--lg{padding:11px 26px;font-size:15px;border-radius:10px}
