:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--c-bg:#0b3d2e;--c-surface:#0f4a38;--c-surface-2:#125440;--c-table:#0f5a40;--c-seat:#0b3d2ecc;--c-scrim:#1e190f73;--c-ink:#f4f1ea;--c-ink-muted:#c9d6cf;--c-line:#06231a;--c-hairline:#ffffff24;--c-hairline-strong:#ffffff40;--c-accent:#f2c94c;--c-accent-ink:#1d1b18;--c-accent-text:#f2c94c;--c-link:#f2c94c;--c-good:#7ee787;--c-good-2:#b5e8a1;--c-maybe:#f2c94c;--c-bad:#ff9a91;--c-info:#82b1ff;--c-error:#ffb3b3;--c-radar:#f2c94c;--lt-ink:#1d1b18;--lt-ink-muted:#5c564c;--lt-hairline:#1d1b182e;--lt-hairline-strong:#1d1b184d;--lt-accent-text:#7a5600;--lt-link:#7a4f00;--lt-good:#17652a;--lt-good-2:#3d6320;--lt-maybe:#6f4f00;--lt-bad:#9c1f18;--lt-info:#1a54aa;--lt-error:#9c1f18;--c-paper:#f8f1e1;--c-paper-ink:#1d1b18;--c-paper-link:#7a4f00;--c-card:#fff;--c-card-ink:#111;--c-card-line:#1d1b18;--c-tile:#f3e9d2;--c-tile-ink:#3b2f1e;--c-tile-hover:#f8f0de;--suit-s:#f4f4f4;--suit-h:#ff8a80;--suit-d:#82b1ff;--suit-c:#7ee787;--suit-nt:#f2c94c;--suit-s-light:#1d1b18;--suit-h-light:#a82d20;--suit-d-light:#1a54aa;--suit-c-light:#17652a;--suit-nt-light:#7a3fb0;--tint-s:#e6e6e3;--tint-h:#f8d7d3;--tint-d:#d6e4fa;--tint-c:#d3f0dc;--tint-nt:#e8dcf5;--grade-correct:#d3f0dc;--grade-close:#fbecb5;--grade-wrong:#f9d2cc;--grade-ink:#1d1b18;--grade-muted:#3d3a35;--font-head:"Baloo Bhaijaan 2", system-ui, sans-serif;--font-body:"Readex Pro", system-ui, sans-serif;--head-weight:700;--line-w:2px;--r-sm:6px;--r:10px;--r-lg:16px;--r-card:7px;--r-pill:99px;--shadow-raised:3px 3px 0 #03170f;--shadow-pressed:0 0 0 #03170f;--press:3px;--shadow-panel:none;--dur-fast:80ms;--dur:.2s;--dur-slow:.4s;--speed:1;--dur-trick:1.05s}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur:0s;--dur-slow:0s;--dur-trick:0s}}html[data-look=soft-brutal],html[data-look=brutal]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--c-hairline-strong:var(--lt-hairline-strong);--c-accent-text:var(--lt-accent-text);--c-link:var(--lt-link);--c-good:var(--lt-good);--c-good-2:var(--lt-good-2);--c-maybe:var(--lt-maybe);--c-bad:var(--lt-bad);--c-info:var(--lt-info);--c-error:var(--lt-error);--c-radar:#c9981a;--suit-s:var(--suit-s-light);--suit-h:var(--suit-h-light);--suit-d:var(--suit-d-light);--suit-c:var(--suit-c-light);--suit-nt:var(--suit-nt-light)}html[data-look=soft-brutal]{--c-bg:#f7f1e3;--c-surface:#fffdf8;--c-surface-2:#efe6d2;--c-table:#cfe8d3;--c-seat:#fffdf8;--c-ink:var(--lt-ink);--c-ink-muted:var(--lt-ink-muted);--c-line:#1d1b18;--c-hairline:var(--lt-hairline);--shadow-raised:3px 3px 0 #1d1b18;--shadow-pressed:0 0 0 #1d1b18}html[data-look=brutal]{--c-bg:#fff4d6;--c-surface:#fff;--c-surface-2:#ffe7a3;--c-table:#a8e6b8;--c-seat:#fff;--c-ink:#111;--c-ink-muted:#3b3b3b;--c-line:#111;--c-hairline:#111;--c-accent:#ffd23f;--c-link:#111;--line-w:3px;--r:6px;--press:5px;--head-weight:800;--shadow-raised:5px 5px 0 #111;--shadow-pressed:0 0 0 #111;--shadow-panel:5px 5px 0 #111}*{box-sizing:border-box}html,body{background:var(--c-bg)}body{color:var(--c-ink);font-family:var(--font-body);overscroll-behavior:none;-webkit-text-size-adjust:100%;margin:0}button,select,.card,.chip{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}h1,h2,h3,h4,.home-card-title,.drill-card-title,.top-bar-title,.step-title,.skill-name{font-family:var(--font-head);font-weight:var(--head-weight);letter-spacing:.005em}.muted{color:var(--c-ink-muted);font-size:.85rem}.error{color:var(--c-error)}.brand{border-radius:var(--r-sm);flex:none;display:block}.suit-S{color:var(--suit-s)}.suit-H{color:var(--suit-h)}.suit-D{color:var(--suit-d)}.suit-C{color:var(--suit-c)}.suit-NT{color:var(--suit-nt);font-size:.85em}.card,.mini-card,.tag,.ex-trump,.explain,.coach,.coach-bubble,.toast,.result,.still-out>div,.banner,button:not(.term):not(.tutor-bar):not(.chip):not(.explain-more):not(.link-btn):not(.home-stats):not(.level-bar):not(.top-bar-brand){--suit-s:var(--suit-s-light);--suit-h:var(--suit-h-light);--suit-d:var(--suit-d-light);--suit-c:var(--suit-c-light);--suit-nt:var(--suit-nt-light)}:is(.card,.mini-card,.tag,button) .suit-NT{font-weight:700}.result:is(.correct,.close,.wrong),.explain,.coach,.coach-bubble,.toast{--c-ink:var(--lt-ink);--c-ink-muted:var(--lt-ink-muted);--c-hairline:var(--lt-hairline);--c-hairline-strong:var(--lt-hairline-strong);--c-surface-2:#1d1b1812;--c-accent-text:var(--lt-accent-text);--c-link:var(--lt-link);--c-good:var(--lt-good);--c-good-2:var(--lt-good-2);--c-maybe:var(--lt-maybe);--c-bad:var(--lt-bad);--c-info:var(--lt-info);--c-error:var(--lt-error)}.term{font:inherit;color:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}button,select{font:inherit;border-radius:var(--r);border:var(--line-w) solid var(--c-line);background:var(--c-tile);color:var(--c-tile-ink);box-shadow:var(--shadow-raised);transition:transform var(--dur-fast) ease-out, box-shadow var(--dur-fast) ease-out}button{cursor:pointer;padding:.3rem .6rem}select{padding:.2rem .4rem}:where(button:not(:disabled):hover){background:var(--c-tile-hover)}:where(button:not(:disabled)):active{transform:translate(var(--press), var(--press));box-shadow:var(--shadow-pressed)}button:disabled{opacity:.35;cursor:default;box-shadow:none}:is(.term,.link-btn,.sheet-handle,.top-bar-brand,.tutor-bar,.explain-more){box-shadow:none;background:0 0;border:none;border-radius:0}:is(.term,.link-btn,.sheet-handle,.top-bar-brand,.tutor-bar,.explain-more):active{transform:none}:where(.link-btn:not(:disabled):hover,.top-bar-brand:hover){background:0 0}.link-btn{color:var(--c-link);min-height:32px;padding:.2rem 0;font-weight:700;text-decoration:underline}@media (width<=700px){.link-btn{min-height:44px}}:is(button.primary,.pick-row button.on,.segmented button.on,.trick-dots button.on,.drill-answers button.on){background:var(--c-accent);color:var(--c-accent-ink);border-color:var(--c-line)}button.primary{font-weight:700}button.primary:disabled{background:color-mix(in srgb, var(--c-ink) 15%, transparent);color:inherit}.pick-row button.best:not(.on),.pick-row button.counted,.pass.suggested,.step-row.next,.trick-dots button.moment:not(.on){outline:2px solid var(--c-accent);outline-offset:2px}.file-btn{border-radius:var(--r);border:var(--line-w) solid var(--c-line);background:var(--c-tile);min-height:44px;color:var(--c-tile-ink);box-shadow:var(--shadow-raised);cursor:pointer;flex:1;justify-content:center;align-items:center;padding:.3rem .6rem;display:inline-flex;position:relative}.file-btn:active{transform:translate(var(--press), var(--press));box-shadow:var(--shadow-pressed)}.file-btn input{opacity:0;cursor:pointer;position:absolute;inset:0}.icon-btn{min-width:40px;min-height:40px;padding:0 .6rem;font-size:1.15rem;font-weight:700}@media (width<=700px){.icon-btn{min-width:44px;min-height:44px}}.tile,.home-card,.drill-card,.step-row,.round-row,.trick-pick{border-radius:var(--r);text-align:left}.panel,.seat,.replay-seat,.skill-row,.home-stats,.level-bar,.slide-example,.ex-est,.ex-bids li{background:var(--c-surface);border:var(--line-w) solid var(--c-hairline);border-radius:var(--r);box-shadow:var(--shadow-panel);color:var(--c-ink)}.home-stats,.level-bar{border-color:var(--c-line);box-shadow:var(--shadow-raised)}:where(.home-stats:hover,.level-bar:hover){background:var(--c-surface-2)}.panel{margin-top:1rem;padding:.75rem}.panel h3{margin:0 0 .5rem;font-size:1rem}.slide-example{background:var(--c-surface-2);box-shadow:none}.chip,.terms-strip .term{background:var(--c-surface-2);border:1.5px solid color-mix(in srgb, var(--c-ink) 45%, transparent);color:inherit;box-shadow:none}.chip{font:inherit;cursor:pointer;border-radius:.4rem;padding:.05rem .45rem;font-size:.85rem}:where(.chip:hover){background:color-mix(in srgb, var(--c-surface-2) 80%, var(--c-ink))}.chip:active{transform:none}.chip.dim{opacity:.75}.tag{background:var(--c-accent);color:var(--c-accent-ink);border-radius:.3rem;padding:0 .35rem;font-size:.8rem}.verdict{border-radius:var(--r-pill);box-shadow:none;white-space:nowrap;border-width:1.5px;min-height:32px;padding:.1rem .5rem;font-size:.72rem;font-weight:700}@media (width<=700px){.verdict{min-height:36px}}.verdict.correct{color:var(--suit-c-light)}.verdict.close{color:var(--c-paper-link)}.verdict.wrong{color:var(--suit-h-light);border-color:var(--suit-h-light)}.verdict-word{font-size:.8rem;font-weight:700}.verdict-word.correct{color:var(--c-good)}.verdict-word.close{color:var(--c-accent-text)}.verdict-word.wrong{color:var(--c-bad)}.explain,.coach,.toast,.coach-bubble{background:var(--c-paper);color:var(--c-paper-ink);border:var(--line-w) solid var(--c-line);border-radius:var(--r);box-shadow:var(--shadow-raised)}:is(.explain,.coach-bubble) .term{color:var(--c-paper-link)}.result.correct,.result.close,.result.wrong{color:var(--grade-ink);border-color:var(--c-hairline)}.result.correct{background:var(--grade-correct)}.result.close{background:var(--grade-close)}.result.wrong{background:var(--grade-wrong)}.result :is(.muted,.link-btn){color:var(--grade-muted)}.pick-row.trumps button:not(.on):has(.suit-S){background:var(--tint-s);color:var(--grade-ink)}.ex-trump:has(.suit-S){background:var(--tint-s);color:var(--grade-ink)}.still-out>div:has(.suit-S){background:var(--tint-s);color:var(--grade-ink)}.pick-row.trumps button:not(.on):has(.suit-H){background:var(--tint-h);color:var(--grade-ink)}.ex-trump:has(.suit-H){background:var(--tint-h);color:var(--grade-ink)}.still-out>div:has(.suit-H){background:var(--tint-h);color:var(--grade-ink)}.pick-row.trumps button:not(.on):has(.suit-D){background:var(--tint-d);color:var(--grade-ink)}.ex-trump:has(.suit-D){background:var(--tint-d);color:var(--grade-ink)}.still-out>div:has(.suit-D){background:var(--tint-d);color:var(--grade-ink)}.pick-row.trumps button:not(.on):has(.suit-C){background:var(--tint-c);color:var(--grade-ink)}.ex-trump:has(.suit-C){background:var(--tint-c);color:var(--grade-ink)}.still-out>div:has(.suit-C){background:var(--tint-c);color:var(--grade-ink)}.pick-row.trumps button:not(.on):has(.suit-NT){background:var(--tint-nt);color:var(--grade-ink)}.ex-trump:has(.suit-NT){background:var(--tint-nt);color:var(--grade-ink)}.card{background:var(--c-card);width:2.8rem;height:3.9rem;color:var(--c-card-ink);border:var(--line-w) solid var(--c-card-line);border-radius:var(--r-card);box-shadow:none;padding:0;font-size:1rem;font-weight:700}.card:active{transform:none}:where(.card:not(:disabled):hover){background:var(--c-card)}.mini-card{background:var(--c-card);color:var(--c-card-ink);border:1.5px solid var(--c-card-line);border-radius:5px;padding:.05rem .3rem;font-size:.85rem;font-weight:700}.bar{border-radius:var(--r-pill);background:color-mix(in srgb, var(--c-ink) 12%, transparent);border:var(--line-w) solid var(--c-line);height:12px;display:block;overflow:hidden}.bar-fill{background:var(--c-accent);border-radius:var(--r-pill);height:100%;transition:width var(--dur-slow) ease-out;display:block}.ring-track{fill:none;stroke:color-mix(in srgb, var(--c-ink) 15%, transparent);stroke-width:4px}.ring-fill{fill:none;stroke:var(--c-accent);stroke-width:4px;stroke-linecap:round;transition:stroke-dasharray var(--dur-slow) ease-out}.ring-text{fill:currentColor;font-size:13px;font-weight:700}.ring.done .ring-fill{stroke:var(--c-good)}.segmented{gap:.25rem;display:inline-flex}.segmented button{padding:.15rem .5rem;font-size:.85rem}@media (width<=700px){.segmented button{white-space:nowrap}}.sheet-backdrop{background:var(--c-scrim);z-index:20;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--c-bg);border:var(--line-w) solid var(--c-hairline);border-radius:var(--r-lg) var(--r-lg) 0 0;width:100%;max-height:85vh;padding:.25rem 1rem calc(1rem + env(safe-area-inset-bottom));animation:sheet-up calc(var(--dur) - 20ms) ease-out;overscroll-behavior-y:contain;transition:transform var(--dur) ease-out;border-bottom:none;overflow:auto}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.sheet-handle{touch-action:none;cursor:grab;width:100%;margin:0 0 .5rem;padding:.7rem 0;display:block}.sheet-handle span{background:color-mix(in srgb, var(--c-ink) 40%, transparent);border-radius:.2rem;width:2.5rem;height:.3rem;margin:0 auto;display:block}.sheet-tabs{margin-bottom:.75rem;display:flex}.sheet-tabs button{flex:1;min-height:40px}.dropdown{z-index:25;background:var(--c-bg);border:var(--line-w) solid var(--c-hairline);border-radius:var(--r);width:300px;box-shadow:var(--shadow-panel);animation:pop-in var(--dur-fast) ease-out;padding:.9rem 1rem;position:fixed;top:60px;right:16px}.modal-backdrop{background:var(--c-scrim);z-index:30;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{background:var(--c-bg);border:var(--line-w) solid var(--c-hairline);border-radius:var(--r);width:100%;max-width:40rem;max-height:85vh;padding:1rem 1.25rem;overflow:auto}.modal-head{background:var(--c-bg);justify-content:space-between;align-items:center;padding:.25rem 0;display:flex;position:sticky;top:-1rem}@media (width<=700px){.modal-backdrop{padding:0}.modal{max-width:none;height:100%;max-height:none;padding-bottom:calc(1rem + env(safe-area-inset-bottom));border:none;border-radius:0}}.explain{z-index:40;animation:pop-in var(--dur-fast) ease-out;padding:.6rem .8rem;font-size:.92rem;line-height:1.4;position:fixed}.explain p{margin:0 0 .35rem}.explain .explain-title{font-weight:700}.explain-more{color:var(--c-paper-link);min-height:32px;padding:.2rem 0;font-weight:700}@keyframes pop-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.coach{left:50%;bottom:calc(5rem + env(safe-area-inset-bottom));z-index:27;width:min(28rem,100% - 2rem);animation:coach-shake var(--dur-slow) ease-in-out;padding:.75rem 1rem;position:fixed;transform:translate(-50%)}.app:not(.phone) .coach{bottom:2rem}.coach p{margin:0 0 .5rem;line-height:1.4}@keyframes coach-shake{0%,to{transform:translate(-50%)}20%,60%{transform:translate(calc(-50% - 8px))}40%,80%{transform:translate(calc(8px - 50%))}}.toast{left:50%;bottom:calc(5.5rem + env(safe-area-inset-bottom));z-index:28;max-width:calc(100% - 2rem);animation:pop-in var(--dur) ease-out;padding:.7rem 1rem;font-weight:700;position:fixed;transform:translate(-50%)}.toast:active{transform:translate(-50%)}.app:not(.phone) .toast{bottom:2rem}.coach-bubble{margin:.4rem 0;padding:.6rem .8rem;line-height:1.4}.result.correct{animation:result-right calc(var(--dur-slow) * 1.5) cubic-bezier(.3, 1.5, .5, 1) both}.result.close{animation:pop-in var(--dur) ease-out both}.result.wrong{animation:result-wrong calc(var(--dur-slow) * 1.2) ease-in-out both}@keyframes result-right{0%{opacity:0;box-shadow:0 0 0 0 color-mix(in srgb, var(--grade-correct) 90%, transparent);transform:translateY(10px)scale(.96)}55%{opacity:1;box-shadow:0 0 0 10px color-mix(in srgb, var(--grade-correct) 55%, transparent);transform:translateY(-3px)scale(1.01)}to{transform:none;box-shadow:0 0 #0000}}@keyframes result-wrong{0%{opacity:0;transform:none}15%{opacity:1}30%{transform:translate(-6px)}50%{transform:translate(5px)}70%{transform:translate(-3px)}85%{transform:translate(2px)}to{transform:none}}.card.lifted{z-index:1;outline:3px solid var(--c-accent);outline-offset:2px;animation:card-lift var(--dur-slow) cubic-bezier(.3, 1.4, .5, 1) calc(var(--dur-slow) * 1.2) both;position:relative}@keyframes card-lift{0%{transform:none}to{transform:translateY(-10px)}}.hand .card.lifted{transform:translateY(-10px)}.run-chip{border:2px solid var(--c-line);border-radius:var(--r-pill);background:var(--c-accent);color:var(--c-accent-ink);box-shadow:2px 2px 0 var(--c-line);animation:run-pop var(--dur-slow) cubic-bezier(.3, 1.6, .5, 1) both;margin-left:.35rem;padding:.05rem .5rem;font-size:.8rem;font-weight:700;display:inline-block}@keyframes run-pop{0%{opacity:0;transform:scale(.4)rotate(-8deg)}to{opacity:1;transform:none}}.train-summary h3{margin-top:0}.skill-moves{gap:.25rem;margin:.4rem 0 0;padding:0;list-style:none;display:grid}.move{font-weight:700}.move.up{color:var(--c-good)}.move.down{color:var(--c-bad)}.celebrate-line{color:var(--c-good);margin:-.25rem 0 .5rem;font-weight:700}main{animation:page-in calc(var(--dur) * 1.25) ease-out both;grid-template-columns:minmax(0,1fr) 300px;gap:1rem;padding:0 1rem 1rem;display:grid}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}main.single{grid-template-columns:minmax(0,1fr);max-width:60rem}aside .panel:first-child{margin-top:0}@media (width<=820px){main{grid-template-columns:minmax(0,1fr)}}@media (width<=700px){main{gap:.5rem;padding:0 .75rem 1rem}.phone main{padding-bottom:calc(4.5rem + env(safe-area-inset-bottom))}.panel{margin-top:.6rem;padding:.6rem;overflow-x:auto}}.top-bar{z-index:15;padding:calc(.5rem + env(safe-area-inset-top)) .75rem .5rem;background:var(--c-bg);grid-template-columns:44px 1fr 44px;align-items:center;gap:.5rem;display:grid;position:sticky;top:0}.top-bar-spacer{width:44px}.top-bar-brand{color:inherit;justify-self:center;align-items:center;gap:.5rem;padding:.2rem .4rem;font-size:1.1rem;font-weight:700;display:flex}@media (width<=355px){.top-bar-title{display:none}}@media (display-mode:standalone) and (width<=700px){.top-bar{padding-top:calc(env(safe-area-inset-top) + 1.5rem)}}.tutor-bar-wrap{z-index:10;padding:.4rem .75rem calc(.4rem + env(safe-area-inset-bottom));background:var(--c-surface);border-top:var(--line-w) solid var(--c-hairline);color:var(--c-ink);align-items:center;gap:.5rem;display:flex;position:fixed;bottom:0;left:0;right:0}.tutor-bar{text-align:left;min-height:44px;color:inherit;flex:1;padding:0}.tutor-line{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.92rem;display:-webkit-box;overflow:hidden}.tutor-open{min-width:44px;min-height:44px}.menu h4{color:var(--c-ink-muted);text-transform:uppercase;letter-spacing:.04em;margin:.75rem 0 .35rem;font-size:.8rem}.menu p.muted{margin:0 0 .4rem}.menu-links{flex-wrap:wrap;gap:.5rem;display:flex}.menu-links button{flex:1;min-height:44px}.menu-new-game{width:100%;min-height:44px}.menu>.menu-new-game{margin-bottom:.5rem}.menu-controls{gap:.6rem;display:grid}.menu-controls label{color:var(--c-ink);justify-content:space-between;align-items:center;font-size:1rem;display:flex}.menu-controls select,.menu-controls button{min-height:44px;font-size:1rem}.debug-look{justify-content:flex-start;align-items:center;gap:.5rem;margin-top:.4rem;display:flex}.menu-controls .mode-row{color:var(--c-ink);justify-content:space-between;align-items:center;font-size:1rem;display:flex}.menu-controls .mode-switch{border-radius:var(--r-pill);gap:2px;padding:3px;display:inline-flex}.mode-switch span{border-radius:var(--r-pill);min-width:44px;min-height:36px;color:var(--c-tile-ink);opacity:.5;transition:background var(--dur) ease, opacity var(--dur) ease;place-items:center;display:grid}.mode-switch span.on{background:var(--c-accent);color:var(--c-accent-ink);opacity:1;box-shadow:inset 0 0 0 2px var(--c-accent-ink)}.mode-switch svg{display:block}.modal dl{margin:0}.modal .entry{border-radius:var(--r-sm);padding:.5rem}.modal .entry.focus{background:color-mix(in srgb, var(--c-accent) 15%, transparent);outline:1px solid var(--c-accent)}.modal dt{font-weight:700}.modal dd{margin:.15rem 0 0}.modal dd p{margin:.25rem 0 0;font-size:.9rem}.rules-flow{gap:.4rem;padding-left:1.2rem;display:grid}.rules-table{margin:.75rem 0}.rules-table+p a{color:var(--c-link)}.welcome{text-align:center;justify-items:center;gap:.6rem;padding:.5rem 0;display:grid}.welcome button{width:100%;max-width:22rem;min-height:44px}.welcome .link-btn{width:auto}.play-status{margin:.25rem 0 .5rem}.table{background:var(--c-table);border:var(--line-w) solid var(--c-line);border-radius:calc(var(--r) + 6px);--seat-w:8.5rem;--seat-h:7.9rem;grid-template-columns:var(--seat-w) minmax(0, 1fr) var(--seat-w);grid-template-areas:".north.""west trick east"".south.""status status status";gap:.5rem;padding:1rem;display:grid}.seat{background:var(--c-seat);box-shadow:none;width:var(--seat-w);min-height:var(--seat-h);text-align:center;flex-direction:column;justify-content:flex-start;place-self:center;align-items:center;gap:.15rem;padding:.4rem;display:flex}.seat-est{white-space:nowrap}.seat strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.seat.north{grid-area:north}.seat.south{grid-area:south}.seat.west{grid-area:west}.seat.east{grid-area:east}.seat-face{font-size:1.7rem;line-height:1}.seat.turn,.replay-seat.turn{outline:3px solid var(--c-accent);outline-offset:1px}.won-pulse{animation:won-pulse calc(var(--dur-slow) * var(--speed)) ease-out calc(var(--dur-trick) * var(--speed)) both;display:inline-block}@keyframes won-pulse{0%{transform:none}40%{color:var(--c-accent-text);transform:scale(1.6)}to{transform:none}}.tags{flex-wrap:wrap;justify-content:center;gap:.25rem;display:flex}.tag .term{-webkit-text-decoration-color:color-mix(in srgb, var(--c-accent-ink) 50%, transparent);text-decoration-color:color-mix(in srgb, var(--c-accent-ink) 50%, transparent)}.trick{grid-area:trick;grid-template-rows:repeat(3,3.3rem);grid-template-columns:repeat(3,3.2rem);grid-template-areas:".north.""west.east"".south.";place-content:center;place-items:center;column-gap:.35rem;padding-bottom:1.4rem;display:grid;position:relative}.trick-card.north{grid-area:north}.trick-card.south{grid-area:south}.trick-card.west{grid-area:west}.trick-card.east{grid-area:east}.trick .card{cursor:default}.trick-caption{color:var(--c-ink-muted);font-size:.8rem;position:absolute;bottom:0}.status{text-align:center;grid-area:status}.hand{flex-wrap:wrap;justify-content:center;gap:.3rem;margin-top:1rem;display:flex}.hand .card:not(:disabled):hover{transform:translateY(-4px)}@media (width<=700px){.table{--seat-w:5.9rem;--seat-h:5.05rem;border-radius:calc(var(--r) + 2px);gap:.3rem;padding:.5rem}.seat{grid-template-columns:auto minmax(0,auto);place-content:start center;align-items:center;gap:.1rem .15rem;padding:.25rem;font-size:.78rem;display:grid}.seat>:not(.seat-face,strong){grid-column:1/-1}.seat strong{font-size:.84rem}.seat-face{font-size:1rem}.tag,.seat-est{font-size:.72rem}.seat-cards{display:none}.trick{grid-template-rows:repeat(3,2.6rem);grid-template-columns:repeat(3,2.5rem);column-gap:.25rem;padding-bottom:1.1rem}.trick .card{width:2.2rem;height:3.1rem;font-size:.85rem}.status{min-height:2.6em;font-size:.9rem}.hand{grid-template-columns:repeat(7,1fr);gap:.25rem;margin-top:.6rem;display:grid}.hand .card{aspect-ratio:5/7;width:100%;height:auto;min-height:44px;font-size:clamp(.8rem,3.8vw,1rem)}.hand .card:not(:disabled):hover{transform:none}}.banner{border-radius:var(--r);color:var(--grade-ink);margin-top:.6rem;padding:.45rem .75rem;font-size:.92rem}.banner.over{background:var(--grade-wrong);border:1px solid color-mix(in srgb, var(--suit-h-light) 35%, var(--grade-wrong))}.banner.under{background:var(--tint-d);border:1px solid color-mix(in srgb, var(--suit-d-light) 35%, var(--tint-d))}.terms-strip{flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.6rem;font-size:.85rem;display:flex}.terms-strip .term{cursor:pointer;border-radius:1rem;padding:.05rem .55rem;text-decoration:none}@media (width<=700px){.terms-strip{font-size:.8rem}}.pick-label{margin:.25rem 0}.pick-row{flex-wrap:wrap;gap:.3rem;margin-bottom:.5rem;display:flex}.pick-row button{min-width:2.6rem;min-height:2.3rem}.pick-row button.forbidden{opacity:.5}.pick-actions{flex-wrap:wrap;gap:.5rem;display:flex}.pick-actions button{min-width:5rem;min-height:2.3rem}@media (width<=700px){.pick-row{grid-template-columns:repeat(5,1fr);display:grid}.pick-row.numbers{grid-template-columns:repeat(7,1fr)}.pick-row button,.pick-actions button{min-height:44px}.pick-actions button{flex:1}}.beat-line{margin:0 0 .5rem}.pick-row.trumps button{flex-direction:column;justify-content:center;align-items:center;min-height:3rem;line-height:1.1;display:flex}.trump-count{font-size:.8rem;font-weight:700}.stepper{align-items:center;gap:.75rem;margin:.25rem 0 .6rem;display:flex}.stepper button{min-width:44px;min-height:44px;font-size:1.3rem;font-weight:700}.stepper-value{text-align:center;min-width:2ch;font-size:1.6rem;font-weight:700}.auction-log{margin:0;padding-left:1.4rem;font-size:.9rem}.auction-log li{justify-content:space-between;max-width:12rem;display:flex}.auction-log li.pass{opacity:.6}.scores{border-collapse:collapse;width:100%;font-size:.85rem}.scores th,.scores td{text-align:right;padding:.2rem .4rem}.scores .left{text-align:left}.scores td:first-child{white-space:nowrap}.scores .total td{border-top:1px solid var(--c-hairline-strong);font-weight:700}@media (width<=700px){.scores{font-size:.78rem}}.pts{font-variant-numeric:tabular-nums;font-weight:700}.pts.up{color:var(--c-good)}.pts.down{color:var(--c-bad)}.hint-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.hint-head h3{margin:0}.hint-simple{margin:.25rem 0 .5rem;font-weight:600}.hint-detailed{gap:.3rem;margin:0;padding-left:1.1rem;font-size:.88rem;display:grid}.always{margin-top:.5rem;display:block}.count-view{border-top:1px solid color-mix(in srgb, var(--c-ink) 18%, transparent);margin-top:.75rem;padding-top:.5rem}.count-view h4{margin:0 0 .5rem;font-size:.95rem}.count-view details{margin-top:.4rem;font-size:.88rem}.count-view summary{cursor:pointer;color:var(--c-ink-muted)}.tier-row{grid-template-columns:6.5rem 1fr;align-items:start;gap:.5rem;margin-bottom:.35rem;display:grid}.tier{text-transform:uppercase;letter-spacing:.04em;flex-direction:column;padding-top:.15rem;font-size:.78rem;font-weight:700;display:flex}.tier small{text-transform:none;letter-spacing:0;opacity:.75;font-weight:400}.tier-sure{color:var(--c-good)}.tier-likely{color:var(--c-good-2)}.tier-maybe{color:var(--c-maybe)}.tier-danger{color:var(--c-bad)}.tier-nothing{color:var(--c-ink-muted)}.chips{flex-wrap:wrap;gap:.3rem;display:flex}.count-rules .tier-row{grid-template-columns:9rem 1fr}.count-rules ul{margin:0;padding-left:1rem;font-size:.9rem}.breakdown{border-top:1px solid color-mix(in srgb, var(--c-ink) 18%, transparent);margin-top:.75rem;padding-top:.5rem}.breakdown h4{margin:0 0 .35rem;font-size:.95rem}.breakdown-label{text-transform:uppercase;letter-spacing:.05em;color:var(--c-ink-muted);margin:.5rem 0 .25rem;font-size:.8rem}.muted-list{opacity:.85}.review{border-top:1px solid color-mix(in srgb, var(--c-ink) 18%, transparent);margin:.75rem 0;padding-top:.5rem}.review h4{margin:.4rem 0 .25rem;font-size:.95rem}.review ul{gap:.3rem;margin:0;padding-left:1.1rem;font-size:.9rem;display:grid}.guided-hint{margin:.3rem 0 .5rem;font-size:.92rem}.puzzle-head h2{margin:.5rem 0 .1rem;font-size:1.15rem}.puzzle-head p{margin:0 0 .25rem}.drill-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.drill-answers{margin-top:.75rem;display:block}.drill-answers button{min-width:2.2rem;margin:0 .15rem .15rem 0}@media (width<=700px){.drill-answers button{min-height:44px}}.drills .panel .hand{justify-content:flex-start}.result .link-btn{margin:.25rem 0 0;display:block}.result .next{min-height:44px;margin-top:1rem;display:block}.puzzle-trick{align-items:flex-end;min-height:4.8rem;margin:.4rem 0}.played-list{margin:.4rem 0;font-size:.85rem}.played-list summary{cursor:pointer;min-height:32px;color:var(--c-link);align-items:center;gap:.35rem;font-weight:600;list-style:none;display:flex}.played-list summary::-webkit-details-marker{display:none}.played-list summary:before{content:"▸";transition:transform var(--dur) ease;display:inline-block}.played-list[open] summary:before{transform:rotate(90deg)}@media (width<=700px){.played-list summary{min-height:44px}}.played-list .mini-hand{margin-top:.3rem}.still-out{gap:.15rem;margin:.2rem 0 .4rem;font-size:.9rem;display:grid}.still-out>div{border-radius:var(--r-sm);flex-wrap:wrap;gap:.4rem;padding:.15rem .45rem;display:flex}.learn-prompt{margin:0 0 .5rem;font-size:1.02rem}.mistakes-page .puzzle-head .bar{margin:.3rem 0 .2rem}.chips-row{flex-wrap:wrap;gap:.3rem;margin:.35rem 0 .6rem;display:flex}.chip-static{border:1px solid var(--c-hairline-strong);border-radius:var(--r-pill);background:var(--c-surface-2);padding:.1rem .5rem;font-size:.82rem}.home{gap:.75rem;padding-top:.5rem;display:grid}.home-card{flex-direction:column;align-items:flex-start;gap:.25rem;padding:1rem;display:flex}.home-card-title{font-size:1.15rem}.home-card-blurb{opacity:.85;font-size:.9rem}.home-section{margin:.5rem 0 0;font-size:1rem}.drill-cards{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem;display:grid}.drill-card{flex-direction:column;align-items:flex-start;gap:.15rem;min-height:4.2rem;padding:.55rem .7rem;display:flex}.drill-card-blurb{opacity:.85;font-size:.82rem}.drill-card-score{opacity:.7;margin-top:auto;font-size:.75rem}@media (width<=700px){.drill-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}.today-line{align-items:center;gap:.6rem;font-size:.95rem;display:flex}.level-bar{text-align:left;gap:.35rem;padding:.55rem .8rem;display:grid}.level-bar-text{font-size:.9rem}.home-stats{text-align:left;align-items:center;gap:.8rem;padding:.6rem .8rem;display:flex}.home-stats-text{gap:.2rem;font-size:.9rem;display:grid}.stats h2{margin:.5rem 0;font-size:1.15rem}.stats h3{margin:1rem 0 .4rem;font-size:1rem}.stats p>button.primary{min-height:44px}.radar-wrap{justify-content:center;display:flex}.radar{flex:none;max-width:100%;height:auto;overflow:visible}.radar-ring{fill:none;stroke:color-mix(in srgb, var(--c-ink) 18%, transparent)}.radar-axis{stroke:color-mix(in srgb, var(--c-ink) 18%, transparent)}.radar-shape{fill:color-mix(in srgb, var(--c-accent) 35%, transparent);stroke:var(--c-radar);stroke-width:2px}.radar-dot{fill:var(--c-radar)}.radar-label{fill:currentColor;font-size:11px}.radar.grow .radar-shape{transform-box:view-box;transform-origin:50%;animation:radar-grow calc(var(--dur-slow) * 2) cubic-bezier(.3, 1.3, .5, 1) both}@keyframes radar-grow{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:none}}.radar-dot.up{transform-box:fill-box;transform-origin:50%;animation:dot-pulse calc(var(--dur-slow) * 1.5) ease-in-out calc(var(--dur-slow) * 2) 3}@keyframes dot-pulse{50%{transform:scale(2.2)}}.radar-label.dim{opacity:.55}.radar-label.up{fill:var(--c-good)}.skill-list{gap:.3rem;display:grid}.skill-row{grid-template-columns:1fr auto auto auto;align-items:center;gap:.6rem;padding:.35rem .6rem;display:grid}.skill-row button{min-height:44px}.skill-score{text-align:right;min-width:3.5rem;font-weight:700}.trend.up{color:var(--c-good)}.trend.down{color:var(--c-bad)}@media (width<=420px){.skill-row{grid-template-columns:1fr auto auto;gap:.5rem}.skill-row .skill-count{display:none}.skill-row button{padding:0 .7rem}}.game-stats{gap:.3rem;padding-left:1.1rem;display:grid}.streak-cal p{margin:.2rem 0 .5rem}.cal-grid{grid-template-columns:repeat(10,1fr);gap:4px;max-width:22rem;display:grid}.cal-day{aspect-ratio:1;background:color-mix(in srgb, var(--c-ink) 10%, transparent);border:1px solid var(--c-hairline);border-radius:4px;min-width:14px;display:inline-block}.cal-day.some{background:color-mix(in srgb, var(--c-accent) 45%, transparent)}.cal-day.done{background:var(--c-accent)}.cal-legend{flex-wrap:wrap;align-items:center;gap:.3rem .8rem;font-size:.78rem;display:flex}.cal-legend .cal-day{width:12px;min-width:12px}.cal-key{white-space:nowrap;align-items:center;gap:.3rem;display:inline-flex}.learn h2,.step-page h2{margin:.5rem 0 .25rem;font-size:1.15rem}.path-progress{grid-template-columns:1fr auto;align-items:center;gap:.6rem;margin:.3rem 0 .6rem;display:grid}.step-list{gap:.4rem;margin:.5rem 0;padding:0;list-style:none;display:grid}.step-row{grid-template-columns:2rem 1fr auto;align-items:center;gap:.6rem;width:100%;min-height:44px;padding:.6rem .75rem;display:grid}.step-num{text-align:center;font-size:1.1rem;font-weight:700}.step-text{gap:.1rem;display:grid}.step-blurb{opacity:.8;font-size:.82rem}.step-status{opacity:.8;font-size:.8rem;font-weight:700}.step-section{margin-top:.9rem}.step-section-head{flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;font-size:.95rem;display:flex}.step-section-blurb{margin:.1rem 0 0;font-size:.82rem}.step-here{background:var(--c-accent);color:var(--c-accent-ink);border-radius:999px;padding:.1rem .45rem;font-size:.72rem;font-weight:700}.slide p{min-height:5.5rem;margin:0;font-size:1.1rem;line-height:1.5}.slide .slide-example p{min-height:0;font-size:.85rem;line-height:1.3}.slide-nav{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.6rem;display:flex}.slide-nav button{min-width:6rem;min-height:44px}.goal-dots{letter-spacing:.15em;color:var(--c-accent-text)}.trick-quiz{flex-wrap:wrap;gap:.5rem;margin:.4rem 0;display:flex}.trick-pick{flex-direction:column;align-items:center;gap:.25rem;width:4.8rem;padding:.4rem;display:flex}.trick-pick.on{outline:3px solid var(--c-accent);outline-offset:2px}.trick-pick .card{pointer-events:none}.trick-pick-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.8rem;font-weight:700;overflow:hidden}.slide-example{margin:.8rem 0 0;padding:.7rem}.slide-example figcaption{flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;margin-top:.6rem;font-size:.92rem;line-height:1.4;display:flex}.ex-replay{min-height:32px;font-size:.85rem}.ex-trick{grid-template-columns:repeat(4,4.6rem);align-items:start;gap:.4rem;min-height:5.6rem;display:grid}.ex-play{animation:ex-land calc(var(--dur) * 1.75) ease-out both;flex-direction:column;align-items:center;gap:.2rem;display:flex;position:relative}.ex-play .card{cursor:default}.ex-seat{opacity:.85;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.78rem;overflow:hidden}.ex-wins{color:var(--c-accent-text);animation:ex-appear calc(var(--dur) * 1.5) ease-out both;font-size:.72rem;font-weight:700}.ex-appear{animation:ex-appear calc(var(--dur) * 1.5) ease-out both}.ex-label{margin:.6rem 0 .3rem;font-size:.85rem}.ex-glow{line-height:0;display:block}.ex-glow .card{animation:ex-win calc(var(--dur) * 2.5) ease-out both;animation-delay:inherit}@keyframes ex-land{0%{opacity:0;transform:translateY(-12px)scale(.96)}to{opacity:1;transform:none}}@keyframes ex-appear{0%{opacity:0}to{opacity:1}}@keyframes ex-win{0%{box-shadow:0 0 #0000}to{box-shadow:0 0 0 3px var(--c-accent)}}@media (prefers-reduced-motion:reduce){.ex-glow .card{box-shadow:0 0 0 3px var(--c-accent)}}.ex-hand{flex-wrap:wrap;gap:.3rem .25rem;display:flex}.ex-card{flex-direction:column;align-items:center;gap:.1rem;display:flex}.ex-card.tagged .mini-card{box-shadow:0 0 0 2px var(--c-accent)}.ex-card.sure .mini-card{box-shadow:0 0 0 2px var(--c-good)}.ex-card.maybe .mini-card{box-shadow:0 0 0 2px var(--c-info)}.ex-tag{text-transform:uppercase;letter-spacing:.02em;font-size:.62rem;font-weight:700}.ex-card.sure .ex-tag{color:var(--c-good)}.ex-card.likely .ex-tag{color:var(--c-accent-text)}.ex-card.maybe .ex-tag{color:var(--c-info)}.ex-bids{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.ex-bids li{flex-direction:column;align-items:center;width:4.6rem;padding:.25rem .5rem;display:flex}.ex-bids li.pass{opacity:.7}.ex-ladder{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.ex-ladder .mini-card{padding:.15rem .45rem;font-size:1rem}.ex-gt{opacity:.7;margin-right:.3rem;font-weight:700}.ex-trumps{gap:.3rem;display:flex}.ex-trump{border-radius:var(--r);border:var(--line-w) solid var(--c-line);min-width:2.8rem;box-shadow:var(--shadow-raised);flex-direction:column;align-items:center;padding:.3rem;display:flex}.ex-trump.best{outline:2px solid var(--c-accent);outline-offset:2px}.ex-estimates,.ex-speed{flex-wrap:wrap;gap:.4rem;display:flex}.ex-est{flex-direction:column;align-items:center;width:4.6rem;padding:.3rem .5rem;display:flex}.ex-est b{font-size:1.2rem}.ex-forbidden{color:var(--c-bad)}.basics-goal{margin:0 0 .15rem;font-size:1.05rem;font-weight:700}.basics .hand{justify-content:flex-start}.slide .lesson-intro{border-radius:var(--r);background:var(--c-surface-2);gap:.15rem;min-height:0;margin:0 0 .8rem;padding:.55rem .75rem;font-size:.95rem;line-height:1.4;display:grid}.lesson-intro-label{text-transform:uppercase;letter-spacing:.05em;color:var(--c-ink-muted);font-size:.72rem;font-weight:700}.ex-speed .ex-est{width:auto;min-width:4.6rem}.rounds-page h2,.replay h2{margin:.5rem 0 .25rem;font-size:1.15rem}.round-list{gap:.4rem;display:grid}.round-row{flex-direction:column;align-items:flex-start;gap:.15rem;min-height:44px;padding:.6rem .75rem;display:flex}.round-row-main{font-weight:700}.round-row-sub{opacity:.8;font-size:.82rem}.learn-mistakes-btn{min-height:44px;margin:.3rem 0 .5rem}.replay-summary{margin:.25rem 0;font-weight:700}.replay-seats{gap:.4rem;margin-top:.5rem;display:grid}@media (width>=701px){.replay-seats{grid-template-columns:1fr 1fr}}.replay-seat{padding:.4rem .5rem}.replay-seat-head{justify-content:space-between;gap:.5rem;margin-bottom:.25rem;font-size:.85rem;display:flex}.mini-hand{flex-wrap:wrap;align-items:center;gap:.2rem;min-height:1.6rem;display:flex}.replay-trick p{margin:0 0 .4rem}.replay-plays{flex-wrap:wrap;gap:.6rem;display:flex}.replay-play{flex-direction:column;align-items:center;gap:.15rem;font-size:.8rem;display:flex}.trick-winner{flex-direction:column;align-items:center;gap:.15rem;display:flex}.trick-winner .card{box-shadow:0 0 0 3px var(--c-accent)}.won-label{color:var(--c-accent-text);font-size:.72rem;font-weight:700}.replay .note{border-left:4px solid var(--c-accent)}.this-card p{margin:0 0 .3rem}.this-card-head{flex-wrap:wrap;align-items:center;gap:.3rem .6rem;display:flex}.this-card.wrong{border-left-color:var(--c-bad)}.this-card.correct{border-left-color:var(--c-good)}.trick-dots{grid-template-columns:repeat(13,minmax(0,1fr));gap:.25rem;margin:.6rem 0;display:grid}.trick-dots button{min-height:44px;padding:0;font-size:.8rem}.replay-controls{z-index:5;padding:.5rem 0 calc(.5rem + env(safe-area-inset-bottom));background:var(--c-bg);justify-content:center;align-items:center;gap:.5rem;display:flex;position:sticky;bottom:0}.replay-controls button{min-width:48px;min-height:44px;font-size:1.1rem}.replay-counter{text-align:center;min-width:6.5rem;font-size:.9rem}.round-card{gap:.25rem;display:grid}.round-card p{margin:0}.round-card-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.round-badge{border-radius:var(--r-pill);border:1.5px solid var(--c-line);color:var(--grade-ink);padding:.1rem .6rem;font-weight:700}.round-badge.made{background:var(--grade-correct)}.round-badge.missed{background:var(--grade-wrong)}.round-card-line{font-size:1.05rem;font-weight:600}.bid-list{gap:.15rem;margin:.3rem 0 0;padding-left:1.4rem;font-size:.9rem;display:grid}.bid-list li span:first-child{min-width:6.5rem;display:inline-block}.learn-round{margin:.5rem 0}.learn-round p{margin:0}.replay-plays{grid-template-columns:repeat(4,minmax(0,5.5rem));gap:.4rem;display:grid}.replay-play{min-width:0}.replay-play>.muted{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.78rem;overflow:hidden}.replay-play .verdict{white-space:normal;text-align:center;font-size:.72rem;line-height:1.15}.round-card .played-list{margin:.15rem 0 0}
