:root{--color-table:oklch(15% .014 175);--color-felt:oklch(20% .03 168);--color-felt-deep:oklch(17% .026 168);--color-surface:oklch(23% .012 175);--color-surface-2:oklch(27% .012 175);--color-surface-3:oklch(31% .012 175);--color-rule:oklch(34% .012 175);--color-rule-strong:oklch(48% .014 175);--color-text:oklch(93% .008 100);--color-muted:oklch(74% .012 160);--color-faint:oklch(66% .012 165);--color-brass:oklch(78% .11 85);--color-brass-dim:oklch(60% .08 85);--color-brass-soft:oklch(78% .11 85/.1);--color-medal-silver:oklch(78% .018 220);--color-medal-bronze:oklch(66% .09 55);--color-alert:oklch(66% .15 30);--color-alert-soft:oklch(66% .15 30/.14);--color-success:oklch(70% .11 145);--color-success-soft:oklch(70% .11 145/.12);--color-card:oklch(96% .012 95);--color-card-2:oklch(91% .014 95);--color-night:oklch(21% .022 280);--suit-spade:oklch(28% .03 270);--suit-spade-on-dark:oklch(88% .01 270);--suit-heart:oklch(47% .17 22);--suit-diamond:oklch(45% .12 255);--suit-club:oklch(42% .1 155);--special-hi:oklch(80% .1 85);--special-lo:oklch(74% .014 250);--special-mute:oklch(50% .014 250);--color-overlay:oklch(10% .01 175/.62);--color-transparent:transparent;--color-header:oklch(15% .014 175/.82);--color-panel:oklch(23% .012 175/.94);--color-panel-soft:oklch(23% .012 175/.88);--color-shadow:oklch(7% .01 175/.42);--color-card-shadow:oklch(5% .01 175/.4);--color-focus:var(--color-brass);--color-accent:var(--color-brass);--color-accent-ink:var(--color-night);--color-error:var(--color-alert);--color-error-soft:var(--color-alert-soft);--font-display:"Fraunces", ui-serif, serif;--font-body:"Geist", "Noto Sans JP", "Hiragino Sans", sans-serif;--font-outlier:"Geist Mono", ui-monospace, monospace;--text-xs:.8rem;--text-sm:.9rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5625rem;--text-xl:1.9531rem;--text-2xl:2.4414rem;--text-display:clamp(2.6rem, 7vw, 4.8rem);--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--radius-sm:.375rem;--radius-md:.625rem;--radius-lg:1rem;--radius-pill:999px;--rule-thin:1px;--rule-strong:2px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-fast:.14s;--dur-short:.22s;--dur-long:.42s;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-modal:400;--z-toast:500;--z-tooltip:600}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{background:var(--color-table)}body{background:var(--color-table);min-width:20rem;min-height:100dvh;color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);margin:0;font-weight:400;line-height:1.55}button,input,select{color:inherit;font:inherit}button,a,summary{-webkit-tap-highlight-color:var(--color-transparent);white-space:nowrap}h1,h2,h3,p{margin:0}h1,h2,h3{min-width:0;color:var(--color-text);font-family:var(--font-display);letter-spacing:-.02em;overflow-wrap:anywhere;font-style:normal;font-weight:600;line-height:1.14}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-lg)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:var(--rule-strong) solid var(--color-focus);outline-offset:var(--space-2xs)}.visually-hidden{width:var(--rule-thin);height:var(--rule-thin);margin:calc(var(--rule-thin) * -1);clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;position:absolute;overflow:hidden}.app-shell{min-height:100dvh;padding-inline:max(var(--space-md), env(safe-area-inset-left));padding-bottom:max(var(--space-md), env(safe-area-inset-bottom));background:radial-gradient(circle at 75% -10%, var(--color-felt), var(--color-transparent) 34%), var(--color-table);color:var(--color-text);flex-direction:column;display:flex}.app-shell[data-screen=game]{background:var(--color-table);padding:0}.app-header,.app-main,.app-footer{width:100%;max-width:74rem;margin-inline:auto}.app-header{justify-content:space-between;align-items:center;gap:var(--space-md);min-height:4.5rem;padding-block:var(--space-sm);border-bottom:var(--rule-thin) solid var(--color-rule);display:flex}.wordmark,.game-brand{align-items:center;gap:var(--space-xs);color:var(--color-text);font-family:var(--font-display);font-size:var(--text-md);letter-spacing:.01em;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.wordmark svg,.game-brand svg{width:var(--space-md);height:var(--space-md);color:var(--color-brass)}.wordmark:active,.game-brand:active,.qr-disclosure summary:active,.game-exit:active,.game-history:active{color:var(--color-brass)}.header-actions,.connection-state{align-items:center;display:flex}.header-actions{gap:var(--space-sm)}.connection-state{gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm);line-height:1}.connection-dot{width:var(--space-xs);height:var(--space-xs);border-radius:var(--radius-pill);background:var(--color-rule-strong)}.connection-state[data-status=ready] .connection-dot{background:var(--color-success)}.connection-state[data-status=disconnected] .connection-dot,.connection-state[data-status=error] .connection-dot{background:var(--color-alert)}.app-main{padding-block:var(--space-xl) var(--space-2xl);flex:1}.app-shell[data-screen=game] .app-main{max-width:30rem;min-height:100dvh;padding:0}.app-footer{padding-block:var(--space-md);border-top:var(--rule-thin) solid var(--color-rule);color:var(--color-faint);font-family:var(--font-outlier);font-size:var(--text-xs)}.plain-label{color:var(--color-brass);font-family:var(--font-outlier);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase}.tnum,.invite-code,.room-code-input,.score-value,.player-score,.self-score{font-variant-numeric:tabular-nums}.button{justify-content:center;align-items:center;gap:var(--space-xs);border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-sm);min-height:2.75rem;padding:var(--space-sm) var(--space-lg);background:var(--color-surface-2);color:var(--color-text);cursor:pointer;transition:background-color var(--dur-short) var(--ease-out), color var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);font-weight:500;line-height:1;text-decoration:none;display:inline-flex;transform:translateY(0)}.button--primary{border-color:var(--color-brass);background:var(--color-transparent);color:var(--color-brass)}.button--outline{border-color:var(--color-rule-strong);background:var(--color-surface)}.button--quiet{border-color:var(--color-rule);min-height:2.75rem;padding-inline:var(--space-md);background:var(--color-transparent);color:var(--color-muted);font-size:var(--text-sm)}.button--number{min-width:3.25rem;min-height:3.25rem;padding-inline:var(--space-md);font-family:var(--font-outlier)}.button:active{transform:translateY(var(--space-3xs))}.button:disabled,.button[aria-disabled=true]{cursor:not-allowed;opacity:.5;transform:none}.button[data-state=loading]{cursor:progress;opacity:.7}.button[data-state=error]{border-color:var(--color-alert);background:var(--color-alert-soft);color:var(--color-alert)}.button[data-state=success]{border-color:var(--color-success);background:var(--color-success-soft);color:var(--color-success)}.notice{border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-md);padding:var(--space-md);background:var(--color-surface);color:var(--color-muted)}.notice--error{margin-bottom:var(--space-lg);border-color:var(--color-alert);background:var(--color-alert-soft);color:var(--color-text)}.status-panel{justify-content:center;align-items:flex-start;gap:var(--space-md);flex-direction:column;max-width:44rem;min-height:18rem;display:flex}.status-panel p{color:var(--color-muted)}.spinner{width:var(--space-lg);height:var(--space-lg);border:var(--rule-strong) solid var(--color-rule);border-top-color:var(--color-brass);border-radius:var(--radius-pill);animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.home-workbench,.lobby-layout{gap:var(--space-xl);display:grid}.work-panel>div:first-child p{max-width:62ch;color:var(--color-muted)}.field{gap:var(--space-xs);min-width:0;display:grid}.field--name{max-width:28rem}.home-identity{justify-content:space-between;align-items:center;gap:var(--space-md);min-height:2.75rem;color:var(--color-muted);display:flex}.home-identity strong{color:var(--color-text);padding-inline-start:var(--space-xs);font-weight:600}.identity-edit-form,.name-confirmation{gap:var(--space-sm);min-width:0;display:grid}.identity-edit-form{width:100%}.identity-edit-actions{justify-content:flex-end;gap:var(--space-xs);display:flex}.field-label{color:var(--color-text);font-size:var(--text-sm);font-weight:500}.field input,.field select{border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-sm);outline:var(--rule-strong) solid var(--color-transparent);outline-offset:var(--rule-thin);width:100%;min-height:2.75rem;padding:var(--space-sm) var(--space-md);background:var(--color-surface-2);color:var(--color-text);transition:background-color var(--dur-short) var(--ease-out)}.field input::placeholder{color:var(--color-faint)}.field input:focus-visible,.field select:focus-visible{border-color:var(--color-muted);outline-color:var(--color-focus)}.field input:disabled,.field select:disabled{cursor:not-allowed;opacity:.55}.field input[aria-invalid=true],.field select[aria-invalid=true],.field[data-state=error] input,.field[data-state=error] select{border-color:var(--color-alert);background:var(--color-alert-soft)}.field[data-state=success] input,.field[data-state=success] select{border-color:var(--color-success);background:var(--color-success-soft)}.field[data-state=loading] input,.field[data-state=loading] select{cursor:progress}.field-help{min-height:1lh;color:var(--color-muted);font-size:var(--text-sm)}.room-code-input{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:.2em}.home-actions,.lobby-columns{gap:var(--space-lg);grid-template-columns:minmax(0,1fr);display:grid}.work-panel{align-items:stretch;gap:var(--space-lg);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);min-width:0;padding:var(--space-lg);background:var(--color-surface);color:var(--color-text);flex-direction:column;display:flex}.work-panel--join{background:var(--color-surface-2)}.work-panel>div:first-child{gap:var(--space-xs);display:grid}.form-grid{gap:var(--space-md);display:grid}.room-heading,.section-heading,.table-heading,.sticky-action{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.room-heading>div{gap:var(--space-xs);display:grid}.lobby-name-form{align-items:end;gap:var(--space-sm);grid-template-columns:minmax(0,1fr) auto;max-width:32rem;display:grid}.lobby-name-form .button{min-width:8rem}.role-badge,.tag{border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-xs);color:var(--color-muted);font-size:var(--text-xs);white-space:nowrap;align-items:center;font-weight:500;line-height:1;display:inline-flex}.tag--warning{border-color:var(--color-alert);background:var(--color-alert-soft);color:var(--color-text)}.invite-code{color:var(--color-brass);font-family:var(--font-outlier);font-size:var(--text-display);letter-spacing:.12em;font-weight:500;line-height:1}.qr-disclosure summary{min-height:2.75rem;color:var(--color-muted);cursor:pointer;align-items:center;font-weight:500;line-height:1;display:flex}.qr-figure{justify-items:start;gap:var(--space-sm);margin:var(--space-md) 0 0;display:grid}.qr-figure svg{max-width:100%;height:auto;padding:var(--space-xs);background:var(--color-card);color:var(--color-night)}.qr-figure figcaption{color:var(--color-muted);font-size:var(--text-sm)}.room-settings-readonly{gap:var(--space-sm);margin:0;display:grid}.room-settings-readonly div{justify-content:space-between;gap:var(--space-md);padding-block:var(--space-sm);border-bottom:var(--rule-thin) solid var(--color-rule);display:flex}.room-settings-readonly dd{margin:0;font-weight:600}.member-section,.round-result,.final-panel{gap:var(--space-md);display:grid}.member-list,.spectator-list,.final-scores,.round-result ul{margin:0;padding:0;list-style:none}.member-list,.final-scores,.round-result ul{border-top:var(--rule-thin) solid var(--color-rule)}.member-row,.final-scores li,.round-result li{align-items:center;gap:var(--space-sm);min-height:3.25rem;padding-block:var(--space-sm);border-bottom:var(--rule-thin) solid var(--color-rule);display:grid}.member-row{grid-template-columns:4rem minmax(0,1fr)}.seat-index,.empty-seat,.spectator-note,.waiting-note{color:var(--color-muted)}.member-name{align-items:center;gap:var(--space-xs);flex-wrap:wrap;min-width:0;font-weight:500;display:flex}.spectator-list{gap:var(--space-sm);flex-wrap:wrap;display:flex}.sticky-action{z-index:var(--z-sticky);bottom:max(var(--space-md), env(safe-area-inset-bottom));border:var(--rule-thin) solid var(--color-brass-dim);border-radius:var(--radius-lg);padding:var(--space-md);background:var(--color-panel);color:var(--color-text);flex-direction:column;align-items:flex-start;position:sticky}.sticky-action p{color:var(--color-muted)}.sticky-action .button{width:100%}@media (width<=27.999rem){.lobby-name-form{grid-template-columns:minmax(0,1fr)}.lobby-name-form .button{width:100%}}.waiting-note{padding-block:var(--space-md)}.game-layout{background:var(--color-felt-deep);min-height:100dvh;color:var(--color-text);position:relative;overflow:hidden}.game-status-bar{z-index:var(--z-sticky);justify-content:space-between;align-items:center;gap:var(--space-2xs);min-height:2.75rem;padding:0 var(--space-xs);border-bottom:var(--rule-thin) solid var(--color-rule);background:var(--color-header);color:var(--color-muted);font-family:var(--font-outlier);font-variant-numeric:tabular-nums;font-size:.625rem;display:flex;position:relative}.game-brand{display:none}.game-progress,.game-controls,.trump-chip{align-items:center;display:flex}.game-progress{gap:var(--space-2xs);min-width:0}.game-progress b,.trump-chip{color:var(--color-text);font-weight:500}.hud-label{color:var(--color-muted);letter-spacing:.02em;font-size:.575rem}.hud-separator{width:var(--rule-thin);height:var(--space-sm);background:var(--color-rule);flex:none}.bid-total,.remaining-tricks{white-space:nowrap}.game-controls{gap:var(--space-2xs)}.trump-chip{gap:var(--space-3xs);border:var(--rule-thin) solid var(--color-brass-dim);border-radius:var(--radius-pill);min-height:1.75rem;padding-inline:var(--space-2xs);background:var(--color-brass-soft);color:var(--color-brass)}.trump-chip svg{width:var(--space-sm);height:var(--space-sm)}.room-chip{display:none}.game-exit,.game-history{background:var(--color-transparent);min-width:2.75rem;min-height:2.75rem;color:var(--color-muted);cursor:pointer;border:0;padding:0;font-size:.7rem}.game-exit:disabled{cursor:progress;opacity:.55}.game-stage{background:radial-gradient(circle at 50% 115%, var(--color-felt), var(--color-transparent) 58%), var(--color-felt-deep);min-height:calc(100dvh - 2.75rem);color:var(--color-text);position:relative;overflow:hidden}.game-notice{z-index:var(--z-raised);top:var(--space-xs);left:var(--space-sm);right:var(--space-sm);padding:var(--space-xs) var(--space-sm);font-size:var(--text-sm);position:absolute}.player-rail{z-index:var(--z-raised);top:var(--space-xs);left:var(--space-xs);right:var(--space-xs);justify-content:center;gap:var(--space-3xs);scrollbar-width:none;-webkit-overflow-scrolling:touch;display:flex;position:absolute;overflow-x:auto}.player-rail::-webkit-scrollbar{display:none}.player-rail[data-count="4"],.player-rail[data-count="5"]{justify-content:flex-start;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 1.5rem),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 1.5rem),#0000)}.player-chip,.self-chip{align-items:center;gap:var(--space-xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-panel-soft);color:var(--color-text);display:flex}.self-chip{min-width:0}.player-chip{min-height:2.75rem;padding:var(--space-3xs) var(--space-2xs);gap:var(--space-3xs);flex:none}.lead-badge{border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-2xs);color:var(--color-text);font-family:var(--font-outlier);letter-spacing:.03em;white-space:nowrap;flex:none;font-size:.575rem;line-height:1.2}.player-chip[data-active=true],.self-chip[data-active=true]{border-color:var(--color-brass);box-shadow:0 0 0 var(--rule-thin) var(--color-brass-dim)}.player-avatar{border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-pill);background:var(--color-surface-2);width:1.5rem;height:1.5rem;color:var(--color-muted);font-family:var(--font-display);font-size:var(--text-sm);flex:none;place-items:center;font-weight:600;line-height:1;display:grid}[data-active=true]>.player-avatar{outline:var(--rule-strong) solid var(--color-brass);outline-offset:var(--space-2xs)}.player-meta{gap:var(--space-3xs);flex-direction:column;min-width:0;display:flex}.player-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.72rem;font-weight:500;line-height:1.1;overflow:hidden}.player-name .member-name{gap:var(--space-2xs);flex-wrap:nowrap}.player-name .member-name>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.player-name .tag{padding-inline:var(--space-2xs);font-size:.625rem}.player-stats,.player-score,.self-score{color:var(--color-muted);font-family:var(--font-outlier);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.625rem;line-height:1.1}.player-stats b{color:var(--color-text);font-weight:500}.player-score{margin-inline-start:auto;display:none}.player-rail[data-count="4"] .player-avatar,.player-rail[data-count="5"] .player-avatar{width:1.5rem;height:1.5rem;font-size:var(--text-xs)}.player-rail[data-count="5"] .player-name{display:none}.player-rail[data-count="5"] .player-chip{padding-inline:var(--space-2xs);justify-content:center}.self-chip{z-index:var(--z-raised);left:var(--space-sm);right:var(--space-sm);bottom:calc(11.75rem + env(safe-area-inset-bottom));min-height:3rem;padding:var(--space-xs) var(--space-sm);position:absolute}.self-chip .player-avatar{width:2.125rem;height:2.125rem}.self-score{color:var(--color-faint);margin-inline-start:auto}.table-panel{z-index:var(--z-base);height:16rem;position:absolute;top:4.5rem;left:0;right:0}.trump-card-display{z-index:var(--z-raised);top:3.5rem;right:var(--space-xs);justify-items:center;gap:var(--space-2xs);pointer-events:none;width:3.25rem;margin:0;display:grid;position:absolute}.trump-card-display .playing-card{--card-width:3rem}.trump-card-display figcaption{width:max-content;max-width:5rem;color:var(--color-brass);text-align:center;font-size:.625rem;font-weight:500}.trump-card-empty{aspect-ratio:63/88;border:var(--rule-thin) dashed var(--color-rule-strong);border-radius:var(--radius-sm);background:var(--color-panel-soft);width:3rem;color:var(--color-muted);place-items:center;display:grid}.played-cards{width:100%;height:100%;position:relative}.played-cards figure{width:4rem;margin:0;position:absolute}.played-cards figure[data-position=north]{top:0;left:50%;transform:translate(-50%)rotate(1deg)}.played-cards figure[data-position=north-west]{top:var(--space-sm);left:27%;transform:translate(-50%)rotate(-2deg)}.played-cards figure[data-position=north-east]{top:var(--space-sm);right:27%;transform:translate(50%)rotate(2deg)}.played-cards figure[data-position=west]{top:4.5rem;left:13%;transform:translate(-50%)rotate(-4deg)}.played-cards figure[data-position=east]{top:4.5rem;right:13%;transform:translate(50%)rotate(4deg)}.played-cards figure[data-position=south]{bottom:0;left:50%;transform:translate(-50%)rotate(-1deg)}.played-cards .playing-card{--card-width:4rem}.played-cards figcaption{max-width:4rem;margin-top:var(--space-2xs);color:var(--color-muted);text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:.625rem;overflow:hidden}.played-cards figure[data-lead=true] .playing-card{outline:var(--rule-thin) solid var(--color-muted);outline-offset:var(--space-3xs)}.empty-trick{color:var(--color-muted);font-size:var(--text-sm);text-align:center;white-space:nowrap;position:absolute;top:45%;left:50%;transform:translate(-50%,-50%)}.played-cards figure[data-winner=true]{z-index:var(--z-raised)}.played-cards figure[data-winner=true] .playing-card{border-color:var(--color-brass);box-shadow:0 0 0 var(--rule-strong) var(--color-brass-dim), 0 0 var(--space-md) var(--color-brass-soft)}.played-cards figure[data-winner=true] figcaption{color:var(--color-brass)}.trick-winner-note{z-index:var(--z-raised);max-width:calc(100% - var(--space-xl));border:var(--rule-thin) solid var(--color-brass-dim);border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-md);background:var(--color-panel);color:var(--color-brass);font-size:var(--text-sm);text-align:center;text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:500;position:absolute;top:45%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.action-panel.hand-panel{z-index:var(--z-raised);height:calc(11rem + env(safe-area-inset-bottom));margin:0;position:absolute;bottom:0;left:0;right:0}.hand-selection-cancel{z-index:var(--z-modal);top:calc(var(--space-xs) * -1);right:var(--space-sm);border:var(--rule-thin) solid var(--color-brass-dim);border-radius:var(--radius-pill);min-width:5.5rem;min-height:2.75rem;padding:var(--space-xs) var(--space-sm);background:var(--color-panel);color:var(--color-text);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);transition:transform var(--dur-micro) var(--ease-out);font-weight:500;line-height:1;position:absolute;transform:translateY(0)}.hand-selection-cancel:active{transform:translateY(var(--space-3xs))}.hand-scroll{left:0;right:0;bottom:calc(var(--space-sm) + env(safe-area-inset-bottom));padding:var(--space-lg) var(--space-sm) var(--space-2xs);scrollbar-width:none;-webkit-overflow-scrolling:touch;position:absolute;overflow:auto hidden}.hand-scroll::-webkit-scrollbar{display:none}.hand{--card-width:5.25rem;justify-content:center;width:max-content;min-width:100%;display:flex}.card-button{border-radius:var(--radius-sm);background:var(--color-transparent);cursor:pointer;transition:opacity var(--dur-short) var(--ease-out), transform var(--dur-fast,var(--dur-micro)) var(--ease-out);border:0;flex:none;padding:0;display:inline-flex;position:relative;transform:translateY(0)}.hand .card-button{margin-inline-start:calc(var(--hand-sliver) - var(--card-width))}.hand .card-button:first-child{margin-inline-start:0}.hand .card-button:focus-visible{z-index:var(--z-raised)}.hand .card-button:active:not(:disabled),.hand .card-button[data-selected=true]{z-index:var(--z-raised);transform:translateY(calc(var(--space-md) * -1))}.card-button:disabled{cursor:not-allowed;opacity:.46;transform:translateY(var(--space-xs))}.card-button--preview{cursor:default}.playing-card{--card-width:5.25rem;width:var(--card-width);aspect-ratio:63/88;border:var(--rule-thin) solid var(--color-card-2);border-radius:calc(var(--card-width) * .075);background:linear-gradient(160deg, var(--color-card), var(--color-card-2));box-shadow:0 var(--space-3xs) var(--space-xs) var(--color-card-shadow);color:var(--suit-spade);flex:none;display:block;position:relative;overflow:hidden}.playing-card--spades{color:var(--suit-spade)}.playing-card--hearts{color:var(--suit-heart)}.playing-card--diamonds{color:var(--suit-diamond)}.playing-card--clubs{color:var(--suit-club)}.playing-card--wizard{color:var(--color-brass-dim)}.playing-card--jester{color:var(--special-mute)}.card-index{z-index:var(--z-raised);align-items:center;gap:calc(var(--card-width) * .008);flex-direction:column;line-height:1;display:flex;position:absolute;top:5.5%;left:7%}.card-index--bottom{inset:auto 7% 5.5% auto;transform:rotate(180deg)}.card-index svg{width:calc(var(--card-width) * .15);height:calc(var(--card-width) * .15)}.card-rank{font-family:var(--font-display);font-size:calc(var(--card-width) * .24);letter-spacing:-.01em;font-weight:600}.card-rank--2ch{font-size:calc(var(--card-width) * .185);letter-spacing:-.04em}.card-watermark,.card-ace,.card-figure,.card-emblem{position:absolute}.card-watermark{width:calc(var(--card-width) * .5);height:calc(var(--card-width) * .5);opacity:.13;bottom:12%;right:9%}.card-ace{width:calc(var(--card-width) * .44);height:calc(var(--card-width) * .44);top:50%;left:50%;transform:translate(-50%,-50%)}.card-figure{width:84%;height:80%;inset:10% 8%}.card-emblem{width:76%;height:63%;inset:15% 12% 22%}.card-subtitle{color:currentColor;font-family:var(--font-outlier);font-size:calc(var(--card-width) * .075);letter-spacing:.18em;text-align:center;line-height:1;position:absolute;bottom:8.5%;left:0;right:0}.turn-status{z-index:var(--z-raised);right:var(--space-sm);bottom:calc(15.25rem + env(safe-area-inset-bottom));left:var(--space-sm);justify-content:space-between;align-items:center;gap:var(--space-sm);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-md);min-height:2.75rem;padding:var(--space-xs) var(--space-sm);background:var(--color-header);font-size:var(--text-sm);display:flex;position:absolute}.turn-status>b{color:var(--color-text);font-weight:500}.turn-status[data-active=true]{border-color:var(--color-brass);box-shadow:0 0 0 var(--rule-thin) var(--color-brass-dim)}.turn-status[data-active=true]>b{color:var(--color-brass)}.game-stage>.action-panel:not(.hand-panel),.round-result{z-index:var(--z-modal);max-height:calc(100% - var(--space-xl));gap:var(--space-md);border-top:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-lg) var(--space-md) calc(var(--space-md) + env(safe-area-inset-bottom));background:var(--color-surface);color:var(--color-text);display:grid;position:absolute;bottom:0;left:0;right:0;overflow-y:auto}.game-stage>.action-panel:not(.hand-panel):before,.round-result:before{content:"";width:2.25rem;height:var(--space-2xs);border-radius:var(--radius-pill);background:var(--color-rule);justify-self:center}.game-stage>.action-panel:not(.hand-panel) h2,.round-result h2{font-size:var(--text-md)}.choice-row{gap:var(--space-xs);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.choice-row .button{min-height:3.25rem}.choice-row--numbers{max-height:12rem;overflow-y:auto}@media (width<=63.999rem){.game-layout[data-phase=choosingTrump] .self-chip,.game-layout[data-phase=bidding] .self-chip{display:none}.game-layout[data-phase=choosingTrump] .game-stage>.action-panel:not(.hand-panel),.game-layout[data-phase=bidding] .game-stage>.action-panel:not(.hand-panel){right:var(--space-sm);bottom:calc(10.5rem + env(safe-area-inset-bottom));left:var(--space-sm);max-height:calc(100% - 12rem - env(safe-area-inset-bottom));border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);padding-bottom:var(--space-lg)}}.suit-button{place-items:center;gap:var(--space-2xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-card);min-width:0;min-height:4.5rem;color:var(--suit,var(--suit-spade));cursor:pointer;transition:opacity var(--dur-short) var(--ease-out), transform var(--dur-micro) var(--ease-out);display:grid;transform:translateY(0)}.suit-button--clubs{--suit:var(--suit-club)}.suit-button--diamonds{--suit:var(--suit-diamond)}.suit-button--hearts{--suit:var(--suit-heart)}.suit-button--spades{--suit:var(--suit-spade)}.suit-button svg{width:var(--space-xl);height:var(--space-xl)}.suit-button span{color:var(--color-night);font-size:var(--text-xs)}.suit-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.suit-button:active:not(:disabled){transform:translateY(var(--space-3xs))}.suit-button[data-state=loading]{cursor:progress;opacity:.7}.suit-button[data-state=error]{border-color:var(--color-alert)}.suit-button[data-state=success]{border-color:var(--color-success)}.round-result li{grid-template-columns:minmax(0,1fr) auto}.round-result li>span:nth-child(2){color:var(--color-muted);font-size:var(--text-sm);grid-area:2/1}.round-result li b{grid-area:1/2;justify-self:end}.round-result .round-total{color:var(--color-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;grid-area:2/2;justify-self:end}.round-result-next{color:var(--color-muted);font-size:var(--text-sm);text-align:center}.final-panel{inset:var(--space-md);overscroll-behavior:contain;border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);padding:var(--space-lg);background:var(--color-surface);color:var(--color-text);align-content:start;position:absolute;overflow-y:auto}.final-panel h2{font-size:var(--text-xl)}.final-scores li{gap:var(--space-md);grid-template-columns:3rem minmax(0,1fr) auto;min-height:4rem}.final-scores li[data-rank="1"]{min-height:4.75rem}.final-player-name{overflow-wrap:anywhere;min-width:0}.final-scores li[data-rank="1"] .final-player-name{font-size:var(--text-md);font-weight:600}.final-medal{width:2.25rem;color:var(--color-medal-bronze);justify-self:center;display:grid}.final-medal[data-rank="1"]{width:2.75rem;color:var(--color-brass)}.final-medal[data-rank="2"]{width:2.5rem;color:var(--color-medal-silver)}.final-medal svg{fill:currentColor;width:100%;height:auto;display:block;overflow:visible}.final-medal-inset{fill:var(--color-surface)}.final-medal text{fill:currentColor;font-family:var(--font-outlier);text-anchor:middle;font-size:.65rem;font-weight:600}.final-rank-number{color:var(--color-muted);font-family:var(--font-outlier);font-size:var(--text-sm);font-variant-numeric:tabular-nums;justify-self:center}.final-score-value{font-family:var(--font-outlier);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.final-actions{gap:var(--space-sm);display:grid}.final-actions .button{width:100%}.final-actions .waiting-note{padding-block:var(--space-xs);text-align:center}.spectator-note{display:none}.panel-heading{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.bid-prompt{gap:var(--space-2xs);display:grid}.bid-lead-message{color:var(--color-text);font-size:var(--text-sm);font-weight:500}.turn-countdown{--turn-progress:100%;justify-items:end;gap:var(--space-3xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-sm);min-width:4.25rem;padding:var(--space-3xs) var(--space-xs);background:var(--color-panel-soft);flex:none;display:grid}.turn-countdown-value{align-items:baseline;gap:var(--space-3xs);color:var(--color-brass);font-family:var(--font-outlier);font-size:var(--text-xs);font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.4;display:flex}.turn-countdown-value b{font-size:var(--text-sm);font-weight:500}.turn-countdown-track{width:100%;height:var(--rule-strong);border-radius:var(--radius-pill);background:var(--color-rule);overflow:hidden}.turn-countdown-track>span{width:var(--turn-progress);border-radius:inherit;background:var(--color-brass);height:100%;transition:width var(--dur-micro) linear;display:block}.turn-countdown[data-urgent=true]{border-color:var(--color-alert);background:var(--color-alert-soft)}.turn-countdown[data-urgent=true] .turn-countdown-value{color:var(--color-alert)}.turn-countdown[data-urgent=true] .turn-countdown-track>span{background:var(--color-alert)}.revealed-trump{align-items:center;gap:var(--space-sm);color:var(--color-muted);font-size:var(--text-sm);display:flex}.revealed-trump .playing-card{--card-width:3.25rem}.game-toast{z-index:var(--z-tooltip);bottom:calc(var(--space-lg) + env(safe-area-inset-bottom));max-width:calc(100% - var(--space-lg));border:var(--rule-thin) solid var(--color-alert);border-radius:var(--radius-pill);padding:var(--space-xs) var(--space-md);background:var(--color-panel);color:var(--color-text);font-size:var(--text-sm);pointer-events:none;text-align:center;transition:opacity var(--dur-short) var(--ease-out);position:fixed;left:50%;transform:translate(-50%)}.game-toast[data-visible=false]{opacity:0}.score-history::backdrop,.room-switch-dialog::backdrop{background:var(--color-overlay)}.room-switch-dialog{width:min(30rem, calc(100% - var(--space-xl)));gap:var(--space-md);border:var(--rule-thin) solid var(--color-rule-strong);border-radius:var(--radius-lg);padding:var(--space-lg);background:var(--color-surface);color:var(--color-text);box-shadow:0 var(--space-md) var(--space-2xl) var(--color-shadow);margin:auto;display:grid;position:fixed;inset:0}.room-switch-dialog h2{font-size:var(--text-lg)}.room-switch-dialog>p:not(.plain-label,.notice){color:var(--color-muted)}.room-switch-dialog .notice--error{margin-bottom:0}.room-switch-actions{gap:var(--space-sm);display:grid}.room-switch-actions .button{width:100%}.score-history{width:min(44rem, calc(100% - var(--space-xl)));max-height:min(40rem, calc(100dvh - var(--space-xl)));align-content:start;gap:var(--space-md);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);padding:var(--space-lg) var(--space-md);background:var(--color-surface);color:var(--color-text);margin:auto;display:grid;position:fixed;inset:0;overflow-y:auto}.score-history h2{font-size:var(--text-md)}.history-tabs{gap:var(--space-xs);padding:var(--space-2xs);border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-panel-soft);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.history-tabs .button{width:100%}.history-tabs [aria-selected=true]{border-color:var(--color-brass-dim);background:var(--color-surface);color:var(--color-text)}.score-history-scroll{overflow-x:auto}.score-history-table{border-collapse:collapse;width:100%;font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.score-history-table th,.score-history-table td{padding:var(--space-2xs) var(--space-xs);border-bottom:var(--rule-thin) solid var(--color-rule);text-align:end}.score-history-table thead th,.score-history-table tbody th{color:var(--color-muted);font-weight:500}.score-history-table thead th:first-child,.score-history-table tbody th,.score-history-table tfoot th{text-align:start}.score-history-table tbody th span{color:var(--color-faint);font-size:var(--text-xs);padding-inline-start:var(--space-2xs)}.score-history-table td span{color:var(--color-muted);padding-inline-end:var(--space-2xs)}.score-history-table tfoot th,.score-history-table tfoot td{border-bottom:0;border-top:var(--rule-strong) solid var(--color-rule-strong)}.score-history-note{color:var(--color-muted);font-size:var(--text-xs)}.public-card-history,.trick-history-rounds,.trick-history-list,.current-trick-history{gap:var(--space-sm);display:grid}.card-visibility-summary{border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-sm);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.card-visibility-summary div{gap:var(--space-3xs);min-width:0;padding:var(--space-sm);text-align:center;display:grid}.card-visibility-summary div+div{border-inline-start:var(--rule-thin) solid var(--color-rule)}.card-visibility-summary dt{color:var(--color-muted);font-size:var(--text-xs)}.card-visibility-summary dd{color:var(--color-text);font-size:var(--text-md);font-variant-numeric:tabular-nums;margin:0;font-weight:600}.revealed-card-history,.trick-history-heading{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.revealed-card-history{padding-block:var(--space-xs);border-bottom:var(--rule-thin) solid var(--color-rule);color:var(--color-muted);font-size:var(--text-sm)}.trick-history-rounds details{border-bottom:var(--rule-thin) solid var(--color-rule)}.trick-history-rounds summary{min-height:2.75rem;color:var(--color-text);cursor:pointer;align-items:center;font-weight:500;display:flex}.trick-history-list{padding:0 0 var(--space-md);margin:0;list-style:none}.trick-history-list li{gap:var(--space-xs);padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--color-panel-soft);display:grid}.trick-history-heading{color:var(--color-muted);font-size:var(--text-xs)}.trick-history-heading b{color:var(--color-text)}.trick-history-plays{gap:var(--space-xs);flex-wrap:wrap;display:flex}.public-play{justify-items:center;gap:var(--space-3xs);min-width:3rem;display:grid}.public-play small{max-width:5rem;color:var(--color-muted);text-overflow:ellipsis;font-size:.625rem;overflow:hidden}.compact-card{border:var(--rule-thin) solid var(--color-card-2);border-radius:var(--radius-sm);background:var(--color-card);min-width:2.75rem;min-height:2.25rem;box-shadow:0 var(--space-3xs) var(--space-2xs) var(--color-card-shadow);color:var(--suit-spade);font-family:var(--font-display);place-items:center;font-weight:600;display:grid}.compact-card--hearts{color:var(--suit-heart)}.compact-card--diamonds{color:var(--suit-diamond)}.compact-card--clubs{color:var(--suit-club)}.compact-card--wizard{color:var(--color-brass-dim)}.compact-card--jester{color:var(--special-mute)}.current-trick-history{padding:var(--space-sm);border:var(--rule-thin) solid var(--color-brass-dim);border-radius:var(--radius-sm)}.current-trick-history>b{font-size:var(--text-sm)}@media (width<=21.999rem){.game-status-bar{padding-inline:var(--space-xs)}.hud-label,.game-exit,.game-history{font-size:.625rem}.player-chip{padding-inline:var(--space-2xs)}.player-rail[data-count="4"] .player-name,.player-rail[data-count="5"] .player-name{display:none}.hand[data-crowded=true]{--hand-sliver:2.5rem!important}.hand[data-crowded=true] .playing-card{--card-width:4.5rem}}@media (width>=40rem){.app-shell:not([data-screen=game]){padding-inline:max(var(--space-lg), env(safe-area-inset-left))}.member-row{grid-template-columns:5rem minmax(0,1fr)}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid>.button{grid-column:1/-1;justify-self:start}.sticky-action{flex-direction:row;align-items:center}.sticky-action .button{width:auto}}@media (width>=48rem) and (width<=63.999rem){.app-shell[data-screen=game]{min-height:100dvh;padding-block:var(--space-md);place-items:center;display:grid}.app-shell[data-screen=game] .app-main{width:min(30rem,100%);min-height:calc(100dvh - var(--space-xl));border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);overflow:hidden}.game-layout{min-height:calc(100dvh - var(--space-xl))}.game-stage{min-height:calc(100dvh - var(--space-xl) - 2.75rem)}}@media (width>=64rem){.home-workbench{column-gap:var(--space-2xl);grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr);grid-template-areas:"name actions";align-items:start}.home-identity{grid-area:name}.home-actions{grid-area:actions;grid-template-columns:repeat(2,minmax(0,1fr))}.lobby-columns{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr)}.work-panel{padding:var(--space-xl)}.app-shell[data-screen=game]{min-height:100dvh;padding:var(--space-md)}.app-shell[data-screen=game] .app-main{max-width:90rem;min-height:calc(100dvh - var(--space-xl));margin-inline:auto}.game-layout{min-height:calc(100dvh - var(--space-xl));border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-felt-deep)}.game-status-bar{min-height:3.5rem;padding-inline:var(--space-md)}.game-brand{min-width:8rem;display:inline-flex}.game-progress{gap:var(--space-md);font-size:var(--text-xs)}.bid-total,.room-chip{display:inline}.room-chip{color:var(--color-faint);font-family:var(--font-outlier);font-size:var(--text-xs)}.game-exit,.game-history{min-width:3.5rem}.game-stage{height:calc(100dvh - 5.75rem);min-height:38rem;max-height:52rem}.player-rail{pointer-events:none;display:block;inset:0}.player-chip{width:12rem;max-width:none;min-height:3.5rem;padding:var(--space-xs) var(--space-sm);flex:none;position:absolute}.player-chip[data-position=north]{top:var(--space-md);left:50%;transform:translate(-50%)}.player-chip[data-position=north-west]{top:var(--space-lg);left:25%;transform:translate(-50%)}.player-chip[data-position=north-east]{top:var(--space-lg);right:25%;transform:translate(50%)}.player-chip[data-position=west]{top:43%;left:var(--space-md);transform:translateY(-50%)}.player-chip[data-position=east]{top:43%;right:var(--space-md);transform:translateY(-50%)}.player-rail[data-count="4"] .player-avatar,.player-rail[data-count="5"] .player-avatar{width:2.125rem;height:2.125rem;font-size:var(--text-sm)}.player-rail[data-count="5"] .player-name,.player-score{display:block}.self-chip{right:auto;bottom:var(--space-md);width:13rem;min-height:3.5rem}.table-panel{width:28rem;height:20rem;top:20%;left:50%;transform:translate(-50%)}.played-cards figure{width:5.375rem}.played-cards .playing-card{--card-width:5.375rem}.played-cards figure[data-position=north-west]{left:31%}.played-cards figure[data-position=north-east]{right:31%}.played-cards figure[data-position=west]{top:5.25rem;left:10%}.played-cards figure[data-position=east]{top:5.25rem;right:10%}.played-cards figcaption{max-width:5.375rem}.action-panel.hand-panel{height:12.5rem}.hand,.hand .playing-card{--card-width:6.75rem}.hand .card-button{margin-inline-start:calc(var(--hand-sliver) - var(--card-width))}.turn-status{bottom:5rem;right:auto;left:var(--space-md);width:13rem}.game-stage>.action-panel:not(.hand-panel),.round-result{width:min(25rem, calc(100% - var(--space-xl)));max-height:calc(100% - var(--space-2xl));border:var(--rule-thin) solid var(--color-rule);border-radius:var(--radius-lg);padding:var(--space-lg);inset:50% auto auto 50%;transform:translate(-50%,-50%)}.choice-row--numbers{max-height:17rem}.final-panel{width:min(50rem, calc(100% - var(--space-2xl)));max-height:calc(100% - var(--space-2xl));padding:var(--space-xl);inset:50% auto auto 50%;transform:translate(-50%,-50%)}}@media (hover:hover) and (pointer:fine){.wordmark:hover,.game-brand:hover,.qr-disclosure summary:hover,.game-exit:hover,.game-history:hover{color:var(--color-brass)}.button:not(:disabled):hover{background:var(--color-surface-3)}.button--primary:not(:disabled):hover{background:var(--color-brass-soft)}.field input:hover,.field select:hover{background:var(--color-surface-3)}.card-button:not(:disabled):hover{z-index:var(--z-raised);transform:translateY(calc(var(--space-sm) * -1))}.hand-selection-cancel:hover{transform:translateY(calc(var(--space-3xs) * -1))}.suit-button:not(:disabled):hover{transform:translateY(calc(var(--space-2xs) * -1))}}@media (pointer:coarse){.button,.game-exit,.game-history,.suit-button,.qr-disclosure summary{min-height:2.75rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.15s!important;animation-duration:.15s!important;animation-iteration-count:1!important}.button,.card-button,.suit-button{transform:none!important}}
