:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f7f9;--bg-img:none;--ink:#15171c;--muted:#6b7280;--panel:#fff;--line:#eceef2;--chip:#eef0f4;--input:#fff;--r:16px;--sh:0 1px 2px #1018280a, 0 4px 14px #1018280d;--accent:#4f46e5;--accent-ink:#fff;--accent-soft:#4f46e51f;--danger:#e11d48;--warn:#d97706;--btn:#fff;--brand-mark:#4f46e5;--frame:#fff;--frame-sh:0 1px 2px #1018280d, 0 12px 32px #10182814;--sq:#f1f3f6;--tw:#fde2e4;--tw-ink:#e11d48;--dw:#fdf0e1;--dw-ink:#c2620a;--tl:#e1ecfd;--tl-ink:#2563eb;--dl:#e3f6f1;--dl-ink:#0d9488;--drop-bg:#eef0ff;--tile:#fff;--tile-ink:#15171c;--tile-sh:0 1px 0 #e3e5ea, 0 2px 6px #1018281a;--tile-font:"Inter", system-ui, sans-serif;--tent-bg:#eef0ff;--last-ring:#a5b4fc;--blank-ink:#7c3aed;--rack:#fff;--rack-sh:0 1px 2px #1018280d, 0 8px 24px #10182812;--slot:#f6f7f9;--slot-line:#e2e5ea;--drag-sh:0 18px 36px #10182838, 0 4px 10px #1018281f;--overlay:#0f111c59}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0b1f;--bg-img:radial-gradient(1200px 700px at 15% -10%, #2a1b5c 0, transparent 60%), radial-gradient(900px 600px at 110% 10%, #12304a 0, transparent 55%);--ink:#f3f1ff;--muted:#a49fc7;--panel:#ffffff0d;--line:#ffffff17;--chip:#ffffff14;--input:#ffffff0f;--r:18px;--sh:0 10px 30px #00000059;--accent:#22d3ee;--accent-ink:#071420;--accent-soft:#22d3ee29;--danger:#fb3f7c;--warn:#fbbf24;--btn:#ffffff0f;--brand-mark:linear-gradient(135deg, #22d3ee, #a855f7);--frame:linear-gradient(160deg, #1c1640, #120f2a);--frame-sh:0 0 0 1px #ffffff12, 0 30px 60px #00000080;--sq:#ffffff0b;--tw:linear-gradient(135deg, #ff3d81, #b5179e);--tw-ink:#fff;--dw:linear-gradient(135deg, #f472b6b0, #c026d3b0);--dw-ink:#fff;--tl:linear-gradient(135deg, #3b82f6, #6d28d9);--tl-ink:#fff;--dl:linear-gradient(135deg, #22d3ee99, #0ea5e999);--dl-ink:#e0faff;--drop-bg:#22d3ee2e;--tile:linear-gradient(180deg, #fff7d6, #ffd96a);--tile-ink:#2b1d00;--tile-sh:0 2px 0 #c99a1e, 0 0 14px #ffd96a38;--tile-font:"Space Grotesk", "Inter", sans-serif;--tent-bg:linear-gradient(180deg, #e0fbff, #7ee8fa);--last-ring:#22d3ee;--blank-ink:#9333ea;--rack:#ffffff0d;--rack-sh:inset 0 0 0 1px #ffffff14, 0 20px 40px #0006;--slot:#ffffff08;--slot-line:#ffffff1f;--drag-sh:0 0 0 2px #22d3ee, 0 0 30px #22d3ee99, 0 24px 40px #00000080;--overlay:#05040f99}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0b1f;--bg-img:radial-gradient(1200px 700px at 15% -10%, #2a1b5c 0, transparent 60%), radial-gradient(900px 600px at 110% 10%, #12304a 0, transparent 55%);--ink:#f3f1ff;--muted:#a49fc7;--panel:#ffffff0d;--line:#ffffff17;--chip:#ffffff14;--input:#ffffff0f;--r:18px;--sh:0 10px 30px #00000059;--accent:#22d3ee;--accent-ink:#071420;--accent-soft:#22d3ee29;--danger:#fb3f7c;--warn:#fbbf24;--btn:#ffffff0f;--brand-mark:linear-gradient(135deg, #22d3ee, #a855f7);--frame:linear-gradient(160deg, #1c1640, #120f2a);--frame-sh:0 0 0 1px #ffffff12, 0 30px 60px #00000080;--sq:#ffffff0b;--tw:linear-gradient(135deg, #ff3d81, #b5179e);--tw-ink:#fff;--dw:linear-gradient(135deg, #f472b6b0, #c026d3b0);--dw-ink:#fff;--tl:linear-gradient(135deg, #3b82f6, #6d28d9);--tl-ink:#fff;--dl:linear-gradient(135deg, #22d3ee99, #0ea5e999);--dl-ink:#e0faff;--drop-bg:#22d3ee2e;--tile:linear-gradient(180deg, #fff7d6, #ffd96a);--tile-ink:#2b1d00;--tile-sh:0 2px 0 #c99a1e, 0 0 14px #ffd96a38;--tile-font:"Space Grotesk", "Inter", sans-serif;--tent-bg:linear-gradient(180deg, #e0fbff, #7ee8fa);--last-ring:#22d3ee;--blank-ink:#9333ea;--rack:#ffffff0d;--rack-sh:inset 0 0 0 1px #ffffff14, 0 20px 40px #0006;--slot:#ffffff08;--slot-line:#ffffff1f;--drag-sh:0 0 0 2px #22d3ee, 0 0 30px #22d3ee99, 0 24px 40px #00000080;--overlay:#05040f99}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg-img), var(--bg);background-color:var(--bg);min-height:100vh;color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px}a{color:var(--accent)}h1,h2,h3{letter-spacing:-.02em;margin:0 0 12px}h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-top:20px;font-size:13px}button,select,input{font:inherit;color:var(--ink)}input,select{border:1px solid var(--line);background:var(--input);border-radius:12px;outline:none;width:100%;padding:10px 12px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}select{appearance:none;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238b8fa3' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;min-height:44px;padding-right:38px;overflow:hidden}select option{color:#15171c}@media (max-width:520px){input,select{min-height:48px;font-size:16px}}label{color:var(--muted);flex-direction:column;gap:6px;margin-bottom:14px;font-size:13px;font-weight:500;display:flex}.btn,.home button,.modal button{cursor:pointer;background:var(--btn);border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:10px 16px;font-size:14px;font-weight:600;transition:transform 80ms,box-shadow .15s,opacity .15s}.btn:active:not(:disabled),.home button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.4;cursor:default}button.primary,.btn.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 6px 16px var(--accent-soft);border-color:#0000}button.danger,.btn.danger{background:var(--danger);color:#fff;border-color:#0000}.muted{color:var(--muted)}.error{color:var(--danger)}.error.center{text-align:center}.warn-text{color:var(--warn)}.badge{background:var(--chip);color:var(--muted);vertical-align:1px;border-radius:999px;margin-left:6px;padding:2px 8px;font-size:11px;font-weight:600}.badge.you{background:var(--accent-soft);color:var(--accent)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:14px}.card h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:2px 4px 10px;font-size:12px}.pill{background:var(--chip);color:var(--muted);white-space:nowrap;border:0;border-radius:999px;padding:6px 11px;font-size:12.5px;font-weight:600}.pill-btn{cursor:pointer}.pill-btn:hover{color:var(--ink)}.brand{color:var(--ink);letter-spacing:-.02em;align-items:center;gap:9px;font-size:19px;font-weight:800;text-decoration:none;display:flex}.brand-mark{background:var(--brand-mark);color:#fff;border-radius:9px;place-items:center;width:30px;height:30px;font-size:16px;display:grid}img.brand-mark{filter:drop-shadow(0 2px 4px #00000026);background:0 0;border-radius:0}.home{max-width:520px;margin:0 auto;padding:20px 16px 48px}.home-top{justify-content:flex-end;margin-bottom:8px;display:flex}.logo{flex-wrap:wrap;justify-content:center;gap:4px;margin-top:18px;display:flex}.logo-tile{width:min(7.4vw,38px);height:min(7.4vw,38px);font-size:min(4.2vw,21px);animation:.5s cubic-bezier(.3,1.5,.5,1) both drop-in}.logo-tile:nth-child(2){animation-delay:50ms}.logo-tile:nth-child(3){animation-delay:.1s}.logo-tile:nth-child(4){animation-delay:.15s}.logo-tile:nth-child(5){animation-delay:.2s}.logo-tile:nth-child(6){animation-delay:.25s}.logo-tile:nth-child(7){animation-delay:.3s}.logo-tile:nth-child(8){animation-delay:.35s}.logo-tile:nth-child(9){animation-delay:.4s}.logo-tile:nth-child(10){animation-delay:.45s}.logo-tile:nth-child(11){animation-delay:.5s}@keyframes drop-in{0%{opacity:0;transform:translateY(-24px)rotate(-10deg)}}.home .logo{margin-bottom:24px}@media (min-width:900px){.home:has(.home-grid){max-width:920px}.home-grid{grid-template-columns:1.4fr 1fr;align-items:start;gap:16px;display:grid}.home-grid .card{margin-bottom:0}}.home .card{margin-bottom:16px;padding:20px}.home .card>button,.home form>button{width:100%;margin-top:4px;padding:12px}.share{gap:8px;margin-bottom:8px;display:flex}.share input{flex:1;min-width:0}.share button{flex:none}.players-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.players-list li{background:var(--chip);border-radius:12px;align-items:center;gap:10px;padding:8px;font-weight:600;display:flex}.players-list .av{width:28px;height:28px;font-size:13px}.back{margin-bottom:12px;text-decoration:none;display:inline-block}.tile{background:var(--tile);color:var(--tile-ink);box-shadow:var(--tile-sh);font-family:var(--tile-font);-webkit-user-select:none;user-select:none;border-radius:7px;justify-content:center;align-items:center;display:flex;position:relative}.tile .letter{font-weight:700;line-height:1}.tile .value{opacity:.75;font-size:.4em;font-weight:700;position:absolute;bottom:5%;right:9%}.tile.blank .letter{color:var(--blank-ink)}.table{max-width:1120px;margin:0 auto;padding:14px 16px 40px}.topbar{align-items:center;gap:10px;padding:2px 0 16px;display:flex}.topbar .sp{flex:1}.layout{grid-template-columns:minmax(0,620px) minmax(270px,320px);justify-content:center;align-items:start;gap:24px;display:grid}@media (max-width:900px){.layout{grid-template-columns:minmax(0,620px)}}@media (max-width:520px){.brand-name{display:none}.table{padding:10px 8px 32px}}.banner{border-radius:var(--r);background:var(--panel);border:1px solid var(--line);min-height:60px;box-shadow:var(--sh);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.banner .dot{background:var(--muted);border-radius:50%;flex:none;width:10px;height:10px}.banner.mine .dot{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);animation:1.6s ease-in-out infinite pulse}.banner.mine{border-color:var(--accent)}@keyframes pulse{50%{box-shadow:0 0 0 8px #0000}}.banner-text{flex:1;min-width:0;font-size:14px}.pending-line{color:var(--muted);margin-top:2px;font-size:13px}.pending-line b{color:var(--ink);letter-spacing:.03em}.banner-actions{flex-shrink:0;gap:8px;display:flex}.boardwrap{border-radius:calc(var(--r) + 6px);background:var(--frame);box-shadow:var(--frame-sh);padding:10px}@media (max-width:520px){.boardwrap{border-radius:14px;padding:5px}}.board{grid-template-columns:repeat(15,1fr);gap:3px;width:100%;display:grid;container-type:inline-size}@media (max-width:520px){.board{gap:2px}}.sq{aspect-ratio:1;background:var(--sq);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;transition:box-shadow .12s,background .12s;display:flex;position:relative}@media (max-width:520px){.sq{border-radius:3px}}.sq.tw{background:var(--tw);color:var(--tw-ink)}.sq.dw{background:var(--dw);color:var(--dw-ink)}.sq.tl{background:var(--tl);color:var(--tl-ink)}.sq.dl{background:var(--dl);color:var(--dl-ink)}.sq-label{pointer-events:none;flex-direction:column;align-items:center;line-height:1;display:flex}.sq-label .ab{letter-spacing:.02em;font-size:2.3cqw;font-weight:800}.sq-label .full{display:none}.sq.star .ab{font-size:3.6cqw}.sq.targetable:hover{background:var(--drop-bg)}.board .tile{border-radius:6px;width:100%;height:100%;font-size:3.9cqw}.board .tile .value{font-size:.42em}.board .tile.tentative{background:var(--tent-bg);box-shadow:var(--tile-sh), 0 0 0 2px var(--accent);cursor:grab}.board .tile.last{box-shadow:var(--tile-sh), inset 0 0 0 2px var(--last-ring)}.board .tile.pending{box-shadow:var(--tile-sh), inset 0 0 0 2px var(--warn)}.rackrow{align-items:center;gap:10px;margin-top:16px;display:flex}.icon-btn{cursor:pointer;background:var(--btn);border:1px solid var(--line);width:44px;height:44px;color:var(--ink);box-shadow:var(--sh);border-radius:12px;flex:none;place-items:center;display:grid}.rack{border-radius:calc(var(--r) + 2px);background:var(--rack);min-height:76px;box-shadow:var(--rack-sh);flex:1;justify-content:center;align-items:center;gap:8px;padding:12px;transition:box-shadow .15s;display:flex}.rack.rack-over{box-shadow:var(--rack-sh), 0 0 0 2px var(--accent)}.rack-tile,.rack-slot,.rack-gap{flex:none;width:min(11vw,52px);height:min(11vw,52px)}.rack-tile{cursor:grab;touch-action:none;font-size:min(5.6vw,26px);transition:transform .15s,box-shadow .15s}.rack-tile:hover{transform:translateY(-2px)}.rack-tile.selected{box-shadow:var(--tile-sh), 0 0 0 2px var(--accent), 0 10px 18px var(--accent-soft);transform:translateY(-8px)}.rack-tile.exchange{box-shadow:var(--tile-sh), 0 0 0 2px var(--danger);opacity:.8;transform:translateY(-8px)}.rack-slot{background:var(--slot);border:1.5px dashed var(--slot-line);border-radius:7px}.rack-gap{background:var(--accent-soft);border:2px dashed var(--accent);border-radius:7px;animation:.14s ease-out grow}@keyframes grow{0%{opacity:0;transform:scale(.4)}}@media (max-width:520px){.rackrow{gap:6px}.rack{gap:4px;min-height:0;padding:8px 6px}.icon-btn{width:38px;height:38px}}.preview{min-height:30px;color:var(--muted);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:12px;font-size:13px;display:flex}.preview.bad{color:var(--danger)}.word-chip{background:var(--chip);color:var(--ink);letter-spacing:.03em;border-radius:999px;padding:4px 10px;font-weight:600;animation:.15s ease-out grow}.word-chip b{color:var(--accent);margin-left:3px}.word-chip.bingo{background:var(--accent);color:var(--accent-ink)}.word-chip.bingo b{color:inherit}.controls{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px;display:flex}.controls .btn.primary{min-width:140px}.side{flex-direction:column;gap:14px;display:flex}.pl{border-radius:12px;align-items:center;gap:10px;padding:9px 8px;transition:background .2s;display:flex}.pl.on{background:var(--accent-soft)}.pl.won{background:#facc152e}.av{color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:14px;font-weight:700;display:grid}.pl .n{flex:1;min-width:0;font-size:14px;font-weight:600}.pl .n small{color:var(--muted);margin-top:1px;font-size:12px;font-weight:500;display:block}.pl .s{font-variant-numeric:tabular-nums;font-size:20px;font-weight:800}.bag{color:var(--muted);align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.bar{background:var(--chip);border-radius:9px;flex:1;height:6px;overflow:hidden}.bar span{background:var(--accent);border-radius:9px;height:100%;transition:width .4s;display:block}.bag-n{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700}.log{max-height:300px;padding:0 4px;font-size:13px;overflow-y:auto}.log p{border-bottom:1px solid var(--line);margin:0;padding:7px 0;line-height:1.4}.log p:last-child{border:0}.log .log-challenge-success{color:var(--danger);font-weight:600}.log .log-challenge-fail,.log .log-lost-turn{color:var(--warn);font-weight:600}.log .log-end{color:var(--accent);font-weight:700}.log .log-draw,.log .log-start{color:var(--muted)}.unseen summary{cursor:pointer;color:var(--muted);font-size:13px;font-weight:600}.unseen-grid{grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:6px;margin-top:10px;display:grid}.unseen-grid span{background:var(--chip);color:var(--muted);border-radius:8px;justify-content:center;align-items:baseline;gap:3px;padding:4px 0;font-size:12px;display:flex}.unseen-grid b{color:var(--ink);font-size:13px}.modal-bg{background:var(--overlay);z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;padding:16px;animation:.15s fade;display:flex;position:fixed;inset:0}.modal{background:var(--bg);background-image:linear-gradient(var(--panel), var(--panel));border:1px solid var(--line);border-radius:20px;width:min(380px,100%);padding:20px;animation:.2s cubic-bezier(.3,1.4,.5,1) pop-in;box-shadow:0 30px 60px #0000004d}.modal h3{text-transform:none;letter-spacing:-.01em;color:var(--ink);margin:0 0 8px;font-size:18px}.modal p{margin:0 0 16px;font-size:14px;line-height:1.45}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.letters{grid-template-columns:repeat(7,1fr);gap:6px;margin-top:12px;display:grid}.letters button{font-weight:700;font-family:var(--tile-font);padding:10px 0}.letters button:hover{background:var(--accent);color:var(--accent-ink)}@keyframes fade{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:scale(.92)}}.toast{z-index:45;cursor:pointer;color:#fff;background:#15171c;border-radius:14px;max-width:min(92vw,520px);padding:12px 16px;font-size:14px;animation:.25s cubic-bezier(.3,1.4,.5,1) toast-in;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0000004d}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,20px)}}.board .tile.tentative{touch-action:none}.tile.floating{z-index:40;pointer-events:none;width:52px;height:52px;box-shadow:var(--drag-sh);cursor:grabbing;font-size:26px;transition:transform .14s,opacity .14s;animation:.14s ease-out lift;position:fixed;transform:rotate(-6deg)scale(1.12)}.tile.floating.nowhere{opacity:.85;transform:rotate(-3deg)scale(1.04)}@keyframes lift{0%{transform:rotate(0)scale(1)}}.sq.drop-ok{background:var(--drop-bg);box-shadow:inset 0 0 0 2px var(--accent), 0 0 16px var(--accent-soft);z-index:1}.sq.drop-bad{box-shadow:inset 0 0 0 2px var(--danger)}.board .tile.snap{animation:.34s cubic-bezier(.3,1.8,.5,1) snap}@keyframes snap{0%{transform:scale(1.22)rotate(-5deg)}to{transform:none}}body:has(.tile.floating){cursor:grabbing}.celebration{z-index:30;pointer-events:auto;position:fixed;inset:0;overflow:hidden}.celebration.win{background:color-mix(in srgb, var(--bg) 40%, transparent)}.celebration-title{color:#fff;text-align:center;background:#15171c;border-radius:14px;max-width:90vw;padding:10px 20px;font-size:clamp(18px,4vw,30px);font-weight:800;animation:.5s cubic-bezier(.2,1.6,.4,1) both pop;position:absolute;top:18%;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0000004d}.dancer{width:clamp(90px,16vw,150px);animation:5s linear both across;position:absolute;bottom:22%;left:0}.dancer.conga{animation:7.5s linear both across;bottom:16%}.critter{transform-origin:50% 100%;width:100%;height:auto;animation:.45s ease-in-out infinite alternate boogie;overflow:visible}.critter .legs{animation:.225s steps(2,end) infinite stomp}.critter .arm-up{transform-origin:80px 76px;animation:.9s ease-in-out infinite alternate point}.critter .wing{transform-origin:24px 60px;animation:.45s ease-in-out infinite alternate point}.confetti{border-radius:2px;width:9px;height:14px;animation:3s linear both fall;position:absolute;top:-12px}@keyframes across{0%{transform:translate(-25vw)}to{transform:translate(110vw)}}@keyframes boogie{0%{transform:translateY(0)rotate(-8deg)}to{transform:translateY(-18px)rotate(8deg)}}@keyframes stomp{50%{transform:translateY(-3px)}}@keyframes point{0%{transform:rotate(-12deg)}to{transform:rotate(14deg)}}@keyframes pop{0%{opacity:0;transform:translate(-50%)scale(.4)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes fall{to{top:105%;transform:rotate(720deg)}}@media (prefers-reduced-motion:reduce){.dancer,.critter,.critter *,.confetti{animation:none!important}.dancer{left:50%;transform:translate(-50%)}.dancer.conga{display:none}.dancer.conga:nth-child(2){display:block}.confetti{display:none}}.pig-party{pointer-events:none;z-index:31;perspective:600px;grid-template-rows:repeat(15,minmax(0,1fr));grid-template-columns:repeat(15,minmax(0,1fr));gap:3px;display:grid;position:fixed}.pig-cell{min-width:0;min-height:0;transform-style:preserve-3d;background:#ffd6e2;border-radius:22%;place-items:center;animation-name:pig-morph;animation-timing-function:ease-in-out;animation-fill-mode:both;display:grid;box-shadow:inset 0 0 0 1px #f5a3bd}.pig-dance{width:118%;height:118%;animation-name:pig-bop;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}.pig-dance svg{filter:drop-shadow(0 3px 2px #a0325a59);width:100%;height:100%;overflow:visible}@keyframes pig-morph{0%{opacity:0;transform:rotateY(0)scale(1)}6%{opacity:1}14%{transform:rotateY(calc(180deg * var(--flip))) scale(.6)}22%{transform:rotateY(calc(360deg * var(--flip))) scale(1.35) translateY(-18%)}28%{transform:rotateY(calc(360deg * var(--flip))) scale(1) translateY(0)}82%{transform:rotateY(calc(360deg * var(--flip))) scale(1);opacity:1}92%{transform:rotateY(calc(450deg * var(--flip))) scale(.4);opacity:.6}to{transform:rotateY(calc(540deg * var(--flip))) scale(0);opacity:0}}@keyframes pig-bop{0%{transform:translateY(6%)rotate(-12deg)}to{transform:translateY(-22%)rotate(12deg)}}.celebration.win .pig-cell:nth-child(5n){background:#fde68a}.celebration.win .pig-cell:nth-child(7n){background:#c7d2fe}@media (prefers-reduced-motion:reduce){.pig-party{display:none}}.mobile-only{display:none}@media (max-width:520px){.rackrow .icon-btn{display:none}.mobile-only{display:inline-block}.controls .btn{padding:10px 12px}.controls .btn.primary{flex:1 0 100%;min-width:0}}button.primary:disabled,.btn.primary:disabled{background:var(--chip);color:var(--muted);box-shadow:none;opacity:1}.celebration-title{z-index:33}.dancer{z-index:32}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:4px 2px;font-size:13px;font-weight:600}.exchange-modal{width:min(460px,100%)}.exchange-rack{background:var(--chip);border-radius:14px;flex-wrap:nowrap;justify-content:center;gap:6px;padding:16px 8px;display:flex}.modal .ex-tile{cursor:pointer;background:var(--tile);width:min(10vw,50px);height:min(10vw,50px);color:var(--tile-ink);box-shadow:var(--tile-sh);border:0;border-radius:8px;flex:none;padding:0;font-size:min(5.4vw,24px);transition:transform .15s cubic-bezier(.3,1.6,.5,1),box-shadow .15s,opacity .15s}.modal .ex-tile:hover{transform:translateY(-2px)}.modal .ex-tile.picked{box-shadow:var(--tile-sh), 0 0 0 3px var(--accent), 0 10px 18px var(--accent-soft);transform:translateY(-8px)rotate(-4deg)}.exchange-meta{align-items:center;gap:10px;margin:12px 0 16px;font-size:13px;display:flex}.exchange-meta .sp{flex:1}.modal .link-btn{box-shadow:none;color:var(--accent);background:0 0;border:0;padding:4px 2px}.table .board,.table .rack,.table .rackrow,.tile,.sq-label{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}.side-banner .banner{margin-bottom:0}.actions .preview{text-align:left;justify-content:flex-start;min-height:0;margin-top:0;margin-bottom:10px}.actions .controls{justify-content:stretch;margin-top:0}.actions .controls .btn{flex:1}.actions .controls .btn.primary{flex:1 0 100%;min-width:0;padding:12px;font-size:15px}.actions .error{margin:10px 0 0;font-size:13px}@media (min-width:900px){.table{flex-direction:column;max-width:none;height:100dvh;padding:10px 20px 14px;display:flex;overflow:hidden}.topbar{flex:none;padding-bottom:10px}.layout{flex:1;grid-template-columns:auto 320px;align-items:stretch;gap:22px;min-height:0}.board-col{flex-direction:column;align-items:center;min-height:0;display:flex}.boardwrap{flex:none;width:min(100dvh - 176px,100vw - 400px,780px)}.rackrow{width:min(100dvh - 176px,100vw - 400px,780px);margin-top:12px;container-type:inline-size}.rackrow .rack{min-height:0;padding:10px}.rack-tile,.rack-slot,.rack-gap{width:min(52px,14.2857cqw - 21.4286px);height:min(52px,14.2857cqw - 21.4286px)}.rack-tile{font-size:min(26px,7.14286cqw - 10.7143px)}.side{scrollbar-width:thin;gap:12px;min-height:0;padding-right:2px;overflow-y:auto}.side>.card:has(.log){flex-direction:column;flex:140px;min-height:140px;display:flex}.side .log{flex:1;min-height:0;max-height:none}}@media (max-width:899px){.layout{flex-direction:column;align-items:stretch;gap:0;display:flex}.board-col,.side{display:contents}.side-banner{order:1;margin-bottom:12px}.boardwrap{order:2}.rackrow{order:3}.actions{order:4;margin-top:12px}.side>.card:not(.actions),.side>.error{order:5;margin-top:12px}}@media (min-width:900px){.side .card{padding:12px}.side .card h4{margin-bottom:6px}.side .banner{min-height:52px;padding:10px 12px}.pl{gap:9px;padding:6px 8px}.pl .av{width:30px;height:30px;font-size:13px}.pl .s{font-size:18px}.side .bag{padding:10px 12px}.side .log p{padding:6px 0}}@media (min-width:900px) and (max-height:760px){.pl .n small{display:none}.pl{padding:4px 8px}}
