:root{--bg-canvas: #efe4d0;--bg-panel: rgba(255, 250, 239, .9);--bg-panel-strong: #fff8eb;--ink-strong: #1f1a17;--ink-soft: #61564e;--accent: #0f5c4d;--accent-strong: #0a3f35;--line: rgba(31, 26, 23, .1);--shadow-soft: 0 18px 48px rgba(33, 24, 19, .12);--radius-lg: 28px;--radius-md: 18px;--space-lg: clamp(1.5rem, 2vw, 2.5rem);--space-md: 1rem;--space-sm: .5rem;--font-display: "Iowan Old Style", "Noto Serif TC", serif;--font-body: "Noto Sans TC", "PingFang TC", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);color:var(--ink-strong);background:radial-gradient(circle at top,rgba(15,92,77,.16),transparent 34%),linear-gradient(180deg,#f5eddc 0%,var(--bg-canvas) 100%)}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px);background-size:36px 36px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.4),transparent 80%);mask-image:linear-gradient(180deg,rgba(0,0,0,.4),transparent 80%)}.app-topbar{position:sticky;top:0;z-index:4;padding:1rem 0 0}.app-topbar__inner{display:flex;justify-content:space-between;align-items:center;gap:1rem;width:min(1040px,calc(100vw - 2rem));margin:0 auto;padding:.85rem 1rem;border:1px solid rgba(15,92,77,.14);border-radius:20px;background:#fff9f0d6;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-soft)}.app-topbar__title{font-family:var(--font-display);font-size:clamp(1rem,2.2vw,1.2rem);color:var(--accent-strong);letter-spacing:.06em}.language-switcher{min-width:9.5rem;min-height:42px;padding:.65rem .85rem;border-radius:14px;border:1px solid rgba(31,26,23,.16);background:#ffffffe6;font:inherit}.language-switcher:focus-visible{outline:3px solid rgba(15,92,77,.24);outline-offset:2px}.home-shell{position:relative;min-height:100vh;padding:1.5rem clamp(1rem,2rem,2rem) 3rem;color:#f7f3ff;background:linear-gradient(180deg,#0e0c2cf0,#180f41f5),#100d2f}.home-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:min(100%,1500px);margin:0 auto 1.5rem}.home-filters,.home-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.home-actions{justify-content:flex-end}.home-action-button--play{order:1}.home-action-button--create{order:2}.home-language{order:3}.home-filter-button,.home-action-button,.home-language{min-height:54px;border-radius:8px;font:inherit}.home-filter-button,.home-action-button{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;border:1px solid rgba(91,130,255,.74);padding:0 1.25rem;color:#f7f3ff;background:#ffffff0d;cursor:pointer}.home-filter-button--active,.home-action-button--create{border-color:transparent;background:linear-gradient(135deg,#486fff,#d330c8)}.home-action-button--play{min-width:10rem;border-color:transparent;background:#315bcb}.home-action-button--create{min-width:12rem}.home-language{display:inline-flex;align-items:center;padding:0 .7rem;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:#f7f3ff}.home-language select{min-height:42px;border:0;background:transparent;color:inherit;font:inherit}.home-language option{color:#18133c}.home-table-grid{display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));gap:1.25rem;width:min(100%,1500px);margin:0 auto}.home-table-card{position:relative;--home-table-center-y: 56%;min-height:0;aspect-ratio:1 / 1;overflow:hidden;padding:0;border:2px solid rgba(109,105,173,.48);border-radius:8px;background:#0d0b24;color:#f7f3ff;box-shadow:0 24px 50px #0705173d;cursor:pointer}.home-table-card:focus-visible,.home-filter-button:focus-visible,.home-action-button:focus-visible,.home-dialog__close:focus-visible,.home-dialog-submit:focus-visible,.home-language select:focus-visible{outline:3px solid rgba(211,48,200,.38);outline-offset:3px}.home-table-card__badges{position:absolute;top:1rem;left:1rem;z-index:5;display:flex;gap:.35rem}.home-table-badge,.home-table-rule{display:inline-grid;place-items:center;width:2.8rem;height:2.8rem;border-radius:8px}.home-table-badge--capacity{position:relative;background:#ffc831;color:#fff8d9}.home-table-badge--capacity span{position:absolute;right:.35rem;bottom:.22rem;color:#4e3b00;font-size:.76rem;font-weight:800}.home-table-badge--private{background:#d94428;color:#fff2ee}.home-table-rule{position:absolute;top:1rem;right:1rem;z-index:5;background:#476bffe6;color:#fff}.home-table-felt{position:absolute;left:50%;top:var(--home-table-center-y);width:42%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 50% 36%,rgba(255,255,255,.16),transparent 38%),linear-gradient(145deg,#6659ad,#332a75 72%);box-shadow:inset 0 18px 36px #ffffff14}.home-spectator-lock{position:absolute;left:50%;top:var(--home-table-center-y);z-index:5;display:grid;place-items:center;width:3.3rem;height:4rem;border-radius:8px;background:#68609ac7;color:#111035;transform:translate(-50%,-50%);box-shadow:0 10px 24px #05041452}.home-preview-seats{position:absolute;inset:0;z-index:6}.home-preview-seat{position:absolute;display:grid;justify-items:center;gap:.16rem;width:clamp(4rem,24%,5.25rem);min-height:4.25rem;padding:.42rem .35rem;border:1px solid rgba(0,0,0,.58);border-radius:8px;background:#191640;color:#fff;box-shadow:0 12px 24px #04031257}.home-preview-seat[data-position=top]{left:50%;top:2.4rem;transform:translate(-50%)}.home-preview-seat[data-position=bottom]{left:50%;bottom:.55rem;transform:translate(-50%)}.home-preview-seat[data-position=left]{left:1rem;top:50%;transform:translateY(-50%)}.home-preview-seat[data-position=right]{right:1rem;top:50%;transform:translateY(-50%)}.home-preview-seat[data-position=upper-left]{left:1rem;top:38%;transform:translateY(-50%)}.home-preview-seat[data-position=upper-right]{right:1rem;top:38%;transform:translateY(-50%)}.home-preview-seat[data-position=lower-left]{left:1rem;top:68%;transform:translateY(-50%)}.home-preview-seat[data-position=lower-right]{right:1rem;top:68%;transform:translateY(-50%)}.home-preview-seat__avatar{position:relative;display:grid;place-items:center;width:2.25rem;height:2.25rem;border:2px solid rgba(255,255,255,.72);border-radius:50%;color:#fff;background:#17143e}.home-preview-seat__name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:700}.home-preview-seat__status{position:absolute;right:.65rem;top:1.95rem;width:.68rem;height:.68rem;border:2px solid white;border-radius:50%;background:#58c77a}.home-preview-seat__status--ai{background:#49cf84}.home-dialog-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:1rem;background:#070517ad}.home-dialog{position:relative;display:grid;gap:1rem;width:min(100%,430px);padding:1.35rem;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#151337;color:#f7f3ff;box-shadow:0 28px 80px #04031285}.home-dialog h1,.home-dialog p{margin:0}.home-dialog .lede,.home-dialog .field span{color:#f7f3ffbd}.home-dialog__close{position:absolute;right:.7rem;top:.7rem;display:grid;place-items:center;width:2.1rem;height:2.1rem;border:0;border-radius:8px;background:#ffffff14;color:#f7f3ff;cursor:pointer}.home-dialog-submit{border:0;background:linear-gradient(135deg,#486fff,#d330c8)!important}.app-shell{width:min(960px,calc(100vw - 2rem));margin:0 auto;padding:clamp(2rem,6vw,5rem) 0 3rem}.gate-shell,.lobby-layout,.table-layout{width:min(1040px,calc(100vw - 2rem));margin:0 auto;padding:clamp(2rem,6vw,5rem) 0 3rem}.table-grid{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(0,1.1fr);gap:1rem;margin-top:1rem}.table-side-column{display:grid;gap:1rem;align-content:start}.lobby-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr);gap:1rem;margin-top:1rem}.lobby-panel{padding:clamp(1.25rem,3vw,2rem);border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--bg-panel) 0%,var(--bg-panel-strong) 100%);box-shadow:var(--shadow-soft)}.table-panel{padding:clamp(1rem,2.5vw,1.5rem);border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(180deg,#fff9f0f5,#f8f1e6eb);box-shadow:var(--shadow-soft)}.round-result-panel{display:grid;align-content:start;gap:1rem}.connection-banner{position:sticky;top:6rem;z-index:2;width:min(1040px,calc(100vw - 2rem));margin:1rem auto 0;padding:.8rem 1rem;border-radius:16px;border:1px solid rgba(15,92,77,.18);background:#fff8ecf2;color:var(--accent-strong);box-shadow:var(--shadow-soft)}.table-chrome{min-height:100vh;padding-left:6.4rem}.table-chrome__content{min-width:0}.table-menu{position:fixed;inset:0 auto 0 0;z-index:60;display:grid;grid-template-rows:auto 1fr auto;width:6.4rem;padding:1rem .55rem;background:#07072d;color:#ffffffd1;box-shadow:12px 0 34px #06071b38}.table-menu__brand{display:grid;place-items:center;height:3.6rem;margin-bottom:.75rem;color:#cf4bea;font-family:var(--font-display);font-size:1.3rem}.table-menu__items{display:grid;align-content:start;gap:.4rem}.table-menu__item{display:grid;justify-items:center;gap:.28rem;width:100%;min-height:4.25rem;padding:.55rem .25rem;border:1px solid transparent;border-radius:8px;background:transparent;color:inherit;font:inherit;font-size:.78rem;line-height:1.12;cursor:pointer}.table-menu__item:hover,.table-menu__item:focus-visible{border-color:#ffffff29;background:#ffffff12}.table-menu__item--active{background:linear-gradient(135deg,#4374ff,#d52ccf);color:#fff;box-shadow:0 14px 28px #9930d042}.table-menu__item:disabled{cursor:not-allowed;opacity:.46}.table-menu__item--leave{margin-top:.75rem}.table-panel-drawer{position:fixed;inset:0 auto 0 6.4rem;z-index:55;display:grid;grid-template-rows:auto 1fr;width:min(48rem,calc(100vw - 6.4rem));color:#f7f3ff;background:#151337;box-shadow:24px 0 60px #06071b57}.table-panel-drawer__header{display:flex;align-items:center;gap:.75rem;min-height:4.8rem;padding:0 1.25rem;background:#11102d;border-bottom:1px solid rgba(255,255,255,.08)}.table-panel-drawer__header h2{margin:0;font-family:var(--font-display);font-size:clamp(1.35rem,2.5vw,1.8rem)}.table-panel-drawer__close{display:inline-grid;place-items:center;width:2.4rem;height:2.4rem;border:0;border-radius:8px;background:transparent;color:#f7f3ff;cursor:pointer}.table-panel-drawer__close:hover,.table-panel-drawer__close:focus-visible{background:#ffffff1a}.table-panel-drawer__body{min-height:0;overflow:auto;padding:1.35rem}.table-panel-drawer .table-panel,.table-panel-drawer .table-phase{width:100%;color:#f7f3ff;background:#0807206b;border-color:#ffffff1f}.table-panel-drawer .table-phase--lobby{background:#0807206b}.table-panel-empty,.share-panel p{margin:0;color:#f7f3ffc2;line-height:1.65}.bidding-history-table{width:100%;border-collapse:collapse}.bidding-history-table th,.bidding-history-table td{padding:.75rem;border-bottom:1px solid rgba(255,255,255,.12);text-align:left}.settings-panel-stack{display:grid;gap:1rem}.settings-panel-section{display:grid;gap:.65rem;padding:1rem;border-radius:8px;background:#0807206b}.settings-panel-section h3{margin:0;font-family:var(--font-display)}.share-panel{display:grid;gap:1rem}.share-copy-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:.55rem}.share-copy-button{width:2.75rem;height:2.75rem;color:#f7f3ff}.share-copy-alert{width:fit-content;margin:0;padding:.55rem .75rem;border-radius:8px;background:#37d17729;color:#91f0b9}.match-result-modal{width:min(420px,calc(100vw - 2rem));border:1px solid var(--line);border-radius:24px;padding:1.25rem;background:#fff9f0fa;color:var(--ink-strong);box-shadow:var(--shadow-soft)}.match-result-modal::backdrop{background:#1f1a1738}.panel-header{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;margin-bottom:1rem}.panel-header h2,.lobby-panel h1{margin:0;font-family:var(--font-display)}.panel-header p{margin:0;color:var(--ink-soft)}.share-chip{display:inline-flex;margin-top:1rem;padding:.55rem .8rem;border-radius:999px;border:1px solid rgba(15,92,77,.18);background:#0f5c4d14;color:var(--accent-strong)}.seat-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.seat-item{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:.95rem 1rem;border-radius:var(--radius-md);border:1px solid var(--line);background:#ffffffad}.seat-item p{margin:.2rem 0 0;color:var(--ink-soft)}.seat-badge{padding:.3rem .6rem;border-radius:999px;background:#0f5c4d1f;color:var(--accent-strong);font-size:.78rem;letter-spacing:.08em}.seat-actions{display:grid;gap:.55rem;justify-items:end}.seat-remove-button{min-height:38px;padding:.55rem .85rem;border-radius:12px;border:1px solid rgba(177,61,61,.2);background:#b13d3d14;color:#8d3131;font:inherit;cursor:pointer}.host-controls,.gate-panel{display:grid;gap:1rem}.gate-form,.field,.control-row{display:grid;gap:.65rem}.gate-actions{display:flex;flex-wrap:wrap;gap:1rem}.form-error{margin:0;color:#b13d3d;font-size:.92rem}.field span{font-size:.86rem;color:var(--ink-soft)}.field input,.field select,.control-row button,.gate-form button{min-height:44px;border-radius:14px;border:1px solid rgba(31,26,23,.16);font:inherit}.field input,.field select{padding:.8rem .9rem;background:#ffffffe6}.control-row{grid-template-columns:repeat(2,minmax(0,1fr))}.control-row button,.gate-form button{background:var(--accent);color:#fff;cursor:pointer}.gate-actions button{min-width:8rem;padding:.82rem 1.25rem;line-height:1.15}.button--primary{position:relative;overflow:hidden;min-height:52px;border:0;border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 36%) top left / 100% 100% no-repeat,linear-gradient(135deg,#1c8069,#0f5c4d 55%,#0b473d);color:#fffaf0;font-family:var(--font-display);font-size:1rem;letter-spacing:.03em;box-shadow:0 18px 32px #0f5c4d2e,inset 0 1px #ffffff38;cursor:pointer;transition:transform .14s ease,box-shadow .14s ease,filter .14s ease}.button--primary:before{content:"";position:absolute;inset:1px;border-radius:17px;border:1px solid rgba(255,255,255,.16);pointer-events:none}.button--primary:not(:disabled):hover,.button--primary:not(:disabled):focus-visible{transform:translateY(-1px);box-shadow:0 22px 38px #0f5c4d38,inset 0 1px #ffffff47;filter:saturate(1.05)}.button--primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.gate-form button:disabled{opacity:.45;cursor:not-allowed}.bid-grid,.hand-grid{display:grid;margin-bottom:1rem}.bid-grid{grid-template-columns:repeat(auto-fit,minmax(2.45rem,1fr));gap:.4rem}.bid-grid button,.hand-grid button{min-height:44px;border-radius:12px;border:1px solid rgba(31,26,23,.16);background:#ffffffeb;font:inherit;cursor:pointer}.hand-grid{gap:.65rem}.hand-grid--compact{justify-content:start}.hand-suit-row{display:flex;align-items:stretch;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;padding:.15rem .15rem .4rem;scrollbar-width:thin}.hand-suit-row .card-button{flex:0 0 clamp(4.45rem,19vw,5.75rem)}.hand-suit-row--spread{gap:.35rem}.hand-suit-row--stacked .card-button+.card-button{margin-left:clamp(-1.35rem,-5vw,-.55rem)}.card-button{padding:0;border:0;background:transparent}.card-button:focus-visible{outline:3px solid rgba(15,92,77,.32);outline-offset:3px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.card{position:relative;width:100%;aspect-ratio:4.5 / 6.8;padding:.5rem;border-radius:12px;border:1.5px solid rgba(31,26,23,.28);overflow:hidden;box-shadow:0 10px 20px #1a140f1f,inset 0 1px #ffffffb8;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.card--face-up{background:radial-gradient(circle at 50% 12%,rgba(255,255,255,.86),transparent 38%),linear-gradient(180deg,#fffdf9,#fbf5eb)}.card--face-down{background:linear-gradient(180deg,#22584e,#123f38)}.card--heart{border-color:#ff1712}.card--diamond{border-color:#f07800}.card--club{border-color:#087b3d}.card--spade{border-color:#100029}.card--playable{box-shadow:0 18px 34px #0f5c4d2e,inset 0 1px #ffffffb8}.card--trump{box-shadow:0 18px 34px #0f5c4d1f,0 0 0 2px #d8af5624,inset 0 1px #ffffffb8;background:radial-gradient(circle at 50% 12%,rgba(255,255,255,.9),transparent 38%),linear-gradient(180deg,#fffef8,#f2ead5)}.card--trump:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,rgba(216,175,86,.14),transparent 22%) top left / 100% 100% no-repeat}.card-button:not(:disabled):hover .card,.card-button:not(:disabled):focus-visible .card{transform:translateY(-3px)}.card__corner{position:absolute;left:.34rem;right:.34rem;display:grid;justify-items:center;align-content:start;gap:.1rem}.card__corner--top{top:.54rem}.card__corner--bottom{display:none}.card__rank{font-family:var(--font-display);font-size:clamp(1.02rem,1.85vw,1.42rem);line-height:1;color:var(--ink-strong)}.card__rank--heart{color:#d82720}.card__rank--diamond{color:#f07800}.card__rank--club{color:#087b3d}.card__rank--spade{color:#100029}.card__rank--red{color:#d82720}.card__rank--black{color:var(--ink-strong)}.card__pip{position:absolute;inset:0;display:grid;place-items:center}.card__pip-icon{width:min(44%,68px);height:auto;filter:drop-shadow(0 6px 14px rgba(31,26,23,.08))}.card__suit{width:clamp(.9rem,1.6vw,1.16rem);height:clamp(.9rem,1.6vw,1.16rem)}.card__suit--heart{fill:#d82720}.card__suit--diamond{fill:#f07800}.card__suit--club{fill:#087b3d}.card__suit--spade{fill:#100029}.card__suit--red{fill:#d82720}.card__suit--black{fill:#1f1a17}.card__back{position:absolute;inset:.2rem;border-radius:16px;overflow:hidden;background:linear-gradient(180deg,#0f4c43f0,#123f38fa)}.card__back-svg{width:100%;height:100%;display:block}.bid-grid button.selected{border-color:#fff8e7b8;background:#0f5c4d;color:#fff}.bid-grid button:disabled{opacity:.45;cursor:not-allowed}.hand-grid button:disabled{cursor:not-allowed}.hand-grid button:disabled .card{filter:saturate(.52) contrast(.94)}.bid-submit-button{width:100%;margin-top:.35rem}.scoreboard{width:100%;border-collapse:collapse}.scoreboard-scroll{overflow-x:auto;scrollbar-width:thin}.scoreboard th,.scoreboard td{padding:.75rem;border-bottom:1px solid var(--line);text-align:left}.scoreboard--rounds{min-width:34rem}.scoreboard--rounds th,.scoreboard--rounds td{min-width:8.5rem;vertical-align:top}.scoreboard--rounds th:first-child,.scoreboard--rounds td:first-child{min-width:4.25rem}.scoreboard-round-cell{display:inline-block;white-space:nowrap}.scoreboard-round-cell__tricks--made,.scoreboard-round-cell__round-score--made{color:#7ee6a7}.scoreboard-round-cell__tricks--missed,.scoreboard-round-cell__round-score--missed{color:#ff8d86}.scoreboard-round-cell__bid,.scoreboard-round-cell__total,.scoreboard-round-cell__separator{color:#f7f3ff}.scoreboard-round-cell__total{font-weight:800}.panel-note{margin:-.25rem 0 .75rem;color:#f7f3ffb3;font-size:.84rem;line-height:1.5}.table-panel>.panel-note{color:var(--ink-soft)}.table-panel-drawer .panel-note{color:#f7f3ffb8}.trick-cards{display:flex;flex-wrap:wrap;gap:.5rem}.trick-play{display:flex;flex-direction:column;gap:.35rem}.trick-play__player{display:inline-flex;align-items:center;gap:.28rem;color:var(--ink-soft);font-size:.9rem}.trick-play__marker{display:inline-grid;place-items:center;width:1.25rem;height:1.25rem;border-radius:999px;background:#f0c15a29;color:#f0c15a}.trick-play__marker--winner{background:#37d17724;color:#37d177}.trick-marker-legend{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.12rem}.trick-marker-legend__item{display:inline-flex;align-items:center;gap:.22rem}.trick-marker-legend__icon{display:inline-grid;place-items:center;width:1.2rem;height:1.2rem;border-radius:999px;background:#f0c15a29;color:#f0c15a}.trick-marker-legend__icon--winner{background:#37d17724;color:#37d177}.trick-meta__value--heart{color:#ff4b45}.trick-meta__value--diamond{color:#ff9b38}.trick-meta__value--club{color:#37d177}.trick-meta__value--spade{color:var(--ink-strong)}.trick-meta__value--red{color:#ff4b45}.trick-meta__value--black{color:var(--ink-strong)}.trick-empty-state{display:inline-flex;min-width:88px;justify-content:center;padding:.65rem .75rem;border-radius:14px;background:#0f5c4d14;color:var(--accent-strong)}.trick-card{display:inline-flex;width:4rem;min-width:0;padding:0;border-radius:12px;background:transparent;color:var(--ink-strong)}.trick-card .card{width:100%}.trick-card--heart{color:#d82720}.trick-card--diamond{color:#f07800}.trick-card--club{color:#087b3d}.trick-card--spade{color:#100029}.trick-card--red{color:#d82720}.trick-card--black{color:#100029}.active-player{margin:0 0 1rem;color:var(--ink-soft)}.control-row button:disabled{opacity:.45;cursor:not-allowed}.hero-panel{position:relative;overflow:hidden;padding:clamp(1.5rem,5vw,3rem);border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--bg-panel) 0%,var(--bg-panel-strong) 100%);box-shadow:var(--shadow-soft)}.hero-panel:after{content:"";position:absolute;right:-8%;top:-20%;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(15,92,77,.18) 0%,transparent 70%)}.eyebrow{margin:0 0 .5rem;font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}.hero-panel h1{margin:0;font-family:var(--font-display);font-size:clamp(2.2rem,5vw,4.4rem);line-height:.95}.lede{max-width:48rem;margin:1rem 0 0;color:var(--ink-soft);font-size:1.02rem;line-height:1.7}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin-top:1.25rem}.status-card{padding:1rem 1.1rem;border-radius:var(--radius-md);border:1px solid var(--line);background:#fff9f0b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.label{display:block;margin-bottom:.35rem;font-size:.78rem;color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase}.status-card strong{font-size:1.2rem}@media(min-width:701px)and (max-width:1100px){.home-table-grid{grid-template-columns:repeat(2,minmax(230px,1fr))}}@media(min-width:701px)and (max-width:800px){.home-shell{padding:1rem .75rem 2rem}.home-toolbar{align-items:stretch;flex-direction:column}.home-actions{order:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:.45rem}.home-language{order:1}.home-action-button--play{order:2}.home-action-button--create{order:3}.home-filters{order:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.home-filter-button,.home-action-button,.home-language{min-width:0;min-height:48px;width:100%}.home-filter-button,.home-action-button{gap:.28rem;padding:0 .42rem;font-size:.84rem;line-height:1.12}.home-filter-button svg{width:1.08rem;height:1.08rem;flex:0 0 auto}.home-language{padding:0 .35rem}.home-language select{width:100%;min-width:0;font-size:.84rem}}@media(max-width:700px){.home-shell{padding:1rem .75rem 2rem}.home-toolbar{align-items:stretch;flex-direction:column}.home-actions{order:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:.45rem}.home-language{order:1}.home-action-button--play{order:2}.home-action-button--create{order:3}.home-filters{order:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem}.home-filter-button,.home-action-button,.home-language{min-width:0;min-height:48px;width:100%}.home-filter-button,.home-action-button{gap:.28rem;padding:0 .42rem;font-size:.84rem;line-height:1.12}.home-filter-button svg{width:1.08rem;height:1.08rem;flex:0 0 auto}.home-language{padding:0 .35rem}.home-language select{width:100%;min-width:0;font-size:.84rem}.home-table-grid{grid-template-columns:1fr}.app-topbar__inner{flex-direction:column;align-items:stretch}.language-switcher{min-width:0;width:100%}.status-grid,.lobby-grid,.table-grid{grid-template-columns:1fr}.panel-header{flex-direction:column;align-items:flex-start}}body{background:radial-gradient(circle at 50% 20%,rgba(35,123,97,.18),transparent 28rem),linear-gradient(115deg,#c79b63,#dfbd82 42%,#b77d44)}.app-topbar{position:relative}.lobby-layout--table,.game-table-layout{position:relative;width:min(1180px,calc(100vw - 1.5rem));margin:0 auto;padding:0 0 .5rem}.lobby-table-strip{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:1rem;margin-bottom:.85rem;color:#fff8e7;text-shadow:0 2px 8px rgba(42,24,11,.28)}.lobby-table-strip h1,.lobby-table-strip p{margin:0}.lobby-table-strip .share-chip{max-width:min(520px,42vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-color:#fff8e757;background:#1f120947;color:#fff8e7}.game-table-stage{position:relative;min-height:clamp(600px,58vw,680px);display:grid;place-items:center}.game-table{position:relative;width:min(calc(100% - 9rem),1080px);min-height:clamp(560px,56vw,660px);border-radius:50%/42%;border:clamp(14px,2.4vw,26px) solid #1d1712;background:radial-gradient(ellipse at center,#1f7e55f2,#0d5637fa 62%,#06391f);box-shadow:inset 0 0 0 2px #ffffff1f,inset 0 18px 54px #ffffff14,0 28px 70px #1f120961;overflow:visible}.game-table:before{content:"";position:absolute;inset:-1.15rem;border-radius:inherit;border:1px solid rgba(255,248,231,.14);pointer-events:none}.seat-ring{position:absolute;inset:0;pointer-events:none;z-index:2}.table-seat{position:absolute;width:clamp(9rem,14vw,12rem);min-height:4.8rem;display:grid;align-content:start;gap:.16rem;padding:.65rem .75rem;border-radius:8px;border:1px solid rgba(255,248,231,.2);background:#121512c7;color:#fff8e7;box-shadow:0 12px 26px #0b080640;pointer-events:auto}.seat-title-line{display:flex;align-items:baseline;gap:.4rem;min-width:0}.seat-title-line strong,.table-seat strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-stat-lines{display:grid;gap:.12rem;min-width:0}.table-seat[data-position=bottom] .seat-stat-lines,.table-seat[data-position=top] .seat-stat-lines{display:flex;align-items:baseline;gap:.34rem;white-space:nowrap}.seat-score-line{min-width:0;white-space:nowrap}.table-seat--active{border-color:#f0c15a;box-shadow:0 12px 26px #0b080640,0 0 0 2px #f0c15a47}.table-seat--empty{min-height:3.6rem;align-content:center;justify-items:center;background:#12151257;color:#fff8e79e;border-style:dashed}.seat-status,.seat-score-line{font-size:.78rem;color:#fff8e7c7}.table-seat[data-position=bottom]{left:50%;bottom:-3.3rem;width:clamp(12.5rem,18vw,15rem);transform:translate(-50%)}.table-seat[data-position=top]{left:50%;top:-3.3rem;width:clamp(12.5rem,18vw,15rem);transform:translate(-50%)}.table-seat[data-position=left]{left:-3.2rem;top:50%;transform:translateY(-50%)}.table-seat[data-position=right]{right:-3.2rem;top:50%;transform:translateY(-50%)}.table-seat[data-position=lower-left]{left:-2.4rem;bottom:12%}.table-seat[data-position=upper-left]{left:-2.4rem;top:12%}.table-seat[data-position=lower-right]{right:-2.4rem;bottom:12%}.table-seat[data-position=upper-right]{right:-2.4rem;top:12%}.table-center-meta{position:absolute;left:0;right:0;top:-.35rem;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:.32rem;width:auto;transform:none}.table-meta-chip{display:inline-flex;align-items:center;gap:.35rem;min-width:0;max-width:100%;min-height:2rem;padding:.35rem .65rem;border-radius:999px;background:#04261680;color:#fff8e7d1;font-size:.82rem;white-space:nowrap}.table-center-meta>.table-meta-chip{grid-column:2;justify-self:end}.table-meta-chip strong{color:#fff8e7}.table-meta-chip--round{background:#0426166b}.table-center-meta>.table-meta-chip--total-bid{grid-column:1;grid-row:1;justify-self:start}.table-center-meta>.table-meta-chip--deck{grid-column:1;grid-row:2;justify-self:start}.tone-heart,.table-meta-chip .tone-heart{color:#ffbbb5}.tone-diamond,.table-meta-chip .tone-diamond{color:#ffb25d}.tone-club,.table-meta-chip .tone-club{color:#7ee6a7}.tone-spade,.table-meta-chip .tone-spade{color:#fff8e7}.tone-red,.table-meta-chip .tone-red{color:#ffbbb5}.tone-black,.table-meta-chip .tone-black{color:#fff8e7}.game-table-surface{position:absolute;inset:18% 13% 27%;z-index:4;display:grid;place-items:center;min-width:0}.table-phase{width:min(100%,680px);max-height:100%;overflow:auto;padding:clamp(.85rem,2vw,1.25rem);border-radius:8px;border:1px solid rgba(255,248,231,.18);background:#03361cad;color:#fff8e7;box-shadow:0 16px 34px #01140b38}.table-phase--lobby{overflow:visible;padding:clamp(.7rem,1.5vw,1rem)}.table-phase h2,.table-phase p{margin-top:0}.table-phase--playing{position:absolute;inset:0;width:100%;max-height:none;overflow:visible;padding:0;background:transparent;border:0;box-shadow:none}.bidding-sequence{display:flex;flex-wrap:nowrap;gap:.45rem;margin-bottom:.85rem}.bid-seat-card{flex:1 1 0;display:grid;gap:.2rem;min-width:0;min-height:4.4rem;padding:.65rem;border-radius:8px;background:#001a0e59}.bid-seat-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bid-seat-card span{font-family:var(--font-display);font-size:1.6rem;line-height:1}.table-phase .bid-panel{padding:0;border:0;background:transparent;box-shadow:none}.table-phase--bidding{width:min(100%,760px);max-height:none;overflow:visible;background:#03361cc7}.table-phase--bidding .bid-panel .panel-header p{color:#fff8e7}.table-phase--bidding .bid-submit-button{margin-top:.75rem}.table-phase--bidding-review{width:min(100%,760px);max-height:none;overflow:visible;background:#03361ccc}.bidding-review-header{display:flex;justify-content:space-between;align-items:start;gap:1rem}.bidding-review-header h2,.bidding-review-header p,.bidding-review-ready{margin:0}.bidding-review-header p,.bidding-review-ready{color:#fff8e7c7}.bidding-review-button{display:inline-flex;align-items:center;gap:.45rem;min-width:9rem;padding-inline:1rem}.bidding-review-button__progress{position:absolute;left:0;right:auto;bottom:0;height:3px;width:100%;background:#f0c15a;animation:bidding-review-countdown var(--review-duration, 5s) linear forwards}@keyframes bidding-review-countdown{0%{width:100%}to{width:0%}}.bidding-review-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.5rem;margin:1rem 0 .75rem}.bidding-review-player{display:grid;gap:.2rem;min-height:5.2rem;padding:.65rem;border-radius:8px;background:#001a0e59}.bidding-review-player span{font-family:var(--font-display);font-size:1.7rem;line-height:1}.bidding-review-player small{color:#fff8e7b8}.played-card-grid{position:absolute;inset:0;pointer-events:none}.table-turn-pointer{position:absolute;left:50%;top:50%;z-index:1;width:2.6rem;height:2.6rem;transform:translate(-50%,-50%);pointer-events:none}.table-turn-pointer:before{content:"";position:absolute;inset:.45rem;border-top:4px solid #f0c15a;border-right:4px solid #f0c15a;transform:rotate(-45deg);filter:drop-shadow(0 4px 9px rgba(0,0,0,.34))}.table-turn-pointer--bottom:before,.table-turn-pointer--center:before{transform:rotate(135deg)}.table-turn-pointer--left:before,.table-turn-pointer--lower-left:before,.table-turn-pointer--upper-left:before{transform:rotate(225deg)}.table-turn-pointer--right:before,.table-turn-pointer--lower-right:before,.table-turn-pointer--upper-right:before{transform:rotate(45deg)}.played-card-slot{position:absolute;display:grid;gap:.35rem;justify-items:center;min-width:4.6rem;padding:.35rem;border-radius:8px;background:transparent}.played-card-slot>span{color:#fff8e7c7;font-size:.86rem}.played-card-slot--bottom,.played-card-slot--center{left:50%;bottom:3%;transform:translate(-50%)}.played-card-slot--top{left:50%;top:8%;transform:translate(-50%)}.played-card-slot--left{left:9%;top:50%;transform:translateY(-50%)}.played-card-slot--right{right:9%;top:50%;transform:translateY(-50%)}.played-card-slot--lower-left{left:4%;bottom:12%}.played-card-slot--upper-left{left:4%;top:12%}.played-card-slot--lower-right{right:4%;bottom:12%}.played-card-slot--upper-right{right:4%;top:12%}.played-card-chip{display:inline-flex;width:clamp(4.55rem,6.1vw,5.3rem);padding:0;border-radius:12px;background:transparent;color:#1f1a17}.played-card-chip .card{width:100%}.played-card-slot--sideways .played-card-chip{transform-origin:center}.played-card-slot--lower-left .played-card-chip,.played-card-slot--upper-left .played-card-chip{transform:rotate(90deg)}.played-card-slot--lower-right .played-card-chip,.played-card-slot--upper-right .played-card-chip{transform:rotate(-90deg)}.undealt-card-chip{display:inline-flex;min-width:4.6rem;justify-content:center;padding:.5rem .7rem;border-radius:8px;background:#fffaf0;color:#1f1a17}.played-card-chip--heart,.undealt-card-chip--heart{color:#d82720}.played-card-chip--diamond,.undealt-card-chip--diamond{color:#f07800}.played-card-chip--club,.undealt-card-chip--club{color:#087b3d}.played-card-chip--spade,.undealt-card-chip--spade{color:#100029}.played-card-chip--red,.undealt-card-chip--red{color:#d82720}.played-card-chip--black,.undealt-card-chip--black{color:#100029}.lobby-table-settings__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.6rem}.lobby-table-settings__header h2{margin:0}.start-table-button{display:inline-flex;align-items:center;gap:.45rem;min-width:9rem;padding-inline:1rem}.table-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-bottom:.65rem}.table-phase--lobby .field span{color:#fff8e7}.lobby-seat-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.45rem}.lobby-seat-control{display:flex;align-items:center;justify-content:space-between;gap:.7rem;min-height:3.7rem;padding:.55rem .6rem;border-radius:8px;background:#001a0e47}.lobby-seat-control div:first-child{display:grid;gap:.18rem}.lobby-seat-control span{color:#fff8e7b8;font-size:.82rem}.seat-control-actions{display:flex;align-items:center;gap:.45rem}.seat-control-actions select{min-height:34px;border-radius:8px}.icon-button{display:inline-grid;place-items:center;width:2.15rem;height:2.15rem;border-radius:8px;border:1px solid rgba(255,248,231,.2);background:#fff8e71f;color:#fff8e7;cursor:pointer}.icon-button--danger{color:#ffbbb5;border-color:#ffbbb547}.icon-button:disabled{opacity:.45;cursor:not-allowed}.table-phase--result-shell{display:grid;gap:.75rem;width:min(100%,680px);background:transparent;border:0;box-shadow:none}.table-phase--result-summary{max-height:none;overflow:visible;padding:.85rem}.result-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem}.result-header h2{margin:0}.next-round-button{display:inline-flex;align-items:center;gap:.42rem;min-height:42px;padding:.55rem .85rem}.round-result-list{display:grid;gap:.65rem}.round-result-player{display:grid;grid-template-columns:minmax(10rem,.38fr) minmax(0,1fr);gap:.75rem;align-items:center;padding:.65rem;border-radius:8px;background:#001a0e52}.table-phase--result-summary .round-result-player{grid-template-columns:1fr;padding:.45rem .55rem}.round-result-player__meta{display:flex;align-items:center;gap:.75rem;min-width:0;flex-wrap:wrap}.round-result-player__meta strong{min-width:7rem}.round-result-player__meta span{color:#fff8e7c7;font-size:.82rem}.final-standings{display:grid;gap:.55rem;margin-top:.85rem;padding:.75rem;border-radius:8px;background:#001a0e5c}.final-standings h3{margin:0}.final-standings-list{display:grid;gap:.38rem;margin:0;padding:0;list-style:none}.final-standing-row{display:grid;grid-template-columns:4.8rem minmax(0,1fr) auto;align-items:center;gap:.75rem;min-height:2.25rem}.final-standing-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.final-standing-row span{color:#fff8e7c7;font-size:.85rem}.result-hand{display:flex;min-width:0;overflow-x:auto;padding:.2rem 1.2rem .2rem .15rem;scrollbar-width:none}.result-hand::-webkit-scrollbar{display:none}.result-card{flex:0 0 3.35rem}.result-card+.result-card{margin-left:-1.38rem}.result-hand--grouped{display:grid;gap:.18rem;overflow:visible}.result-hand-suit-row{display:flex;min-width:0}.result-hand-suit-row .result-card+.result-card{margin-left:-1.3rem}.result-seat-hands{position:absolute;inset:0;z-index:4;pointer-events:none}.result-seat-hand{position:absolute;width:min(40%,520px)}.result-seat-hand .result-hand{justify-content:center}.result-seat-hand--horizontal{width:min(58%,760px)}.result-seat-hand--horizontal .result-hand{overflow:visible;padding-inline:.15rem}.result-seat-hand--bottom{left:50%;bottom:4.6rem;transform:translate(-50%)}.result-seat-hand--top{left:50%;top:4rem;transform:translate(-50%)}.result-seat-hand--left{left:1.2rem;top:50%;width:min(25%,300px);transform:translateY(-50%)}.result-seat-hand--right{right:1.2rem;top:50%;width:min(25%,300px);transform:translateY(-50%)}.result-seat-hand--lower-left{left:2.6rem;bottom:19%;width:min(27%,320px)}.result-seat-hand--upper-left{left:2.6rem;top:19%;width:min(27%,320px)}.result-seat-hand--lower-right{right:2.6rem;bottom:19%;width:min(27%,320px)}.result-seat-hand--upper-right{right:2.6rem;top:19%;width:min(27%,320px)}.card--table-mini{border-radius:10px}.card--table-mini .card__corner{justify-items:center;align-content:start;gap:.08rem}.card--table-mini .card__rank{font-size:.86rem}.card--table-mini .card__suit{width:.82rem;height:.82rem}.card--played-mini{border-radius:10px}.card--played-mini .card__rank{font-size:.96rem}.card--played-mini .card__suit{width:.86rem;height:.86rem}.card--played-table{border-radius:10px}.card--played-table .card__rank{font-size:clamp(1rem,1.5vw,1.28rem)}.card--played-table .card__suit{width:1rem;height:1rem}.undealt-result{display:grid;gap:.4rem;margin-top:.8rem}.undealt-result div{display:flex;flex-wrap:wrap;gap:.35rem}.hand-panel{position:absolute;left:50%;bottom:3.35rem;z-index:5;width:min(91%,900px);padding:0;border-radius:8px;background:transparent;color:#fff8e7;transform:translate(-50%)}.hand-panel .hand-grid{margin-bottom:0}.hand-panel--bidding{bottom:2.2rem;background:transparent}.hand-panel--bidding .card{aspect-ratio:4.5 / 6.8}.hand-grid--rail{display:flex;flex-wrap:nowrap;align-items:stretch;justify-content:center;overflow-x:visible;overflow-y:hidden;overscroll-behavior-x:contain;padding:0;scrollbar-width:none}.hand-grid--rail::-webkit-scrollbar{display:none}.hand-grid--rail .card-button{flex:0 0 clamp(3.55rem,5.2vw,4.2rem)}.hand-grid--rail .card-button+.card-button{margin-left:clamp(-1.5rem,-1.95vw,-.78rem)}.hand-grid--rail.hand-grid--compact .card-button{flex-basis:clamp(3.4rem,6vw,4.2rem)}@media(max-width:900px){.table-chrome{padding-left:4.7rem}.table-menu{width:4.7rem;padding-inline:.35rem}.table-menu__item{min-height:3.85rem;font-size:.68rem}.table-panel-drawer{left:4.7rem;width:calc(100vw - 4.7rem)}.lobby-table-strip{grid-template-columns:1fr}.lobby-table-strip .share-chip{max-width:100%}.game-table-layout,.lobby-layout--table{width:min(100vw - .75rem,760px)}.game-table-stage{min-height:620px;overflow-x:auto;justify-content:start}.game-table{width:760px;min-height:600px}.table-seat{width:8.2rem;min-height:4.8rem;padding:.55rem}.game-table-surface{inset:19% 10% 29%}.table-settings-grid,.round-result-player{grid-template-columns:1fr}}@media(max-width:520px){.game-table-stage{display:block;overflow-x:visible;min-height:700px}.game-table{width:100%;min-height:680px;border-width:12px;border-radius:24px}.table-seat{position:static;width:7.5rem;min-height:4.35rem;font-size:.78rem;transform:none!important}.seat-ring{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;padding:.75rem}.table-seat{width:auto}.table-center-meta{position:relative;left:auto;top:auto;width:92%;margin:.2rem auto .65rem;transform:none}.game-table-surface{position:relative;inset:auto;padding:0 .75rem 7.6rem}.hand-panel{bottom:4.7rem;width:calc(100% - 1.5rem)}.table-phase{padding:.8rem}.lobby-table-settings__header{align-items:stretch;flex-direction:column}}
