:root{color:var(--color-text);background:var(--color-page);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:radial-gradient(circle at 12% 2%, color-mix(in srgb, var(--color-table) 24%, transparent), transparent 35rem), radial-gradient(circle at 92% 88%, color-mix(in srgb, var(--color-highlight) 14%, transparent), transparent 32rem), var(--color-page);min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}:root{--jiangsu-ink:#202623;--jiangsu-dai:#29464a;--jiangsu-canal:#48766f;--jiangsu-jade:#799b7a;--jiangsu-white:#f2f0e8;--jiangsu-stone:#8b928c;--jiangsu-vermilion:#b74434;--jiangsu-peach:#d98682;--jiangsu-gold:#c5a45a;--color-page:var(--jiangsu-ink);--color-shell:var(--jiangsu-dai);--color-shell-raised:var(--jiangsu-ink);--color-frame:var(--jiangsu-dai);--color-table:var(--jiangsu-canal);--color-table-rail:var(--jiangsu-ink);--color-surface:var(--jiangsu-white);--color-surface-raised:var(--jiangsu-white);--color-surface-muted:var(--jiangsu-stone);--color-inset:color-mix(in srgb, var(--color-shell-raised) 72%, transparent);--color-surface-deep:color-mix(in srgb, var(--color-shell-raised) 88%, var(--color-shell));--color-surface-overlay:color-mix(in srgb, var(--color-shell-raised) 62%, transparent);--color-surface-hover:color-mix(in srgb, var(--color-frame) 74%, var(--color-shell-raised));--color-panel:linear-gradient(145deg, color-mix(in srgb, var(--color-shell) 96%, var(--color-surface)), color-mix(in srgb, var(--color-shell-raised) 92%, var(--color-shell)));--color-control:color-mix(in srgb, var(--color-shell) 76%, var(--color-shell-raised));--color-control-hover:color-mix(in srgb, var(--color-frame) 78%, var(--color-shell-raised));--color-overlay:color-mix(in srgb, var(--color-shell-raised) 78%, transparent);--color-shadow:color-mix(in srgb, var(--color-shell-raised) 48%, transparent);--color-shadow-heavy:color-mix(in srgb, var(--color-shell-raised) 68%, transparent);--color-text:var(--jiangsu-white);--color-text-strong:var(--jiangsu-white);--color-text-muted:var(--jiangsu-stone);--color-text-subtle:color-mix(in srgb, var(--jiangsu-stone) 78%, var(--color-text));--color-text-inverse:var(--jiangsu-ink);--color-border:color-mix(in srgb, var(--jiangsu-white) 20%, var(--color-shell));--color-border-strong:color-mix(in srgb, var(--jiangsu-white) 34%, var(--color-shell));--color-border-subtle:color-mix(in srgb, var(--jiangsu-white) 12%, var(--color-shell));--color-action:var(--jiangsu-vermilion);--color-action-hover:color-mix(in srgb, var(--jiangsu-vermilion) 84%, var(--jiangsu-peach));--color-action-soft:color-mix(in srgb, var(--jiangsu-vermilion) 20%, transparent);--color-danger:var(--jiangsu-vermilion);--color-danger-soft:color-mix(in srgb, var(--jiangsu-vermilion) 22%, transparent);--color-focus:var(--jiangsu-gold);--color-focus-soft:color-mix(in srgb, var(--jiangsu-gold) 24%, transparent);--color-turn:var(--jiangsu-gold);--color-turn-soft:color-mix(in srgb, var(--jiangsu-gold) 20%, transparent);--color-highlight:var(--jiangsu-jade);--color-highlight-soft:color-mix(in srgb, var(--jiangsu-jade) 20%, transparent);--color-success:var(--jiangsu-jade);--color-success-soft:color-mix(in srgb, var(--jiangsu-jade) 18%, transparent);--color-warning:var(--jiangsu-gold);--color-warning-soft:color-mix(in srgb, var(--jiangsu-gold) 20%, transparent);--color-card-face:var(--jiangsu-white);--color-card-text:var(--jiangsu-ink);--color-card-border:color-mix(in srgb, var(--jiangsu-ink) 42%, var(--color-card-face));--color-card-shadow:color-mix(in srgb, var(--jiangsu-ink) 42%, transparent);--color-card-red:var(--jiangsu-vermilion);--color-wild-label:var(--jiangsu-vermilion);--color-wild-label-text:var(--jiangsu-white);--color-card-use:var(--jiangsu-dai);--color-card-use-text:var(--jiangsu-white);--color-card-unknown:color-mix(in srgb, var(--jiangsu-stone) 68%, var(--color-card-face));--color-card-unknown-text:var(--jiangsu-dai);--color-team-a:var(--jiangsu-jade);--color-team-b:var(--jiangsu-gold);--color-team-c:var(--jiangsu-canal);--color-team-d:var(--jiangsu-peach);--color-team-e:var(--jiangsu-vermilion);--color-team-f:var(--jiangsu-stone)}[data-theme=a]{--color-shell:var(--jiangsu-dai);--color-shell-raised:var(--jiangsu-ink);--color-frame:var(--jiangsu-dai);--color-table:var(--jiangsu-canal);--color-table-rail:var(--jiangsu-ink);--color-highlight:var(--jiangsu-jade);--color-highlight-soft:color-mix(in srgb, var(--jiangsu-jade) 20%, transparent)}[data-theme=c]{--color-shell:var(--jiangsu-ink);--color-shell-raised:var(--jiangsu-ink);--color-frame:var(--jiangsu-dai);--color-table:var(--jiangsu-canal);--color-table-rail:var(--jiangsu-ink);--color-highlight:var(--jiangsu-peach);--color-highlight-soft:color-mix(in srgb, var(--jiangsu-peach) 20%, transparent)}.app-shell{width:min(1180px,100% - 40px);margin:0 auto;padding:32px 0 56px}.room-shell{flex-direction:column;width:calc(100% - 24px);height:100dvh;min-height:0;padding:16px 0;display:flex;overflow:hidden}.room-shell .room-layout{flex:auto;grid-template-rows:minmax(0,1fr);align-items:stretch;min-height:0;overflow:hidden}.room-shell .game-column{height:100%;min-height:0;overflow:hidden auto}.room-shell .hand-panel{z-index:10;flex:none;position:relative}.room-shell .table-panel{grid-template-columns:minmax(0, var(--table-history-table,1fr)) minmax(12px, 18px) minmax(200px, var(--table-history-history,.34fr));box-sizing:border-box;flex:none;grid-template-rows:minmax(190px,1fr) auto;grid-template-areas:"trick divider history""alerts divider history";gap:4px 10px;min-height:max-content;padding:12px;display:grid;overflow:hidden}.room-shell .table-panel.round-end{grid-template-rows:auto auto minmax(190px,1fr);grid-template-areas:"trick divider history""alerts divider history""finish divider history"}.room-shell .table-panel.no-table-alerts{grid-template-rows:minmax(190px,1fr);grid-template-areas:"trick divider history"}.room-shell .table-panel.round-end.no-table-alerts{grid-template-rows:auto minmax(190px,1fr);grid-template-areas:"trick divider history""finish divider history"}.room-shell .table-panel.history-suppressed{grid-template:"trick"minmax(190px,1fr)"alerts"/minmax(0,1fr);column-gap:0}.room-shell .table-panel.history-suppressed.round-end{grid-template-rows:minmax(190px,1fr) auto auto;grid-template-areas:"trick""alerts""finish"}.room-shell .table-panel.history-suppressed.no-table-alerts{grid-template-rows:minmax(190px,1fr);grid-template-areas:"trick"}.room-shell .table-panel.history-suppressed.round-end.no-table-alerts{grid-template-rows:auto minmax(190px,1fr);grid-template-areas:"finish""trick"}.room-shell .table-panel .table-alerts{grid-area:alerts;gap:7px;min-width:0;display:grid}.phase-notice,.anti-tribute-notice,.match-result{border:1px solid var(--color-border-strong);min-width:0;color:var(--color-text-muted);background:var(--color-inset);border-radius:10px;align-items:center;gap:9px;padding:7px 10px;font-size:.74rem;display:flex}.phase-notice strong,.anti-tribute-notice strong,.match-result strong{min-width:0;color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.phase-notice.cart-phase-notice strong{text-overflow:clip;white-space:normal;overflow:visible}.phase-notice-label{color:var(--color-text-muted);letter-spacing:.06em;text-transform:uppercase;flex:none;font-size:.62rem;font-weight:800}.anti-tribute-notice{border-color:var(--color-warning-soft);color:var(--color-warning);background:var(--color-warning-soft)}.anti-tribute-notice span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.match-result{border-color:var(--color-success-soft);background:var(--color-success-soft)}.low-hand-banner{border:1px solid var(--color-warning-soft);color:var(--color-warning);background:var(--color-warning-soft);border-radius:10px;align-items:center;gap:8px;padding:8px 10px;font-size:.76rem;display:flex}.low-hand-banner strong{color:var(--color-text-strong)}.low-hand-copy{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.match-result .eyebrow{flex:none}.room-shell .table-panel .public-table{grid-area:trick;min-width:0;margin:0;display:block;overflow:visible}.room-shell .table-panel .current-trick{grid-area:trick;min-width:0;min-height:0;overflow:hidden}.room-shell .table-panel .round-table{isolation:isolate;grid-area:trick;min-width:0;min-height:clamp(500px,52vw,520px);position:relative;overflow:visible}.room-shell .table-panel .player-action-view{scrollbar-width:thin;flex-direction:column;grid-area:trick;gap:12px;min-width:0;min-height:clamp(390px,38vw,520px);padding:2px;display:flex;overflow:auto}.player-action-heading{justify-content:space-between;align-items:baseline;gap:12px;min-width:0;display:flex}.player-action-heading>div{align-items:baseline;gap:8px;min-width:0;display:flex}.player-action-heading strong{min-width:0;color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.player-action-heading>.muted{overflow-wrap:anywhere;text-align:right;flex:0 auto;max-width:48%}.player-action-players{grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));align-items:start;gap:12px;min-width:0;margin:0;padding:0;list-style:none;display:grid}.player-action-entry{border:1px solid var(--color-border);border-left:3px solid var(--team-accent,var(--color-team-a));background:var(--color-panel);border-radius:13px;grid-template-rows:auto minmax(82px,auto);align-content:start;min-width:0;display:grid;overflow:hidden}.player-action-entry.current-turn{border-color:var(--color-turn);border-left-color:var(--team-accent,var(--color-team-a));box-shadow:0 0 0 2px var(--color-turn-soft), 0 0 18px var(--color-turn-soft)}.player-action-entry.up-next .player-action-card{outline:1px dashed var(--color-warning);outline-offset:-3px}.player-action-entry .player-action-card{box-sizing:border-box;background:0 0;border:0;border-radius:0;width:100%;min-height:76px;padding:10px 10px 9px}.player-action-entry.current-turn .player-action-card{box-shadow:none}.player-action-fan{border-top:1px solid var(--color-border);background:var(--color-inset);justify-content:center;align-items:center;min-width:0;min-height:82px;padding:4px 6px 8px;display:flex;overflow:hidden}.player-action-empty{color:var(--color-text-muted);text-align:center;font-size:.68rem;line-height:1.35}.player-action-fan .table-last-play-fan{justify-content:center;width:100%;max-width:100%;position:relative;inset:auto;transform:none}.player-action-fan .table-last-play-cards{max-width:100%;margin-inline:auto;padding-inline:14px;overflow:auto hidden}.player-action-fan .table-last-play-fan:hover .table-last-play-cards,.player-action-fan .table-last-play-fan:focus .table-last-play-cards{transform:none}.player-action-current-trick{min-width:0}.player-action-current-trick .current-trick{min-height:174px;margin:0}.round-table-surface{--table-seat-fan-gap:clamp(18px, 1.2vw, 20px);box-sizing:border-box;min-height:inherit;border:1px solid var(--color-border-strong);background:radial-gradient(circle at 50% 46%, color-mix(in srgb, var(--color-highlight) 20%, transparent), transparent 58%), linear-gradient(145deg, color-mix(in srgb, var(--color-table) 90%, var(--color-frame)), color-mix(in srgb, var(--color-frame) 88%, var(--color-shell-raised)));box-shadow:inset 0 0 0 12px var(--color-inset), inset 0 0 50px var(--color-shadow), 0 12px 24px var(--color-shadow);isolation:isolate;border-radius:50%;position:relative;overflow:visible}.round-table-surface:before{border:1px solid var(--color-focus-soft);border-radius:inherit;box-shadow:inset 0 0 0 7px var(--color-inset), inset 0 0 18px var(--color-highlight-soft);content:"";pointer-events:none;z-index:0;position:absolute;inset:13px}.table-history-toggle{border:1px solid var(--color-border-strong);min-height:30px;color:var(--color-text-muted);background:var(--color-control);white-space:nowrap;border-radius:8px;padding:0 9px;font-size:.68rem}.table-history-toggle:hover:not(:disabled){border-color:var(--color-focus);color:var(--color-text-strong);background:var(--color-control-hover)}.table-history-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.round-table>.table-history-toggle{z-index:6;position:absolute;top:8px;right:10px}.player-action-heading{align-items:center}.player-action-heading .table-history-toggle{flex:none}.table-seats{z-index:1;margin:0;padding:0;list-style:none;position:absolute;inset:0}.table-seat{top:var(--seat-y);left:var(--seat-x);width:clamp(82px, var(--table-seat-width,16%), 148px);z-index:1;position:absolute;transform:translate(-50%,-50%)}.round-table-center{z-index:3;box-sizing:border-box;pointer-events:none;justify-content:center;align-items:center;min-width:0;min-height:0;padding:clamp(12px,4%,28px);display:flex;position:absolute;inset:0}.round-table-center .current-trick{z-index:1;pointer-events:auto;width:clamp(160px,50% - 190px,280px);max-width:100%;min-height:0;max-height:calc(100% - 24px);margin:0;position:relative}.room-shell .table-panel .round-end-panel{z-index:2;grid-area:finish;min-width:0}.room-shell .table-panel .table-history-divider{grid-area:divider}.table-history-divider{z-index:8;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:999px;place-items:center;min-width:0;min-height:0;display:grid;position:relative}.table-history-divider-grip{background:var(--color-border-strong);width:4px;height:100%;min-height:48px;box-shadow:0 0 0 1px var(--color-inset);border-radius:999px;transition:width .16s,background .16s,box-shadow .16s;display:block}.table-history-divider:hover .table-history-divider-grip,.table-history-divider:focus-visible .table-history-divider-grip,.table-history-divider.is-dragging .table-history-divider-grip{background:var(--color-focus);width:8px;box-shadow:0 0 0 1px var(--color-inset), 0 0 14px var(--color-focus-soft)}.table-history-divider:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.room-shell .table-panel .played-table{box-sizing:border-box;flex-direction:column;grid-area:history;min-height:190px;margin:0;padding:10px;display:flex;overflow:hidden}.room-shell .table-panel .table-players{gap:8px;margin-top:8px;padding-bottom:2px;display:flex;overflow-x:auto}.room-shell .table-panel .table-player{flex:0 0 150px}.current-trick{border:1px solid var(--color-border-strong);background:radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--color-highlight) 16%, transparent), transparent 60%), var(--color-surface-overlay);border-radius:16px;flex-direction:column;justify-content:center;padding:14px;display:flex}.current-trick-heading,.public-table-heading{justify-content:space-between;align-items:center;gap:10px;display:flex}.current-trick-heading{text-align:center;justify-content:center}.current-trick-cards{scrollbar-width:thin;justify-content:safe center;align-items:center;min-width:0;min-height:124px;margin-top:8px;padding:12px 8px 16px;display:flex;overflow:auto hidden}.current-trick-fan{isolation:isolate;min-width:max-content;min-height:108px;padding-bottom:var(--fan-lift-max,0px);justify-content:center;align-items:flex-end;display:flex;position:relative}.current-trick-card{--card-corner-size:.7rem;--card-corner-rank-size:.82rem;--card-center-size:2.45rem;--card-royal-size:2.2rem;--card-role-size:.34rem;--card-use-size:.34rem;--card-used-as-center-size:2.1rem;box-sizing:border-box;width:70px;height:98px;margin-left:var(--fan-overlap,-38px);border:1px solid var(--color-card-border);color:var(--color-card-text);background:var(--color-card-face);box-shadow:0 4px 0 var(--color-card-shadow);transform-origin:bottom;transform:translateY(var(--fan-lift,0px)) rotate(var(--fan-rotation,0deg));border-radius:8px;flex:0 0 70px;position:relative;overflow:hidden}.current-trick-card:first-child{margin-left:0}.current-trick-card .card-face{width:100%;height:100%}.current-trick-card .card-corner{min-width:17px;font-size:var(--card-corner-size)}.current-trick-card .card-corner strong{font-size:var(--card-corner-rank-size)}.current-trick-card .card-corner-top{top:5px;left:5px}.current-trick-card .card-corner-bottom{bottom:5px;right:5px}.current-trick-card .card-center{font-size:var(--card-center-size)}.current-trick-card .card-center.royal-icon{font-size:var(--card-royal-size)}.current-trick-card .card-role-label{font-size:var(--card-role-size);top:3px;right:3px}.current-trick-card .card-use-label{font-size:var(--card-use-size);top:3px}.current-trick-card .card-face .card-center.used-as-center{font-size:var(--card-used-as-center-size)}.round-end-panel{border:1px solid var(--color-success-soft);background:var(--color-success-soft);border-radius:14px;grid-template-columns:minmax(0,1.2fr) minmax(150px,1fr) auto;align-items:center;gap:14px;padding:12px;display:grid}.finish-order{flex-wrap:wrap;gap:5px 10px;margin:7px 0 0;padding:0;list-style:none;display:flex}.finish-order li{color:var(--color-text);align-items:center;gap:5px;font-size:.76rem;display:inline-flex}.finish-order li span{width:19px;height:19px;color:var(--color-text-inverse);background:var(--color-success);border-radius:50%;place-items:center;font-size:.66rem;font-weight:800;display:grid}.round-team-levels{color:var(--color-text-muted);gap:4px;font-size:.74rem;display:grid}.room-shell .hand-panel{padding:14px 16px 12px}.room-shell .hand-panel .panel-heading{z-index:2;flex-wrap:wrap;align-items:center;margin-bottom:6px;position:relative}.room-shell .hand-panel .panel-heading>div:first-child{align-items:baseline;gap:8px;min-width:0;display:flex}.room-shell .hand-panel .panel-heading h2{margin:0;font-size:1rem;line-height:1.1}.room-shell .hand-panel .hand-panel-actions{gap:5px}.room-shell .hand-panel .hand-toolbar{z-index:2;flex-wrap:nowrap;align-items:center;gap:8px;margin:-2px 0 6px;position:relative}.room-shell .hand-panel>.hand-toolbar .hand-shortcuts{white-space:nowrap}.room-shell .hand-panel .hand{z-index:1;position:relative}.room-shell .hand-panel .hand-phase-notice,.room-shell .hand-panel .action-bar{z-index:2;position:relative}.room-shell .hand-panel .phase-action-notice{align-items:baseline;gap:8px;padding:6px 10px;display:flex}.room-shell .hand-panel .phase-action-notice strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.room-shell .hand-panel .phase-action-notice.cart-phase-notice strong{text-overflow:clip;white-space:normal;overflow:visible}.room-shell .hand-panel .action-bar{margin-top:10px}.landing{flex-direction:column;justify-content:center;min-height:100vh;display:flex}.review-shell{width:min(100% - 24px,1480px);min-height:100vh;margin:0 auto;padding:28px 0}.review-header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;display:flex}.review-header h1{margin:5px 0 0}.review-header p{color:var(--color-text-muted);margin:5px 0 0}.review-header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.review-readonly-badge{border:1px solid var(--color-success-soft);min-height:32px;color:var(--color-success);background:var(--color-success-soft);letter-spacing:.05em;text-transform:uppercase;border-radius:999px;align-items:center;padding:0 10px;font-size:.68rem;font-weight:800;display:inline-flex}.review-layout{grid-template-columns:minmax(0,1.35fr) minmax(320px,.8fr);align-items:stretch;gap:12px;min-width:0;display:grid}.review-table-panel,.review-events{min-width:0;padding:18px}.review-table-panel{flex-direction:column;min-height:620px;display:flex;overflow:visible}.review-events{flex-direction:column;min-height:620px;display:flex}.review-panel-heading{justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;display:flex}.review-panel-heading h2{color:var(--color-text-strong);margin:5px 0 0;font-size:1.18rem}.review-panel-heading>.muted{overflow-wrap:anywhere;text-align:right;flex:0 auto;max-width:48%;margin-top:5px}.review-round-table{min-width:0;min-height:clamp(500px,52vw,610px);margin-top:14px;position:relative}.review-round-table .round-table-surface{min-height:inherit}.review-round-table .round-table-center{inset:0}.review-table-seat{min-width:0}.review-table-seat.review-selected-seat{z-index:5}.review-selected-player{border-color:var(--color-turn);box-shadow:0 0 0 2px var(--color-turn-soft), 0 0 18px var(--color-turn-soft)}.review-seat-play-label{color:var(--color-highlight);font-weight:800}.review-seat-fan{cursor:default;pointer-events:auto}.review-seat-fan .review-card-fan{overflow:visible}.review-current-play{min-width:0;padding:10px}.review-current-play .current-trick-heading{flex-direction:column;gap:3px;min-width:0}.review-current-play .current-trick-heading>*{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.review-selection-note{color:var(--color-text-muted);font-size:.63rem}.review-current-play .current-trick-cards{min-height:116px;margin-top:4px;padding:7px 2px 10px}.review-current-play-meta{color:var(--color-text-muted);text-align:center;flex-wrap:wrap;justify-content:center;gap:4px 10px;font-size:.64rem;display:flex}.review-current-play-meta span:last-child{color:var(--color-warning);font-weight:700}.review-table-caption{max-width:70ch;color:var(--color-text-muted);margin:10px 2px 0;font-size:.7rem;line-height:1.45}.review-navigation{border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:7px;margin-top:12px;padding-bottom:10px;display:flex}.review-event-list{scrollbar-width:thin;flex:1 1 0;gap:7px;min-height:0;max-height:calc(100dvh - 230px);margin-top:10px;padding:2px 3px 8px 1px;display:grid;overflow:hidden auto}.review-event{border:1px solid var(--color-border-strong);width:100%;min-width:0;color:var(--color-text-muted);background:var(--color-surface-overlay);text-align:left;border-radius:11px;align-items:flex-start;padding:9px 10px;transition:transform .16s,border-color .16s,background .16s;display:flex}.review-event:hover{border-color:var(--color-border-strong);background:var(--color-control-hover)}.review-event.selected{border-color:var(--color-highlight);background:linear-gradient(145deg, var(--color-highlight-soft), var(--color-surface-overlay));box-shadow:0 0 0 1px var(--color-highlight-soft)}.review-event:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.review-event-marker{width:25px;height:25px;color:var(--color-success);background:var(--color-success-soft);border-radius:50%;flex:0 0 25px;place-items:center;font-size:.76rem;font-weight:900;display:grid}.review-play-event .review-event-marker{color:var(--color-warning);background:var(--color-warning-soft)}.review-event-main{flex:auto;gap:5px;min-width:0;margin-left:9px;display:grid}.review-event-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:3px 9px;min-width:0;display:flex}.review-event-heading strong{overflow-wrap:anywhere;min-width:0;color:var(--color-text-strong);font-size:.8rem}.review-event-number{color:var(--color-text-muted);font-variant-numeric:tabular-nums}.review-event-heading small{color:var(--color-text-muted);font-size:.65rem;line-height:1.35}.review-card-fan{min-width:0;max-width:100%;padding:5px 5px calc(8px + var(--fan-lift-max,0px));scrollbar-width:thin;justify-content:safe center;align-items:flex-end;display:flex;overflow:auto hidden}.review-card-fan-cards{min-width:max-content;min-height:var(--review-card-height,74px);padding-bottom:var(--fan-lift-max,0px);transform-origin:50%;align-items:flex-end;transition:transform .16s;display:flex;position:relative}.review-card{--card-corner-size:.48rem;--card-corner-rank-size:.54rem;--card-center-size:1.55rem;--card-royal-size:1.35rem;--card-role-size:.3rem;--card-use-size:.3rem;--card-used-as-center-size:1.25rem;box-sizing:border-box;flex:0 0 var(--review-card-width,52px);width:var(--review-card-width,52px);height:var(--review-card-height,74px);margin-left:calc(var(--fan-spacing,22px) - var(--review-card-width,52px));border:1px solid var(--color-card-border);color:var(--color-card-text);background:var(--color-card-face);box-shadow:0 3px 0 var(--color-card-shadow);transform-origin:bottom;transform:translateY(var(--fan-lift,0px)) rotate(var(--fan-rotation,0deg));border-radius:7px;position:relative;overflow:hidden}.review-card:first-child{margin-left:0}.review-card .card-face{width:100%;height:100%}.review-card-fan-seat{--review-card-width:34px;--review-card-height:48px;min-height:52px;padding:2px 2px calc(4px + var(--fan-lift-max,0px))}.review-card-fan-seat .review-card{--card-corner-size:.42rem;--card-corner-rank-size:.5rem;--card-center-size:1.25rem;--card-royal-size:1.12rem;--card-role-size:.25rem;--card-use-size:.25rem;--card-used-as-center-size:.92rem;box-shadow:0 2px 0 var(--color-card-shadow);border-radius:5px}.review-card-fan-seat .review-card .card-corner{min-width:10px;font-size:var(--card-corner-size)}.review-card-fan-seat .review-card .card-corner strong{font-size:var(--card-corner-rank-size)}.review-card-fan-seat .review-card .card-corner-top{top:3px;left:3px}.review-card-fan-seat .review-card .card-corner-bottom{bottom:3px;right:3px}.review-card-fan-seat .review-card .card-center{font-size:var(--card-center-size)}.review-card-fan-seat .review-card .card-role-label,.review-card-fan-seat .review-card .card-use-label{top:2px}.review-card-fan-seat .review-card .card-role-label{font-size:var(--card-role-size)}.review-card-fan-seat .review-card .card-use-label{font-size:var(--card-use-size)}.review-card-fan-seat .review-card .card-role-label{right:2px}.review-card-fan-seat .review-card .card-use-label{max-width:calc(100% - 5px);padding:1px 2px}.review-card-fan-seat .review-card .card-face .card-center.used-as-center{font-size:var(--card-used-as-center-size);left:3px;right:3px}.review-card-fan-timeline{--review-card-width:52px;--review-card-height:74px}.review-card-fan-timeline .review-card .card-corner{min-width:12px;font-size:var(--card-corner-size)}.review-card-fan-timeline .review-card .card-corner strong{font-size:var(--card-corner-rank-size)}.review-card-fan-timeline .review-card .card-corner-top{top:4px;left:4px}.review-card-fan-timeline .review-card .card-corner-bottom{bottom:4px;right:4px}.review-card-fan-timeline .review-card .card-center{font-size:var(--card-center-size)}.review-card-fan-timeline .review-card .card-role-label,.review-card-fan-timeline .review-card .card-use-label{font-size:var(--card-role-size);top:3px}.review-card-fan-timeline .review-card .card-role-label{right:3px}.review-card-fan-timeline .review-card .card-face .card-center.used-as-center{font-size:var(--card-used-as-center-size);left:4px;right:4px}.review-card-fan-selected{--review-card-width:70px;--review-card-height:98px;min-height:116px;padding:5px 5px calc(8px + var(--fan-lift-max,0px))}.review-card-fan-selected .review-card{--card-corner-size:.7rem;--card-corner-rank-size:.82rem;--card-center-size:2.45rem;--card-royal-size:2.2rem;--card-role-size:.34rem;--card-use-size:.34rem;--card-used-as-center-size:2.1rem;box-shadow:0 4px 0 var(--color-card-shadow);border-radius:8px}.review-card-fan-selected .review-card .card-corner{min-width:17px;font-size:var(--card-corner-size)}.review-card-fan-selected .review-card .card-corner strong{font-size:var(--card-corner-rank-size)}.review-card-fan-selected .review-card .card-corner-top{top:5px;left:5px}.review-card-fan-selected .review-card .card-corner-bottom{bottom:5px;right:5px}.review-card-fan-selected .review-card .card-center{font-size:var(--card-center-size)}.review-card-fan-seat .review-card .card-center.royal-icon,.review-card-fan-timeline .review-card .card-center.royal-icon,.review-card-fan-selected .review-card .card-center.royal-icon,.review-card-event .card-center.royal-icon{font-size:var(--card-royal-size)}.review-card-fan-selected .review-card .card-role-label,.review-card-fan-selected .review-card .card-use-label{top:3px}.review-card-fan-selected .review-card .card-role-label{font-size:var(--card-role-size)}.review-card-fan-selected .review-card .card-use-label{font-size:var(--card-use-size)}.review-card-fan-selected .review-card .card-face .card-center.used-as-center{font-size:var(--card-used-as-center-size)}.review-card-unknown{color:var(--color-card-unknown-text);background:linear-gradient(135deg, var(--color-card-face), var(--color-card-unknown));text-align:center;place-items:center;padding:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;display:grid}.review-card-unknown-id{font-size:.76rem;font-weight:800}.review-card-unknown-use{color:var(--color-warning);text-overflow:ellipsis;white-space:nowrap;font-size:.38rem;font-weight:900;line-height:1;position:absolute;top:3px;left:2px;right:2px;overflow:hidden}.review-card-fan-seat .review-card-unknown-id{font-size:.5rem}.review-card-fan-seat .review-card-unknown-use{font-size:.27rem;top:2px}.review-card-fan-selected .review-card-unknown-id{font-size:1rem}.review-card-fan-selected .review-card-unknown-use{font-size:.45rem;top:4px}.review-card-event{--card-corner-size:.48rem;--card-corner-rank-size:.54rem;--card-center-size:1.55rem;--card-royal-size:1.35rem;--card-role-size:.3rem;--card-use-size:.3rem;--card-used-as-center-size:1.25rem;border:1px solid var(--color-card-border);width:44px;height:62px;color:var(--color-card-text);background:var(--color-card-face);border-radius:5px;flex:0 0 44px;margin-left:8px;display:block;position:relative;overflow:hidden}.review-card-event .card-face{width:100%;height:100%}.review-card-event .card-corner{min-width:10px;font-size:var(--card-corner-size)}.review-card-event .card-corner strong{font-size:var(--card-corner-rank-size)}.review-card-event .card-corner-top{top:3px;left:3px}.review-card-event .card-corner-bottom{bottom:3px;right:3px}.review-card-event .card-center{font-size:var(--card-center-size)}.review-card-event .card-role-label{font-size:var(--card-role-size);top:3px;right:3px}.card-identity-fallback{color:var(--color-card-unknown-text);text-align:center;align-content:center;place-items:center;gap:2px;padding:3px;font-size:.48rem;line-height:1.05;display:grid}.card-identity-fallback strong{overflow-wrap:anywhere;font-size:.55rem}.card-identity-fallback span{overflow-wrap:anywhere}.card-identity-hidden{max-width:8rem;color:var(--color-text-muted);overflow-wrap:anywhere;text-align:right;align-self:center;margin-left:8px;font-size:.64rem}.hero-copy{max-width:720px;margin-bottom:42px}.hero-copy h1{max-width:680px;color:var(--color-text-strong);letter-spacing:-.07em;margin:14px 0 18px;font-size:clamp(2.7rem,7vw,5.8rem);line-height:.98}.hero-copy p{max-width:560px;color:var(--color-text-muted);font-size:1.1rem;line-height:1.7}.eyebrow{color:var(--color-highlight);letter-spacing:.16em;text-transform:uppercase;font-size:.72rem;font-weight:800}.entry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.panel{border:1px solid var(--color-border);background:var(--color-panel);box-shadow:0 24px 60px var(--color-shadow);border-radius:22px}.entry-panel{flex-direction:column;gap:18px;padding:28px;display:flex}.panel h2{color:var(--color-text-strong);letter-spacing:-.03em;margin:5px 0 0;font-size:1.35rem}label{color:var(--color-text-muted);flex-direction:column;gap:8px;font-size:.84rem;font-weight:700;display:flex}input,select{box-sizing:border-box;border:1px solid var(--color-border-strong);width:100%;color:var(--color-text-strong);background:var(--color-control);font:inherit;border-radius:12px;padding:13px 14px}input:focus,select:focus{outline:2px solid var(--color-focus);outline-offset:2px}button{cursor:pointer;font:inherit;border:0;border-radius:11px;font-weight:800;transition:transform .16s,opacity .16s,background .16s}button:not(.playing-card):hover:not(:disabled){transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.42}.primary-button,.secondary-button,.quiet-button{min-height:44px;padding:0 17px}.primary-button{color:var(--color-text-inverse);background:var(--color-action)}.action-bar .play-action-button{color:var(--color-text-inverse);background:var(--color-focus)}.action-bar .play-action-button:hover:not(:disabled){background:color-mix(in srgb, var(--color-focus) 84%, var(--color-text-inverse))}.secondary-button{color:var(--color-text);background:var(--color-control-hover)}.quiet-button{color:var(--color-text-muted);background:var(--color-control)}.connection-note{color:var(--color-text-subtle);margin-top:24px;font-size:.82rem}.error-banner{border:1px solid var(--color-danger);color:var(--color-text);background:var(--color-danger-soft);border-radius:12px;justify-content:space-between;align-items:center;gap:18px;margin:0 0 18px;padding:12px 14px;display:flex}.error-banner button{color:inherit;background:0 0;font-size:1.2rem}.room-header{box-sizing:border-box;border:1px solid var(--color-border);background:var(--color-panel);border-radius:14px;flex:none;grid-template-columns:minmax(0,auto) minmax(132px,auto) minmax(0,1fr) minmax(0,auto);grid-template-areas:"identity turn players actions";align-items:center;gap:10px 14px;width:100%;min-width:0;margin-bottom:12px;padding:8px 10px;display:grid}.room-header .room-identity{grid-area:identity}.room-header .header-turn{grid-area:turn}.room-header .header-players{grid-area:players}.room-header .header-actions{grid-area:actions}.room-header>*{min-width:0;max-width:100%}.room-identity{min-width:0}.room-code{color:var(--color-text-strong);letter-spacing:.12em;margin-top:2px;font-size:clamp(1.15rem,2.4vw,1.55rem);line-height:1;display:block}.header-players{text-align:center;flex-direction:column;align-items:center;gap:6px;min-width:0;max-width:100%;display:flex;overflow:hidden}.header-table-summary{overflow-wrap:anywhere;max-width:100%;color:var(--color-text-muted);letter-spacing:.04em;text-transform:uppercase;align-self:center;font-size:.68rem}.header-turn{border:1px solid var(--color-border-strong);background:var(--color-inset);border-radius:11px;gap:2px;min-width:154px;padding:7px 11px;display:grid}.header-turn strong{color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;overflow:hidden}.header-turn small{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.64rem}.header-turn.your-turn{border-color:var(--color-turn);background:var(--color-turn-soft);box-shadow:0 0 0 1px var(--color-focus-soft)}.header-turn.your-turn small{color:var(--color-turn)}.header-turn:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.header-players-meta{overflow-wrap:anywhere;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;max-width:100%;display:flex}.header-players-meta .phase-badge{justify-content:center;align-items:center;padding:3px 7px;font-size:.6rem;line-height:1;display:inline-flex}.level-badge{border:1px solid var(--color-warning-soft);color:var(--color-warning);background:var(--color-warning-soft);border-radius:999px;justify-content:center;align-items:center;padding:3px 7px;font-size:.6rem;font-weight:800;line-height:1;display:inline-flex}.participant-strip{overscroll-behavior-inline:contain;scrollbar-width:thin;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:6px;width:100%;min-width:0;max-width:100%;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.participant-chip{box-sizing:border-box;border:1px solid var(--color-border);min-width:min(154px,100%);max-width:100%;min-height:44px;color:var(--color-text);background:var(--color-inset);border-radius:10px;flex:none;align-items:center;gap:6px;padding:5px 8px;font-size:.78rem;line-height:1.15;display:flex}.participant-chip.offline{opacity:.62}.participant-chip.current-turn{border:2px solid var(--color-turn);background:var(--color-turn-soft);min-width:min(184px,100%);box-shadow:0 0 0 2px var(--color-focus-soft), 0 0 18px var(--color-focus-soft)}.participant-chip.current-turn .participant-name{color:var(--color-text-strong)}.participant-chip.current-turn .participant-chip-body small{color:var(--color-turn);font-weight:900}.participant-chip-body{flex-direction:column;gap:1px;min-width:0;display:flex}.participant-name{text-overflow:ellipsis;overflow-wrap:anywhere;max-width:9.5rem;font-weight:700;overflow:hidden}.participant-chip small{overflow-wrap:anywhere;max-width:100%;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.62rem;line-height:1.2;display:block;overflow:visible}.participant-chip.current-turn small{color:var(--color-turn)}.connection-dot{background:var(--color-text-subtle);border-radius:50%;flex:none;width:6px;height:6px}.connection-dot.online{background:var(--color-success);box-shadow:0 0 0 2px var(--color-success-soft)}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;min-width:0;max-width:100%;display:flex}.compact-button{border-radius:8px;min-height:32px;padding:0 11px;font-size:.74rem}.bot-delay-control,.history-visibility-control{box-sizing:border-box;border:1px solid var(--color-border);min-width:0;max-width:100%;min-height:32px;color:var(--color-text-muted);background:var(--color-control);letter-spacing:.04em;white-space:nowrap;border-radius:8px;flex-direction:row;flex:0 auto;align-items:center;gap:6px;padding:0 8px;font-size:.68rem;font-weight:800;line-height:1.2;display:inline-flex}.bot-delay-control select{width:auto;min-width:0;max-width:100%;min-height:32px;color:var(--color-text-strong);font:inherit;background:0 0;border:0;border-radius:6px;padding:0 5px;line-height:1.2}.bot-delay-control:hover,.history-visibility-control:hover{border-color:var(--color-border-strong);background:var(--color-control-hover)}.bot-delay-control:focus-within,.history-visibility-control:focus-within{border-color:var(--color-focus);outline:2px solid var(--color-focus);outline-offset:2px}.bot-delay-control>span,.history-visibility-control>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.bot-delay-control select:focus,.history-visibility-control input:focus{outline:none}.history-visibility-control input{width:16px;height:16px;min-height:16px;accent-color:var(--color-focus);background:0 0;border:0;border-radius:4px;flex:0 0 16px;margin:0;padding:0}.status-pill,.role-pill,.phase-badge,.selection-count{color:var(--color-text-muted);background:var(--color-control);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:7px 11px;font-size:.72rem;font-weight:800}.status-pill.connected{color:var(--color-success);background:var(--color-success-soft)}.status-pill.connecting{color:var(--color-warning);background:var(--color-warning-soft)}.room-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;display:grid}.table-panel,.hand-panel,.waiting-panel,.lobby-teams-panel{padding:22px}.lobby-teams-panel{gap:16px;display:grid}.lobby-teams-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.lobby-teams-heading h2{margin:4px 0 0}.lobby-teams-heading p{max-width:360px;color:var(--color-text-muted);text-align:right;margin:3px 0 0;font-size:.78rem;line-height:1.45}.lobby-team-board{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.lobby-team-column{border:1px solid var(--color-border);background:var(--color-surface-overlay);border-radius:12px;align-content:start;gap:10px;min-width:0;padding:12px;display:grid}.lobby-team-unassigned{background:var(--color-inset);grid-column:1/-1}.lobby-team-column-heading{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;gap:10px;padding-bottom:8px;display:flex}.lobby-team-column-heading h3{color:var(--color-text-strong);margin:3px 0 0;font-size:.88rem}.team-capacity-status{color:var(--color-text-muted);text-align:right;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.team-capacity-status strong{color:var(--color-text-strong);font-size:.8rem}.team-capacity-status small{font-size:.64rem}.lobby-team-players{gap:8px;display:grid}.lobby-team-unassigned .lobby-team-players{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.lobby-team-empty{border:1px dashed var(--color-border);color:var(--color-text-muted);text-align:center;border-radius:8px;margin:0;padding:8px;font-size:.72rem}.lobby-team-player{border:1px solid var(--color-border);background:var(--color-inset);border-radius:9px;justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:7px 8px;display:flex}.lobby-team-player-name{flex-direction:column;gap:2px;min-width:0;display:flex}.lobby-team-player-name strong{color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.lobby-team-player-name small,.lobby-team-note{color:var(--color-text-muted);font-size:.68rem}.lobby-team-controls{flex-wrap:wrap;justify-content:flex-end;gap:4px;min-width:0;display:flex}.team-choice-button{border:1px solid var(--color-border-strong);color:var(--color-text-muted);background:var(--color-control);border-radius:8px;padding:6px 8px;font-size:.66rem;font-weight:800;transition:border-color .12s,background .12s,color .12s}.team-choice-button:hover:not(:disabled){border-color:var(--color-focus);color:var(--color-text-strong)}.team-choice-button.selected{border-color:var(--color-highlight);color:var(--color-text-strong);background:var(--color-highlight-soft)}.team-choice-button:disabled{cursor:not-allowed;opacity:.42}.lobby-team-note{margin:0}.panel-heading{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:22px;display:flex}.phase-badge.playing{color:var(--color-success);background:var(--color-success-soft)}.phase-badge.finished{color:var(--color-warning);background:var(--color-warning-soft)}.game-column{flex-direction:column;gap:12px;min-width:0;display:flex}.zone-summary{grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:10px;display:grid}.zone-card{border:1px solid var(--color-border);color:var(--color-text-muted);background:var(--color-inset);border-radius:14px;flex-direction:column;gap:4px;padding:13px;font-size:.72rem;display:flex}.zone-card strong{color:var(--color-text-strong);font-size:1.5rem}.zone-card small{color:var(--color-text-subtle)}.round-status{border:1px solid var(--color-border-strong);background:var(--color-surface-overlay);border-radius:14px;justify-content:space-between;align-items:center;gap:18px;margin:18px 0 0;padding:13px 15px;display:flex}.round-status:focus-visible,.played-table:focus-visible,.played-set-list:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.round-status strong{color:var(--color-text-strong);margin-top:4px;font-size:1.05rem;display:block}.round-status-detail{color:var(--color-text-muted);flex-wrap:wrap;justify-content:flex-end;gap:8px 16px;font-size:.78rem;display:flex}.public-table{margin-top:28px}.table-players{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:12px;display:grid}.table-player{box-sizing:border-box;border-left:3px solid var(--team-accent,var(--color-team-a));min-width:0;color:var(--color-text-muted);background:var(--color-surface-deep);border-radius:11px;grid-template-columns:27px minmax(0,1fr);align-items:center;gap:6px;padding:7px 8px;font-size:.74rem;line-height:1.1;display:grid}.table-player.current-player{outline:2px solid var(--color-focus);outline-offset:2px}.table-seat.current-turn,.table-seat.up-next{z-index:3}.table-seat.current-turn .table-player{border-color:var(--color-turn);border-left-color:var(--team-accent,var(--color-team-a));box-shadow:0 0 0 2px var(--color-turn-soft), 0 0 18px var(--color-turn-soft)}.table-seat.up-next .table-player{outline:1px dashed var(--color-warning);outline-offset:1px;box-shadow:0 0 0 1px var(--color-warning-soft)}.table-seat:hover,.table-seat:focus-within{z-index:6}.table-seat .table-player strong{min-width:0;color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;line-height:1.1;overflow:hidden}.table-last-play-fan{z-index:2;cursor:zoom-in;isolation:isolate;-webkit-user-select:none;user-select:none;outline:none;width:max-content;max-width:calc(100vw - 24px);padding:2px;display:flex;position:absolute}.table-last-play-fan.inward-left{top:50%;right:calc(100% + var(--table-seat-fan-gap));transform:translateY(-50%)}.table-last-play-fan.inward-right{top:50%;left:calc(100% + var(--table-seat-fan-gap));transform:translateY(-50%)}.table-last-play-fan.inward-up{bottom:calc(100% + var(--table-seat-fan-gap));left:50%;transform:translate(-50%)}.table-last-play-fan.inward-down{top:calc(100% + var(--table-seat-fan-gap));left:50%;transform:translate(-50%)}.table-last-play-fan.inward-up-left{right:calc(100% + var(--table-seat-fan-gap));bottom:calc(100% + var(--table-seat-fan-gap))}.table-last-play-fan.inward-up-right{bottom:calc(100% + var(--table-seat-fan-gap));left:calc(100% + var(--table-seat-fan-gap))}.table-last-play-fan.inward-down-left{top:calc(100% + var(--table-seat-fan-gap));right:calc(100% + var(--table-seat-fan-gap))}.table-last-play-fan.inward-down-right{top:calc(100% + var(--table-seat-fan-gap));left:calc(100% + var(--table-seat-fan-gap))}.table-last-play-cards{box-sizing:border-box;min-height:52px;padding:3px 4px calc(6px + var(--fan-lift-max,0px));transform-origin:50%;justify-content:center;align-items:flex-end;transition:transform .16s;display:flex}.table-last-play-fan:hover .table-last-play-cards,.table-last-play-fan:focus .table-last-play-cards,.table-last-play-fan:hover .review-card-fan-cards,.table-last-play-fan:focus .review-card-fan-cards{transform:scale(1.6)}.table-last-play-fan:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.table-last-play-card{--card-corner-size:.42rem;--card-corner-rank-size:.5rem;--card-center-size:1.25rem;--card-royal-size:1.12rem;--card-role-size:.25rem;--card-use-size:.25rem;--card-used-as-center-size:.92rem;width:34px;height:48px;margin-left:var(--fan-overlap,-18px);border:1px solid var(--color-card-border);color:var(--color-card-text);background:var(--color-card-face);box-shadow:0 2px 0 var(--color-card-shadow);transform-origin:bottom;transform:translateY(var(--fan-lift,0px)) rotate(var(--fan-rotation,0deg));border-radius:5px;flex:0 0 34px;position:relative;overflow:hidden}.table-last-play-card:first-child{margin-left:0}.table-last-play-card .card-corner{min-width:10px;font-size:var(--card-corner-size)}.table-last-play-card .card-corner strong{font-size:var(--card-corner-rank-size)}.table-last-play-card .card-corner-top{top:3px;left:3px}.table-last-play-card .card-corner-bottom{bottom:3px;right:3px}.table-last-play-card .card-center{font-size:var(--card-center-size)}.table-last-play-card .card-center.royal-icon{font-size:var(--card-royal-size)}.table-last-play-card .card-role-label,.table-last-play-card .card-use-label{top:2px}.table-last-play-card .card-role-label{font-size:var(--card-role-size);right:2px}.table-last-play-card .card-use-label{max-width:calc(100% - 5px);font-size:var(--card-use-size);padding:1px 2px}.table-last-play-card .card-face .card-center.used-as-center{font-size:var(--card-used-as-center-size);left:3px;right:3px}.table-player small{min-width:0;color:var(--color-text-muted);grid-column:2;font-size:.6rem;line-height:1.1}.table-player-meta{white-space:normal;flex-wrap:wrap;align-items:center;gap:1px 4px;display:flex;overflow:hidden}.table-player-meta>span{flex:none}.table-team-label{color:var(--team-accent,var(--color-team-a));font-weight:800}.table-turn-label{color:var(--color-turn);text-transform:uppercase;font-weight:900}.table-you-label{color:var(--color-highlight);text-transform:uppercase;font-weight:900}.table-next-label{color:var(--color-warning);background:var(--color-inset);letter-spacing:.02em;text-transform:uppercase;white-space:nowrap;border:1px solid;border-radius:999px;align-items:center;padding:1px 3px;font-size:.52rem;font-weight:900;line-height:1;display:inline-flex}.avatar{width:27px;height:27px;color:var(--color-text-inverse);background:var(--team-accent,var(--color-team-a));border-radius:8px;place-items:center;font-size:.76rem;font-weight:900;display:grid}.played-table{border:1px solid var(--color-border-strong);background:var(--color-inset);border-radius:16px;margin-top:26px;padding:15px}.played-table-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.played-set-list{gap:10px;min-height:0;margin-top:12px;display:grid}.room-shell .table-panel .played-set-list{scrollbar-width:thin;flex-direction:column;flex:1 1 0;align-items:stretch;gap:10px;min-width:0;margin-top:8px;padding:2px 2px 8px;display:flex;overflow:hidden auto}.room-shell .table-panel .played-set-cards{--fan-overlap:-30px}.room-shell .table-panel .played-set-list>*{flex:none;width:100%}.played-set{box-sizing:border-box;border:1px solid var(--color-border-strong);background:var(--color-surface-overlay);border-radius:12px;align-self:flex-start;min-width:0;padding:9px 10px 14px;overflow:hidden}.played-set-heading{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8px;display:grid}.played-set-player{gap:2px;min-width:0;display:grid}.played-set-meta{text-align:center;justify-items:center;gap:2px;min-width:0;display:grid}.played-set-heading strong{color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.played-set-heading small,.played-set-order{color:var(--color-text-muted);font-size:.67rem}.played-set-heading .played-set-wild{max-width:100%;color:var(--color-warning);overflow-wrap:anywhere;text-overflow:ellipsis;white-space:normal;font-weight:700;overflow:hidden}.played-set-order{color:var(--color-highlight);white-space:nowrap;justify-self:end;font-weight:800}.played-skip-event{border:1px dashed var(--color-border-strong);min-height:34px;color:var(--color-text-muted);background:var(--color-surface-overlay);border-radius:10px;align-items:center;gap:8px;padding:7px 9px;font-size:.74rem;display:flex}.played-skip-event strong{color:var(--color-text-strong)}.played-skip-event small{color:var(--color-text-subtle);margin-left:auto;font-size:.64rem}.played-skip-icon{width:21px;height:21px;color:var(--color-warning);background:var(--color-warning-soft);border-radius:50%;flex:0 0 21px;place-items:center;font-size:1rem;font-weight:900;display:grid}.history-round-event,.history-text-event,.history-card-event{box-sizing:border-box;border:1px solid var(--color-border-strong);width:100%;max-width:none;min-height:44px;color:var(--color-text-muted);background:var(--color-surface-overlay);border-radius:10px;align-items:center;gap:8px;padding:8px 10px;font-size:.82rem;display:flex}.history-round-event{border-color:var(--color-success-soft);color:var(--color-success);background:var(--color-success-soft)}.history-round-event strong,.history-text-event strong,.history-card-event strong{color:var(--color-text-strong)}.history-round-event span:last-child,.history-text-event span:last-child,.history-card-event>span:not(.history-event-icon){text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.history-event-icon{width:25px;height:25px;color:var(--color-success);background:var(--color-success-soft);border-radius:50%;flex:0 0 25px;place-items:center;font-size:.82rem;font-weight:900;display:grid}.anti-history-event .history-event-icon{color:var(--color-warning);background:var(--color-warning-soft)}.history-mini-card{--card-corner-size:.48rem;--card-corner-rank-size:.54rem;--card-center-size:1.55rem;--card-royal-size:1.35rem;--card-role-size:.36rem;--card-use-size:.34rem;--card-used-as-center-size:1.25rem;border:1px solid var(--color-card-border);width:40px;height:56px;color:var(--color-card-text);background:var(--color-card-face);border-radius:4px;flex:0 0 40px;margin-left:auto;position:relative;overflow:hidden}.history-mini-card .card-face{width:100%;height:100%}.history-mini-card .card-corner{min-width:10px;font-size:var(--card-corner-size)}.history-mini-card .card-corner strong{font-size:var(--card-corner-rank-size)}.history-mini-card .card-corner-top{top:3px;left:3px}.history-mini-card .card-corner-bottom{bottom:3px;right:3px}.history-mini-card .card-center{font-size:var(--card-center-size)}.history-mini-card .card-center.royal-icon{font-size:var(--card-royal-size)}.history-mini-card .card-role-label{font-size:var(--card-role-size);padding:1px 2px;top:3px;right:3px}.played-set-cards{box-sizing:border-box;min-width:0;max-width:100%;min-height:78px;padding:4px 5px calc(13px + var(--fan-lift-max,0px));justify-content:safe center;align-items:flex-end;margin-top:6px;display:flex;overflow:auto hidden}.played-set-card{--card-corner-size:.62rem;--card-corner-rank-size:.72rem;--card-center-size:2rem;--card-royal-size:1.8rem;--card-role-size:.34rem;--card-use-size:.34rem;--card-used-as-center-size:1.45rem;width:52px;height:74px;margin-left:var(--fan-overlap,-30px);border:1px solid var(--color-card-border);color:var(--color-card-text);background:var(--color-card-face);box-shadow:0 3px 0 var(--color-card-shadow);transform-origin:bottom;transform:translateY(var(--fan-lift,0px)) rotate(var(--fan-rotation,0deg));border-radius:7px;flex:0 0 52px;position:relative}.played-set-card:first-child{margin-left:0}.played-set-card .card-corner{min-width:15px;font-size:var(--card-corner-size)}.played-set-card .card-corner strong{font-size:var(--card-corner-rank-size)}.played-set-card .card-corner-top{top:5px;left:5px}.played-set-card .card-corner-bottom{bottom:5px;right:5px}.played-set-card .card-center{font-size:var(--card-center-size)}.played-set-card .card-center.royal-icon{font-size:var(--card-royal-size)}.hand-panel{background:var(--color-panel)}.hand-toolbar{flex-wrap:wrap;align-items:end;gap:10px;margin:-4px 0 14px;display:flex}.hand-toolbar label{letter-spacing:.03em;text-transform:uppercase;gap:5px;min-width:125px;font-size:.7rem}.hand-toolbar select{min-height:38px;padding:8px 10px;font-size:.78rem}.hand-toolbar input[type=range]{width:105px;min-height:30px;accent-color:var(--color-focus);padding:0}.hand-toolbar output{min-width:1.5em;color:var(--color-text-strong);text-align:center;font-size:.75rem}.group-notice{z-index:2;border:1px solid var(--color-success-soft);color:var(--color-success);background:var(--color-success-soft);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin:-4px 0 8px;padding:7px 9px;font-size:.72rem;font-weight:800;display:flex;position:relative}.group-notice>span{min-width:0}.notice-close{width:26px;height:26px;color:inherit;background:0 0;border-radius:7px;flex:none;place-items:center;padding:0;font-size:1.05rem;line-height:1;display:grid}.notice-close:hover:not(:disabled){background:var(--color-focus-soft)}.card-groups{--preset-slot-width:44px;--preset-slot-height:36px;--preset-slot-padding:4px;--preset-key-size:24px;--preset-key-font-size:.78rem;--preset-count-font-size:.56rem;--preset-saved-mark-size:.72rem;--preset-preview-padding:15px;--preset-preview-max-width:min(520px, calc(100vw - 24px));--preset-preview-max-height:min(380px, calc(100dvh - 24px));--preset-preview-heading-size:.92rem;--preset-preview-meta-size:.76rem;--preset-preview-label-padding:5px 8px;--preset-preview-label-size:.82rem;z-index:2;border-top:1px solid var(--color-border);margin:-2px 0 10px;padding-top:8px;position:relative}.card-groups.preset-slots-small{--preset-slot-width:32px;--preset-slot-height:27px;--preset-slot-padding:2px;--preset-key-size:17px;--preset-key-font-size:.62rem;--preset-count-font-size:.46rem;--preset-saved-mark-size:.56rem}.card-groups.preset-slots-medium{--preset-slot-width:36px;--preset-slot-height:30px;--preset-slot-padding:3px;--preset-key-size:19px;--preset-key-font-size:.68rem;--preset-count-font-size:.5rem;--preset-saved-mark-size:.64rem}.card-groups.preset-preview-small{--preset-preview-padding:8px;--preset-preview-max-width:min(360px, calc(100vw - 24px));--preset-preview-max-height:min(260px, calc(100dvh - 24px));--preset-preview-heading-size:.75rem;--preset-preview-meta-size:.64rem;--preset-preview-label-padding:3px 5px;--preset-preview-label-size:.65rem}.card-groups.preset-preview-medium{--preset-preview-padding:12px;--preset-preview-max-width:min(440px, calc(100vw - 24px));--preset-preview-max-height:min(320px, calc(100dvh - 24px));--preset-preview-heading-size:.82rem;--preset-preview-meta-size:.7rem;--preset-preview-label-padding:4px 6px;--preset-preview-label-size:.72rem}.card-groups-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.card-groups-heading>div{align-items:baseline;gap:8px;min-width:0;display:flex}.card-groups-heading strong{color:var(--color-text-strong);font-size:.74rem}.card-groups-heading>.muted{text-align:right;font-size:.65rem}.card-groups-grid{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex;overflow:visible}.card-group-slot{box-sizing:border-box;width:var(--preset-slot-width);height:var(--preset-slot-height);flex:0 0 var(--preset-slot-width);border:1px solid var(--color-border);min-width:0;padding:var(--preset-slot-padding);color:var(--color-text-muted);background:var(--color-inset);text-align:left;border-radius:8px;place-items:center;display:grid;position:relative}.card-group-slot.saved{border-color:var(--color-success-soft);background:var(--color-success-soft);cursor:pointer}.card-group-slot.saved:hover,.card-group-slot.saved:focus-visible{border-color:var(--color-focus);background:var(--color-highlight-soft)}.card-group-slot:disabled{color:var(--color-text-subtle);cursor:default;opacity:.72}.card-group-slot-heading{justify-content:space-between;align-items:center;gap:2px;width:100%;display:flex}.card-group-count{color:var(--color-text-muted);font-size:var(--preset-count-font-size);line-height:1;display:inline}.card-group-key{align-items:center;gap:2px;display:inline-flex}.card-group-key.saved{min-width:var(--preset-key-size);justify-content:center}.card-group-key kbd{width:var(--preset-key-size);height:var(--preset-key-size);border:1px solid var(--color-border-strong);color:var(--color-text-strong);background:var(--color-control);font-size:var(--preset-key-font-size);border-radius:5px;place-items:center;font-weight:900;display:inline-grid}.card-group-saved-mark{color:var(--color-success);font-size:var(--preset-saved-mark-size);font-weight:900;line-height:1}.card-group-popover{z-index:2000;box-sizing:border-box;width:fit-content;min-width:0;max-width:var(--preset-preview-max-width);max-height:var(--preset-preview-max-height);border:1px solid var(--color-border-strong);padding:var(--preset-preview-padding);color:var(--color-text);background:var(--color-control);box-shadow:0 12px 28px var(--color-shadow);opacity:1;pointer-events:auto;border-radius:10px;transition:opacity .12s,transform .12s;position:fixed;top:0;left:0;overflow:auto;transform:none}.card-group-popover-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:7px;display:flex}.card-group-popover-heading strong{color:var(--color-text-strong);font-size:var(--preset-preview-heading-size)}.card-group-popover-heading small{color:var(--color-success);font-size:var(--preset-preview-meta-size)}.card-group-card-list{flex-wrap:wrap;align-content:flex-start;gap:5px;display:flex}.card-group-card-label{border:1px solid var(--color-border-strong);padding:var(--preset-preview-label-padding);color:var(--color-text);background:var(--color-control);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--preset-preview-label-size);white-space:nowrap;border-radius:4px;line-height:1.15}.hand-phase-notice{border:1px solid var(--color-success-soft);background:var(--color-success-soft);border-radius:10px;gap:3px;margin-top:10px;padding:8px 10px;display:grid}.hand-phase-notice strong{color:var(--color-text-strong);font-size:.78rem}.hand-query-header{border:1px solid var(--color-focus-soft);background:var(--color-inset);border-radius:10px;flex:360px;gap:5px;min-width:min(100%,280px);padding:8px 10px;display:grid}.hand-query-heading{align-items:baseline;gap:8px;min-width:0;display:flex}.hand-query-heading strong{min-width:0;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;overflow:hidden}.hand-query-header>.muted{font-size:.64rem;line-height:1.1}.hand-query-buttons{flex-wrap:wrap;gap:7px;display:flex}.hand-query-button{border:1px solid var(--color-border-strong);min-width:105px;min-height:28px;color:var(--color-text-muted);background:var(--color-control);text-overflow:ellipsis;white-space:nowrap;border-radius:8px;flex:105px;padding:6px 10px;font-size:.68rem;line-height:1.15;overflow:hidden}.hand-query-button:disabled{cursor:not-allowed;opacity:.62}.hand-query-button:hover:not(:disabled),.hand-query-button:focus-visible{border-color:var(--color-focus);color:var(--color-text-strong);background:var(--color-control-hover)}.hand-shortcuts{color:var(--color-text-muted);align-self:center;margin-left:auto;font-size:.7rem}.hand-panel-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;display:flex}.modal-backdrop{z-index:100;background:var(--color-overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal-panel{border:1px solid var(--color-border-strong);background:var(--color-panel);width:min(560px,100%);max-height:min(720px,100dvh - 48px);box-shadow:0 28px 90px var(--color-shadow-heavy);border-radius:18px;padding:22px;overflow:auto}.modal-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.modal-heading h2{margin-top:5px}.modal-close{min-width:34px;min-height:34px;padding:0;font-size:1.35rem;line-height:1}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px;display:grid}.theme-selector{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;display:grid}.theme-selector legend{color:var(--color-text-muted);margin-bottom:8px;font-size:.72rem;font-weight:700}.theme-option{border:1px solid var(--color-border-strong);min-width:0;color:var(--color-text);background:var(--color-inset);cursor:pointer;border-radius:12px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;padding:12px;display:grid}.theme-option:hover{border-color:var(--color-focus);background:var(--color-focus-soft)}.theme-option.selected{border-color:var(--color-highlight);box-shadow:0 0 0 1px var(--color-highlight-soft)}.theme-option:focus-within{outline:2px solid var(--color-focus);outline-offset:2px}.theme-option input[type=radio]{width:18px;height:18px;min-height:18px;accent-color:var(--color-focus);margin:2px 0 0;padding:0}.theme-option-content{gap:5px;min-width:0;display:grid}.theme-option-content strong{color:var(--color-text-strong);font-size:.8rem}.theme-option-content small{color:var(--color-text-muted);font-size:.7rem;font-weight:500;line-height:1.4}.theme-swatches{gap:5px;margin-top:2px;display:flex}.theme-swatch{border:1px solid color-mix(in srgb, var(--color-text) 34%, transparent);border-radius:3px;width:18px;height:12px}.theme-swatch-dai{background:var(--jiangsu-dai)}.theme-swatch-canal{background:var(--jiangsu-canal)}.theme-swatch-ink{background:var(--jiangsu-ink)}.theme-swatch-peach{background:var(--jiangsu-peach)}.theme-swatch-gold{background:var(--jiangsu-gold)}.settings-list{gap:24px;display:grid}.settings-section{border-top:1px solid var(--color-border);padding-top:20px}.settings-section:first-child{border-top:0;padding-top:0}.settings-section-heading{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.settings-section-heading h3{color:var(--color-text-strong);margin:5px 0 0;font-size:1rem}.settings-section-heading p{max-width:260px;color:var(--color-text-muted);text-align:right;margin:0;font-size:.74rem;line-height:1.45}.settings-hint{color:var(--color-text-muted);font-size:.7rem;font-weight:500;line-height:1.35}.settings-range-control{align-items:center;gap:10px;display:flex}.settings-range-control input[type=range]{width:auto;min-height:30px;accent-color:var(--color-focus);flex:1;padding:0}.settings-range-control output{min-width:1.5em;color:var(--color-text-strong);text-align:center}.settings-checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.settings-checkbox{border:1px solid var(--color-border);background:var(--color-inset);border-radius:12px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;padding:12px;display:grid}.settings-checkbox input[type=checkbox]{width:18px;height:18px;min-height:18px;accent-color:var(--color-focus);background:0 0;border:0;border-radius:4px;margin:2px 0 0;padding:0}.settings-checkbox span{gap:4px;display:grid}.settings-checkbox strong{color:var(--color-text);font-size:.8rem}.settings-checkbox small{color:var(--color-text-muted);font-size:.7rem;font-weight:500;line-height:1.4}.help-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.help-list li{border:1px solid var(--color-border);color:var(--color-text);background:var(--color-inset);border-radius:9px;flex-wrap:wrap;align-items:center;gap:6px;padding:9px 10px;font-size:.8rem;display:flex}.help-list li span{color:var(--color-text-muted);text-align:right;margin-left:auto}kbd{border:1px solid var(--color-border-strong);color:var(--color-text-strong);background:var(--color-control-hover);border-bottom-width:2px;border-radius:5px;padding:2px 6px;font-family:inherit;font-size:.7rem;font-weight:800}.hand{border-radius:16px;align-items:flex-end;min-height:204px;padding:12px 8px;display:flex;position:relative}.hand-flat{flex-wrap:wrap;gap:8px}.hand-flat .playing-card{flex:0 0 var(--card-width,92px);width:var(--card-width,92px)}.hand-compact{flex-wrap:nowrap;gap:0;padding:24px 8px 12px;overflow-x:auto}.hand-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));align-items:end;gap:8px;display:grid}.hand-fan{height:var(--fan-height,204px);min-height:var(--fan-height,204px);flex-wrap:nowrap;justify-content:safe center;gap:0;padding:24px 24px 18px;display:block;position:relative;overflow:visible}.hand-fan .card-slot{left:var(--fan-origin,50%);bottom:calc(var(--fan-baseline,8px) + var(--fan-layer-offset,0px));width:max-content;height:var(--card-height,132px);transform:translateX(calc(-50% + var(--card-x,0px))) translateY(var(--card-arc,0px));margin-left:0;position:absolute}.hand-fan .card-angle-layer{width:max-content;height:var(--card-height,132px);transform:rotate(var(--card-rotation,0deg));transform-origin:50%}.hand-fan .card-hover-layer{width:max-content;height:var(--card-height,132px);transform:translateY(var(--card-lift,0px)) scale(var(--card-scale,1));transform-origin:bottom;transition:transform .14s}.hand-fan .playing-card{margin-left:0;position:relative;bottom:auto;left:auto;transform:none}.playing-card{z-index:0;min-width:var(--card-width,92px);height:var(--card-height,132px);border:2px solid var(--color-card-border);color:var(--color-card-text);background:var(--color-card-face);box-shadow:0 7px 0 var(--color-card-shadow);touch-action:none;transform:translateY(calc(var(--card-arc,0px) + var(--card-lift,0px))) rotate(var(--card-rotation,0deg)) scale(var(--card-scale,1));border-radius:12px;outline:none;place-items:center;padding:10px;font-size:.83rem;transition:transform .14s,box-shadow .14s,outline-color .14s;display:grid;position:relative}.card-face{color:inherit;display:block;position:absolute;inset:0}.card-face.card-red{color:var(--color-card-red)}.card-role-label{z-index:2;color:var(--color-text-inverse);background:var(--color-warning);font-size:var(--card-role-size,.42rem);letter-spacing:.03em;border-radius:3px;padding:2px 3px;font-weight:900;line-height:1;position:absolute;top:5px;right:5px}.heart-wild-face .card-role-label{color:var(--color-wild-label-text);background:var(--color-wild-label)}.card-use-label{z-index:3;border:1px solid var(--color-border-strong);max-width:calc(100% - 8px);color:var(--color-card-use-text);background:var(--color-card-use);font-size:var(--card-use-size,.42rem);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;padding:2px 3px;font-weight:900;line-height:1;position:absolute;top:5px;left:50%;overflow:hidden;transform:translate(-50%)}.card-face .card-center.used-as-center{box-sizing:border-box;font-size:var(--card-used-as-center-size,2.8rem);text-overflow:ellipsis;white-space:nowrap;left:5px;right:5px;overflow:hidden}.played-set-card .card-face .card-center.used-as-center{font-size:var(--card-used-as-center-size)}.played-set-card .card-use-label{font-size:var(--card-use-size);top:3px}.card-corner{min-width:25px;font-size:var(--card-corner-size,1rem);flex-direction:column;align-items:center;font-weight:900;line-height:.9;display:flex;position:absolute}.card-corner strong{font-size:var(--card-corner-rank-size,1.12rem)}.card-corner-top{top:9px;left:9px}.card-corner-bottom{bottom:9px;right:9px;transform:rotate(180deg)}.card-center{font-size:var(--card-center-size,3.8rem);place-items:center;line-height:1;display:grid;position:absolute;inset:0}.card-center.royal-icon{font-size:var(--card-royal-size,3.6rem)}.hand-compact .playing-card{flex:0 0 var(--card-width,96px);margin-left:var(--card-overlap,-52px)}.hand-compact .playing-card:first-child{margin-left:0}.hand-grid .playing-card{width:100%}.playing-card.selected{color:var(--color-card-text);border-color:var(--color-focus);background:var(--color-focus);box-shadow:0 5px 0 color-mix(in srgb, var(--color-focus) 68%, var(--color-card-text)), 0 0 0 2px var(--color-focus-soft);--card-lift:-7px}.playing-card.dragging-card{opacity:.2}.drag-preview{z-index:2000;pointer-events:none;width:116px;height:140px;transform:translate3d(calc(var(--drag-preview-x,0px) - 46px), calc(var(--drag-preview-y,0px) - 74px), 0);will-change:transform;position:absolute;top:0;left:0}.drag-preview-card{width:var(--card-width,92px);height:var(--card-height,132px);border:2px solid var(--color-card-border);color:var(--color-card-text);background:var(--color-card-face);box-shadow:0 7px 0 var(--color-card-shadow);border-radius:12px;padding:10px;position:absolute;top:0}.hand-fan.hand-dragging .card-hover-layer,.hand-fan.hand-dragging .playing-card{transition:none}.hand-fan.hand-dragging .playing-card,.hand-fan.hand-dragging .drag-preview-card{box-shadow:none}.playing-card.focused{z-index:2;outline:2px solid var(--color-focus);outline-offset:3px;--card-lift:var(--card-focus-lift,-18px);--card-scale:1.08}.hand-fan .card-slot.focused,.hand-fan.fan-pop-straight-up .card-slot.focused{--card-lift:var(--card-focus-lift,-18px);--card-scale:1}.hand-fan .card-slot.selected{--card-lift:-7px}.hand-fan.fan-pop-top .card-slot.focused{--card-lift:0px;--card-scale:1.08}.hand-fan .card-slot.focused .playing-card{transform:none}.hand.motion-reduced *,.hand.motion-reduced :before,.hand.motion-reduced :after{transition-duration:0s!important;animation-duration:0s!important}.hand.motion-reduced .card-hover-layer,.hand.motion-reduced .playing-card{transition:none!important;transform:none!important}.action-bar{flex-wrap:wrap;align-items:center;gap:9px;margin-top:22px;display:flex}.muted{color:var(--color-text-muted);font-size:.82rem}@media (width<=1180px){.room-header{grid-template-columns:minmax(0,1fr) minmax(0,auto);grid-template-areas:"identity actions""players players""turn turn"}.room-header .room-identity{grid-area:identity}.room-header .header-players{grid-area:players}.room-header .header-turn{grid-area:turn;min-width:0}.room-header .header-actions{flex-wrap:wrap;grid-area:actions;min-width:0;max-width:100%}}@media (width<=800px){.app-shell{width:min(100% - 24px,620px);padding-top:22px}.review-shell{width:calc(100% - 16px);padding:18px 0 30px}.review-header{flex-direction:column;gap:10px}.review-header-actions{justify-content:flex-start;width:100%}.review-layout{grid-template-columns:1fr}.review-table-panel,.review-events{min-height:0;padding:14px}.review-round-table{min-height:clamp(460px,72vw,560px)}.review-round-table .round-table-center{inset:0}.review-events{min-height:480px}.room-shell{width:calc(100% - 16px);height:auto;min-height:100vh;padding:12px 0 24px;overflow:visible}.room-shell .room-layout{flex:none;grid-template-rows:auto;overflow:visible}.room-shell .game-column{height:auto;min-height:auto;overflow:visible}.room-shell .table-panel,.room-shell .table-panel.round-end{flex:none;min-height:auto;padding:22px;display:block;overflow:visible}.room-shell .table-panel .table-history-divider{display:none}.room-shell .table-panel .zone-summary{display:grid;overflow:visible}.room-shell .table-panel .public-table{display:block}.room-shell .table-panel .round-table{min-height:clamp(460px,72vw,560px)}.room-shell .table-panel .player-action-view{min-height:auto;padding:0;overflow:visible}.player-action-heading{flex-direction:column;align-items:flex-start;gap:4px}.player-action-heading>.muted{text-align:left;max-width:none}.hand-query-heading{flex-direction:column;align-items:flex-start;gap:4px}.hand-query-heading>.muted{text-align:left;max-width:none}.hand-query-buttons{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));display:grid}.hand-query-button{width:100%;min-width:0}.player-action-players{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}.round-table-center{inset:0}.table-seat{width:clamp(78px, var(--table-seat-width,23%), 132px)}.table-player{grid-template-columns:24px minmax(0,1fr);gap:5px;padding:6px;font-size:.7rem}.table-player .avatar{width:24px;height:24px}.table-player-meta{font-size:.55rem}.table-next-label{letter-spacing:0;padding-inline:1px;font-size:.44rem}.round-table-center{padding:10px}.round-table-center .current-trick{border-radius:12px;width:clamp(140px,70% - 312px,220px);padding:10px}.round-table-center .current-trick-cards{min-height:108px;padding-inline:3px}.round-table-center .current-trick-card{flex-basis:62px;width:62px;height:87px}.review-current-play .current-trick-cards{min-height:92px;padding-block:4px 7px}.review-card-fan-selected{--review-card-width:58px;--review-card-height:82px;min-height:86px;padding-block:3px 6px}.review-card-fan-selected .review-card{--card-corner-size:.62rem;--card-corner-rank-size:.72rem;--card-center-size:2.05rem;--card-royal-size:1.9rem;--card-used-as-center-size:1.8rem}.review-card-fan-selected .review-card .card-corner{min-width:15px;font-size:var(--card-corner-size)}.review-card-fan-selected .review-card .card-corner strong{font-size:var(--card-corner-rank-size)}.review-card-fan-selected .review-card .card-center{font-size:var(--card-center-size)}.table-last-play-fan:hover .table-last-play-cards,.table-last-play-fan:focus .table-last-play-cards,.table-last-play-fan:hover .review-card-fan-cards,.table-last-play-fan:focus .review-card-fan-cards{transform:scale(1.5)}.room-shell .table-panel .played-table{min-height:0;margin-top:26px;padding:15px;overflow:visible}.room-shell .table-panel .played-set-list{flex:auto;overflow:hidden auto}.entry-grid,.room-layout,.lobby-team-board{grid-template-columns:1fr}.lobby-team-unassigned{grid-column:auto}.lobby-teams-heading,.lobby-team-player{flex-direction:column;align-items:stretch}.lobby-teams-heading p{text-align:left;max-width:none}.lobby-team-controls{justify-content:flex-start}.hero-copy{margin-bottom:28px}.hand-shortcuts{display:none}.settings-grid,.theme-selector{grid-template-columns:1fr}.card-groups-heading{flex-direction:column;align-items:flex-start;gap:5px}.card-groups-heading>.muted{text-align:left}.settings-checks{grid-template-columns:1fr}.settings-section-heading{flex-direction:column;align-items:flex-start;gap:6px}.settings-section-heading p{text-align:left;max-width:none}.modal-backdrop{padding:12px}.hand-fan{justify-content:flex-start}.hero-copy h1{font-size:clamp(2.7rem,15vw,4.6rem)}.room-header{grid-template-columns:1fr;grid-template-areas:"identity""players""turn""actions";gap:10px}.header-turn{min-width:0}.header-actions{flex-wrap:wrap;justify-content:flex-start;width:100%}.participant-strip{flex-wrap:wrap;align-items:stretch;overflow:visible}.participant-chip,.participant-chip.current-turn{flex:154px}.participant-name{max-width:7.5rem}}@media (width<=520px){.review-panel-heading{flex-direction:column;align-items:flex-start;gap:4px}.review-panel-heading>.muted{text-align:left;max-width:none;margin-top:0}.review-round-table{min-height:clamp(440px,110vw,520px)}.review-round-table .round-table-center{inset:0}.table-last-play-fan.inward-left,.table-last-play-fan.inward-right{top:auto;right:auto;bottom:calc(100% + var(--table-seat-fan-gap));left:50%;transform:translate(-50%)}.table-last-play-fan.inward-left{left:calc(50% + var(--table-seat-fan-gap))}.table-last-play-fan.inward-right{left:calc(50% - var(--table-seat-fan-gap))}.table-last-play-fan.inward-down,.table-last-play-fan.inward-up{top:50%;bottom:auto;right:auto;left:calc(100% + var(--table-seat-fan-gap));transform:translateY(-50%)}.table-last-play-fan:hover .table-last-play-cards,.table-last-play-fan:focus .table-last-play-cards,.table-last-play-fan:hover .review-card-fan-cards,.table-last-play-fan:focus .review-card-fan-cards{transform:scale(1.32)}.review-table-seat .table-player{padding:6px;font-size:.66rem}.review-table-seat .table-player .avatar{width:24px;height:24px}.review-table-seat .table-player-meta{font-size:.52rem}.review-event{padding:8px}}.admin-shell{--admin-layout-gap:clamp(12px, 1.6vw, 22px);--admin-panel-padding:clamp(12px, 1.8vw, 22px);--admin-player-gap:clamp(12px, 1.4vw, 18px);--admin-player-inline-padding:clamp(12px, 1.5vw, 18px);--admin-fan-padding:clamp(6px, 1vw, 10px);width:min(1360px,100% - clamp(20px,4vw,32px))}.admin-login-shell{align-items:center;width:min(100% - clamp(20px,4vw,32px),720px);min-height:100svh}.admin-login-shell .hero-copy{text-align:center;width:100%;margin-bottom:clamp(24px,5vh,42px)}.admin-login-shell .hero-copy p{margin-inline:auto}.admin-login-shell .error-banner{width:100%}.admin-header{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:22px;display:flex}.admin-header h1{margin:6px 0 0}.admin-nav{flex-wrap:wrap;gap:8px;display:flex}.admin-login{width:100%;max-width:420px;margin-inline:auto}.admin-layout{gap:var(--admin-layout-gap);grid-template-columns:minmax(240px,.34fr) minmax(0,1fr);align-items:start;display:grid}.admin-room-list{min-width:0;padding:var(--admin-panel-padding)}.admin-room-list .panel-heading{margin-bottom:16px}.admin-room-rows{gap:10px;margin:0;padding:0;list-style:none;display:grid}.admin-room-row{text-align:left;width:100%;color:inherit;background:var(--color-inset);border:1px solid var(--color-border);border-radius:12px;gap:6px;padding:13px 14px;line-height:1.35;display:grid}.admin-room-row.selected{border-color:var(--color-highlight);background:var(--color-highlight-soft)}.admin-room-row strong,.admin-room-row span,.admin-room-row small{overflow-wrap:anywhere;min-width:0}.admin-room-row strong{color:var(--color-text-strong);letter-spacing:.04em}.admin-room-row span{color:var(--color-text-muted);font-size:.74rem}.admin-room-row small{color:var(--color-text-muted);font-size:.68rem;line-height:1.4}.admin-inspector,.admin-config{min-width:0;padding:var(--admin-panel-padding)}.admin-inspector{overflow:visible}.admin-inspector-meta{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 16px;font-size:.74rem;display:flex}.admin-inspector-meta>span{border:1px solid var(--color-border);background:var(--color-inset);border-radius:999px;padding:5px 9px}.admin-inspector-meta strong{color:var(--color-text-strong)}.admin-private-note{color:var(--color-success);border-color:var(--color-success-soft)!important;background:var(--color-success-soft)!important}.admin-player-grid{gap:var(--admin-player-gap);grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.admin-player-card{border:1px solid var(--color-border);border-left:3px solid var(--admin-team-accent,var(--color-team-a));background:var(--color-panel);contain:paint;border-radius:13px;min-width:0;overflow:hidden}.admin-player-card.current-turn{border-color:var(--color-turn);border-left-color:var(--admin-team-accent,var(--color-team-a));box-shadow:0 0 0 2px var(--color-turn-soft), 0 0 18px var(--color-turn-soft)}.admin-player-header{min-width:0;padding:14px var(--admin-player-inline-padding) 12px;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.admin-player-identity{align-items:center;gap:9px;min-width:0;display:flex}.admin-seat-badge{border:1px solid color-mix(in srgb, var(--admin-team-accent,var(--color-team-a)) 58%, var(--color-border));min-width:42px;min-height:31px;color:var(--admin-team-accent,var(--color-team-a));background:var(--color-surface-overlay);letter-spacing:.03em;text-transform:uppercase;border-radius:8px;flex:none;place-items:center;padding:0 5px;font-size:.62rem;font-weight:800;display:grid}.admin-player-name{gap:2px;min-width:0;display:grid}.admin-player-name strong{min-width:0;color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-player-name small{color:var(--color-text-muted);font-size:.64rem}.admin-player-badges{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;gap:4px;display:flex}.admin-team-badge,.admin-status-badge,.admin-turn-badge{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;min-height:21px;padding:0 7px;font-size:.6rem;font-weight:800;line-height:1;display:inline-flex}.admin-team-badge{border:1px solid color-mix(in srgb, var(--admin-team-accent,var(--color-team-a)) 48%, var(--color-border));color:var(--admin-team-accent,var(--color-team-a));background:var(--color-inset)}.admin-status-badge{border:1px solid var(--color-border-strong);color:var(--color-text-muted);background:var(--color-inset)}.admin-status-badge.online{border-color:var(--color-success-soft);color:var(--color-success)}.admin-status-badge.bot{border-color:var(--color-warning-soft);color:var(--color-warning)}.admin-status-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.admin-turn-badge{border:1px solid var(--color-turn);color:var(--color-turn);background:var(--color-turn-soft);text-transform:uppercase}.admin-player-hand{border-top:1px solid var(--color-border);min-width:0;padding:12px var(--admin-player-inline-padding) 14px;overflow:hidden}.admin-hand-heading{justify-content:space-between;align-items:baseline;gap:10px;min-width:0;margin-bottom:8px;display:flex}.admin-hand-heading>div{align-items:baseline;gap:7px;min-width:0;display:flex}.admin-hand-heading .eyebrow{flex:none;font-size:.58rem}.admin-hand-heading strong{color:var(--color-text-strong);font-size:.76rem}.admin-hidden-count{color:var(--color-warning);text-align:right;font-size:.62rem}.admin-hand-empty{color:var(--color-text-muted);margin:0;font-size:.74rem}.admin-card-fan{--review-card-width:48px;--review-card-height:68px;min-height:calc(var(--review-card-height,68px) + 20px);padding:var(--admin-fan-padding) var(--admin-fan-padding) calc(10px + var(--fan-lift-max,0px));background:var(--color-inset);border-radius:8px;margin:0}.admin-card-fan-cards{min-height:var(--review-card-height,68px);padding-bottom:var(--fan-lift-max,0px);transform-origin:bottom;transition:transform .16s}.admin-card{--card-corner-size:.44rem;--card-corner-rank-size:.52rem;--card-center-size:1.45rem;--card-royal-size:1.24rem;--card-role-size:.25rem;--card-use-size:.25rem;--card-used-as-center-size:1.16rem;box-shadow:0 3px 0 var(--color-card-shadow);border-radius:6px}.admin-card .card-corner{min-width:12px}.admin-card .card-corner-top{top:4px;left:4px}.admin-card .card-corner-bottom{bottom:4px;right:4px}.admin-card .card-role-label,.admin-card .card-use-label{top:3px}.admin-card .card-role-label{font-size:var(--card-role-size);right:3px}.admin-card .card-use-label{font-size:var(--card-use-size)}.admin-card .card-center{font-size:var(--card-center-size)}.admin-card .card-center.royal-icon{font-size:var(--card-royal-size)}.admin-card-fan:hover .admin-card-fan-cards,.admin-card-fan:focus-within .admin-card-fan-cards{transform:scale(1.08)}.admin-card:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;z-index:10!important}.admin-check{flex-direction:row;align-items:center;gap:10px}.admin-check input{width:auto}@media (width<=800px){.admin-layout,.admin-player-grid{grid-template-columns:1fr}.admin-header{flex-direction:column;align-items:flex-start}}@media (width<=520px){.admin-player-header{flex-direction:column}.admin-player-badges{justify-content:flex-start}.admin-hand-heading{flex-direction:column;align-items:flex-start;gap:4px}.admin-hand-heading>div{flex-wrap:wrap}.admin-hidden-count{text-align:left;max-width:none}}.onboarding-tour{z-index:3000;color:var(--color-text);pointer-events:auto;position:fixed;inset:0}.onboarding-tour-scrim{background:var(--color-overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);position:absolute;inset:0}.onboarding-tour-spotlight{top:var(--tour-anchor-top);left:var(--tour-anchor-left);width:var(--tour-anchor-width);height:var(--tour-anchor-height);box-sizing:border-box;border:2px solid var(--color-focus);background:var(--color-focus-soft);box-shadow:0 0 0 4px var(--color-focus-soft), 0 0 0 9999px var(--color-overlay);pointer-events:none;border-radius:14px;transition:top .18s,left .18s,width .18s,height .18s;position:fixed}.onboarding-tour-card{z-index:1;border:1px solid var(--color-border-strong);background:var(--color-panel);width:min(540px,100vw - 32px);max-height:min(500px,100dvh - 32px);box-shadow:0 28px 90px var(--color-shadow-heavy), 0 0 0 1px var(--color-focus-soft);border-radius:18px;flex-direction:column;padding:20px;display:flex;position:fixed;left:50%;overflow:auto;transform:translate(-50%)}.onboarding-tour-card[data-placement=bottom]{bottom:max(16px, env(safe-area-inset-bottom))}.onboarding-tour-card[data-placement=top]{top:max(16px, env(safe-area-inset-top))}.onboarding-tour-card[data-placement=center]{top:50%;transform:translate(-50%,-50%)}.onboarding-tour-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.onboarding-tour-heading h2{color:var(--color-text-strong);margin:5px 0 0;font-size:clamp(1.2rem,2.2vw,1.55rem)}.onboarding-tour-progress{color:var(--color-highlight);letter-spacing:.06em;text-transform:uppercase;margin:8px 0 0;font-size:.68rem;font-weight:800}.onboarding-tour-description{color:var(--color-text-muted);margin:18px 0 0;font-size:.9rem;line-height:1.6}.onboarding-tour-tips{gap:7px;margin:16px 0 0;padding:0;list-style:none;display:grid}.onboarding-tour-tips li{color:var(--color-text);flex-wrap:wrap;align-items:center;gap:5px;font-size:.78rem;display:flex}.onboarding-tour-tips li span{color:var(--color-text-muted);margin-left:4px}.onboarding-tour-missing{border:1px dashed var(--color-border-strong);color:var(--color-text-muted);background:var(--color-inset);border-radius:9px;margin:16px 0 0;padding:9px 10px;font-size:.75rem;line-height:1.45}.onboarding-tour-controls{align-items:center;gap:8px;margin-top:22px;display:flex}.onboarding-tour-controls button{min-height:40px}.onboarding-tour-control-spacer{flex:auto}.onboarding-tour.motion-reduced .onboarding-tour-spotlight,.onboarding-tour.motion-reduced *,.onboarding-tour.motion-reduced :before,.onboarding-tour.motion-reduced :after{transition-duration:0s!important;animation-duration:0s!important}.settings-tour-section .secondary-button,.help-tour-actions .secondary-button{min-height:40px}.help-tour-actions{justify-content:flex-end;margin-top:16px;display:flex}@media (width<=520px){.onboarding-tour-card{width:auto;max-height:min(480px,100dvh - 24px);padding:16px;left:12px;right:12px;transform:none}.onboarding-tour-card[data-placement=bottom]{bottom:max(12px, env(safe-area-inset-bottom))}.onboarding-tour-card[data-placement=top]{top:max(12px, env(safe-area-inset-top))}.onboarding-tour-card[data-placement=center]{top:50%;transform:translateY(-50%)}.onboarding-tour-description{font-size:.84rem}.onboarding-tour-controls{flex-wrap:wrap}.onboarding-tour-control-spacer{display:none}.onboarding-tour-controls .quiet-button{margin-right:auto}}@media (prefers-reduced-motion:reduce){.onboarding-tour-spotlight,.error-banner,.group-notice,.low-hand-banner,.hand-query-button,.notice-close,.table-history-toggle{transition:none;animation:none}}
