:root{--ivory: #f7f0df;--felt: #0b6048;--felt-deep: #041810;--felt-edge: #062818;--paper: var(--ivory);--gold: #d3ae68;--mute: #b7c7b9;--ink: #072219;--font-display: "Bricolage Grotesque", "Noto Sans TC", ui-sans-serif, system-ui, sans-serif;--font-reading: "Manrope", "Noto Sans TC", ui-sans-serif, system-ui, sans-serif;--font-ui: "Manrope", "Noto Sans TC", ui-sans-serif, system-ui, sans-serif;font-family:var(--font-ui);color:var(--ivory);background:var(--felt-deep);color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:radial-gradient(ellipse at 50% 35%,#11362c,#08271f 48%,#041810)}.app-shell{height:100dvh;min-height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app-shell:has(.onboarding[data-flow=welcome]){height:auto;overflow:visible}.app-shell:has(.onboarding[data-flow=welcome])>main{overflow:visible;flex:none}.app-shell>main{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;align-items:center}.app-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.55rem 1.25rem;padding:.55rem 1.25rem .7rem;border-top:1px solid rgba(201,162,39,.2);background:linear-gradient(0deg,#120c068c,#120c062e);color:#f4e7c7b8;font-size:.78rem}.app-footer-copy{margin:0}.app-footer-links{display:flex;flex-wrap:wrap;gap:.35rem .85rem}.app-footer-links button{margin:0;padding:0;border:0;background:transparent;color:#e6c98aeb;font:inherit;text-decoration:underline;text-underline-offset:.18em;cursor:pointer}.app-footer-links button:hover{color:#f2d18c}.app-footer-links button:focus-visible{outline:2px solid #e6bf7b;outline-offset:3px}.legal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:1rem;background:#04100cb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.legal-sheet{width:min(720px,100%);max-height:min(86dvh,900px);display:flex;flex-direction:column;overflow:hidden;border-radius:18px;border:1px solid rgba(224,195,106,.38);background:linear-gradient(180deg,#362212fa,#160e08fa);box-shadow:0 24px 60px #00000073;color:#f4ead4}.legal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.1rem 1.2rem .85rem;border-bottom:1px solid rgba(224,195,106,.22)}.legal-head .btn-secondary{flex:0 0 auto;border-radius:10px;padding:.55rem .9rem;min-height:40px;border:1px solid #6e8774;background:transparent;color:#f4ead4;font:inherit;cursor:pointer}.legal-head .btn-secondary:hover{background:#233631}.legal-head h1{margin:0;font:700 1.35rem/1.2 "Noto Serif TC",Songti TC,serif;color:#e6c98a}.legal-updated{margin:.35rem 0 0;font-size:.78rem;color:#e8d6b0b3}.legal-body{overflow:auto;padding:.9rem 1.2rem 1.35rem;display:grid;gap:1rem}.legal-body h2{margin:0 0 .35rem;font:700 .95rem/1.3 var(--font-ui);color:#f0d7a2}.legal-body p{margin:0;font-size:.92rem;line-height:1.55;color:#f4e7c7e6}@media(max-width:720px){.app-footer{flex-direction:column;align-items:flex-start}}.top-bar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;padding:.75rem 1.25rem}.brand{font-family:var(--font-display);font-size:1.2rem;font-weight:700;letter-spacing:-.02em;color:var(--ivory)}.brand small{display:block;font-family:var(--font-ui);font-size:.65rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#f4e7c7bf}.status-pill{margin:.4rem 0;padding:.35rem .75rem;border-radius:999px;background:#fffaeb1f;border:1px solid rgba(244,231,199,.22)}.match-screen{padding:.5rem .75rem 1.25rem}.felt-table{width:min(980px,100%);margin:0 auto;min-height:min(54vh,560px);position:relative;border-radius:28px;background:radial-gradient(circle at 50% 46%,rgba(255,255,255,.08),transparent 36%),radial-gradient(circle at 50% 50%,#1a8a52,#0c5a34 62%,#084428);box-shadow:inset 0 0 80px #00000047,0 24px 50px #00000059;overflow:hidden}.table-center{position:absolute;top:30%;right:30%;bottom:32%;left:30%;display:grid;place-items:center;align-content:center;text-align:center;gap:.25rem;background:#0000002e;border-radius:18px;border:1px solid rgba(244,231,199,.16);padding:.6rem}.table-center h2{margin:0;font-family:"Noto Serif TC",serif;font-size:1.15rem;color:var(--gold)}.table-center p{margin:0;font-size:.85rem}.claim-focus{display:grid;justify-items:center;gap:.2rem}.player-seat{position:absolute;display:flex;flex-direction:column;gap:.25rem;align-items:center}.seat-bottom{bottom:2.5%;left:50%;transform:translate(-50%);width:68%}.seat-top{top:2.5%;left:50%;transform:translate(-50%);width:58%}.seat-right{right:1.5%;top:46%;transform:translateY(-50%);width:22%}.seat-left{left:1.5%;top:46%;transform:translateY(-50%);width:22%}.seat-label{display:flex;gap:.6rem;font-size:.78rem;letter-spacing:.04em;opacity:.9}.player-seat.active .seat-label{color:var(--gold)}.self-rack{width:min(980px,100%);margin:.75rem auto 0;display:grid;justify-items:center;gap:.45rem}.turn-hint{margin:0;opacity:.85}@media(max-width:720px){.felt-table{min-height:78vh}.seat-left,.seat-right{width:28%}.table-center{top:36%;right:24%;bottom:36%;left:24%}}.top-bar{background:linear-gradient(180deg,#2a180cb8,#2a180c26);border-bottom:1px solid rgba(201,162,39,.28)}.felt-table{box-shadow:inset 0 0 0 12px #6b3f22,inset 0 0 0 16px #8d5a32,inset 0 0 0 18px #3d2414,inset 0 0 80px #00000047,0 24px 50px #00000059}.walnut-panel{width:min(560px,92vw);margin:1.5rem auto;padding:1.4rem 1.4rem 1.2rem;background:linear-gradient(180deg,#4a2c18f0,#24160cf5);border:1px solid rgba(224,195,106,.45);border-radius:18px;box-shadow:inset 0 1px #ffecc82e,0 18px 40px #00000059}.lobby h1,.score-breakdown h2{font-family:"Noto Serif TC",serif;color:var(--gold);margin:0 0 .4rem}.lobby p{margin:0 0 .8rem;line-height:1.45;color:#f4e7c7e0}.eyebrow{margin:0;letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;color:#f4e7c7b3}label{display:block;font-size:.9rem}input[type=text],input:not([type]),input[type=range]{font:inherit}.lobby input[type=text],.lobby input:not([type]){width:100%;margin:.3rem 0 .75rem;padding:.55rem .7rem;border-radius:8px;border:1px solid rgba(244,231,199,.28);background:#ffffff0f;color:var(--paper)}.toolbar,.action-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin:.4rem 0 .9rem}button,.btn{font:inherit;cursor:pointer}.btn{border:1px solid rgba(224,195,106,.45);background:linear-gradient(180deg,#8a5530,#5c3418);color:var(--paper);padding:.48rem .9rem;border-radius:8px}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:linear-gradient(180deg,#d4541a,#9a3410);border-color:#f0b080}.btn.ghost{background:transparent}.seat-list{list-style:none;padding:0;margin:.4rem 0 0}.seat-list li,.delta-row{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.volume-row{display:flex;align-items:center;gap:.6rem;margin-top:.8rem}.volume-row input[type=range]{flex:1}.audio-toggle{display:flex;align-items:center;gap:.4rem;font-size:.9rem}.score-breakdown .faan-line{margin-top:0}.pattern-list{margin:.2rem 0 .8rem;padding-left:1.1rem}.chow-tiles{display:block;font-size:.72rem;opacity:.8}.open-hand{margin:.6rem 0}:root{--tile-w: clamp(48px, 3.35vw, 66px);--tile-h: clamp(71px, 4.8vw, 92px);--tile-lift: -8px;--tile-scale: 1.12}.tile-row{display:flex;flex-wrap:wrap;gap:.2rem;justify-content:center;align-items:flex-end}.mahjong-tile{position:relative;z-index:0;display:inline-flex;flex:none;padding:0;border:none;background:transparent;line-height:0;touch-action:manipulation;transform:translateZ(0);transition:transform .17s ease,filter .17s ease;filter:drop-shadow(0 2px 2px rgba(0,0,0,.28))}.mahjong-tile.playable,.mahjong-tile.inspectable{cursor:pointer}.mahjong-tile:focus-visible{outline:none}.mahjong-tile.inspected,.mahjong-tile.selected{outline:none}.mahjong-tile:is(:hover,:focus,:focus-visible,.selected,.inspected):not(.dragging){transform:none;z-index:12}.mahjong-tile.dragging,.mahjong-tile.dragging:is(:hover,:focus-visible,.selected,.inspected){transform:none;z-index:1}.tile-svg,.mahjong-tile.tile-back{width:var(--tile-w);height:var(--tile-h);display:block}.tile-sm{--tile-w: 34px;--tile-h: 48px}.tile-md{--tile-w: clamp(42px, 3.2vw, 58px);--tile-h: clamp(60px, 4.6vw, 80px)}.tile-lg{--tile-w: clamp(48px, 3.5vw, 66px);--tile-h: clamp(71px, 5vw, 92px)}.tile-tip{position:fixed;z-index:10050;display:none;flex-direction:column;align-items:center;gap:6px;padding:8px 11px;border:1px solid #bd9a62;border-radius:8px;background:#0c2119;color:#fff6db;font:600 12px/1.3 var(--font-ui);white-space:nowrap;pointer-events:none;box-shadow:0 12px 28px #0008}.tile-tip.is-open{display:flex}.tile-tip.tip-label{padding:5px 9px}.tile-tip-face{width:72px;height:100px;display:block;filter:drop-shadow(0 4px 6px rgba(0,0,0,.4))}.tile-tip-label{display:block;max-width:12em;overflow:hidden;text-overflow:ellipsis}.tile-ink{font-weight:700}.mahjong-tile .tile-svg{shape-rendering:geometricPrecision;text-rendering:geometricPrecision}.meld-rack,.discard-row,.flower-row,.concealed-row{display:flex;flex-wrap:wrap;gap:.28rem;justify-content:center;max-width:100%}.meld{display:inline-flex;gap:1px;padding:2px;border-radius:6px;background:#0000002e}.wall-row{max-width:220px}.wall-count{margin:.15rem 0 0;font-size:.75rem}.rack-row{min-height:calc(var(--tile-h) + 16px)}.tile-back.mahjong-tile{box-sizing:border-box;flex:none;padding:0;border:2px solid #e4d4ad;border-radius:4px;background:repeating-linear-gradient(45deg,transparent 0 4px,rgba(255,220,160,.1) 4px 5px,transparent 5px 9px),radial-gradient(circle at center,#c4741f 0,#c4741f 15%,#b2621b 16%,#b2621b 61%,#8a4a14 62%);box-shadow:inset 0 0 0 2px #8a4a14,0 3px #a59b7c,0 6px 7px #00190fb0;filter:none;line-height:0}button.tile-back{font:inherit;color:inherit;cursor:pointer}@media(prefers-reduced-motion:reduce){.mahjong-tile{transition:none}}.top-bar{flex:none;height:72px;padding:0 clamp(22px,3.5vw,72px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:22px;background:linear-gradient(180deg,#03110ed6,#0416106b);border-bottom:1px solid rgba(216,179,108,.12)}.brand-block{display:flex;align-items:center;gap:12px;min-width:0}.brand{display:flex;flex-direction:column;gap:4px;font-family:var(--font-display);font-size:clamp(1.08rem,1.9vw,1.3rem);font-weight:800;line-height:1;letter-spacing:-.025em;color:#f1eee1}.leave-table{gap:7px;flex:none;margin:0;padding:8px 11px;border-radius:999px;border:1px solid rgba(168,196,178,.28);background:#08201a8c;color:#c5d5c6;font:600 12px/1 var(--font-ui);letter-spacing:.02em;cursor:pointer;transition:background .18s ease,border-color .18s ease,color .18s ease}.leave-table svg{width:14px;height:14px}.leave-table:hover{background:#1c3a30e0;border-color:#c4d6c66b;color:#e8f0e8}.leave-table:focus-visible{outline:2px solid #e6bf7b;outline-offset:2px}.leave-table--header{padding:8px 12px 8px 10px}.brand small{font-family:var(--font-ui);font-size:.58rem;font-weight:600;line-height:1.35;letter-spacing:.14em;text-transform:uppercase;color:#a8b7a8}.header-right{display:flex;justify-content:flex-end;align-items:center;gap:9px}.language-selector select{margin:0;background-color:#112f27;color:#eadbb8;border:1px solid rgba(218,177,105,.29);border-radius:8px;padding:10px 12px;font:600 12px var(--font-ui);cursor:pointer}.language-selector select:hover{background:#184235}.language-selector select:focus-visible{outline:2px solid #e6bf7b;outline-offset:2px}.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}.meta{display:flex;align-items:center;gap:20px}.meta .metadata{display:flex;flex-direction:column;align-items:center;gap:2px}.meta .metadata b{font:600 .78rem/1.35 var(--font-ui);letter-spacing:.01em;color:#d7e0d6}.meta .metadata small{font-family:var(--font-ui);font-size:10px;letter-spacing:.04em;text-transform:none;color:#b2c3b4}.meta .sep{width:1px;height:25px;background:#e7cd9a36}.audio-controls{position:relative}.audio-control{gap:7px;background:#112f27;border:1px solid rgba(218,177,105,.29);padding:10px 12px;border-radius:8px;font-size:12px;line-height:1;color:#eadbb8;transition:background .2s}.audio-control:hover{background:#184235}.audio-control svg{width:15px;height:15px}.audio-popover{display:none;z-index:50;position:absolute;right:0;top:calc(100% + 8px);width:285px;border:1px solid #bca16a59;background:#102f28;color:#f2ead5;box-shadow:0 16px 40px #0009;border-radius:12px;padding:18px}.audio-popover.open{display:block}.audio-popover h3{margin:0 0 14px;font:600 14px var(--font-ui)}.audio-popover .field{display:grid;gap:10px;margin-top:10px}.audio-popover .field label{display:flex;justify-content:space-between;font-size:12px;color:#d8e0ce}.audio-popover .field input{width:100%;accent-color:#d2b377}.audio-popover .camera-hint{margin:6px 0 0;font-size:10px;line-height:1.45;color:#a2b6a9}.audio-popover .camera-reset{margin-top:8px;width:100%;border:1px solid rgba(210,179,119,.35);border-radius:8px;background:#d2b3771f;color:#e8d7b0;font:600 12px var(--font-ui);padding:8px 10px;cursor:pointer}.audio-popover .camera-reset:hover{background:#d2b37733}.mute-row{width:100%;margin-top:15px;display:flex;align-items:center;justify-content:space-between;background:#174335;padding:12px;border:1px solid #a7a68240;border-radius:8px;font-size:12px;color:#f2ead5}.mute-row .switch{display:inline-block;width:35px;height:19px;border-radius:20px;background:#628473;position:relative;flex:none}.mute-row .switch:before{content:"";position:absolute;left:3px;top:3px;width:13px;height:13px;background:#f8ecca;border-radius:50%;transition:transform .18s}.mute-row[aria-pressed=true] .switch{background:#aa7155}.mute-row[aria-pressed=true] .switch:before{transform:translate(16px)}.audio-popover .note{font-size:10px;color:#a2b6a9;margin:12px 0 0;line-height:1.5}.match-screen{align-self:stretch;width:100%;flex:1;min-height:0;display:flex;flex-direction:column;padding:0}.app-shell:has(.match-screen) .app-footer{display:none}.stage{flex:1;min-height:0;padding:0;display:flex;flex-direction:column;align-items:stretch;justify-content:stretch;gap:0}.table{position:relative;flex:1 1 auto;width:100%;max-width:none;height:auto;min-height:0;aspect-ratio:unset;border-radius:0;padding:0;background:transparent;box-shadow:none}.table:before{display:none}.felt{--hand-band: clamp(156px, 24vmin, 220px);--ring-x: max(3%, 16px);--ring-top: max(3%, 16px);--ring-bottom: var(--hand-band);position:relative;height:100%;width:100%;min-height:0;overflow:visible;border-radius:0;border:none;background:radial-gradient(ellipse at 53% 48%,rgba(22,132,96,.34),transparent 62%),radial-gradient(ellipse at 80% 13%,rgba(1,30,23,.23),transparent 43%),repeating-linear-gradient(89deg,transparent 0 2px,rgba(5,46,38,.16) 2px 3px,transparent 3px 5px),linear-gradient(142deg,#0c5c45,#096249 42%,#064732);box-shadow:none}.felt:before{display:none}.physical-walls{--wall-depth: 18px;--wall-overshoot: calc(var(--wall-depth) * 2);pointer-events:none;position:absolute;top:var(--ring-top);bottom:var(--ring-bottom);left:var(--ring-x);right:var(--ring-x);z-index:1}.physical-walls-3d{pointer-events:auto;touch-action:none;cursor:grab;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;overflow:hidden;border-radius:0;contain:strict}.physical-walls-3d.is-panning{cursor:grabbing}.physical-walls-3d canvas{pointer-events:none}.physical-wall{position:absolute;display:flex;gap:1px}.physical-wall-bottom{left:0;right:calc(var(--wall-overshoot) + var(--wall-depth));bottom:var(--wall-overshoot);height:var(--wall-depth);flex-direction:row-reverse}.physical-wall-right{right:var(--wall-overshoot);top:calc(var(--wall-overshoot) + var(--wall-depth));bottom:0;width:var(--wall-depth);flex-direction:column}.physical-wall-top{left:calc(var(--wall-overshoot) + var(--wall-depth));right:0;top:var(--wall-overshoot);height:var(--wall-depth);flex-direction:row}.physical-wall-left{left:var(--wall-overshoot);top:0;bottom:calc(var(--wall-overshoot) + var(--wall-depth));width:var(--wall-depth);flex-direction:column-reverse}.physical-walls[data-layout=closed-square]{--wall-overshoot: 0px}.physical-walls[data-layout=open-square]{--wall-overshoot: 0px;--wall-corner-gap: calc(var(--wall-depth) * .75);--wall-end-inset: calc(var(--wall-depth) + var(--wall-corner-gap))}.physical-walls[data-layout=open-square] .physical-wall-bottom,.physical-walls[data-layout=open-square] .physical-wall-top{left:var(--wall-end-inset);right:var(--wall-end-inset)}.physical-walls[data-layout=open-square] .physical-wall-left,.physical-walls[data-layout=open-square] .physical-wall-right{top:var(--wall-end-inset);bottom:var(--wall-end-inset)}.wall-stack{position:relative;flex:1 1 0;min-width:0;min-height:0}.wall-tile{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:2px;background:linear-gradient(145deg,#1a3d34,#0d2822 55%,#071a16);box-shadow:inset 0 1px #d2b47838,inset 0 -1px #00000073,0 1px 1px #00000059;border:1px solid rgba(40,70,58,.9)}.wall-tile-bottom{transform:translate(1px,2px);opacity:.92}.wall-tile-top{transform:translate(0);transition:transform .24s cubic-bezier(.65,0,.35,1)}.wall-tile-top:only-child{transform:translate(1px,2px)}@media(prefers-reduced-motion:reduce){.wall-tile-top{transition:none}}.physical-wall-bottom .wall-stack-break{margin-left:6px}.physical-wall-top .wall-stack-break{margin-right:6px}.physical-wall-left .wall-stack-break{margin-top:6px}.physical-wall-right .wall-stack-break{margin-bottom:6px}.flower-rack{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.flower-rack-label{font:600 9px var(--font-ui);letter-spacing:.14em;text-transform:uppercase;color:#e7cd9ab8}.flower-rack-tiles{display:flex;flex-wrap:wrap;gap:3px}.felt:after{pointer-events:none;content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(0,25,16,.26) 100%)}.discard-well .table-ornament{position:absolute;z-index:0;top:50%;left:50%;transform:translate(-50%,-50%);width:128px;height:128px;border:1px solid #dab66c1f;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#ead8a12b;font:500 64px "Noto Serif TC",serif;box-shadow:0 0 0 17px #dfbf7a08,0 0 0 33px #dfbf7a07;pointer-events:none}.bottom-fade{display:none}.match-screen .seat{position:absolute;z-index:9;display:flex;align-items:center;gap:9px;padding:7px 11px;border:1px solid rgba(240,222,177,.18);border-radius:9px;background:#04271db8;box-shadow:0 6px 20px #001f1729;white-space:nowrap;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.match-screen .seat .wind{display:grid;place-items:center;min-width:31px;height:31px;border:1px solid #b49356;border-radius:5px;font:700 17px "Noto Serif TC",serif;color:#d8bb7d;background:#153b2c}.match-screen .seat strong{display:block;max-width:140px;overflow:hidden;text-overflow:ellipsis;font-size:11px;letter-spacing:.02em;font-weight:650}.match-screen .seat.left>div:last-child,.match-screen .seat.right>div:last-child{min-width:0;max-width:92px}.match-screen .seat.left strong,.match-screen .seat.right strong,.match-screen .seat.left .sub,.match-screen .seat.right .sub{max-width:92px;overflow:hidden;text-overflow:ellipsis}.match-screen .seat .sub{font-size:10px;color:#a7b8a8;margin-top:2px}.match-screen .seat.active{border-color:#f6c86cf0;background:linear-gradient(180deg,#334222f2,#0d3327eb);box-shadow:0 0 0 2px #c49d4855,0 0 25px #c89d3c25}.match-screen .seat.active .wind{background:#b48b4b;color:#15291e}.match-screen .seat.self.claiming{border-color:#f6c86cf0;box-shadow:0 0 0 2px #c49d4844,0 0 18px #c89d3c23}.match-screen .seat.recent{border-color:#cfb07285}.match-screen .seat .dot{width:6px;height:6px;border-radius:50%;background:#dfc07f;box-shadow:0 0 8px #e9b960;animation:seat-pulse 1.4s ease-in-out infinite}.match-screen .seat.top{top:20px;left:50%;transform:translate(-50%)}.match-screen .seat.left{top:42%;left:15px}.match-screen .seat.right{top:42%;right:15px}.match-screen .seat.self{left:22px;bottom:19px}.backs{position:absolute;z-index:3;display:flex;gap:2px;perspective:720px;transform-style:preserve-3d}.backs.top{top:70px;left:50%;transform:translate(-50%);perspective-origin:50% 0%}.backs.left{left:168px;top:50%;transform:translateY(-50%);flex-direction:column;perspective-origin:0% 50%}.backs.right{right:168px;top:50%;transform:translateY(-50%);flex-direction:column;perspective-origin:100% 50%}.backs .mahjong-tile{--tile-w: 28px;--tile-h: 40px;--tile-thick: 7px;--tile-lean: 22deg;transform-style:preserve-3d;transform:rotateX(var(--tile-lean));transform-origin:center bottom;filter:drop-shadow(0 4px 4px rgba(0,18,12,.35))}.backs .mahjong-tile:after{content:"";position:absolute;left:1px;right:1px;top:calc(100% - 1px);height:var(--tile-thick);border-radius:0 0 3px 3px;background:linear-gradient(180deg,#c4741f,#b2621b 55%,#8a4a14);box-shadow:inset 0 1px #ffdca047;pointer-events:none}.backs.left .mahjong-tile,.backs.right .mahjong-tile{--tile-w: 28px;--tile-h: 40px;--tile-lean: 18deg}.backs.left .tile-back,.backs.right .tile-back{box-shadow:inset 0 0 0 2px #8a4a14,0 3px #a59b7c,0 5px 6px #00190f9a}.seat-public{position:absolute;z-index:8;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:flex-end;align-content:flex-end;max-width:min(46%,360px);overflow:visible}.seat-public.top{top:18px;right:calc(50% + 120px);left:auto;transform:none;max-width:min(48%,420px)}.seat-public.left{left:18px;top:58%;max-width:min(32vw,300px)}.seat-public.right{right:18px;top:22%;max-width:min(32vw,300px)}.seat-public .mahjong-tile{--tile-w: clamp(30px, 3.2vmin, 44px);--tile-h: clamp(42px, 4.5vmin, 62px)}.seat-public .meld-rack{gap:5px;justify-content:flex-start;flex-wrap:wrap;max-width:100%}.seat-public .flower-rack{position:relative;left:auto;bottom:auto;max-width:100%;flex-direction:row;align-items:flex-end;gap:0}.seat-public .flower-rack-label{display:none}.seat-public .flower-rack-tiles{display:inline-flex;flex-wrap:nowrap;align-items:flex-end;gap:1px;max-width:none;width:max-content;padding:2px;border-radius:6px;background:#0000002e}.discard-well{--well-inset-x: calc((100% - 2 * var(--ring-x)) * .04);--well-inset-top: calc((100% - var(--ring-top) - var(--ring-bottom)) * .04);--well-inset-bottom: calc((100% - var(--ring-top) - var(--ring-bottom)) * .04);position:absolute;z-index:5;top:calc(var(--ring-top) + var(--well-inset-top));bottom:calc(var(--ring-bottom) + var(--well-inset-bottom));left:calc(var(--ring-x) + var(--well-inset-x));right:calc(var(--ring-x) + var(--well-inset-x));display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(12%,1fr) minmax(0,1fr);gap:8px;pointer-events:none;background:none;border:none;box-shadow:none;perspective:820px;perspective-origin:50% 40%}.river{position:relative;z-index:1;min-width:0;min-height:0;display:flex;flex-wrap:wrap;gap:8px;align-content:center;justify-content:center;pointer-events:none;background:none;border:none;box-shadow:none}.river.place-top{grid-column:2;grid-row:1;align-content:flex-end;justify-content:center}.river.place-bottom{grid-column:2;grid-row:3;align-content:flex-start;justify-content:center}.river.place-left{grid-column:1;grid-row:1 / 4;flex-direction:column;align-content:flex-end;justify-content:center}.river.place-right{grid-column:3;grid-row:1 / 4;flex-direction:column;align-content:flex-start;justify-content:center}.river .mahjong-tile{--tile-w: 32px;--tile-h: 44px;pointer-events:auto;transform:none;transform-origin:center center;filter:none}.felt:not([data-felt="3d"]) .river .mahjong-tile{transform:rotateX(28deg);filter:drop-shadow(0 2px 2px rgba(0,18,12,.28))}.felt[data-felt="3d"] .river .mahjong-tile:is(:hover,:focus-visible,.selected,.inspected):not(.dragging){transform:none;filter:none;outline:none;z-index:30}.self-hand:hover,.backs:hover,.meld-zone:hover,.flower-rack:hover,.seat-public:hover{z-index:20}.river .mahjong-tile.latest,.river-hit-overlay .mahjong-tile.latest{outline:none;z-index:2;filter:none;box-shadow:none;position:relative}.felt:not([data-felt="3d"]) .river .mahjong-tile.latest:before{content:"";position:absolute;left:50%;top:-20px;width:16px;height:16px;margin-left:-8px;background:linear-gradient(135deg,#fff6c2,#ffd24a 38%,#f0a202 68%,#c8860a);border:1.5px solid rgba(255,248,200,.95);box-shadow:0 0 10px #ffd24abf,0 3px 8px #000c0880,inset 0 1px #ffffffd9,inset 0 -2px 3px #a05a0059;transform:translateY(0) rotateX(55deg) rotate(45deg);transform-origin:center center;animation:latest-discard-diamond 1.6s ease-in-out infinite;pointer-events:none;z-index:3}@keyframes latest-discard-diamond{0%,to{transform:translateY(0) rotateX(55deg) rotate(45deg) scale(1)}50%{transform:translateY(-11px) rotateX(55deg) rotate(45deg) scale(1.08)}}@media(prefers-reduced-motion:reduce){.felt:not([data-felt="3d"]) .river .mahjong-tile.latest:before{animation:none}}.felt-prompts{position:absolute;z-index:8;top:118px;right:64px;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.turn-banner{position:absolute;z-index:8;top:118px;right:64px;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;color:#f6e2b4;font-size:13px;letter-spacing:.04em;background:linear-gradient(180deg,#0e382aa8,#061e167a);border:1px solid rgba(223,191,122,.46);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 10px 24px #00100a61,inset 0 1px #f2d18c3d}.felt-prompts .turn-banner{position:static;top:auto;right:auto;left:auto;transform:none}.turn-banner .bullet{width:7px;height:7px;background:#d3aa61;border-radius:50%;box-shadow:0 0 12px #edc775}.reminder-bell{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;border:1px solid rgba(223,191,122,.55);background:linear-gradient(180deg,#302412e6,#161008d1);color:#f6e2b4;font:700 12px var(--font-ui);letter-spacing:.06em;cursor:pointer}.reminder-bell svg{display:block}.reminder-bell:hover:not(:disabled){background:#3a2c16}.reminder-bell:focus-visible{outline:2px solid #e6bf7b;outline-offset:2px}.reminder-bell:disabled{opacity:.45;cursor:default}.reply-mark{width:8px;height:8px;border-radius:50%;flex:none}.reply-mark.waiting{background:transparent;box-shadow:inset 0 0 0 1.5px #e6c27a,0 0 8px #e9b960;animation:seat-pulse 1.4s ease-in-out infinite}.reply-mark.answered{background:#7dcea0;box-shadow:inset 0 0 0 1.5px #d5f3e2}.wall-inline{display:none}.hand-zone{position:absolute;z-index:11;left:0;right:0;bottom:0;height:var(--hand-band, 160px);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;padding:8px 20px 10px;margin:0;background:transparent;border:none;box-shadow:none;overflow:visible;pointer-events:none}.hand-zone>*{pointer-events:auto}.felt[data-felt="3d"] .backs .mahjong-tile{visibility:hidden;pointer-events:none}.felt[data-felt="3d"] .discard-well{pointer-events:none}.felt[data-felt="3d"] .discard-well .mahjong-tile{visibility:hidden;pointer-events:none}.river-hit-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none}.river-hit-overlay .mahjong-tile{--tile-w: 100%;--tile-h: 100%;pointer-events:auto;margin:0;padding:0;transform:none!important;filter:none!important;outline:none!important;box-shadow:none!important}.river-hit-overlay .mahjong-tile .tile-svg{width:100%;height:100%;opacity:0}.backs{perspective:none}.backs .mahjong-tile{transform:none!important}.backs .mahjong-tile:after{display:none}.self-area{--self-tile-w: 56px;--self-tile-h: 79px;position:relative;width:100%;max-width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:flex-end;justify-content:safe center;gap:12px;min-width:0;min-height:0;padding-top:36px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.self-area::-webkit-scrollbar{height:4px}.self-area::-webkit-scrollbar-thumb{background:#f5e4aa59;border-radius:999px}.self-exposed{position:relative;right:auto;bottom:auto;z-index:12;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:flex-end;gap:8px 12px;flex:0 0 auto;min-width:0;max-width:none;margin:0;padding:0 4px 0 14px;border-left:2px solid rgba(245,228,170,.85);box-shadow:inset 1px 0 #00000040;overflow:visible}.self-exposed::-webkit-scrollbar{display:none}.self-exposed .meld-rack{flex-wrap:nowrap;justify-content:flex-start;max-width:none;width:max-content;gap:8px}.self-exposed .flower-rack{position:relative;flex:0 0 auto;flex-direction:row;align-items:flex-end;gap:0;max-width:none}.self-exposed .flower-rack-label{display:none}.self-exposed .flower-rack-tiles{display:inline-flex;flex-wrap:nowrap;align-items:flex-end;gap:1px;width:max-content;max-width:none;padding:0;border-radius:0;background:none;box-shadow:none;filter:none}.self-exposed .meld{padding:0;border-radius:0;background:none;box-shadow:none;filter:none}.self-rack{display:flex;flex-direction:column;align-items:center;gap:4px;margin:0;min-width:0;flex:0 1 auto;width:auto;max-width:none}.self-hand{display:flex;justify-content:flex-start;align-items:flex-end;gap:4px;box-sizing:border-box;min-width:0;width:max-content;max-width:none;padding:0 4px;overflow:visible}.self-hand .mahjong-tile,.self-exposed .mahjong-tile{--tile-w: var(--self-tile-w);--tile-h: var(--self-tile-h);flex:0 0 auto}.self-hand .mahjong-tile{transform:none;margin-bottom:0;filter:drop-shadow(0 1px 0 #d7c9a8) drop-shadow(0 4px 5px rgba(0,18,12,.38))}.self-hand .mahjong-tile:after{display:none}.self-hand .mahjong-tile.drawn{margin-left:14px}.match-screen .mahjong-tile{filter:drop-shadow(0 1px 0 #b2a98e) drop-shadow(0 3px 4px rgba(0,21,13,.4))}.match-screen .self-hand .mahjong-tile:is(:hover,:focus,:focus-visible,.selected,.inspected):not(.dragging){transform:none;outline:none;filter:drop-shadow(0 1px 0 #d7c9a8) drop-shadow(0 4px 5px rgba(0,18,12,.38))}.match-screen .self-hand .mahjong-tile.dragging,.match-screen .self-hand .mahjong-tile.dragging:is(:hover,:focus-visible,.selected,.inspected){transform:none;outline:none;filter:drop-shadow(0 1px 0 #d7c9a8) drop-shadow(0 4px 5px rgba(0,18,12,.38))}.meld-zone{position:relative;border-left:none;padding-left:0;display:flex;flex-direction:row;gap:8px;align-items:flex-end;min-height:0}.self-exposed .meld-zone{border-left:none;padding-left:0}.meld-zone .meld-rack{gap:8px;justify-content:flex-start;flex-wrap:nowrap;max-width:none;width:max-content}.meld-label{position:absolute;left:0;bottom:100%;margin:0 0 5px;color:#dfd09fbd;font-size:9px;line-height:1;letter-spacing:.13em;text-transform:uppercase;font-weight:600;white-space:nowrap;pointer-events:none;z-index:2}.match-screen .action-bar{position:relative;isolation:isolate;z-index:12;left:auto;bottom:auto;transform:none;display:flex;align-items:center;gap:10px;margin:6px;padding:10px 12px;border:1px solid rgba(223,191,122,.48);border-radius:16px;background:linear-gradient(180deg,#0c3a2c9e,#05201880);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 14px 32px #00100a6b,inset 0 1px #f2d18c47}.match-screen .action-bar.has-claim-timer{border-color:transparent;box-shadow:0 14px 32px #00100a6b,inset 0 1px #f2d18c47}.match-screen .action-bar.has-claim-timer:before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:20px;z-index:-1;padding:3px;background:conic-gradient(from -90deg,#e6bf7b38 0,#e6bf7b38 calc((1 - var(--claim-remain, 1)) * 360deg),#f0d08a calc((1 - var(--claim-remain, 1)) * 360deg),#f0d08a 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;pointer-events:none}.match-screen .action:disabled{opacity:.45;cursor:default}.match-screen .action-bar .helper{font-size:13px;font-weight:600;letter-spacing:.01em;color:#f4e7c8;padding:0 8px;white-space:nowrap}.match-screen .action{background:#1b523ee0;border:1px solid rgba(168,196,150,.55);border-radius:8px;font-size:13px;line-height:1;padding:9px 14px;color:#faf1d9;white-space:nowrap}.match-screen .action.primary{background:#c09b5f;color:#172b1f;border-color:#ebd4a5;font-weight:650}.match-screen .action.pass{background:transparent;color:#b9c4b1;border-color:#8eac986a}.table-notice{position:absolute;z-index:12;top:12px;right:16px;max-width:280px;margin:0;padding:6px 10px;border-radius:999px;background:#3a1c14eb;color:#f3d7c4;font-size:12px}@keyframes seat-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.8)}}@media(max-width:1365px){.self-hand{gap:4px}.match-screen .seat.left>div:last-child,.match-screen .seat.right>div:last-child,.match-screen .seat.left strong,.match-screen .seat.right strong,.match-screen .seat.left .sub,.match-screen .seat.right .sub{max-width:78px}.match-screen .seat.left{left:9px}.match-screen .seat.right{right:9px}.backs.left{left:128px}.backs.right{right:128px}}@media(min-width:1366px)and (max-width:1919px){.self-area{--self-tile-w: 56px;--self-tile-h: 79px}}@media(min-width:1920px)and (max-width:2559px){.self-area{--self-tile-w: 60px;--self-tile-h: 84px}}@media(min-width:2560px)and (max-width:3439px){.self-area{--self-tile-w: 64px;--self-tile-h: 90px}}@media(min-width:3440px){.self-area{--self-tile-w: 68px;--self-tile-h: 96px}}@media(max-width:767px){.top-bar{height:auto;min-height:64px;padding:8px 16px;grid-template-columns:1fr auto;grid-template-areas:"brand actions" "meta meta";row-gap:6px}.brand-block{grid-area:brand}.header-right{grid-area:actions}.leave-table--header span{display:none}.leave-table--header{padding:8px}.meta{grid-area:meta;display:flex;gap:8px 12px;justify-content:flex-start;flex-wrap:wrap;min-width:0}.meta .metadata b{font-size:11px;letter-spacing:.04em}.meta .metadata small{display:none}.meta .sep{height:14px}.match-screen{padding-bottom:0}.stage{padding:0;min-height:0}.table{width:100%;max-width:none;aspect-ratio:unset;height:auto;min-height:0;padding:0}.felt{--hand-band: clamp(140px, 28vmin, 190px);--ring-x: max(8%, 24px);--ring-top: max(8%, 24px);--ring-bottom: var(--hand-band);min-height:0}.physical-walls{--wall-depth: 12px}.discard-well{gap:2px}.river .mahjong-tile{--tile-w: 22px;--tile-h: 30px}.match-screen .seat.top{top:12px}.backs.top{top:72px}.backs.top .mahjong-tile{--tile-w: 24px;--tile-h: 34px}.felt-prompts{top:108px;left:50%;right:auto;transform:translate(-50%);align-items:center}.turn-banner{white-space:nowrap;letter-spacing:0;font-size:12px}.match-screen .seat.left{left:9px;top:108px}.match-screen .seat.right{right:9px;top:108px}.discard-well .table-ornament{width:72px;height:72px;font-size:36px;box-shadow:0 0 0 10px #dfbf7a08,0 0 0 18px #dfbf7a07}.self-rack{align-items:center}.wall-inline{display:inline}.hand-zone{padding:6px 8px 8px}.self-area{gap:8px;flex-wrap:nowrap;min-height:0;justify-content:safe center;width:100%;max-width:100%}.self-hand{width:max-content;max-width:none;justify-content:flex-start;overflow:visible;gap:6px;padding:0 2px}.self-area{--self-tile-w: 56px;--self-tile-h: 79px}.self-exposed{flex:0 0 auto;flex-wrap:nowrap;max-width:none;overflow:visible}.meld-zone{min-height:0;align-items:flex-end;border-left:none;padding-left:0;overflow-x:visible}.self-exposed .meld-rack{flex-wrap:nowrap}.match-screen .seat.self{left:11px;bottom:16px;padding:4px 6px}.match-screen .seat.self .wind{min-width:25px;height:25px;font-size:14px}.match-screen .seat.self .sub{font-size:8px}.match-screen .action-bar{gap:6px;max-width:100%;flex-wrap:wrap;justify-content:center}.match-screen .action-bar .helper{flex:1 1 100%;white-space:normal;text-align:center;font-size:12px;padding:2px 6px 4px}.match-screen .seat.left .sub,.match-screen .seat.right .sub{font-size:9px}.match-screen .seat.left,.match-screen .seat.right{padding:5px;gap:4px}.match-screen .seat.left .wind,.match-screen .seat.right .wind{min-width:26px;height:27px;font-size:14px}.seat-public.top{top:18px;right:calc(50% + 48px);left:auto;transform:none;max-width:36%}.seat-public.left{left:8px;top:58%;max-width:36%}.seat-public.right{right:8px;top:26%;max-width:36%}.seat-public .mahjong-tile{--tile-w: 28px;--tile-h: 40px}.audio-popover{position:fixed;right:12px;top:58px}}@media(max-width:389px){.stage{padding-inline:6px}.self-area{--self-tile-w: 56px;--self-tile-h: 79px}.table,.felt{min-height:0}}@media(min-width:390px)and (max-width:767px){.self-area{--self-tile-w: 56px;--self-tile-h: 79px}}@media(prefers-reduced-motion:reduce){.match-screen .seat .dot,.reply-mark.waiting{animation:none}}.help-launch.is-active{box-shadow:0 0 0 1px #d2b3778c,0 6px 16px #00000038}.help-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;background:#020a089e;animation:help-fade .18s ease}.help-dialog{width:min(1000px,92vw);max-height:min(85vh,920px);display:flex;flex-direction:column;min-height:0;color:#f3ead6;font-family:var(--font-ui);background:linear-gradient(180deg,#16382dfa,#0a201afa);border:1px solid rgba(194,163,107,.45);border-radius:18px;box-shadow:inset 0 1px #ffecc824,0 24px 70px #0000007a;animation:help-rise .18s ease}.help-dialog:focus{outline:none}.help-dialog:focus-visible,.help-dialog button:focus-visible,.help-dialog input:focus-visible,.help-launch:focus-visible{outline:2px solid #e6bf7b;outline-offset:2px}.help-dialog-head,.help-dialog-foot{flex:none;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 26px}.help-dialog-head{border-bottom:1px solid rgba(194,163,107,.22)}.help-dialog-foot{border-top:1px solid rgba(194,163,107,.22);color:#a9b9ad;font-size:.82rem}.help-dialog h2{margin:0;font:750 1.8rem/1.1 var(--font-display);letter-spacing:-.03em;color:#f0d7a4}.help-eyebrow,.help-chinese,.help-sub,.help-muted{margin:0;color:#a9b9ad}.help-eyebrow{margin-bottom:8px;letter-spacing:.16em;text-transform:uppercase;font:600 .72rem/1 var(--font-ui)}.help-chinese{margin-top:6px;font-family:"Noto Serif TC",serif;font-weight:500}.help-sub{margin-top:8px;font:500 .95rem/1.5 var(--font-ui);color:#eadbb8}.help-close{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0;padding:0;flex:none;border-radius:8px;border:1px solid rgba(218,177,105,.35);background:transparent;color:#f3ead6;cursor:pointer}.help-close svg{display:block;flex:none}.help-banner{flex:none;margin:0;padding:8px 18px;background:#3a2414;color:#f3d7c4;border-bottom:1px solid rgba(243,215,196,.28);font-size:13px}.help-dialog-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:22px 26px 24px}.help-dialog-body>*{flex:1;min-height:0}.help-legend,.help-rules{display:flex;flex-direction:column;min-height:0}.help-toolbar{flex:none;display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}.help-chip,.help-tabs button,.help-text-button,.help-tile-button{font-family:var(--font-ui);font-weight:500;cursor:pointer;color:#eadbb8;background:#fff8e60a;border:1px solid rgba(194,163,107,.28);border-radius:10px}.help-chip,.help-text-button{padding:8px 12px;font-size:.88rem}.help-chip[aria-pressed=true],.help-tabs button[aria-selected=true]{background:#c2a36b2e;border-color:#e6bf7bb3;color:#f7eacb}.help-search{flex:1;min-width:140px;padding:11px 14px;border-radius:10px;border:1px solid rgba(194,163,107,.35);background:#04120e8c;color:#f3ead6;font:500 .92rem/1.4 var(--font-ui)}.help-legend-scroll,.help-rule-body{flex:1;min-height:0;overflow:auto}.help-section-head{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:baseline;margin:20px 0 12px}.help-section-head h3,.help-rule-body h3,.help-detail h3{margin:0;font:700 1.15rem/1.2 var(--font-display);letter-spacing:-.02em;color:#f0d7a4}.help-section-head span,.help-unused{font-size:.82rem;color:#c8b48a}.help-muted{margin-bottom:10px;font:500 .9rem/1.5 var(--font-ui)}.help-unused{font-style:normal;letter-spacing:.02em}.help-tile-section.unused{opacity:.72}.help-tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}.help-tile-button{display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:10px;padding:6px 4px 8px;font-size:11px;line-height:1.25;text-align:center}.help-tile-button[aria-pressed=true]{border-color:#e6bf7b}.help-detail{flex:none;display:grid;grid-template-columns:auto 1fr;gap:14px;margin-top:16px;padding-top:16px;border-top:1px solid rgba(194,163,107,.28)}.help-detail p{margin:0 0 10px;font:500 .92rem/1.55 var(--font-ui)}.help-rules{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr);gap:18px}.help-tabs{display:flex;flex-direction:column;gap:6px;overflow:auto}.help-tabs button{text-align:left;border-radius:10px;padding:10px 12px;font-size:.88rem}.help-rule-body h3{font:750 1.35rem/1.15 var(--font-display);letter-spacing:-.03em;margin-bottom:12px}.tile-mention{display:inline;max-width:100%;margin:0 .05em;padding:.08em .38em;border-radius:5px;border:1px solid rgba(218,177,105,.42);background:#d2b37729;color:#f3e2b8;font:inherit;font-weight:650;line-height:inherit;white-space:nowrap;cursor:help;box-shadow:inset 0 1px #ffecbe1f;vertical-align:baseline}.tile-mention:hover,.tile-mention:focus-visible{border-color:#e6bf7bb8;background:#d2b37742;outline:none}.tile-mention-tip-face{display:block;pointer-events:none}.tile-mention-tip-face .mahjong-tile{pointer-events:none;filter:none;box-shadow:none}.help-rule-body p,.help-rule-body li{font:500 .98rem/1.58 var(--font-ui);color:#e7ecdf}.help-rule-body p{margin:0 0 14px}.help-rule-body ul{margin:0 0 14px;padding-left:1.2em}.help-rule-body li+li{margin-top:8px}.help-you{color:#f0d7a4}.help-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:14px;margin:0 0 16px;padding:0;list-style:none}.help-steps li{padding:14px;border-radius:12px;background:#fff8e60a;border:1px solid rgba(194,163,107,.28);font:500 .88rem/1.45 var(--font-ui);color:#d5dece}.help-steps b{display:block;margin-bottom:6px;font:700 1rem/1.2 var(--font-display);letter-spacing:-.02em;color:#f0d7a4}.help-callout{border:1px solid rgba(212,175,55,.45);background:#5a3c1447;border-radius:12px;padding:14px 16px}.help-units{width:min(280px,100%);border-collapse:collapse;margin:0 0 14px;font:500 .9rem/1.45 var(--font-ui)}.help-units caption{text-align:left;margin-bottom:8px;color:#eadbb8}.help-units th,.help-units td{text-align:left;padding:8px 12px;border-bottom:1px solid rgba(194,163,107,.25)}.rules-wall{display:grid;grid-template-columns:18px 28px minmax(0,1fr) 28px 18px;grid-template-rows:14px 22px minmax(120px,1fr) 22px 14px;gap:0;min-height:240px;margin:0 0 12px}.rules-wall-north{grid-column:3 / 6;grid-row:2;display:flex;gap:2px}.rules-wall-east{grid-column:4;grid-row:3 / 6;display:flex;flex-direction:column;gap:2px}.rules-wall-south{grid-column:1 / 4;grid-row:4;display:flex;gap:2px}.rules-wall-west{grid-column:2;grid-row:1 / 4;display:flex;flex-direction:column;gap:2px}.rules-wall-center{grid-column:3;grid-row:3;margin:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#f0d7a4;text-align:center}.rules-wall-stack{flex:1 1 0;min-width:3px;min-height:3px;border-radius:1px;background:linear-gradient(#245c48,#0e3328);border:1px solid rgba(216,179,108,.45);box-shadow:inset 0 -5px #00000047}body.help-open,body.help-open .app-shell,body.help-open .app-shell>main{overflow:hidden}@keyframes help-fade{0%{opacity:0}to{opacity:1}}@keyframes help-rise{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@media(max-width:830px){.help-launch{padding:10px}.help-launch-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.help-backdrop{padding:0}.help-dialog{width:100%;height:100%;max-height:none;border-radius:0}.help-rules{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.help-tabs{flex-direction:row}.help-tabs button{white-space:nowrap}.help-steps{grid-template-columns:1fr 1fr}.help-detail{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.help-backdrop,.help-dialog{animation:none}}.onboarding{--onb-cream: #f1eee1;--onb-muted: #b1c1b5;--onb-gold: #dfb86d;--onb-brass-top: #e5c280;--onb-brass: #b99553;--onb-walnut: #76543b;--onb-felt: #106343;--onb-ink: #14201d;width:min(900px,100%);margin:0 auto;padding:clamp(8px,2vw,20px) clamp(12px,3vw,20px) 36px;color:var(--onb-cream)}.brand.brand-wordmark{font-family:var(--font-display);font-size:clamp(1.08rem,1.9vw,1.3rem);font-weight:800;letter-spacing:-.025em;color:#f1eee1;line-height:1}.brand.brand-wordmark b{color:#dfb86d;font-weight:700;font-style:normal}.brand.brand-wordmark small{font-family:var(--font-ui);font-size:.58rem;font-weight:600;letter-spacing:.14em;color:#b1c1b5;margin-top:4px}.onboarding[data-flow=welcome]{width:min(1240px,100%);overflow:visible;padding-inline:clamp(12px,3vw,28px)}.onboarding-welcome .hero{position:relative;isolation:isolate;min-height:clamp(380px,52vh,520px);display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);align-items:center;gap:0;padding:clamp(20px,4vw,48px) 0 8px;overflow:visible}.onboarding-welcome .hero-copy{position:relative;z-index:2;order:1;max-width:34rem;justify-self:end;padding-right:clamp(8px,2vw,28px);text-align:left;text-shadow:0 2px 18px rgba(4,24,16,.75)}.home-tile-hero{position:relative;z-index:0;order:2;width:100%;min-height:clamp(340px,48vh,500px);height:clamp(340px,48vh,500px);align-self:center;pointer-events:none;overflow:visible}.home-tile-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 34% 26% at 52% 30%,rgba(229,194,128,.2),transparent 70%),radial-gradient(ellipse 48% 30% at 52% 70%,rgba(16,99,67,.55),transparent 72%),radial-gradient(ellipse 60% 50% at 52% 54%,rgba(118,84,59,.22),transparent 80%)}.home-tile-hero__stage,.home-tile-hero__still{position:absolute;top:18px;right:28px;bottom:18px;left:28px;transition:opacity .9s ease;overflow:visible}.home-tile-hero__stage{opacity:0}.home-tile-hero__stage canvas{display:block;width:100%;height:100%}.home-tile-hero[data-live] .home-tile-hero__stage{opacity:1}.home-tile-hero[data-live] .home-tile-hero__still{opacity:0}.home-tile-hero__tile{--w: clamp(64px, 10vw, 96px);position:absolute;left:calc(50% - var(--w) / 2);top:calc(48% - var(--w) * .72);width:var(--w);aspect-ratio:90 / 124;display:grid;place-items:center;border-radius:10px;background:linear-gradient(180deg,#fbf5e6,#efe3c6);box-shadow:inset 0 0 0 1px #b89a6a8c,0 7px #e4d4ad,0 13px #c4741f,0 30px 34px #000c088c;font:700 calc(var(--w) * .6) / 1 "Noto Serif TC","Songti TC",serif;color:#1a2744;transform:translate(calc(var(--i) * 78%)) translateY(calc(var(--i) * var(--i) * 6px)) rotate(calc(var(--i) * 5deg))}.home-tile-hero__tile:nth-child(2){color:#c0392b;z-index:1}.home-tile-hero__tile:nth-child(3){color:#1e7a3a}@media(prefers-reduced-motion:reduce){.home-tile-hero__stage,.home-tile-hero__still{transition:none}}@media(max-width:759px){.onboarding-welcome .hero{grid-template-columns:1fr;min-height:0;padding-top:0;gap:4px}.onboarding-welcome .hero-copy{max-width:none;justify-self:stretch;order:2}.home-tile-hero{order:1;width:100%;margin-left:0;min-height:clamp(260px,68vw,380px);height:clamp(260px,68vw,380px)}.home-tile-hero:before{background:radial-gradient(ellipse 40% 30% at 50% 28%,rgba(229,194,128,.2),transparent 70%),radial-gradient(ellipse 56% 34% at 50% 68%,rgba(16,99,67,.55),transparent 72%)}.home-tile-hero__tile{--w: clamp(56px, 16vw, 78px);left:calc(50% - var(--w) / 2)}}.onboarding-welcome .wordmark{margin:0;font-family:var(--font-display);font-size:.78rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--onb-gold);text-shadow:0 0 24px rgba(223,184,109,.28)}.onboarding-welcome h1{font:800 clamp(2.65rem,5.4vw,4rem) / 1.02 var(--font-display);font-optical-sizing:auto;letter-spacing:-.035em;margin:14px 0 18px;color:var(--onb-cream);text-wrap:balance}.onboarding-welcome h1 em{color:var(--onb-gold);font-style:normal;font-weight:800;text-shadow:0 0 28px rgba(223,184,109,.22)}.onboarding-welcome .hero-copy>p:last-child{font-family:var(--font-ui);font-size:clamp(1.02rem,1.45vw,1.15rem);font-weight:500;line-height:1.58;max-width:36ch;color:#d0ddd2}.onboarding .action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.onboarding .select-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;display:grid;grid-template-rows:auto auto 1fr auto;align-content:start;gap:8px;background:radial-gradient(ellipse 90% 70% at 0% 0%,rgba(223,184,109,.08),transparent 55%),linear-gradient(165deg,#273e36,#1a2c26 52%,#13221d);border:1px solid rgba(126,150,132,.5);border-radius:18px;text-align:left;padding:26px 28px 22px;min-height:168px;color:var(--onb-cream);box-shadow:0 16px 34px #0000004d,inset 0 1px #f1eee112;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .2s ease,background .2s ease}.onboarding .select-card__index{margin:0;font-family:var(--font-ui);font-size:.68rem;font-weight:650;letter-spacing:.2em;text-transform:uppercase;color:#b1c1b5b3}.onboarding .select-card--host{background:radial-gradient(ellipse 95% 75% at 8% 0%,rgba(223,184,109,.16),transparent 58%),linear-gradient(165deg,#2c463c,#1c322a,#15261f);border-color:#dfb86d7a;box-shadow:0 16px 34px #00000052,inset 0 1px #f1eee11a,inset 3px 0 0 var(--onb-gold)}.onboarding .select-card--host .select-card__index{color:var(--onb-gold)}.onboarding .select-card--join{background:radial-gradient(ellipse 80% 60% at 100% 0%,rgba(86,130,110,.18),transparent 55%),linear-gradient(165deg,#223832,#172924 55%,#111e1a)}.onboarding .select-card:hover:not(:disabled){transform:translateY(-3px);border-color:#dfb86db3;box-shadow:0 22px 40px #0000005c,inset 0 1px #f1eee11f}.onboarding .select-card--host:hover:not(:disabled){border-color:#e8c57ad9;box-shadow:0 22px 42px #00000061,inset 0 1px #f1eee124,inset 3px 0 #e8c57a}.onboarding .select-card:hover:not(:disabled) .select-card__go{color:var(--onb-gold);transform:translate(4px)}.onboarding .select-card:focus-visible{outline:3px solid var(--onb-gold);outline-offset:3px}.onboarding .select-card:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.onboarding .select-card strong{display:block;font:750 clamp(1.35rem,2.2vw,1.55rem) / 1.08 var(--font-display);letter-spacing:-.035em;margin:0;color:var(--onb-cream)}.onboarding .select-card__desc{font-family:var(--font-ui);color:var(--onb-muted);font-size:.92rem;line-height:1.5;max-width:28ch}.onboarding .select-card__go{justify-self:end;margin-top:10px;font-family:var(--font-ui);font-size:1.15rem;line-height:1;color:#dfb86d8c;transition:transform .18s ease,color .18s ease}.onboarding-welcome .action-grid{width:100%;margin:18px 0 0;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.onboarding-welcome .select-card{width:100%;min-height:188px;padding:28px 30px 24px}.onboarding .steward{margin:28px 0 0;display:inline-block;border:1px solid #466050;border-radius:50px;padding:10px 16px;color:var(--onb-muted);font-family:var(--font-ui);font-size:.82rem}.landing-pitch{margin:clamp(48px,9vw,88px) 0 8px;width:100%;display:grid;gap:clamp(48px,9vw,88px);text-align:left;overflow:visible}.landing-intro{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(20px,4vw,48px);align-items:center;padding-bottom:clamp(8px,2vw,16px);border-bottom:1px solid rgba(223,184,109,.2)}.landing-intro__copy{max-width:36rem}.landing-kicker{margin:0 0 8px;font-family:var(--font-ui);font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--onb-gold)}.landing-intro__copy h2,.landing-how__head h2,.landing-close__copy h2{margin:0 0 14px;max-width:14ch;font:800 clamp(2rem,4vw,2.85rem) / 1.02 var(--font-display);letter-spacing:-.04em;color:var(--onb-cream)}.landing-lead{margin:0;max-width:40ch;font-family:var(--font-ui);font-size:1.08rem;font-weight:500;line-height:1.62;color:#d0ddd2}.landing-band{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,4vw,48px);align-items:center}.landing-band--flip .landing-band__copy{order:2}.landing-band--flip .landing-motif{order:1}.landing-band__copy{max-width:34rem}.landing-band__copy h3{margin:0 0 10px;font:700 clamp(1.35rem,2.4vw,1.85rem) / 1.15 var(--font-display);letter-spacing:-.025em;color:var(--onb-cream)}.landing-band__copy>p:last-child{margin:0;font-family:var(--font-ui);font-size:1rem;font-weight:500;line-height:1.6;color:#c5d2c7;max-width:38ch}.landing-motif{position:relative;isolation:isolate;min-height:clamp(220px,32vw,300px);border-radius:22px;overflow:hidden;background:radial-gradient(ellipse 58% 52% at 50% 48%,rgba(16,99,67,.5),transparent 72%),linear-gradient(155deg,#1a302b,#0d1f1a);border:1px solid rgba(223,184,109,.22)}.landing-motif__glow{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:radial-gradient(ellipse 70% 58% at 50% 48%,rgba(229,194,128,.26) 0%,rgba(229,194,128,.1) 38%,transparent 68%);pointer-events:none}.landing-motif__stack{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-items:center;padding-bottom:12%}.landing-motif__tile{--w: clamp(48px, 7vw, 72px);position:absolute;left:50%;top:42%;width:var(--w);aspect-ratio:90 / 124;display:grid;place-items:center;border-radius:9px;background:linear-gradient(180deg,#fbf5e6,#efe3c6);box-shadow:inset 0 0 0 1px #b89a6a8c,0 5px #e4d4ad,0 10px #c4741f,0 18px 24px #000c0873;font:700 calc(var(--w) * .55) / 1 "Noto Serif TC","Songti TC",serif;color:#1a2744;transform:translate(-50%,-55%) translate(calc((var(--i) - 1) * 78%)) translateY(calc((var(--i) - 1) * (var(--i) - 1) * 8px)) rotate(calc((var(--i) - 1) * 7deg))}.landing-motif__tile[data-i="1"]{color:#c0392b;z-index:1}.landing-motif__tile[data-i="2"]{color:#1e7a3a}.landing-motif--felt .landing-motif__tile[data-i="2"]{color:#1a2744;background:linear-gradient(180deg,#fbf5e6,#efe3c6);box-shadow:inset 0 0 0 2px #1a2744,inset 0 0 0 5px #fbf5e6,inset 0 0 0 6px #b89a6a8c,0 5px #e4d4ad,0 10px #c4741f,0 18px 24px #000c0873}.landing-motif__code{position:absolute;z-index:2;left:50%;bottom:18%;transform:translate(-50%);padding:8px 14px;border-radius:10px;border:1px solid rgba(223,184,109,.45);background:#081814b8;font:700 .95rem/1 var(--font-display);letter-spacing:.18em;color:var(--onb-gold)}.landing-motif__wall{position:absolute;z-index:2;left:14%;right:14%;bottom:18%;height:22%;border-radius:8px;background:repeating-linear-gradient(90deg,#efe3c6 0,#efe3c6 18%,#c4741f 18%,#c4741f 20%,#efe3c6 20%,#efe3c6 38%,#c4741f 38%,#c4741f 40%);box-shadow:0 10px 24px #00000059;opacity:.5}.landing-motif--invite .landing-motif__stack{padding-bottom:22%}.landing-how__head{margin-bottom:clamp(20px,3vw,28px);max-width:36rem}.landing-how__steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,3vw,28px)}.landing-how__steps li{display:grid;gap:10px;padding-top:16px;border-top:1px solid rgba(223,184,109,.28)}.landing-how__steps h3{margin:0;font:700 1.15rem/1.2 var(--font-display);letter-spacing:-.02em;color:var(--onb-cream)}.landing-how__steps p{margin:0;font-family:var(--font-ui);font-size:.95rem;font-weight:500;line-height:1.55;color:#c5d2c7}.landing-step-num{font:700 .8rem/1 var(--font-display);letter-spacing:.08em;color:var(--onb-gold)}.landing-close{display:grid;grid-template-columns:minmax(0,1.2fr) auto;gap:clamp(16px,3vw,32px);align-items:end;padding-top:clamp(28px,5vw,40px);border-top:1px solid rgba(223,184,109,.28)}.landing-close-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.landing-close-actions .btn-primary,.landing-close-actions .btn-secondary{border-radius:10px;padding:12px 18px;min-height:48px;font:inherit;line-height:1;cursor:pointer}.landing-close-actions .btn-primary{background:linear-gradient(180deg,var(--onb-brass-top),var(--onb-brass));color:var(--onb-ink);border:1px solid #f7d99d;font-weight:700}.landing-close-actions .btn-secondary{background:transparent;color:var(--onb-cream);border:1px solid #6e8774}@media(max-width:819px){.landing-intro,.landing-band,.landing-band--flip{grid-template-columns:1fr}.landing-band--flip .landing-band__copy,.landing-band--flip .landing-motif{order:unset}.landing-intro .landing-motif,.landing-motif{order:-1;min-height:200px}.landing-how__steps{grid-template-columns:1fr}.landing-close{grid-template-columns:1fr;align-items:start}.landing-close-actions{justify-content:flex-start}}.onboarding .wizard,.table-lobby.lobby{width:min(570px,100%);margin:28px auto;background:linear-gradient(145deg,#243a33,#192923);border-radius:20px;padding:clamp(20px,4vw,36px);border:1px solid #536b5b;box-shadow:0 18px 40px #0007,inset 0 0 0 1px #76543b8c;color:var(--onb-cream)}.onboarding .wizard h2,.table-lobby.lobby h1{font:700 1.9rem / 1.1 var(--font-display);margin:10px 0 4px;color:var(--onb-cream);letter-spacing:-.6px}.onboarding .wizard>p,.table-lobby.lobby>p{color:var(--onb-muted)}.onboarding .step{font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--onb-gold);font-size:12px}.onboarding .field{display:flex;flex-direction:column;gap:7px;margin:20px 0}.onboarding .field label,.onboarding .bot-row label,.table-lobby .field label{font-size:13px;color:var(--onb-cream);font-weight:650}.onboarding .field input,.onboarding .field select,.onboarding .bot-row input,.onboarding .bot-row select,.table-lobby .field input{width:100%;background:#0f241e;color:var(--onb-cream);padding:13px 15px;border:1px solid #5a7162;border-radius:10px;min-height:48px}.onboarding .field input::placeholder{color:#9baa9f}.onboarding .settings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.onboarding .settings .field{margin:0}.onboarding .bot-list{display:flex;flex-direction:column;gap:10px;margin:4px 0 16px}.onboarding .bot-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,180px) auto;gap:8px;align-items:center;padding:10px;border-radius:12px;border:1px solid rgba(212,175,95,.35);background:#08181459}.onboarding .bot-row label{grid-column:1 / -1;margin:0}.onboarding .rule-choice{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;border:1px solid var(--onb-gold);background:#143028}.onboarding .wall-style{border:0;padding:0;margin:0;min-width:0}.onboarding .wall-style legend{padding:0;margin-bottom:8px}.onboarding .wall-style-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.onboarding .wall-style-option{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 10px;border-radius:12px;border:1px solid #3d5248;background:#14241f;text-align:center;cursor:pointer;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.onboarding .wall-style-option:hover{border-color:#6f7f62}.onboarding .wall-style-option:has(input:checked){border-color:var(--onb-gold);background:#143028;box-shadow:0 0 0 1px var(--onb-gold) inset}.onboarding .wall-style-option:has(input:focus-visible){outline:2px solid var(--onb-gold);outline-offset:2px}.onboarding .wall-style[disabled] .wall-style-option{cursor:not-allowed;opacity:.6}.onboarding .wall-style-option input{position:absolute;opacity:0;width:1px;height:1px;margin:0}.onboarding .wall-style-text{display:flex;flex-direction:column;gap:2px;min-width:0}.onboarding .wall-style-text .note{font-size:12px;line-height:1.35}.wall-preview{width:56px;height:56px;flex:none}.wall-preview-felt{fill:var(--onb-felt, #106343);stroke:#dfb86d59;stroke-width:1}.wall-preview-tile{fill:#0f3a30;stroke:#e9dcc0;stroke-width:.5}.wall-style-option:has(input:checked) .wall-preview-tile{stroke:var(--onb-gold)}.onboarding .planned-rules{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.onboarding .planned-card{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;border-radius:12px;border:1px solid #3d5248;background:#14241f;color:var(--onb-muted);pointer-events:none}.onboarding .pill{border-radius:999px;padding:4px 8px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--onb-gold);color:var(--onb-gold);white-space:nowrap}.onboarding .pill.planned{border-color:#5a7162;color:var(--onb-muted)}.onboarding .note,.table-lobby .note{font-size:12px;color:#b2bdaf}.onboarding .error{color:#ffbfa6;font-size:12px;min-height:18px}.onboarding .btn-row,.table-lobby .btn-row{display:flex;gap:10px;align-items:center;margin-top:8px;flex-wrap:wrap}.onboarding .btn-primary,.onboarding .btn-secondary,.table-lobby .btn-primary,.table-lobby .btn-secondary{border-radius:10px;padding:12px 18px;min-height:48px;font:inherit;line-height:1;cursor:pointer}.onboarding .btn-primary,.table-lobby .btn-primary{background:linear-gradient(180deg,var(--onb-brass-top),var(--onb-brass));color:var(--onb-ink);border:1px solid #f7d99d;font-weight:700}.onboarding .btn-secondary,.table-lobby .btn-secondary{background:transparent;color:var(--onb-cream);border:1px solid #6e8774}.onboarding .btn-secondary:hover:not(:disabled),.table-lobby .btn-secondary:hover:not(:disabled){background:#233631}.onboarding .btn-primary:disabled,.onboarding .btn-secondary:disabled,.table-lobby .btn-primary:disabled,.table-lobby .btn-secondary:disabled{opacity:.47;cursor:not-allowed;filter:none}.onboarding button:focus-visible,.onboarding input:focus-visible,.onboarding select:focus-visible,.table-lobby button:focus-visible,.table-lobby .lobby-code:focus-visible{outline:3px solid var(--onb-gold);outline-offset:2px}.onboarding .onboarding-alerts{margin:12px 0}.onboarding .join-code-recap strong{color:var(--onb-cream);letter-spacing:.08em}.table-lobby .codebox{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin:18px 0;padding:18px 16px;border-radius:16px;background:#0f241e;border:1px solid #5a7162}.table-lobby .lobby-code{margin:4px 0 0;font-family:var(--font-display);font-size:clamp(32px,7vw,56px);letter-spacing:.14em;line-height:1;color:var(--onb-cream);-webkit-user-select:text;user-select:text;cursor:text}.table-lobby .linkish{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;padding:0;margin:0;background:transparent;color:var(--onb-gold);font:inherit;text-decoration:underline;cursor:pointer}.table-lobby .copy-status{min-height:18px}.table-lobby .rules-descriptor{margin:0 0 8px;color:var(--onb-gold);letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:700}@media(max-width:599px){.onboarding .action-grid,.onboarding .settings,.onboarding .planned-rules,.onboarding .bot-row{grid-template-columns:1fr}.onboarding .wall-style-option{flex-direction:row;text-align:left}.onboarding .wall-style-options{grid-template-columns:1fr}.onboarding .select-card{min-height:120px;padding:20px}.onboarding .wizard,.table-lobby.lobby{margin:16px auto;padding:17px}.onboarding .wizard h2,.table-lobby.lobby h1{font-size:28px}.table-lobby .lobby-code{font-size:32px;letter-spacing:.08em}.brand.brand-wordmark{font-size:1.25rem}}@keyframes stackRise{0%{opacity:0;transform:translateY(-19px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes tileLand{0%{opacity:.4;transform:translateY(-32px) scale(1.17)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes discardTravel{0%{opacity:.35;transform:translateY(-56px) scale(.88) rotate(-4deg)}55%{opacity:1;transform:translateY(6px) scale(1.04) rotate(2deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}@keyframes discardTravelFromBottom{0%{opacity:.3;transform:translateY(72px) scale(.86) rotate(3deg)}55%{opacity:1;transform:translateY(-8px) scale(1.05) rotate(-2deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}@keyframes discardTravelFromTop{0%{opacity:.3;transform:translateY(-72px) scale(.86) rotate(-3deg)}55%{opacity:1;transform:translateY(8px) scale(1.05) rotate(2deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}@keyframes discardTravelFromLeft{0%{opacity:.3;transform:translate(-72px) scale(.86) rotate(-6deg)}55%{opacity:1;transform:translate(8px) scale(1.05) rotate(3deg)}to{opacity:1;transform:translate(0) scale(1) rotate(0)}}@keyframes discardTravelFromRight{0%{opacity:.3;transform:translate(72px) scale(.86) rotate(6deg)}55%{opacity:1;transform:translate(-8px) scale(1.05) rotate(-3deg)}to{opacity:1;transform:translate(0) scale(1) rotate(0)}}.physical-walls[data-anim=wallBuild] .wall-stack,.wall-stack.anim-stack-rise{animation-name:stackRise;animation-duration:calc(.85s * var(--anim-mult, 1));animation-timing-function:ease;animation-fill-mode:both;animation-delay:calc(var(--stack-i, 0) * 32ms * var(--anim-mult, 1))}.wall-stack.anim-wall-break{animation-name:stackRise;animation-duration:calc(.64s * var(--anim-mult, 1));animation-timing-function:ease;animation-fill-mode:both}.anim-tile-land,.flower-rack.is-animating .mahjong-tile:last-child,.backs.anim-draw .mahjong-tile:last-child{animation-name:tileLand;animation-duration:calc(.34s * var(--anim-mult, 1));animation-timing-function:ease-out;animation-fill-mode:both}.anim-discard-travel{animation-name:discardTravel;animation-duration:calc(.36s * var(--anim-mult, 1));animation-timing-function:cubic-bezier(.22,.9,.28,1);animation-fill-mode:both}.river.place-bottom .anim-discard-travel{animation-name:discardTravelFromBottom}.river.place-top .anim-discard-travel{animation-name:discardTravelFromTop}.river.place-left .anim-discard-travel{animation-name:discardTravelFromLeft}.river.place-right .anim-discard-travel{animation-name:discardTravelFromRight}.anim-skip{position:absolute;z-index:13;top:16px;left:50%;transform:translate(-50%);border:1px solid rgba(218,177,105,.7);background:#1b140d;color:#f3e6c4;border-radius:999px;padding:8px 16px;font:700 12px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.anim-skip:hover{background:#2a1d12}.anim-skip:focus-visible{outline:2px solid #e6bf7b;outline-offset:2px}.match-screen[data-pace=reduced] .wall-stack,.match-screen[data-pace=reduced] .anim-tile-land,.match-screen[data-pace=reduced] .anim-discard-travel,.match-screen[data-pace=reduced] .self-hand .mahjong-tile{animation:none!important}@media(prefers-reduced-motion:reduce){.wall-stack,.anim-tile-land,.anim-discard-travel,.anim-stack-rise,.anim-wall-break,.match-screen[data-anim] .self-hand .mahjong-tile,.flower-rack.is-animating .mahjong-tile,.backs.anim-draw .mahjong-tile,.anim-claim .mahjong-tile{animation:none!important;transition:none!important}}.table-and-activity{display:flex;flex:1 1 auto;width:100%;min-height:0;align-items:stretch}.table-and-activity>.match-screen{flex:1 1 auto;width:100%;min-width:0}.activity-dock{position:fixed;z-index:50;top:88px;right:16px;width:360px;height:420px;min-width:280px;min-height:220px;display:flex;flex-direction:column;gap:12px;margin:0;padding:12px 12px 10px;border-radius:14px;overflow:hidden;color:#e8f0ea;background:radial-gradient(ellipse 90% 55% at 50% 0%,rgba(32,92,70,.42),transparent 62%),linear-gradient(180deg,#0a241df5,#051410f7);border:1px solid rgba(216,179,108,.2);box-shadow:inset 0 1px #f0deb114,0 18px 42px #000c0880;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.activity-dock--chat{border-color:#6e968061;background:radial-gradient(ellipse 80% 50% at 50% 0%,rgba(32,92,70,.45),transparent 60%),linear-gradient(180deg,#16352c,#0d221c 55%,#0a1a15);box-shadow:inset 0 1px #b4dcc81a,0 22px 50px #00000073}.activity-dock.is-closed,.activity-dock[hidden]{display:none}.activity-dock-head{display:flex;align-items:center;gap:6px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;padding-bottom:2px;border-bottom:1px solid rgba(216,179,108,.12)}.activity-dock-head.is-dragging{cursor:grabbing}.activity-dock-head.is-pinned{cursor:default;touch-action:auto}.activity-dock-head h2{margin:0;flex:1;min-width:0;font:700 13px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:#d7c08a}.activity-dock--chat .activity-dock-head h2{color:#c5dfd2;letter-spacing:.06em}.activity-dock-head button,.activity-filters button,.activity-scope button{border-radius:8px;padding:6px 10px;font:600 12px var(--font-ui);cursor:pointer}.activity-pin,.activity-close{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:32px;height:32px;max-width:none;padding:0!important;min-width:32px;border:1px solid rgba(216,179,108,.28);background:#112f27d9;color:#eadbb8;touch-action:manipulation;-webkit-user-select:auto;user-select:auto}.activity-dock--chat .activity-pin,.activity-dock--chat .activity-close{border-color:#78a89266;background:#0c2820d9;color:#d7ebe1}.activity-pin:hover,.activity-close:hover,.activity-dock--activity .activity-filters button:hover,.activity-dock--activity .activity-scope button:hover{background:#184235;border-color:#e6bf7b73}.activity-dock--chat .activity-pin:hover,.activity-dock--chat .activity-close:hover{background:#1c4e3ce6;border-color:#a0d2b480}.activity-pin.is-pinned{background:#d2b37747;color:#f4ead4}.activity-dock--chat .activity-pin.is-pinned{background:#6ec29a47;color:#e8f0ea}.activity-pin svg,.activity-close svg{display:block;width:15px;height:15px;flex:0 0 auto}.activity-dock button:focus-visible{outline:2px solid #e6bf7b;outline-offset:2px}.activity-panel{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}.activity-toolbar{display:flex;flex-direction:column;gap:8px}.activity-filters,.activity-scope{display:flex;flex-wrap:nowrap;gap:2px;padding:3px;border-radius:10px;background:#000c0859;border:1px solid rgba(216,179,108,.14)}.activity-filters button,.activity-scope button{flex:1 1 0;min-width:0;border:0;background:transparent;color:#a8b7a8;padding:7px 8px;border-radius:7px;font:600 11px var(--font-ui);letter-spacing:.02em;white-space:nowrap}.activity-scope button{font-size:11px}.activity-filters button.is-selected,.activity-scope button.is-selected{background:#b48b4b52;color:#f4ead4;box-shadow:inset 0 0 0 1px #e6bf7b47}.activity-list{list-style:none;margin:0;padding:2px 2px 0 0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;gap:5px}.activity-list li{display:flex;flex-direction:column;gap:3px;min-width:0;max-width:100%;padding:8px 10px;border-radius:9px;border:1px solid rgba(240,222,177,.08);border-left:2px solid rgba(216,179,108,.35);background:#04271d8c;font-size:12.5px;line-height:1.4;overflow-wrap:anywhere;word-break:break-word}.activity-list li[data-category=turns]{border-left-color:#a7b8a88c}.activity-list li[data-category=claims]{border-left-color:#6ec29aa6}.activity-list li[data-category=scoring]{border-left-color:#e6bf7bcc}.activity-list li>.activity-text{min-width:0;font-family:var(--font-ui);color:#e8f0ea}.activity-when{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#b2c3b4;font-variant-numeric:tabular-nums;white-space:nowrap}.activity-empty,.chat-empty{border:0!important;border-left:0!important;background:transparent!important;color:#a8b7a8;display:block!important;padding:28px 8px!important;text-align:center;font-size:13px}.chat-empty{color:#9fb8ab;box-shadow:none!important;align-self:center}.chat-panel{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}.chat-list{list-style:none;margin:0;padding:6px 4px 4px 0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}.chat-bubble{display:flex;flex-direction:column;gap:4px;max-width:88%;padding:8px 11px 9px;border-radius:14px 14px 14px 4px;background:#12342aeb;border:1px solid rgba(120,168,146,.28);box-shadow:0 6px 14px #0000002e;font-size:13px;line-height:1.4;overflow-wrap:anywhere;align-self:flex-start}.chat-bubble.is-local{align-self:flex-end;border-radius:14px 14px 4px;background:linear-gradient(160deg,#3a5c36f2,#24402af2);border-color:#c4aa6466}.chat-who{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9dceb8}.chat-bubble.is-local .chat-who{color:#e0c98a;text-align:right}.chat-text{color:#eef6f1}.chat-text a{color:#9ad7c0;text-decoration:underline}.chat-composer{display:flex;gap:8px;align-items:center;padding:8px;border-radius:12px;background:#061812b3;border:1px solid rgba(110,150,128,.35)}.chat-composer input{flex:1;min-width:0;border:0;border-radius:8px;background:transparent;color:#eef6f1;padding:6px 8px;font:500 13px var(--font-ui)}.chat-composer input::placeholder{color:#aac6baa6}.chat-composer input:focus{outline:none}.chat-composer button{border:1px solid rgba(196,170,100,.45);background:linear-gradient(180deg,#d7b56a,#b89445);color:#1a140c;border-radius:8px;padding:8px 12px;font:700 12px var(--font-ui);cursor:pointer}.chat-composer button:hover{filter:brightness(1.05)}.chat-notice{margin:0;font-size:12px;color:#e8b4a0}.activity-unread-count,.dock-unread-bubble{min-width:1.15rem;height:1.15rem;padding:0 4px;border-radius:999px;background:#d2b377;color:#1a140c;font-size:10px;font-weight:700;line-height:1.15rem;text-align:center}.dock-unread-bubble{position:absolute;top:-7px;right:-7px;z-index:2;min-width:1.25rem;height:1.25rem;padding:0 5px;line-height:1.25rem;box-shadow:0 0 0 2px #120c08d9,0 4px 10px #00000059;pointer-events:none;animation:dock-unread-pop .22s ease-out}.dock-unread-bubble--chat{background:#6ec29a;color:#0c1a14}@keyframes dock-unread-pop{0%{transform:scale(.55);opacity:0}to{transform:scale(1);opacity:1}}.activity-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 50%,rgba(230,201,138,.85) 50%);border-bottom-right-radius:12px}.activity-dock--chat .activity-resize{background:linear-gradient(135deg,transparent 50%,rgba(140,190,165,.9) 50%)}.activity-resize:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px}.help-launch{position:relative}body.activity-dragging,body.activity-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}body.activity-resizing,body.activity-resizing *{cursor:nwse-resize!important;-webkit-user-select:none!important;user-select:none!important}@media(max-width:900px){.activity-dock,.activity-dock.is-sheet{left:0;right:0;top:auto;bottom:0;width:auto;height:min(46vh,360px);min-width:0;min-height:0;margin:0;z-index:50;border-radius:16px 16px 0 0}.activity-dock--chat.is-sheet{z-index:51}.activity-dock-head,.activity-dock-head.is-dragging{cursor:default;touch-action:manipulation}.activity-resize{display:none}.activity-filters{overflow-x:auto}}.settlement-screen{width:min(520px,92vw);margin:1.25rem auto 1.5rem;padding:1.15rem 1.2rem 1.1rem;display:flex;flex-direction:column;gap:1rem;border-radius:16px;color:#e8f0ea;background:radial-gradient(ellipse 90% 50% at 50% 0%,rgba(32,92,70,.4),transparent 60%),linear-gradient(180deg,#0a241df7,#051410fa);border:1px solid rgba(216,179,108,.22);box-shadow:inset 0 1px #f0deb114,0 22px 48px #000c087a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.settlement-head{display:flex;flex-direction:column;gap:.35rem}.settlement-eyebrow{margin:0;font:700 .72rem / 1.3 var(--font-ui);letter-spacing:.12em;text-transform:uppercase;color:#d7c08a}.settlement-title{margin:0;font:700 1.55rem / 1.15 var(--font-display);letter-spacing:-.02em;color:#f3efe3}.score-breakdown{display:flex;flex-direction:column;gap:.65rem}.score-meta{margin:0;font:500 .86rem / 1.4 var(--font-ui);color:#a8b7a8}.pattern-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.pattern-list li{margin:0;padding:5px 10px;border-radius:999px;border:1px solid rgba(216,179,108,.28);background:#b48b4b29;color:#f0e4cc;font:600 .72rem / 1.2 var(--font-ui);letter-spacing:.02em}.delta-table,.settlement-totals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.delta-row,.settlement-totals li{display:flex;align-items:center;justify-content:space-between;gap:.85rem;min-width:0;padding:.65rem .75rem;border-radius:10px;border:1px solid rgba(240,222,177,.08);background:#04271d8c}.delta-row.is-winner,.settlement-totals li.is-winner{border-color:#e6bf7b73;background:#b48b4b2e;box-shadow:inset 0 0 0 1px #e6bf7b1f}.delta-row.is-payer{border-color:#aa6e5a59}.delta-seat,.settlement-seat{display:flex;align-items:center;gap:.45rem;min-width:0;flex:1 1 auto}.settlement-wind{display:grid;place-items:center;flex:0 0 auto;width:1.6rem;height:1.6rem;border-radius:7px;border:1px solid rgba(180,147,86,.55);background:#153b2c;color:#d8bb7d;font:700 .78rem / 1 var(--font-ui)}.settlement-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 .92rem / 1.2 var(--font-ui);color:#e8f0ea}.settlement-badge{flex:0 0 auto;padding:2px 7px;border-radius:999px;background:#d2b37747;color:#f4ead4;font:700 .65rem / 1.3 var(--font-ui);letter-spacing:.06em;text-transform:uppercase}.settlement-badge.is-paid{background:#aa6e5a59;color:#f0d4c8}.delta-value,.settlement-score{flex:0 0 auto;font:700 1rem / 1 var(--font-ui);font-variant-numeric:tabular-nums;color:#f3efe3}.delta-value.is-gain{color:#8fd4a8}.delta-value.is-loss{color:#e8a090}.delta-value.is-flat{color:#a8b7a8}.settlement-section-label{margin:0 0 .45rem;font:700 .72rem / 1.3 var(--font-ui);letter-spacing:.1em;text-transform:uppercase;color:#b2c3b4}.settlement-hand-tiles{display:flex;flex-direction:column;gap:.55rem;padding:.7rem .75rem;border-radius:12px;border:1px solid rgba(240,222,177,.1);background:#00120c59}.settlement-hand-tiles .tile-row{justify-content:flex-start}.settlement-wait{margin:0;text-align:center;font:500 .86rem / 1.4 var(--font-ui);color:#a8b7a8}.settlement-actions{display:flex;flex-wrap:wrap;gap:.55rem;justify-content:flex-end;padding-top:.15rem}.settlement-actions .btn,.settlement-actions .btn-secondary{min-height:42px}.settlement-screen .status-pill{margin:0}@media(max-width:560px){.settlement-screen{width:min(100%,100vw - 1.25rem);margin:.75rem auto 1rem;padding:1rem .9rem .95rem;border-radius:14px}.settlement-title{font-size:1.35rem}.settlement-actions{justify-content:stretch}.settlement-actions .btn,.settlement-actions .btn-secondary{flex:1 1 auto}}:root{--ctrl-ease: cubic-bezier(.22, 1, .36, 1);--ctrl-press: cubic-bezier(.33, 1, .68, 1);--ctrl-caret: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1.5 1.75L6 6.25L10.5 1.75' stroke='%23e6c98a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:var(--ctrl-caret);background-repeat:no-repeat;background-position:right .7rem center;background-size:.72rem .48rem;padding-right:2.1rem!important}select::-ms-expand{display:none}.language-selector select{padding-right:2rem!important;background-position:right .65rem center}.onboarding .field select,.onboarding .bot-row select{background-color:#0f241e;background-image:var(--ctrl-caret);background-repeat:no-repeat;background-position:right .75rem center;background-size:.72rem .48rem}.btn,.btn-primary,.btn-secondary,button.btn,.onboarding .btn-primary,.onboarding .btn-secondary,.table-lobby .btn-primary,.table-lobby .btn-secondary,.landing-close-actions .btn-primary,.landing-close-actions .btn-secondary,.match-screen .action,.audio-control,.leave-table,.help-launch{display:inline-flex;align-items:center;justify-content:center;line-height:1}.btn svg,.btn-primary svg,.btn-secondary svg,.onboarding .btn-primary svg,.onboarding .btn-secondary svg,.table-lobby .btn-primary svg,.table-lobby .btn-secondary svg,.match-screen .action svg,.audio-control svg,.leave-table svg,.help-launch svg{display:block;flex:none}.btn,.btn-primary,.btn-secondary,button.btn,.onboarding .btn-primary,.onboarding .btn-secondary,.onboarding .select-card,.table-lobby .btn-primary,.table-lobby .btn-secondary,.match-screen .action,.help-launch{transition:transform .18s var(--ctrl-ease),box-shadow .22s var(--ctrl-ease),filter .22s var(--ctrl-ease),background-color .18s var(--ctrl-ease),border-color .18s var(--ctrl-ease),color .18s var(--ctrl-ease)}.btn:hover:not(:disabled),.btn-primary:hover:not(:disabled),.btn-secondary:hover:not(:disabled),.onboarding .btn-primary:hover:not(:disabled),.onboarding .btn-secondary:hover:not(:disabled),.table-lobby .btn-primary:hover:not(:disabled),.table-lobby .btn-secondary:hover:not(:disabled),.match-screen .action:hover:not(:disabled),.help-launch:hover{transform:translateY(-1px);filter:brightness(1.06) saturate(1.04);box-shadow:0 10px 22px #0000003d,0 1px #ffecc82e inset}.onboarding .select-card:hover:not(:disabled){filter:none}.btn:active:not(:disabled),.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled),.onboarding .btn-primary:active:not(:disabled),.onboarding .btn-secondary:active:not(:disabled),.onboarding .select-card:active:not(:disabled),.table-lobby .btn-primary:active:not(:disabled),.table-lobby .btn-secondary:active:not(:disabled),.match-screen .action:active:not(:disabled),.help-launch:active{transform:translateY(1px) scale(.985);filter:brightness(.97);box-shadow:0 2px 6px #00000042,0 1px #ffecc814 inset;transition-duration:90ms;transition-timing-function:var(--ctrl-press)}.onboarding .btn-primary:hover:not(:disabled),.table-lobby .btn-primary:hover:not(:disabled),.match-screen .action.primary:hover:not(:disabled),.btn.primary:hover:not(:disabled){box-shadow:0 12px 26px #784a1259,0 1px #fff4d659 inset}.btn:disabled,.btn-primary:disabled,.btn-secondary:disabled,.onboarding .btn-primary:disabled,.onboarding .btn-secondary:disabled,.onboarding .select-card:disabled,.table-lobby .btn-primary:disabled,.table-lobby .btn-secondary:disabled,.match-screen .action:disabled{transform:none!important;box-shadow:none!important;filter:none!important}@media(prefers-reduced-motion:reduce){.btn,.btn-primary,.btn-secondary,button.btn,.onboarding .btn-primary,.onboarding .btn-secondary,.onboarding .select-card,.table-lobby .btn-primary,.table-lobby .btn-secondary,.match-screen .action,.help-launch{transition:none!important;transform:none!important}}
