:root{color-scheme:light;--ink: #2a2340;--page: #fff1dd;--page-2: #ffe2be;--paper: #fffcf4;--felt-300: #45c9bc;--felt-500: #17a398;--felt-700: #0f8279;--rim: #e3a55b;--rim-hi: #f6cb8c;--tangerine: #ff8a3d;--sunshine: #ffc83d;--raspberry: #e8476a;--grape: #7b5cd6;--mint: #5bd39c;--glow: #ffe7a3;--text: var(--ink);--text-2: #5e5672;--accent: var(--tangerine);--accent-ink: #b23c17;--ring: var(--raspberry);--surface: rgba(255, 252, 244, .9);--surface-solid: var(--paper);--hairline: rgba(42, 35, 64, .12);--line: rgba(42, 35, 64, .22);--card-hi: #fffcf4;--card-lo: #fff6e6;--card-black: var(--ink);--card-red: #c8283f;--warn: #7a5a00;--warn-bg: rgba(255, 200, 61, .22);--danger: #c0283d;--go: #1e9e63;--good: #1a7a4a;--cream: var(--paper);--cream-100: var(--text);--cream-300: var(--text-2);--brass: var(--accent);--brass-400: var(--accent-ink);--brass-500: var(--accent);--felt: var(--felt-500);--felt-deep: var(--felt-700);--red: var(--card-red);--black: var(--card-black);--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--card-w: 58px;--move: .16s;--travel: .22s;--sheet-ms: .28s;--ease: cubic-bezier(.2, .8, .2, 1);--shadow-raised: 0 2px 5px rgba(42, 35, 64, .22);--shadow-overlay: 0 -12px 40px rgba(42, 35, 64, .25);--shadow: 0 10px 24px rgba(42, 35, 64, .18);--back-img: url(/art/card-back.jpg);font-family:Avenir Next,-apple-system,system-ui,Segoe UI,sans-serif;background:var(--page);color:var(--text)}:root[data-back=alt]{--back-img: url(/art/card-back-alt.jpg)}:root[data-readable="1"]{font-family:Verdana,sans-serif}:root[data-contrast="1"]{--text-2: #3f3856;--felt-500: #0f8279;--accent-ink: #8f2e0f}:root[data-motion="0"]{--move: 0ms;--travel: 0ms;--sheet-ms: 0ms}@media(prefers-reduced-motion:reduce){:root{--move: 0ms;--travel: 0ms;--sheet-ms: 0ms}}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}html{background:var(--page)}body{overflow-x:hidden;font-size:17px;line-height:1.4;background:radial-gradient(circle at 15% 0%,rgba(255,231,163,.55),transparent 40%),url(/art/page-bg.jpg) 0 0 / 256px 256px,var(--page);background-color:var(--page)}h1,h2,h3{margin:0}h2{font-size:22px;line-height:28px;font-weight:600}h3{font-size:15px;line-height:20px;font-weight:700;color:var(--accent-ink)}p{margin:0;line-height:1.45}button,input,select{font:inherit;color:inherit}button{min-height:44px;min-width:44px;cursor:pointer}button:disabled{cursor:default}button,.card,.pile{touch-action:manipulation;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}img{-webkit-user-drag:none;-webkit-user-select:none;user-select:none}body:before{content:"";position:fixed;top:0;left:0;right:0;height:var(--sat);background:linear-gradient(180deg,var(--page),rgba(255,241,221,.88));z-index:28;pointer-events:none}.app{min-height:100dvh;padding:calc(var(--sat) + 8px) 16px calc(16px + var(--sab));max-width:1100px;margin:0 auto}.app--table{padding-top:var(--sat);padding-bottom:calc(8px + var(--sab))}.wordmark{font-family:Palatino,Palatino Linotype,Iowan Old Style,Georgia,serif;font-weight:700;letter-spacing:.01em;font-size:2rem;line-height:1.15;color:var(--ink)}.lede{color:var(--text-2);font-size:15px;line-height:20px;max-width:38rem}.quiet{color:var(--text-2);font-size:15px;line-height:20px}.caption{color:var(--text-2);font-size:13px;line-height:18px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.primary,.ghost,.danger,.choice,.link{border-radius:12px;border:1px solid var(--line);background:#fffcf4d9;padding:0 16px;font-weight:600;transition:transform 80ms ease-out,opacity var(--move) ease-out,background var(--move) ease-out}.primary{min-height:50px;border-radius:14px;padding:0 20px;border-color:transparent;background:linear-gradient(180deg,#ffa45e,var(--tangerine));color:var(--ink);font-weight:700;box-shadow:0 2px #d9692a,0 4px 10px #ff8a3d4d}.primary.outline{background:#fffcf4e6;border:1.5px solid var(--tangerine);color:var(--accent-ink);box-shadow:none}.danger{border-color:var(--danger);color:var(--danger);background:#e8476a0f}.choice{border-radius:999px;padding:0 14px;text-transform:capitalize;font-weight:500}.choice[aria-pressed=true]{background:#ff8a3d2e;border-color:var(--tangerine);color:var(--accent-ink)}.link{border:0;background:none;padding:0 4px;color:var(--text);font-weight:500;text-align:left}.link b{color:var(--accent-ink)}.primary:disabled,.ghost:disabled,.danger:disabled,.choice:disabled{opacity:.45}.primary:disabled{opacity:.5;filter:saturate(.5);box-shadow:none}button:not(.card):not(:disabled):active{transform:scale(.97)}.icon-btn{border-radius:999px;border:1px solid var(--line);background:#fffcf4d9;display:grid;place-items:center;padding:0}.back-btn{padding:0 12px 0 8px}.back-btn span{font-size:1.4em;line-height:0;margin-right:2px;position:relative;top:1px}.field{display:grid;gap:6px;font-size:15px;color:var(--text-2)}.field input,.field select,.sheet input,.sheet select,.join-row input,.rules-screen select,.rules-screen input[type=number]{min-height:44px;border-radius:12px;border:1px solid var(--line);background:var(--paper);padding:0 12px;color:var(--text)}.toast{background:var(--paper);border:1px solid var(--tangerine);border-radius:14px;padding:10px 12px;font-size:15px;line-height:20px;color:var(--text)}.toast--float{position:fixed;top:calc(var(--sat) + 8px);left:16px;right:16px;z-index:30;box-shadow:var(--shadow);display:flex;align-items:center;gap:8px;max-width:560px;margin:0 auto;animation:slide-in .2s var(--ease) backwards}.toast--float>span{flex:1}.toast--table{top:calc(var(--sat) + 56px)}.toast-x{border:0;background:none;font-size:22px;line-height:1;color:var(--text-2);margin:-10px -8px -10px 0}.banner{position:fixed;top:calc(var(--sat) + 8px);left:16px;right:16px;z-index:20;margin:0 auto;max-width:420px;padding:8px 12px;border-radius:999px;background:#fff4d1;border:1px solid var(--sunshine);color:var(--warn);text-align:center;font-size:15px;box-shadow:var(--shadow);display:flex;justify-content:center;align-items:center;gap:8px;pointer-events:none}.app--table .banner{top:calc(var(--sat) + 8px)}.banner:before{content:"";width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin 1s linear infinite}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#2a234061;z-index:24;animation:fade-in var(--sheet-ms) ease-out backwards}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:25;max-width:none;margin:0 auto;max-height:82dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:var(--paper);color:var(--text);border:1px solid var(--hairline);border-bottom:0;border-radius:20px 20px 0 0;padding:10px 16px calc(14px + var(--sab));box-shadow:var(--shadow-overlay);animation:sheet-in var(--sheet-ms) var(--ease) backwards}.sheet:before{content:"";width:36px;height:5px;border-radius:3px;background:#2a234033;margin:0 auto 10px;display:block}.sheet .body{overflow:auto;display:grid;gap:10px;align-content:start;overscroll-behavior:contain}.sheet .foot{display:flex;flex-wrap:wrap;gap:8px;padding-top:12px}.sheet .foot>button{flex:1 1 0}.sheet .foot>.primary:first-child{flex-basis:100%}.sheet .foot>.danger:first-child{order:2;flex-basis:100%}.home{display:flex;flex-direction:column;gap:12px}.home-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:8px}.home-hero{display:block;width:min(100%,320px);height:auto;aspect-ratio:4 / 3;margin:-4px auto -8px;object-fit:contain;-webkit-mask-image:linear-gradient(180deg,#000 78%,transparent);mask-image:linear-gradient(180deg,#000 78%,transparent)}.name-row{margin:-4px 0 0 -4px}.name-row .field.inline{grid-template-columns:auto 1fr;align-items:center}.panel{background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:14px;display:grid;gap:10px;box-shadow:0 1px 2px #2a23400f}.panel h2{font-size:17px;line-height:22px}.cards-pick{display:grid;grid-template-columns:1fr;gap:6px}@media(min-width:720px){.cards-pick{grid-template-columns:1fr 1fr}}.preset{min-height:56px;display:flex;align-items:center;gap:12px;text-align:left;border-radius:12px;padding:8px 12px;background:#fffcf4e6;border:1px solid var(--hairline)}.preset .mode-badge{width:40px;height:40px;flex:0 0 auto;margin-left:-4px}.preset-text{flex:1;display:grid}.preset strong{font-family:Palatino,Georgia,serif;font-size:17px;line-height:22px}.preset .quiet{font-size:13px;line-height:18px}.preset[aria-pressed=true]{border-color:var(--tangerine);background:#ff8a3d1f}.preset .check{width:22px;color:var(--accent-ink);font-weight:800;text-align:center}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px;border-radius:14px;background:#2a234012}.segmented .choice{border-radius:11px;border-color:transparent;background:none;padding:0 6px}.segmented .choice[aria-pressed=true]{background:var(--paper);border-color:#ff8a3db3;box-shadow:0 1px 3px #2a23401f}.house{justify-self:start;color:var(--accent-ink)}.home-bar{position:sticky;bottom:var(--sab);z-index:3;display:grid;gap:8px;margin:0 -16px;padding:18px 16px 12px;background:linear-gradient(180deg,rgba(255,241,221,0),var(--page) 30%)}.join-row{display:grid;grid-template-columns:1fr auto;gap:8px}.join-row input{font-family:ui-monospace,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase;min-width:0}.foot-note{padding:4px 0 8px}.settings-list{display:grid;gap:8px}.settings-list .choice{border-radius:12px;text-transform:none}.rules-screen{display:grid;gap:12px}.rules-screen .preset{display:grid;align-items:stretch}.switch-row{min-height:48px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--hairline)}.switch-row input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:0 0 auto;width:51px;height:31px;border-radius:16px;margin:0;background:#2a23402e;position:relative;transition:background var(--move) ease-out;cursor:pointer}.switch-row input[type=checkbox]:checked{background:var(--felt-500)}.switch-row input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #2a23404d;transition:transform var(--move) ease-out}.switch-row input[type=checkbox]:checked:after{transform:translate(20px)}.lobby{display:flex;flex-direction:column;gap:12px;min-height:calc(100dvh - var(--sat) - var(--sab) - 24px)}.lobby-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.lobby-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.code-chip{font-family:ui-monospace,Menlo,monospace;font-size:32px;line-height:1;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.12em;padding:8px 10px 8px 14px;border-radius:12px;border:1.5px solid var(--tangerine);background:var(--paper);color:var(--accent-ink)}.lobby-art{align-self:center;width:240px;height:140px;object-fit:contain}.share-row{justify-content:space-between;flex-wrap:nowrap}.share-row .quiet{flex:1}.seat-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.seat-row{min-height:56px;display:flex;align-items:center;gap:10px;padding:6px 12px;border-radius:14px;background:var(--surface);border:1px solid var(--hairline)}.seat-row .avatar{width:36px;height:36px}.seat-row .who{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}.ready-state{font-size:13px;color:var(--text-2)}.ready-state.is-ready{color:var(--text);font-weight:600}.ready-state.is-ready:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--go);margin-right:6px}.host-row .ghost{flex:1}.waiting{display:flex;align-items:center;gap:8px;color:var(--text-2);font-size:15px}.waiting .dot,.turn-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--go);animation:pulse 1.2s ease-in-out infinite}.lobby-bar{position:sticky;bottom:var(--sab);margin:auto -16px 0;padding:18px 16px 4px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px;background:linear-gradient(180deg,rgba(255,241,221,0),var(--page) 30%)}.card,.back,.slot{width:var(--card-w);height:calc(var(--card-w) * 1.45);border-radius:calc(var(--card-w) * .14);font-size:calc(var(--card-w) * .24);position:relative;flex:0 0 auto;min-width:0;min-height:0}.card{display:grid;border:0;padding:0;background:linear-gradient(180deg,var(--card-hi),var(--card-lo));color:var(--card-black);box-shadow:0 0 0 1px #2a234024,var(--shadow-raised);transition:transform var(--move) var(--ease),box-shadow var(--move) ease-out;line-height:1;overflow:hidden}.card.red{color:var(--card-red)}.card .face-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.card .corner{position:absolute;z-index:1;top:calc(var(--card-w) * .06);left:calc(var(--card-w) * .08);display:grid;justify-items:center;font-size:1em;line-height:1}.card.court .corner{background:#fffcf4d1;border-radius:calc(var(--card-w) * .05);padding:1px 1px 2px}.card .corner b{font-weight:800;letter-spacing:-.04em}.card .corner i{font-style:normal;font-size:.9em}.card .corner--br{top:auto;left:auto;right:calc(var(--card-w) * .08);bottom:calc(var(--card-w) * .06);transform:rotate(180deg);font-size:.85em}.hand .card:not(:last-child) .corner--br{visibility:hidden}.card .pip-img{width:38%;height:auto;aspect-ratio:1;place-self:center;margin-top:18%;pointer-events:none}button.card .pip-img{width:34%;margin-top:8%}.card.is-selected{transform:translateY(-16px);box-shadow:0 0 0 3px var(--ring),0 8px 18px #2a23404d;outline:0}.card.is-proposed{box-shadow:0 0 0 2px var(--ring),var(--shadow-raised)}.card.joker{color:var(--ink);place-items:center}.card .joker-text{position:absolute;z-index:1;top:calc(var(--card-w) * .07);left:calc(var(--card-w) * .06);writing-mode:vertical-rl;text-orientation:upright;font-size:.6em;font-weight:800;letter-spacing:-.12em;line-height:1;padding:2px 1px;border-radius:calc(var(--card-w) * .05);background:#fffcf4d9;color:#b5304f}.back{display:block;background:var(--back-img) center / cover,var(--paper);box-shadow:0 0 0 1px #2a234029,var(--shadow-raised)}.slot{display:block;border:1.5px dashed rgba(255,252,244,.7)}.table-screen{height:calc(100dvh - var(--sat) - var(--sab) - 8px);min-height:480px;max-width:720px;margin:0 auto;display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto auto auto;gap:8px}.topbar,.opponents,.melds,.hand,.actions,.status{min-width:0}.topbar{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-height:44px}.topbar .title{text-align:center;min-width:0}.topbar .title b,.topbar .title span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .title b{font-size:15px;line-height:20px;font-weight:700}.topbar .title span{font-size:13px;line-height:18px}.topbar .ghost{min-width:64px}.opponents{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;overflow-x:auto;scroll-snap-type:x proximity;padding:2px;margin:-2px}.opponents.n3{grid-auto-columns:calc(50% - 4px)}.seat{--card-w: 28px;display:grid;grid-template-columns:28px minmax(0,1fr) auto;grid-template-areas:"avatar who backs";align-items:center;column-gap:8px;row-gap:4px;padding:6px 10px;min-width:0;border-radius:14px;background:var(--surface);border:1px solid var(--hairline);scroll-snap-align:start;transition:box-shadow var(--move) ease-out}.opponents.n2 .seat,.opponents.n3 .seat{grid-template-areas:"avatar who" "backs backs";grid-template-columns:28px minmax(0,1fr)}.seat.is-active{box-shadow:0 0 0 2px var(--tangerine)}.avatar{grid-area:avatar;width:28px;height:28px;border-radius:50%;background:var(--page-2);display:block;position:relative;flex:0 0 auto}.avatar img{display:block;width:100%;height:100%;border-radius:50%}.seat.is-active .avatar:after{content:"";position:absolute;right:-2px;bottom:-2px;width:9px;height:9px;border-radius:50%;background:var(--go);border:1.5px solid var(--paper);animation:pulse 1.2s ease-in-out infinite}.seat .who{grid-area:who;min-width:0;line-height:1.2}.seat strong{font-size:15px;margin-right:6px}.seat .meta{font-size:12px;line-height:16px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-block;border-radius:999px;padding:1px 8px;background:#ffc83d4d;color:var(--text);font-size:12px;line-height:18px;white-space:nowrap}.badge.out{background:#5bd39c59;margin-left:6px}.seat .backs{grid-area:backs;display:flex;align-items:center;gap:8px}.seat .fan{display:flex;align-items:center}.seat .fan .back{margin-right:calc(var(--card-w) * -.5)}.seat .fan .back:last-child{margin-right:0}.seat .backs .count{font-weight:700}.seat .count,.seat .pts{font-size:13px;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}.seat .pts{color:var(--text-2)}.opponents.n2 .seat .backs,.opponents.n3 .seat .backs{justify-content:space-between}.opponents.n2 .lvl,.opponents.n3 .lvl{display:none}.opponents.n2 .seat strong,.opponents.n3 .seat strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:inline-block;vertical-align:bottom}.opponents.compact{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;overflow:visible}.opponents.compact.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.opponents.compact .seat{grid-template-columns:20px minmax(0,1fr);grid-template-areas:"avatar name" "tally tally" "chip chip";column-gap:5px;row-gap:3px;padding:5px 6px 6px;border-radius:12px}.opponents.compact .avatar{width:20px;height:20px}.opponents.compact .name{grid-area:name;min-width:0;font-size:12px;line-height:16px;letter-spacing:-.01em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opponents.compact .tally{grid-area:tally;display:flex;align-items:center;gap:4px;min-width:0;font-size:13px;line-height:16px;font-variant-numeric:tabular-nums}.opponents.compact .tally .count{font-size:15px;font-weight:800;color:var(--text)}.opponents.compact .tally .pts{margin-left:auto;font-size:12px;color:var(--text-2);white-space:nowrap}.mini-back{width:11px;height:16px;border-radius:2px;flex:0 0 auto;background:var(--back-img) center / cover,var(--paper);box-shadow:0 0 0 1px #2a234033}.opponents.compact .chip{grid-area:chip;justify-self:start;max-width:100%;padding:0 6px;border-radius:999px;background:#2a234012;color:var(--text-2);font-size:11px;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opponents.compact .chip.is-down{background:#5bd39c52;color:var(--text)}.opponents.compact .chip.is-gone{background:#e8476a29;color:var(--text)}.opponents.compact .seat.is-active{background:#fff7e8}.opponents.compact .seat.is-active .name{color:var(--accent-ink)}.felt{--card-w: 52px;position:relative;border-radius:24px;border:6px solid var(--rim);padding:10px 12px;color:var(--paper);background:radial-gradient(ellipse at 30% 0%,rgba(255,231,163,.1),transparent 55%),linear-gradient(180deg,#06645c7a,#065c5694),url(/art/felt-teal.jpg) 0 0 / 256px 256px,linear-gradient(180deg,var(--felt-500),var(--felt-700));box-shadow:inset 0 0 0 1px var(--rim-hi),inset 0 2px 12px #2a234040,var(--shadow);display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center}.deal-swoosh{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:92%;height:auto;aspect-ratio:2 / 1;max-height:100%;object-fit:contain;pointer-events:none;z-index:2;animation:swoosh .7s var(--ease) forwards}:root[data-back=alt] .deal-swoosh{display:none}@keyframes swoosh{0%{transform:translate(-30%) scale(.9);opacity:0}25%{opacity:1}80%{opacity:1}to{transform:translate(18%) scale(1);opacity:0}}.pile{display:grid;justify-items:center;gap:6px;background:none;border:0;padding:4px 0;border-radius:12px;color:var(--paper)}.pile .count{font-size:13px;line-height:16px;color:var(--paper);font-weight:600;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px rgba(6,60,56,.6)}.pile:not(:disabled) .card,.pile:not(:disabled) .back{box-shadow:0 0 0 2.5px var(--sunshine),0 0 18px #ffc83da6}.pile:disabled .card,.pile:disabled .back{opacity:.86;filter:saturate(.8)}.pile:disabled .slot{opacity:.55}.plate{display:grid;justify-items:center;gap:2px;color:var(--paper);text-align:center;font-size:13px;line-height:17px;max-width:150px;text-shadow:0 1px 2px rgba(6,60,56,.55)}.plate b{font-family:Palatino,Georgia,serif;font-size:18px;line-height:22px;font-weight:700}.plate .score{font-weight:600}.plate .turns-left{color:var(--glow)}.clock{margin-top:4px;padding:2px 10px;border-radius:999px;background:#063c388c;color:var(--paper);font-weight:700;font-variant-numeric:tabular-nums;text-shadow:none}.count{font-variant-numeric:tabular-nums}.melds{--card-w: 48px;position:relative;display:flex;flex-wrap:wrap;gap:8px;overflow:hidden auto;align-items:flex-start;align-content:flex-start;min-height:72px;padding:4px 0;overscroll-behavior:contain}.melds.many{--card-w: 40px;gap:6px}.melds.many .meld{padding:4px 6px 6px}.melds.many .meld .line{font-size:12px}.melds-wrap{position:relative;min-height:72px;min-width:0;display:grid}.melds-wrap>.melds{min-height:0}.melds-wrap.has-coach{grid-template-rows:auto minmax(0,1fr);gap:6px}.coach{margin:0;padding:8px 12px;border-radius:14px;border:1px solid var(--tangerine);background:#fff6e6;color:var(--text);font-size:15px;line-height:20px}.coach-step{display:block;font-size:12px;line-height:16px;font-weight:700;color:var(--accent-ink);text-transform:uppercase;letter-spacing:.04em}.lesson-list{margin:0;padding-left:20px;display:grid;gap:6px;font-size:15px;line-height:21px}.warn-line{color:var(--warn)}.seat.is-away .avatar{opacity:.45;filter:grayscale(.8)}.seat.is-away .meta.away{color:var(--warn)}.away-bar{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:6px 8px 6px 12px;border-radius:14px;border:1px solid var(--sunshine);background:#fff8e3;box-shadow:var(--shadow-raised)}.away-text{flex:1 1 180px;display:flex;align-items:center;gap:8px;font-size:14px;line-height:19px;color:var(--warn);font-variant-numeric:tabular-nums}.away-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--sunshine);animation:pulse 1.2s ease-in-out infinite}.away-actions{display:flex;gap:6px}.away-actions .ghost{padding:0 12px;font-size:14px}.call{position:absolute;left:0;right:0;bottom:0;z-index:6;display:grid;gap:6px;padding:8px 10px 10px;border-radius:16px;border:1.5px solid var(--raspberry);background:var(--paper);box-shadow:var(--shadow);animation:slide-up .18s var(--ease) backwards}.call-head{display:flex;align-items:center;gap:10px}.call-head p{font-size:14px;line-height:19px}.call-head b{color:#b5304f}.call-time{color:var(--warn);font-weight:700;font-variant-numeric:tabular-nums}.call .bar{display:block;height:3px;border-radius:2px;background:#2a23401f;overflow:hidden}.call .bar span{display:block;height:100%;background:var(--raspberry);transition:width .5s linear}.call-actions{display:grid;grid-template-columns:1fr 1fr auto;gap:6px}.call-actions .primary{min-height:44px}.call-actions .quiet-call{font-size:13px;font-weight:500;padding:0 10px;color:var(--text-2)}@keyframes slide-up{0%{transform:translateY(12px)}}.melds-more{position:absolute;right:0;bottom:2px;min-height:40px;padding:0 12px;border-radius:999px;border:1px solid var(--tangerine);background:var(--paper);color:var(--accent-ink);font-size:13px;font-weight:700;box-shadow:var(--shadow-raised)}.meld-slot{flex:0 0 auto;display:grid;gap:6px;align-content:start;max-width:100%}.meld{background:#fffcf4b3;border:1px solid var(--hairline);border-radius:14px;padding:6px 8px 8px;display:grid;gap:4px;animation:pop .2s ease-out backwards}button.meld{color:inherit;text-align:left}button.meld:disabled{opacity:.55}.meld.can-lay{box-shadow:0 0 0 2px var(--tangerine),0 0 16px #ff8a3d73;border-color:transparent}.meld .line{display:block;font-size:13px;line-height:16px}.meld .row{flex-wrap:nowrap;gap:0}.meld .row .card+.card,.meld .row .back+.card,.meld .row .card+.back{margin-left:calc(var(--card-w) * -.3)}.swap{min-height:44px;font-size:14px}.empty-melds{margin:0 auto;display:grid;justify-items:center;gap:2px}.empty-melds img{width:120px;height:70px}.down-flourish{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:min(260px,80%);height:auto;aspect-ratio:5 / 3;max-height:100%;object-fit:contain;pointer-events:none;z-index:7;animation:flourish 1.4s var(--ease) forwards}@keyframes flourish{0%{transform:scale(.7);opacity:0}20%{transform:scale(1.05);opacity:1}75%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:0}}.status{display:flex;align-items:center;gap:8px;min-height:44px}.turn-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#2a234012;font-size:13px;line-height:18px;font-weight:600;color:var(--text);max-width:62%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.turn-pill .dot{display:none;flex:0 0 auto}.turn-pill.is-button{border:0;min-height:40px;min-width:0;cursor:pointer}.turn-pill .ff{margin-left:4px;color:var(--accent-ink)}.setting-group{display:grid;gap:6px;padding:4px 0 6px}.setting-group .segmented .choice{text-transform:none;font-size:14px}.turn-pill.is-you{background:#ff8a3d33;color:var(--accent-ink)}.turn-pill.is-you .dot{display:block}.status .caption{flex:1;min-width:0}.log-line{border:0;background:none;padding:0;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-2);display:flex;align-items:center;min-width:0}.log-line .log-text{overflow:hidden;text-overflow:ellipsis;min-width:0}.log-line:after{content:"›";flex:0 0 auto;margin-left:4px;color:var(--accent-ink)}.lay-hint{color:var(--text)}.hand{display:flex;flex-direction:column;overflow-x:hidden;overflow-y:hidden;padding:22px 16px 10px;margin:0 -16px;scroll-snap-type:x proximity;scroll-padding-left:16px;scroll-padding-right:16px;scrollbar-width:none}.hand::-webkit-scrollbar{display:none}.hand-row{display:flex;flex:0 0 auto}.hand .card{margin-right:calc(var(--step, calc(var(--card-w) * .69)) - var(--card-w));scroll-snap-align:start;animation:deal var(--travel) var(--ease) backwards}.hand.is-dealing .card{animation-delay:min(calc(var(--i, 0) * 40ms),.4s)}.hand .card:last-child{margin-right:0}.hand.two-rows{padding-top:18px}.hand.two-rows .hand-row+.hand-row{margin-top:calc(var(--card-w) * -.6)}.hand.is-scrolling{overflow-x:auto}.hand.is-scrolling .hand-row .card:last-child{margin-right:16px}.hand-more{position:sticky;right:0;align-self:flex-end;margin-top:calc(var(--card-w) * -1.2);padding:0 6px;font-size:28px;color:var(--accent-ink);background:linear-gradient(90deg,transparent,var(--page) 60%);pointer-events:none}.actions{position:sticky;bottom:var(--sab);z-index:4;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-top:4px;background:linear-gradient(180deg,rgba(255,241,221,0),var(--page) 30%)}.actions.has-hint{grid-template-columns:1fr 1fr 1fr}.actions .primary{grid-column:1 / -1}.actions .ghost{padding:0 8px;font-size:15px}.lay-group{display:grid;gap:4px}.cards-row{flex-wrap:wrap;gap:6px}.scores{display:grid}.score-card{display:grid;grid-template-columns:minmax(0,1fr) 76px 56px;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--hairline);font-variant-numeric:tabular-nums}.score-card>span:not(:first-child){text-align:right}.score-card.head{font-size:13px;color:var(--text-2);padding-top:0}.score-card.is-lead{color:var(--accent-ink);font-weight:700}.result{font-family:Palatino,Georgia,serif;font-size:28px;line-height:34px;color:var(--accent-ink)}.result-art{position:relative;display:grid;place-items:center;min-height:224px;margin:-8px 0 -6px}.result-art .burst{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:224px;height:224px;pointer-events:none;animation:pop .4s var(--ease) backwards}.result-art .result{position:relative;max-width:92px;text-align:center;font-size:18px;line-height:21px;overflow-wrap:anywhere}.result-row{display:flex;align-items:center;gap:10px}.result-row .wink{width:72px;height:72px;flex:0 0 auto}.score-hands{display:grid;gap:10px}.score-hand{display:grid;gap:4px}.score-hand .row{gap:6px}.scored{display:grid;justify-items:center;gap:2px}.show-cards{justify-self:start}.may-i{display:flex;align-items:center;gap:14px}.may-i p{font-size:15px;line-height:20px}.buy-clock{display:grid;gap:4px}.buy-clock .bar{display:block;height:4px;border-radius:2px;background:#2a23401f;overflow:hidden}.buy-clock .bar span{display:block;height:100%;background:var(--raspberry);transition:width .5s linear}.sheet .foot .primary,.sheet .foot .ghost,.sheet .foot .danger{min-height:50px}.rules-contract{display:flex;align-items:center;gap:10px}.rules-contract img{width:96px;height:56px;flex:0 0 auto}.rules-group ul{margin:6px 0 0;padding-left:18px;display:grid;gap:6px}.rules-group li{font-size:15px;line-height:22px}.log{margin:0;padding-left:22px;font-size:13px;line-height:18px;color:var(--text-2);display:grid;gap:4px}@media(max-height:720px){.melds{--card-w: 44px}.melds-wrap{min-height:64px}.felt{--card-w: 46px;padding:6px 10px}.hand{--card-w: 54px;padding-top:20px;padding-bottom:6px}.table-screen{gap:6px}.seat{padding:4px 8px;--card-w: 22px}.meld{padding:4px 6px}.meld .line.owner{display:none}.status{min-height:40px}.opponents.compact .seat{padding:4px 6px 5px;row-gap:2px}.opponents.compact .chip{font-size:10px;line-height:14px}.opponents.compact .tally .count{font-size:14px}.opponents.compact~.felt{--card-w: 40px;padding:4px 10px}.melds-wrap{min-height:48px}.melds.many{--card-w: 36px}.hand.two-rows{padding-top:16px}.hand.two-rows .hand-row+.hand-row{margin-top:calc(var(--card-w) * -.78)}.actions .primary{min-height:44px}.home-hero{width:min(100%,260px)}}:root[data-cards=large] .hand{--card-w: 72px}:root[data-cards=small] .hand{--card-w: 48px}@media(min-width:900px){.app{padding-left:28px;padding-right:28px}.home,.lobby,.rules-screen{max-width:560px;margin:0 auto}.sheet{max-width:560px}}.resume{border-color:#ff8a3d8c;background:#fff7e8}.resume b{color:var(--text)}.code-chip.small{font-size:17px;padding:3px 8px;vertical-align:middle;margin-left:4px}.two-up{display:grid;grid-template-columns:1fr 1fr;gap:8px}.table-setup{display:grid;gap:8px;padding-top:2px}.setup-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:8px}.setup-row .segmented{grid-column:2 / -1}.setup-label{font-size:15px;font-weight:600;color:var(--text-2)}.stepper{display:inline-flex;align-items:center;gap:4px;justify-self:start;padding:3px;border-radius:14px;background:#2a234012}.stepper .ghost{min-width:44px;padding:0;font-size:22px;line-height:1;border-radius:11px}.stepper .count{min-width:28px;text-align:center;font-size:17px;font-weight:700}.bot-chips{display:flex;flex-wrap:wrap;gap:6px}.bot-chips .choice{text-transform:none;padding:0 12px;font-size:15px}.level--easy{border-color:#1e9e6399}.level--medium{border-color:#ff8a3db3}.level--hard{border-color:#e8476ab3;background:#e8476a12}.segmented.two{grid-template-columns:repeat(2,1fr)}.segmented.four{grid-template-columns:repeat(4,1fr)}.segmented .choice{min-width:0}.segmented.two .choice,.segmented.four .choice,.table-setup .choice,.add-bot .choice{text-transform:none}.segmented.four .choice{font-size:14px;white-space:nowrap;padding:0 2px}.caption.block{display:block}.record-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.record-stats>span{display:grid;justify-items:start}.record-stats b{font-family:Palatino,Georgia,serif;font-size:24px;line-height:28px;color:var(--accent-ink);font-variant-numeric:tabular-nums}.record-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.record-list li{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;align-items:baseline;font-size:15px}.record-list li>span:first-child{font-weight:700}.glance{border:1px solid var(--hairline);border-radius:14px;background:var(--surface);padding:0 12px}.glance summary,.more summary{min-height:44px;display:flex;align-items:center;gap:4px;cursor:pointer;font-weight:600;list-style:none}.glance summary::-webkit-details-marker,.more summary::-webkit-details-marker{display:none}.glance summary:after,.more summary:after{content:"›";margin-left:auto;color:var(--accent-ink);transition:transform var(--move) ease-out}.glance[open] summary:after,.more[open] summary:after{transform:rotate(90deg)}.glance ul{margin:0 0 10px;padding-left:18px;display:grid;gap:4px;font-size:14px;line-height:19px;color:var(--text-2)}.add-bot{display:grid;gap:8px}.seat-x{min-width:44px;padding:0;font-size:22px;line-height:1;border-radius:999px}.more{border:1px solid var(--hairline);border-radius:14px;padding:0 12px;background:var(--surface)}.more-body{display:grid;gap:10px;padding-bottom:12px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}.rules-group-card summary{min-height:56px}.group-title{display:grid;font-size:17px;line-height:22px}.group-title .caption{font-weight:400}.contract-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.contract-edit{display:grid;gap:8px;padding:10px;border-radius:14px;border:1px solid var(--hairline);background:#fffcf4b3}.contract-head{display:grid;grid-template-columns:28px minmax(0,1fr) 44px 44px;align-items:center;gap:6px}.contract-head input{min-width:0;min-height:44px;border-radius:12px;border:1px solid var(--line);background:var(--paper);padding:0 12px;font-weight:600}.contract-no{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#ff8a3d33;color:var(--accent-ink);font-weight:800;font-size:14px}.contract-preview{color:var(--text)}.slot-edit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 52px 44px;gap:5px;align-items:center}.slot-edit select,.slot-edit input{min-height:44px;min-width:0;width:100%;padding:0 8px}.slot-edit .suit-pick{grid-column:1 / 4}.contract-more summary{min-height:44px;display:flex;align-items:center;font-size:15px;color:var(--accent-ink);cursor:pointer}.add-meld{justify-self:start}.rank-chips{display:flex;flex-wrap:wrap;gap:4px}.rank-chips .choice{min-width:44px;padding:0 8px;text-transform:none}textarea.paste{min-height:88px;border-radius:12px;border:1px solid var(--line);background:var(--paper);padding:10px 12px;color:var(--text);font:13px/18px ui-monospace,Menlo,monospace;resize:vertical}.save-row{flex-wrap:nowrap}.save-row input{flex:1;min-width:0;min-height:44px;border-radius:12px;border:1px solid var(--line);background:var(--paper);padding:0 12px}.saved-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.saved-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px}.bad{color:var(--danger)}.good{color:var(--good)}.seat.is-left{opacity:.62}.seat.is-left strong{text-decoration:line-through;text-decoration-color:#2a234073}.badge.left{background:#e8476a29;color:var(--text);margin-left:6px}.badge.bot{margin-left:6px}.turns-left{font-size:12px;line-height:16px;color:var(--warn);font-weight:600}.clock.is-amber{background:#ffc83df2;color:var(--ink);box-shadow:0 0 0 1px var(--sunshine)}.clock.is-red{background:var(--raspberry);color:#fff;box-shadow:0 0 0 1px #fff;animation:pulse 1s ease-in-out infinite}.notice{color:var(--warn)}.compose-notice{margin-top:-6px}.compose{flex:1;display:flex;gap:6px;justify-content:flex-end;min-width:0}.compose .ghost{padding:0 10px;font-size:15px}.actions .ghost.is-blocked{opacity:.55}.card.is-fresh{box-shadow:0 0 0 2px var(--go),0 0 14px #1e9e6380,var(--shadow-raised)}.card.is-staged{opacity:.55;transform:translateY(6px);filter:saturate(.6)}.ask-line{padding:8px 12px;border-radius:12px;background:#ff8a3d24;color:var(--accent-ink);font-weight:600}.fair-line{padding:8px 12px;border-radius:12px;background:#2e7d321a;font-weight:600}.fair-line--verified{color:var(--go, #2e7d32)}.fair-line--mismatch{color:var(--danger)}.history-wrap{overflow-x:auto;display:grid;gap:6px}.history{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:14px;min-width:100%}.history th,.history td{padding:6px 8px;text-align:right;border-bottom:1px solid var(--hairline);white-space:nowrap}.history th:first-child{text-align:left}.history thead th{font-size:12px;color:var(--text-2);font-weight:600}.history td.is-out{color:var(--good);font-weight:700}.history .total td,.history .total th{color:var(--accent-ink);font-weight:700}.audit{display:grid;gap:8px}.audit-toggle{justify-self:start;color:var(--accent-ink)}.audit-body{display:grid;gap:8px}.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:17px;word-break:break-all}.mono .caption{display:block;font-family:inherit}.audit-cards{gap:3px}@keyframes deal{0%{transform:translateY(28px);opacity:0}}@keyframes pop{0%{transform:scale(.96);opacity:.4}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-in{0%{transform:translateY(-12px);opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.35}}.pile .card{animation:pop .18s ease-out backwards}:root[data-motion="0"] *,:root[data-motion="0"] *:before,:root[data-motion="0"] *:after{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}:root[data-motion="0"] .deal-swoosh,:root[data-motion="0"] .down-flourish{display:none}@media(prefers-reduced-motion:reduce){.deal-swoosh,.down-flourish{display:none}}
