@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/cormorant-garamond-latin-400-normal-B-1hWBU7.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-400-normal-B7YtguxJ.woff)format("woff")}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/cormorant-garamond-latin-400-italic-Dc_OZ8oc.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-400-italic-BLh7T8o8.woff)format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-normal-BsRWmXhO.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-500-normal-zIXX3Q-H.woff)format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-latin-600-normal-Co1r35X9.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-600-normal-2CBVLo0M.woff)format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cormorant-garamond-latin-700-normal-DajfzrDU.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-700-normal-O25Qpphb.woff)format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/manrope-latin-300-normal-BgxWhS7-.woff2)format("woff2"),url(/assets/manrope-latin-300-normal-BXCth4v8.woff)format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/manrope-latin-400-normal-PaqtzbVb.woff2)format("woff2"),url(/assets/manrope-latin-400-normal-8tf8FM3T.woff)format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/manrope-latin-500-normal-BYYD-dBL.woff2)format("woff2"),url(/assets/manrope-latin-500-normal-DMZssgOp.woff)format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/manrope-latin-600-normal-4f0koTD-.woff2)format("woff2"),url(/assets/manrope-latin-600-normal-BqgrALkZ.woff)format("woff")}@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/manrope-latin-700-normal-BZp_XxE4.woff2)format("woff2"),url(/assets/manrope-latin-700-normal-DGRFkw-m.woff)format("woff")}:root{--bg:#040c09;--bg-2:#071510;--panel:#06110dd1;--panel-solid:#08140f;--ivory:#f1e8d6;--paper:#e7dcc5;--muted:#a4a597;--muted-2:#777b6f;--gold:#c8a25c;--gold-bright:#e3c583;--gold-dim:#c8a25c6b;--green:#0e5a43;--green-deep:#062d23;--wine:#7a2d32;--danger:#c95c52;--line:#e6dac226;--line-strong:#e6dac242;--serif:"Cormorant Garamond", "Songti SC", "STSong", "SimSun", Georgia, serif;--sans:"Manrope", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--ease:cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html,body,#root{background:var(--bg);min-height:100%;margin:0}html{-webkit-text-size-adjust:100%}body{color:var(--ivory);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-weight:400;overflow-x:hidden}::selection{color:#fff;background:#c8a25c4d}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:1px solid var(--gold-bright);outline-offset:3px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#07100c}::-webkit-scrollbar-thumb{background:#3c3529;border-radius:10px}.eyebrow{font-family:var(--sans);letter-spacing:.24em;color:var(--gold);text-transform:uppercase;font-size:9px;font-weight:600;display:inline-block}.brand{align-items:center;gap:12px;display:inline-flex}.brand-mark{font-family:var(--serif);letter-spacing:-.08em;color:var(--ivory);align-items:baseline;font-size:31px;font-weight:500;line-height:1;display:inline-flex}.brand-mark span{color:var(--gold);margin:0 1px}.brand-word{letter-spacing:.24em;flex-direction:column;font-size:11px;font-weight:600;line-height:1.2;display:flex}.brand-word span{font-family:var(--serif);letter-spacing:.3em;color:var(--muted);margin-top:4px;font-size:11px}.icon-btn{border:1px solid var(--line);width:38px;height:38px;color:var(--ivory);background:#060f0b73;border-radius:50%;place-items:center;transition:border-color .25s,background .25s,color .25s;display:inline-grid}.icon-btn:hover{border-color:var(--gold-dim);color:var(--gold-bright);background:#c8a25c14}.ghost-btn{color:var(--muted);letter-spacing:.12em;background:0 0;border:0;align-items:center;gap:8px;padding:10px 2px;font-size:11px;font-weight:500;transition:color .25s;display:inline-flex}.ghost-btn:hover{color:var(--ivory)}.primary-btn,.secondary-btn,.danger-btn{letter-spacing:.14em;transition:transform .25s var(--ease), background .25s, color .25s, border-color .25s;border:1px solid #0000;padding:15px 24px;font-size:12px;font-weight:600}.primary-btn{color:#102016;background:linear-gradient(135deg,#e9d8b5,#cfad6c);border-color:#ffffff2e;box-shadow:0 12px 30px #00000040}.primary-btn:hover:not(:disabled){background:linear-gradient(135deg,#f2e3c4,#dcbc7d);transform:translateY(-2px)}.primary-btn:disabled{opacity:.36}.secondary-btn{color:var(--paper);border-color:var(--line-strong);background:#07120da6}.secondary-btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold-bright)}.danger-btn{color:#f0c7c1;background:#7a2d3233;border-color:#c95c5266}.danger-btn:hover{background:#7a2d3261}.landing{isolation:isolate;background:#040b08;min-height:100svh;position:relative;overflow:hidden auto}.landing-photo{filter:saturate(.92)contrast(1.04)brightness(.85);background-position:50% 48%;background-size:cover;animation:26s ease-in-out infinite alternate slowPan;position:absolute;inset:-2%;transform:scale(1.025)}@keyframes slowPan{0%{transform:scale(1.025)translate(0,0)}to{transform:scale(1.06)translate(-.6%,-.4%)}}.landing-vignette{background:linear-gradient(90deg,#020806ed 0%,#020806c4 31%,#02080638 61%,#02080694 100%),linear-gradient(#02080680 0%,#0208060d 65%,#020806f5 100%),radial-gradient(circle at 67% 42%,#d0a35812,#0000 42%);position:absolute;inset:0}.landing-grain,.scene-grain{pointer-events:none;opacity:.11;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.65'/%3E%3C/svg%3E");position:absolute;inset:0}.landing-nav{z-index:4;justify-content:space-between;align-items:center;padding:28px 48px;display:flex;position:relative}.landing-nav-actions{align-items:center;gap:22px;display:flex}.server-pill{letter-spacing:.17em;color:var(--muted-2);align-items:center;gap:8px;font-size:9px;display:inline-flex}.server-pill i{background:#8d7f64;border-radius:50%;width:5px;height:5px;box-shadow:0 0 0 4px #8d7f6414}.server-pill.online{color:#b8b6a3}.server-pill.online i{background:#88b394;animation:2.4s infinite statusPulse;box-shadow:0 0 0 4px #88b3941a}@keyframes statusPulse{50%{opacity:.45}}.landing-main{z-index:3;grid-template-columns:minmax(480px,1.15fr) minmax(420px,500px);align-items:center;gap:7vw;max-width:1460px;min-height:calc(100svh - 152px);margin:0 auto;padding:24px 72px 78px;display:grid;position:relative}.hero-copy{max-width:680px;padding-bottom:12px}.hero-title{font-family:var(--serif);letter-spacing:-.065em;color:var(--ivory);text-shadow:0 20px 80px #0000008c;flex-direction:column;margin:22px 0 18px;font-size:clamp(96px,11.8vw,178px);font-weight:500;line-height:.72;display:flex}.hero-title span:last-child{color:#0000;-webkit-text-stroke:1px #dec38b9e;margin-left:.54em;font-style:italic;font-weight:400}.hero-chinese{color:var(--gold-bright);font-family:var(--serif);letter-spacing:.42em;align-items:center;gap:18px;font-size:19px;font-weight:500;display:flex}.hero-chinese i{background:linear-gradient(90deg, var(--gold-dim), transparent);width:64px;height:1px;display:block}.hero-lede{color:#b9b7a7;letter-spacing:.06em;margin:24px 0 0;font-size:13px;font-weight:300;line-height:2}.hero-stats{border-top:1px solid var(--line);gap:42px;max-width:460px;margin-top:40px;padding-top:22px;display:flex}.hero-stats div{flex-direction:column;gap:6px;display:flex}.hero-stats b{font-family:var(--serif);letter-spacing:.04em;color:var(--paper);font-size:27px;font-weight:500}.hero-stats span{color:var(--muted-2);letter-spacing:.16em;font-size:9px;font-weight:500}.reveal-1,.reveal-2,.reveal-3,.reveal-4,.reveal-5{opacity:0;animation:revealUp 1s var(--ease) forwards}.reveal-1{animation-delay:.12s}.reveal-2{animation-delay:.22s}.reveal-3{animation-delay:.34s}.reveal-4{animation-delay:.46s}.reveal-5{animation-delay:.58s}@keyframes revealUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.reservation{-webkit-backdrop-filter:blur(24px)saturate(1.1);background:linear-gradient(160deg,#0a1711e6,#040c09c7);border:1px solid #d5c19c33;padding:30px 32px 22px;position:relative;box-shadow:0 34px 90px #0000008c,inset 0 1px #ffffff0a}.reservation:before,.reservation:after{content:"";pointer-events:none;border-style:solid;border-color:#c8a25c73;width:18px;height:18px;position:absolute}.reservation:before{border-width:1px 0 0 1px;top:8px;left:8px}.reservation:after{border-width:0 1px 1px 0;bottom:8px;right:8px}.reservation-head{justify-content:space-between;align-items:flex-start;margin-bottom:22px;display:flex}.reservation-head h2{font-family:var(--serif);letter-spacing:-.02em;margin:8px 0 0;font-size:36px;font-weight:500;line-height:1}.reservation-cue{color:#c8a25c61;margin-top:4px}.mode-picker{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px;display:grid}.mode-card{border:1px solid var(--line);text-align:left;transition:border-color .25s, background .25s, transform .25s var(--ease);background:#ffffff06;flex-direction:column;align-items:flex-start;gap:13px;padding:15px 14px 14px;display:flex;position:relative}.mode-card:hover{border-color:var(--line-strong);transform:translateY(-2px)}.mode-card.selected{background:linear-gradient(155deg,#c8a25c1c,#ffffff05);border-color:#cfad69b8}.mode-icon{border:1px solid var(--line);width:38px;height:38px;color:var(--muted);border-radius:50%;place-items:center;display:grid}.mode-card.selected .mode-icon{color:var(--gold-bright);border-color:#cfad696b}.mode-text{flex-direction:column;gap:3px;display:flex}.mode-text b{font-family:var(--serif);font-size:23px;font-weight:500}.mode-text small{color:var(--muted-2);letter-spacing:.04em;font-size:9px}.mode-check{border:1px solid var(--line-strong);border-radius:50%;width:13px;height:13px;position:absolute;top:13px;right:13px}.mode-card.selected .mode-check{border-color:var(--gold);background:var(--gold);box-shadow:inset 0 0 0 3px #0a1711}.field-label{color:var(--muted-2);letter-spacing:.17em;margin-bottom:8px;font-size:9px;display:block}.field{border-bottom:1px solid var(--line-strong);align-items:center;display:flex;position:relative}.field input{width:100%;font-family:var(--serif);color:var(--paper);background:0 0;border:0;outline:0;padding:10px 0 12px;font-size:24px;font-weight:500}.field input::placeholder{color:#66695f;font-weight:400}.field-hint{color:var(--muted-2);flex:none;font-size:9px}.create-btn{justify-content:space-between;align-items:center;width:100%;margin-top:20px;padding:17px 20px;font-size:12px;display:flex}.arrow-flip{transform:rotate(180deg)}.form-error{color:#e7b1a9;background:#7a2d3238;border-left:2px solid #c95c52bf;margin-top:10px;padding:8px 10px;font-size:11px;line-height:1.5}.reservation-divider{color:var(--muted-2);letter-spacing:.1em;align-items:center;gap:12px;margin:18px 0 14px;font-size:9px;display:flex}.reservation-divider:before,.reservation-divider:after{content:"";background:var(--line);flex:1;height:1px}.join-row{gap:10px;display:flex}.code-input{border:1px solid var(--line);min-width:0;font-family:var(--sans);letter-spacing:.28em;color:var(--paper);background:#00000029;outline:0;flex:1;padding:12px 14px;font-size:13px;font-weight:600}.code-input:focus{border-color:var(--gold-dim)}.code-input::placeholder{letter-spacing:.12em;color:#65685e;font-weight:400}.join-row .secondary-btn{white-space:nowrap;padding:12px 18px;font-size:10px}.reservation-foot{border-top:1px solid var(--line);color:var(--muted-2);letter-spacing:.12em;justify-content:space-between;align-items:center;margin-top:18px;padding-top:14px;font-size:8px;display:flex}.reservation-foot span{align-items:center;gap:7px;display:inline-flex}.status-dot{background:#715f48;border-radius:50%;width:4px;height:4px}.status-dot.online{background:#8eb79b;box-shadow:0 0 0 3px #8eb79b14}.landing-foot{z-index:3;color:#a4a5978c;letter-spacing:.17em;border-top:1px solid #e6dac21a;justify-content:space-between;gap:20px;padding-top:15px;font-size:8px;display:flex;position:absolute;bottom:22px;left:48px;right:48px}.landing-foot .foot-mid{color:#c8a25c8c;letter-spacing:.2em}.lobby{isolation:isolate;background:#040c09;min-height:100svh;position:relative;overflow:hidden}.room-bg{filter:blur(11px)brightness(.22)saturate(.85);background-position:50% 45%;background-size:cover;position:absolute;inset:-24px;transform:scale(1.04)}.room-shade{background:linear-gradient(90deg,#030907f2,#0309078c 50%,#030907e6),radial-gradient(circle at 52% 40%,#1c4b383d,#0000 45%);position:absolute;inset:0}.lobby-nav{z-index:3;justify-content:space-between;align-items:center;padding:26px 48px;display:flex;position:relative}.lobby-nav-actions{align-items:center;gap:18px;display:flex}.leave-btn{color:#e0c7b399}.leave-btn:hover{color:#e2b8ac}.lobby-main{z-index:2;grid-template-columns:minmax(380px,.9fr) minmax(520px,650px);align-items:center;gap:7vw;max-width:1280px;min-height:calc(100svh - 180px);margin:0 auto;padding:30px 48px 100px;display:grid;position:relative}.lobby-intro h1{font-family:var(--serif);letter-spacing:-.03em;white-space:nowrap;margin:20px 0 22px;font-size:clamp(48px,4.4vw,66px);font-weight:500;line-height:.96}.lobby-intro p{color:var(--muted);letter-spacing:.05em;font-size:12px;line-height:2}.lobby-mode-pill{border:1px solid var(--line);color:var(--paper);letter-spacing:.1em;background:#ffffff06;align-items:center;gap:11px;margin-top:24px;padding:9px 14px;font-size:10px;display:inline-flex}.lobby-mode-pill i{background:var(--line-strong);width:1px;height:11px}.lobby-card{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(22px);background:linear-gradient(165deg,#0b1812eb,#040c09d6);padding:30px 32px 20px;position:relative;box-shadow:0 40px 100px #00000080,inset 0 1px #ffffff0a}.lobby-card:before,.lobby-card:after{content:"";pointer-events:none;border-style:solid;border-color:#c8a25c66;width:22px;height:22px;position:absolute}.lobby-card:before{border-width:1px 0 0 1px;top:7px;left:7px}.lobby-card:after{border-width:0 1px 1px 0;bottom:7px;right:7px}.room-code-block{border-bottom:1px solid var(--line);padding-bottom:22px}.room-code-line{justify-content:space-between;align-items:center;gap:14px;margin:7px 0 8px;display:flex}.room-code-line strong{font-family:var(--sans);letter-spacing:.18em;color:var(--paper);font-size:clamp(40px,4.4vw,58px);font-weight:300;line-height:1}.copy-btn{border:1px solid var(--line);color:var(--gold);letter-spacing:.08em;white-space:nowrap;background:0 0;align-items:center;gap:7px;padding:9px 12px;font-size:9px;display:inline-flex}.copy-btn:hover{border-color:var(--gold-dim);background:#c8a25c0f}.room-code-block p{color:var(--muted-2);letter-spacing:.06em;margin:0;font-size:9px}.seats{grid-template-columns:1fr 54px 1fr;align-items:center;gap:0;margin:24px 0;display:grid}.lobby-seat{text-align:center;border:1px solid var(--line);background:#ffffff05;min-height:194px;padding:20px 12px 16px;position:relative}.lobby-seat.occupied{border-color:var(--line-strong)}.lobby-seat.ready{background:#c8a25c09;border-color:#c8a25c73}.lobby-seat.empty{border-style:dashed}.seat-label{letter-spacing:.16em;color:var(--muted-2);font-size:8px}.seat-avatar{border:1px solid var(--line-strong);width:64px;height:64px;font-family:var(--serif);color:var(--paper);background:radial-gradient(circle at 35% 30%,#234a3a,#0a1a13 72%);border-radius:50%;place-items:center;margin:14px auto 10px;font-size:22px;display:grid;position:relative}.lobby-seat.ready .seat-avatar{border-color:var(--gold-dim)}.empty-plus{color:#686b5f;font-size:22px;font-weight:300}.host-crown{background:var(--gold);color:#122016;border:2px solid #0b1711;border-radius:50%;place-items:center;width:23px;height:23px;display:grid;position:absolute;bottom:0;right:-2px}.seat-name{font-family:var(--serif);color:var(--paper);text-overflow:ellipsis;white-space:nowrap;font-size:20px;overflow:hidden}.seat-ready{color:var(--muted-2);letter-spacing:.04em;margin-top:7px;font-size:9px}.seat-ready>span,.seat-ready{justify-content:center;align-items:center;gap:5px;display:inline-flex}.lobby-seat.ready .seat-ready{color:#d0b778}.waiting-dot{background:#88795e;border-radius:50%;width:4px;height:4px}.seat-offline{color:#d39b91;letter-spacing:.08em;font-size:8px;position:absolute;top:8px;right:8px}.seat-versus{color:var(--gold-dim);flex-direction:column;align-items:center;gap:7px;display:flex}.seat-versus span{background:linear-gradient(transparent, var(--line-strong));width:1px;height:25px}.seat-versus span:last-child{background:linear-gradient(var(--line-strong), transparent)}.seat-versus b{font-family:var(--serif);letter-spacing:.08em;font-size:13px;font-weight:500}.lobby-actions{align-items:stretch;gap:10px;display:flex}.ready-btn,.start-btn{border:1px solid var(--line-strong);color:var(--paper);letter-spacing:.14em;background:#ffffff08;flex:1;padding:15px;font-size:11px;font-weight:600}.ready-btn{justify-content:center;align-items:center;gap:8px;display:flex}.ready-btn:hover:not(:disabled){border-color:var(--gold-dim)}.ready-btn.is-ready{border-color:var(--gold-dim);color:var(--gold-bright);background:#c8a25c12}.start-btn{color:#102016;background:linear-gradient(135deg,#e6d3af,#cba968);border-color:#0000;font-size:12px}.start-btn:hover:not(:disabled){background:linear-gradient(135deg,#f1dfbd,#d8b878)}.start-btn:disabled{color:var(--muted-2);border-color:var(--line);background:#ffffff09}.host-waiting{border:1px dashed var(--line);color:var(--muted-2);letter-spacing:.06em;flex:1;justify-content:center;align-items:center;gap:8px;font-size:10px;display:flex}.lobby-status{border-top:1px solid var(--line);color:var(--muted-2);letter-spacing:.08em;justify-content:space-between;align-items:center;margin-top:16px;padding-top:13px;font-size:8px;display:flex}.lobby-status .connection{align-items:center;gap:6px;display:inline-flex}.lobby-status .connection.online{color:#9ab6a4}.loader-screen{place-items:center;display:grid}.loader-card{z-index:2;border:1px solid var(--line-strong);text-align:center;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);background:#050e0ad1;width:min(460px,100vw - 40px);padding:44px;position:relative}.loader-card h2{font-family:var(--serif);margin:14px 0 24px;font-size:36px;font-weight:500}.loader-line{background:var(--line);width:100%;height:1px;overflow:hidden}.loader-line i{background:linear-gradient(90deg, transparent, var(--gold), transparent);width:40%;height:100%;animation:1.4s ease-in-out infinite loaderSweep;display:block}@keyframes loaderSweep{0%{transform:translate(-120%)}to{transform:translate(320%)}}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(10px);touch-action:auto;background:#010604c7;place-items:center;padding:24px;animation:.22s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.rules-modal{border:1px solid var(--line-strong);width:min(1000px,100vw - 32px);max-height:min(86vh,900px);animation:modalRise .4s var(--ease);background:linear-gradient(155deg,#0b1812,#06100b);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 40px 120px #000000b3}@keyframes modalRise{0%{opacity:0;transform:translateY(16px)scale(.99)}}.rules-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:28px 32px 20px;display:flex}.rules-head h2{font-family:var(--serif);letter-spacing:-.02em;margin:10px 0 0;font-size:40px;font-weight:500;line-height:.98}.rules-tabs{gap:4px;padding:14px 32px 0;display:flex}.rules-tabs button{color:var(--muted);letter-spacing:.08em;background:0 0;border:1px solid #0000;border-bottom:0;align-items:center;gap:8px;padding:10px 16px;font-size:10px;display:inline-flex}.rules-tabs button:hover{color:var(--paper)}.rules-tabs button.active{color:var(--gold-bright);border-color:var(--line-strong);background:#c8a25c0d}.rules-body{padding:24px 32px 28px;overflow-y:auto}.rule-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.rule-card{border:1px solid var(--line);background:#ffffff05;padding:16px 18px}.rule-card h3{font-family:var(--serif);color:var(--paper);margin:0 0 8px;font-size:21px;font-weight:500}.rule-card p{color:#aaa99a;letter-spacing:.02em;margin:0;font-size:11px;line-height:1.8}.rules-foot{border-top:1px solid var(--line);color:var(--muted-2);letter-spacing:.1em;justify-content:space-between;padding:14px 32px;font-size:8px;display:flex}.game-screen{color:var(--ivory);-webkit-user-select:none;user-select:none;touch-action:none;background:#020806;position:fixed;inset:0;overflow:hidden}.scene-host{position:absolute;inset:0}.scene-canvas{width:100%;height:100%;display:block}.scene-vignette{pointer-events:none;background:linear-gradient(#020705d1 0%,#0000 20% 65%,#020705e6 100%),radial-gradient(at 52%,#0000 38%,#01050380 100%);position:absolute;inset:0}.scene-grain{z-index:1;opacity:.06}.game-topbar{z-index:20;background:linear-gradient(#020806e0,#0000);justify-content:space-between;align-items:center;height:72px;padding:0 30px;display:flex;position:absolute;top:0;left:0;right:0}.game-brand{align-items:center;gap:12px;display:flex}.brand-mark.small{font-size:26px}.game-brand-text{flex-direction:column;line-height:1.1;display:flex}.game-brand-text>span{letter-spacing:.24em;font-size:10px;font-weight:600}.game-brand-text small{font-family:var(--serif);letter-spacing:.16em;color:var(--muted);margin-top:4px;font-size:11px}.game-table-id{letter-spacing:.16em;color:var(--muted-2);align-items:center;gap:10px;font-size:8px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.game-table-id b{font-family:var(--sans);letter-spacing:.24em;color:var(--paper);font-size:12px;font-weight:500}.game-top-actions{align-items:center;gap:10px;display:flex}.conn-pill{border:1px solid var(--line);letter-spacing:.1em;color:var(--muted-2);border-radius:20px;align-items:center;gap:6px;padding:5px 9px;font-size:8px;display:inline-flex}.conn-pill.online{color:#a5c2af;border-color:#8bb59833}.conn-pill.reconnecting{color:#d4b47a;border-color:#c8a25c4d;animation:1.5s infinite statusPulse}.conn-pill.offline{color:#d69d94}.leave-game{border:1px solid var(--line);color:var(--muted);letter-spacing:.1em;background:0 0;padding:8px 12px;font-size:9px}.leave-game:hover{color:#e0b8ae;border-color:#c95c5259}.score-strip{z-index:15;pointer-events:none;grid-template-columns:minmax(260px,350px) auto minmax(260px,350px);justify-content:space-between;align-items:start;gap:22px;display:grid;position:absolute;top:82px;left:28px;right:28px}.player-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(15px);pointer-events:auto;min-height:117px;transition:border-color .4s, background .4s, transform .4s var(--ease);background:linear-gradient(145deg,#06110cc7,#040b0880);align-items:flex-start;gap:13px;padding:15px 16px;display:flex;position:relative;overflow:hidden}.player-card:after{content:"";background:linear-gradient(90deg,#0000,#0000);height:1px;transition:background .4s;position:absolute;top:0;left:0;right:0}.player-card.active{background:linear-gradient(145deg,#0c1d15e6,#050e0a9e);border-color:#c8a25c73;transform:translateY(2px)}.player-card.active:after{background:linear-gradient(90deg, transparent, var(--gold), transparent)}.player-card.low{border-color:#c95c5261}.player-card-glow{opacity:0;background:radial-gradient(circle,#c8a25c21,#0000 68%);border-radius:50%;width:150px;height:150px;transition:opacity .5s;position:absolute;top:-80px;left:-60px}.player-card.active .player-card-glow{opacity:1}.player-avatar{border:1px solid var(--line-strong);width:48px;height:48px;font-family:var(--serif);color:var(--paper);background:radial-gradient(circle at 35% 30%,#2b4b3c,#091710 74%);border-radius:50%;flex:none;place-items:center;font-size:18px;display:grid;position:relative}.player-card.active .player-avatar{border-color:var(--gold-dim)}.avatar-ring{border:1px solid #0000;border-top-color:#c8a25cb3;border-radius:50%;animation:6s linear infinite ringSpin;position:absolute;inset:-4px}@keyframes ringSpin{to{transform:rotate(360deg)}}.player-main{flex:1;min-width:0}.player-name-row{align-items:center;gap:7px;display:flex}.player-name-row h3{font-family:var(--serif);letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:20px;font-weight:500;overflow:hidden}.you-tag{letter-spacing:.1em;color:var(--muted);border:1px solid var(--line);padding:2px 5px;font-size:7px}.player-card.is-me .you-tag{color:var(--gold);border-color:var(--gold-dim)}.offline-tag{color:#d09b92;letter-spacing:.06em;font-size:7px}.player-meta{flex-wrap:wrap;align-items:center;gap:7px;margin-top:7px;display:flex}.group-chip{border:1px solid var(--line);color:var(--muted);letter-spacing:.08em;padding:3px 7px;font-size:7px}.group-chip.solids{color:#d7c391;border-color:#c8a25c40}.group-chip.stripes{color:#a9c4b4;border-color:#86b29738}.break-chip{letter-spacing:.06em;color:var(--gold);border:1px solid #c8a25c33;padding:2px 6px;font-size:7px}.ball-dots{align-items:center;gap:4px;margin-top:10px;display:flex}.mini-ball{width:14px;height:14px;font-family:var(--sans);color:#000000b8;border:1px solid #ffffff1f;border-radius:50%;place-items:center;font-size:6px;font-weight:700;transition:opacity .3s,filter .3s;display:inline-grid;box-shadow:inset -2px -3px 4px #0006,inset 2px 2px 3px #ffffff40}.mini-ball.potted{opacity:.18;filter:grayscale()}.mini-ball.eight{color:#f1e8d6;background:#141414;border-color:#ffffff2e;margin-left:3px}.player-turn-marker{color:var(--muted-2);font-family:var(--sans);letter-spacing:.04em;align-self:flex-start;align-items:center;gap:4px;padding:4px 6px;font-size:9px;display:inline-flex}.player-card.active .player-turn-marker{color:var(--gold-bright)}.snooker-score-row{align-items:baseline;gap:6px;margin-top:2px;display:flex}.snooker-score-row b{font-family:var(--serif);color:var(--paper);font-size:30px;font-weight:500;line-height:1}.snooker-score-row span{color:var(--muted-2);letter-spacing:.14em;font-size:6px}.snooker-score-row em{color:var(--gold);margin-left:4px;font-size:8px;font-style:normal}.snooker-meta{margin-top:3px}.snooker-meta span{color:var(--muted-2);font-size:8px}.target-panel{border:1px solid var(--line);-webkit-backdrop-filter:blur(15px);pointer-events:auto;background:linear-gradient(150deg,#07130ed4,#040b0894);width:288px;padding:13px 15px 10px;transition:border-color .4s;position:relative}.target-panel.low{border-color:#c95c5261}.target-panel.paused{border-color:#c8a25c40}.target-row{align-items:center;gap:11px;display:flex}.target-ball{border:1px solid #ffffff24;border-radius:50%;flex:none;width:35px;height:35px;position:relative;box-shadow:inset -4px -5px 7px #0000008c,inset 3px 3px 5px #ffffff47,0 3px 8px #0006}.target-ball i{background:#0006;border-radius:50%;position:absolute;inset:8px}.target-row .eyebrow{font-size:7px}.target-row h4{font-family:var(--serif);color:var(--paper);margin:3px 0 1px;font-size:22px;font-weight:500;line-height:1}.target-row p{color:var(--muted-2);margin:0;font-size:8px}.clock-row{align-items:center;gap:12px;margin-top:10px;display:flex}.clock-dial{--ratio:1;background:conic-gradient(var(--gold) calc(var(--ratio) * 360deg), #ffffff14 0);border-radius:50%;flex:none;width:62px;height:62px;padding:1px;position:relative;box-shadow:0 0 24px #c8a25c14}.clock-dial:before{content:"";background:#07130e;border-radius:50%;position:absolute;inset:2px}.clock-inner{z-index:1;flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex;position:relative}.clock-inner b{font-family:var(--sans);letter-spacing:-.02em;color:var(--paper);font-size:16px;font-weight:500;line-height:1}.clock-inner span{color:var(--muted-2);letter-spacing:.04em;margin-top:4px;font-size:6px}.clock-copy{min-width:0}.clock-copy b{font-family:var(--serif);color:var(--paper);white-space:nowrap;text-overflow:ellipsis;font-size:17px;font-weight:500;display:block;overflow:hidden}.clock-copy span{color:var(--muted-2);letter-spacing:.04em;margin-top:4px;font-size:7px;display:block}.clock-copy em{color:var(--gold);letter-spacing:.12em;margin-top:4px;font-size:6px;font-style:normal;display:block}.clock-bar{background:#ffffff12;height:1px;margin-top:10px;overflow:hidden}.clock-bar i{background:linear-gradient(90deg, #c8a25c59, var(--gold));height:100%;transition:width .4s linear;display:block}.target-panel.low .clock-dial{background:conic-gradient(var(--danger) calc(var(--ratio) * 360deg), #ffffff14 0)}.target-panel.low .clock-inner b{color:#e8b0a8}.target-panel.low .clock-bar i{background:var(--danger)}.event-rail{z-index:12;-webkit-backdrop-filter:blur(10px);pointer-events:none;background:linear-gradient(145deg,#050f0a99,#040b0840);border:1px solid #e6dac21c;width:252px;max-height:300px;padding:12px 14px;position:absolute;top:218px;right:28px;overflow:hidden}.event-rail-head{color:var(--muted-2);letter-spacing:.18em;align-items:center;gap:9px;margin-bottom:10px;font-size:7px;display:flex}.event-rail-head i{background:var(--line);flex:1;height:1px}.event-empty{color:#9a9b8d8c;margin:0;font-size:9px;line-height:1.7}.event-row{animation:eventIn .4s var(--ease);border-top:1px solid #ffffff0b;gap:9px;padding:8px 0;display:flex}@keyframes eventIn{0%{opacity:0;transform:translate(6px)}}.event-dot{background:var(--gold);border-radius:50%;flex:none;width:4px;height:4px;margin-top:5px;box-shadow:0 0 0 3px #c8a25c14}.event-row.foul .event-dot,.event-row.error .event-dot{background:var(--danger);box-shadow:0 0 0 3px #c95c5214}.event-row.win .event-dot{background:var(--gold-bright)}.event-row b{letter-spacing:.04em;color:var(--paper);font-size:9px;font-weight:500;display:block}.event-row p{color:var(--muted-2);margin:3px 0 0;font-size:8px;line-height:1.55}.net-banner{z-index:30;color:#d9c18d;letter-spacing:.06em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#12110be6;border:1px solid #c8a25c4d;align-items:center;gap:8px;padding:8px 14px;font-size:9px;display:inline-flex;position:absolute;top:84px;left:50%;transform:translate(-50%)}.pause-banner{z-index:16;border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#08120ddb;align-items:center;gap:11px;padding:10px 16px;display:flex;position:absolute;bottom:192px;left:50%;transform:translate(-50%)}.pause-pulse{background:var(--gold);border-radius:50%;width:6px;height:6px;animation:1.4s infinite statusPulse}.pause-banner b{color:var(--paper);font-size:10px;font-weight:500;display:block}.pause-banner small{color:var(--muted-2);margin-top:3px;font-size:8px;display:block}.control-dock{z-index:25;-webkit-backdrop-filter:blur(24px)saturate(1.1);background:linear-gradient(150deg,#08150fe6,#040b08cc);border:1px solid #dccdb12b;align-items:center;gap:22px;width:min(920px,100vw - 56px);min-height:128px;padding:17px 20px;transition:border-color .5s;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 26px 60px #00000080,inset 0 1px #ffffff0a}.control-dock.is-turn{border-color:#c8a25c4d}.turn-copy{flex:none;width:206px}.turn-eyebrow{letter-spacing:.17em;color:var(--gold);margin-bottom:6px;font-size:7px}.turn-copy b{font-family:var(--serif);white-space:nowrap;text-overflow:ellipsis;font-size:21px;font-weight:500;line-height:1.05;display:block;overflow:hidden}.turn-copy span{color:var(--muted-2);margin-top:7px;font-size:8px;line-height:1.55;display:block}.spin-block{flex-direction:column;flex:0 0 94px;align-items:center;gap:6px;display:flex}.spin-label{width:100%;color:var(--muted-2);letter-spacing:.1em;justify-content:space-between;align-items:center;font-size:7px;display:flex}.spin-label button{color:var(--muted-2);letter-spacing:.06em;background:0 0;border:0;padding:0;font-size:7px}.spin-label button:hover{color:var(--gold)}.spin-pad{cursor:crosshair;touch-action:none;background:radial-gradient(circle at 35% 30%,#fffdf7,#ded4c0 62%,#bdb29c);border:1px solid #ffffff6b;border-radius:50%;width:66px;height:66px;position:relative;box-shadow:inset -5px -6px 12px #4b381c3d,inset 4px 4px 9px #ffffffb3,0 4px 10px #00000059}.spin-pad:after{content:"";border:1px dashed #1c160d29;border-radius:50%;position:absolute;inset:10px}.spin-cross-h,.spin-cross-v{background:#1e170d1a;position:absolute}.spin-cross-h{height:1px;top:50%;left:12%;right:12%}.spin-cross-v{width:1px;top:12%;bottom:12%;left:50%}.spin-dot{pointer-events:none;background:radial-gradient(circle at 35% 30%,#b34d4f,#6e2024);border-radius:50%;width:10px;height:10px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 3px #ffffff5c,0 1px 3px #0000004d}.spin-value{color:var(--muted-2);letter-spacing:.03em;white-space:nowrap;font-size:7px}.spin-block.disabled{opacity:.4}.spin-block.disabled .spin-pad{cursor:default}.power-block{flex:1;min-width:0}.power-head{justify-content:space-between;align-items:baseline;display:flex}.power-head span{letter-spacing:.14em;color:var(--muted-2);font-size:7px}.power-head b{font-family:var(--sans);color:var(--paper);letter-spacing:-.02em;font-size:19px;font-weight:400}.power-head b small{color:var(--muted-2);margin-left:2px;font-size:8px}.power-track{height:28px;margin-top:2px;position:relative}.power-track:before{content:"";background:#ffffff13;height:5px;position:absolute;top:12px;left:0;right:0}.power-fill{background:linear-gradient(90deg, #7a6238, var(--gold), #eed49a);height:5px;transition:width .1s linear;position:absolute;top:12px;left:0;box-shadow:0 0 12px #c8a25c38}.power-ticks{pointer-events:none;justify-content:space-between;height:5px;display:flex;position:absolute;inset:12px 0 auto}.power-ticks i{background:#040a07a6;width:1px;height:5px}.power-track input[type=range]{appearance:none;cursor:pointer;background:0 0;width:100%;height:28px;margin:0;position:absolute;inset:0}.power-track input[type=range]::-webkit-slider-runnable-track{background:0 0;height:5px}.power-track input[type=range]::-moz-range-track{background:0 0;height:5px}.power-track input[type=range]::-webkit-slider-thumb{appearance:none;background:linear-gradient(#f1ddb8,#bd9754);border:1px solid #f2e3c5;border-radius:1px;width:13px;height:19px;margin-top:-7px;box-shadow:0 2px 8px #00000080}.power-track input[type=range]::-moz-range-thumb{background:linear-gradient(#f1ddb8,#bd9754);border:1px solid #f2e3c5;border-radius:1px;width:13px;height:19px}.power-track input[type=range]:disabled{opacity:.45}.power-note{color:#9a9b8d9e;letter-spacing:.03em;justify-content:space-between;margin-top:3px;font-size:7px;display:flex}.shoot-btn{border:1px solid var(--line-strong);height:76px;color:var(--muted);font-family:var(--sans);letter-spacing:.13em;transition:all .3s var(--ease);background:#ffffff09;flex-direction:column;flex:0 0 102px;justify-content:center;align-items:center;gap:7px;font-size:11px;font-weight:600;display:flex}.shoot-btn.ready{color:#102016;background:linear-gradient(145deg,#eddbb7,#cba968);border-color:#ffffff40;box-shadow:0 8px 28px #c8a25c2e}.shoot-btn.ready:hover{background:linear-gradient(145deg,#f4e5c7,#dcbc7e);transform:translateY(-2px)}.shoot-btn:disabled{opacity:.55}.shoot-dot{background:#102016;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 5px #1020161f}.shoot-btn.ready .shoot-dot{animation:2s infinite breathe}@keyframes breathe{50%{opacity:.5;transform:scale(.7)}}.shoot-spinner{border:1px solid #fff3;border-top-color:var(--gold);border-radius:50%;width:13px;height:13px;animation:1s linear infinite ringSpin}.table-note{z-index:11;color:#a4a5977a;letter-spacing:.14em;align-items:center;gap:8px;font-size:7px;display:flex;position:absolute;bottom:25px;left:30px}.table-note i{background:var(--line);width:25px;height:1px}.scene-loading{z-index:50;text-align:center;background:radial-gradient(circle at 50% 45%,#0a2a1e80,#020705f7 62%);flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.scene-loading h2{font-family:var(--serif);margin:13px 0 24px;font-size:40px;font-weight:500}.scene-loading .loader-line{width:220px}.scene-loading p{max-width:380px;color:var(--muted);margin-top:15px;font-size:10px;line-height:1.7}.webgl-error{background:#050e0a}.webgl-error .secondary-btn{margin-top:24px}.victory-overlay{z-index:60;pointer-events:none;align-items:center;animation:.7s fadeIn;display:flex;position:fixed;inset:0}.victory-scrim{background:linear-gradient(90deg,#020805f5 0%,#020805d1 36%,#02080533 64%,#0208056b 100%),linear-gradient(#0000 50%,#020805bf);position:absolute;inset:0}.victory-card{z-index:1;-webkit-backdrop-filter:blur(24px);pointer-events:auto;width:min(540px,48vw);animation:victoryRise .8s var(--ease);touch-action:auto;background:linear-gradient(155deg,#0a1811eb,#040b08d9);border:1px solid #c8a25c47;margin-left:7vw;padding:36px 38px 28px;position:relative;overflow-y:auto;box-shadow:0 40px 110px #000000a6,inset 0 1px #ffffff0d}@keyframes victoryRise{0%{opacity:0;transform:translateY(24px)}}.victory-card:before,.victory-card:after{content:"";border-style:solid;border-color:#c8a25c73;width:22px;height:22px;position:absolute}.victory-card:before{border-width:1px 0 0 1px;top:8px;left:8px}.victory-card:after{border-width:0 1px 1px 0;bottom:8px;right:8px}.victory-crest{border:1px solid var(--gold-dim);width:46px;height:46px;color:var(--gold-bright);background:#c8a25c12;border-radius:50%;place-items:center;margin-bottom:18px;display:grid}.victory-card h2{font-family:var(--serif);letter-spacing:-.04em;margin:12px 0 8px;font-size:clamp(48px,5.6vw,74px);font-weight:500;line-height:.95}.victory-overlay.lost .victory-card h2{color:#d7ccb7}.victory-line{max-width:390px;color:var(--muted);margin:0 0 22px;font-size:11px;line-height:1.8}.final-score{border-top:1px solid var(--line);border-bottom:1px solid var(--line);align-items:center;gap:22px;padding:14px 0 18px;display:flex}.final-score div{flex-direction:column;gap:4px;display:flex}.final-score div:last-child{align-items:flex-end}.final-score span{color:var(--muted-2);letter-spacing:.08em;font-size:8px}.final-score b{font-family:var(--serif);color:var(--muted);font-size:42px;font-weight:500;line-height:.9}.final-score div.winner b{color:var(--gold-bright)}.final-score i{font-family:var(--serif);color:var(--muted-2);font-size:23px;font-style:normal}.final-tag{border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--gold);letter-spacing:.04em;align-items:center;gap:9px;padding:14px 0 18px;font-size:10px;display:flex}.rematch-status{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.rematch-status span{border:1px solid var(--line);color:var(--muted-2);align-items:center;gap:4px;padding:4px 7px;font-size:8px;display:inline-flex}.rematch-status span.voted{color:#b9cfbd;border-color:#8bb59840}.wait-dot{border:1px solid var(--muted-2);border-radius:50%;width:5px;height:5px;display:inline-block}.victory-actions{gap:9px;margin-top:22px;display:flex}.victory-actions .primary-btn{flex:1.3}.victory-actions .secondary-btn{flex:1}.victory-foot{color:var(--muted-2);letter-spacing:.18em;margin-top:18px;font-size:7px;display:block}.confirm-modal{border:1px solid var(--line-strong);width:min(420px,100vw - 32px);animation:modalRise .35s var(--ease);background:linear-gradient(155deg,#0c1a13,#06100b);padding:32px;position:relative;box-shadow:0 30px 90px #0009}.confirm-close{width:32px;height:32px;position:absolute;top:14px;right:14px}.confirm-modal h3{font-family:var(--serif);margin:12px 0 10px;font-size:30px;font-weight:500;line-height:1.05}.confirm-modal p{color:var(--muted);margin:0;font-size:10px;line-height:1.8}.confirm-actions{gap:8px;margin-top:24px;display:flex}.confirm-actions button{flex:1;padding:13px 16px;font-size:10px}.toast-stack{z-index:120;pointer-events:none;touch-action:auto;flex-direction:column;gap:8px;width:min(330px,100vw - 32px);display:flex;position:fixed;top:20px;right:22px}.game-screen~.toast-stack{top:218px}.toast{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto;animation:toastIn .45s var(--ease);background:#07130deb;align-items:flex-start;gap:10px;padding:12px 34px 12px 13px;display:flex;position:relative;box-shadow:0 12px 40px #0006}@keyframes toastIn{0%{opacity:0;transform:translate(18px)}}.toast-mark{background:var(--gold);border-radius:50%;flex:none;width:5px;height:5px;margin-top:6px;box-shadow:0 0 0 4px #c8a25c14}.toast.foul .toast-mark,.toast.error .toast-mark,.toast.timeout .toast-mark{background:var(--danger);box-shadow:0 0 0 4px #c95c5214}.toast.win .toast-mark{background:var(--gold-bright)}.toast b{color:var(--paper);letter-spacing:.04em;font-size:10px;font-weight:500;display:block}.toast p{color:var(--muted);margin:3px 0 0;font-size:9px;line-height:1.55}.toast-close{color:var(--muted-2);background:0 0;border:0;padding:4px;position:absolute;top:8px;right:8px}.toast-close:hover{color:var(--paper)}.reconnect-modal{z-index:90;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#020705d1;place-items:center;display:grid;position:fixed;inset:0}.reconnect-card{border:1px solid var(--line-strong);text-align:center;background:#07130e;width:min(460px,100vw - 32px);padding:38px}.reconnect-card>svg{color:var(--gold);margin:20px 0 6px}.reconnect-card h3{font-family:var(--serif);margin:8px 0 12px;font-size:34px;font-weight:500}.reconnect-card p{color:var(--muted);font-size:10px;line-height:1.8}.reconnect-actions{gap:8px;margin-top:22px;display:flex}.reconnect-actions button{flex:1;padding:13px 14px;font-size:10px}@media (width<=1280px){.landing-main{gap:4vw;padding-left:48px;padding-right:48px}.hero-title{font-size:clamp(88px,11vw,150px)}.reservation{padding:26px 28px 20px}.lobby-main{grid-template-columns:minmax(320px,.8fr) minmax(500px,620px);gap:4vw}.event-rail{width:220px}.control-dock{gap:16px;width:min(880px,100vw - 48px)}.turn-copy{width:185px}}@media (width<=1100px){.landing-main{grid-template-columns:1fr 430px;gap:28px;padding-left:36px;padding-right:36px}.hero-title{font-size:clamp(80px,10.5vw,130px)}.hero-lede br{display:none}.landing-nav{padding:22px 36px}.event-rail{display:none}.score-strip{grid-template-columns:minmax(220px,1fr) 270px minmax(220px,1fr);gap:12px;left:20px;right:20px}.player-card{min-height:108px;padding:12px}.player-name-row h3{font-size:18px}.player-turn-marker{display:none}.target-panel{width:270px}.lobby-main{grid-template-columns:1fr 560px}.lobby-intro h1{font-size:48px}}@media (width<=900px){.landing-nav{padding:20px 24px}.landing-nav-actions{gap:12px}.server-pill{display:none}.landing-main{flex-direction:column;justify-content:center;align-items:stretch;gap:30px;min-height:auto;padding:88px 24px 96px;display:flex}.hero-copy{max-width:none}.hero-title{margin-top:18px;font-size:clamp(72px,17vw,118px)}.hero-title span:last-child{margin-left:.35em}.hero-lede{max-width:460px}.hero-stats{margin-top:26px}.reservation{align-self:center;width:100%;max-width:520px}.landing-foot{margin:0 24px;padding-bottom:18px;position:relative;bottom:auto;left:auto;right:auto}.landing,.lobby{overflow-y:auto}.lobby-nav{padding:20px 24px}.lobby-main{flex-direction:column;gap:30px;min-height:auto;padding:20px 24px 80px;display:flex}.lobby-intro h1{white-space:normal;font-size:48px}.lobby-card{align-self:center;width:100%;max-width:620px}.lobby .landing-foot{display:none}.game-topbar{height:58px;padding:0 14px}.game-brand-text>span{letter-spacing:.16em;font-size:9px}.game-brand-text small,.game-table-id{display:none}.game-top-actions{gap:6px}.icon-btn{width:34px;height:34px}.conn-pill{padding:4px 7px}.leave-game{padding:7px 9px}.score-strip{grid-template-rows:auto auto;grid-template-columns:1fr 1fr;gap:7px;top:66px;left:10px;right:10px}.player-card{grid-row:1;gap:9px;min-height:78px;padding:10px}.player-card:first-child{grid-column:1}.player-card:last-child{grid-column:2}.player-avatar{width:36px;height:36px;font-size:14px}.player-name-row h3{font-size:16px}.player-meta{margin-top:4px}.ball-dots{display:none}.snooker-score-row b{font-size:24px}.target-panel{grid-area:2/1/auto/-1;align-items:center;gap:14px;width:auto;padding:8px 11px;display:flex}.target-row{flex:1;min-width:0}.target-ball{width:27px;height:27px}.target-row h4{font-size:18px}.target-row p{font-size:7px}.target-row .eyebrow{display:none}.clock-row{flex:none;gap:8px;margin-top:0}.clock-dial{width:46px;height:46px}.clock-inner b{font-size:12px}.clock-inner span,.clock-copy{display:none}.clock-bar{margin:0;position:absolute;bottom:0;left:11px;right:11px}.control-dock{background:linear-gradient(#08150ff0,#030906fb);border-color:#dccdb147 currentColor currentColor;border-bottom-style:none;border-bottom-width:0;border-left-style:none;border-left-width:0;border-right-style:none;border-right-width:0;grid-template-columns:1fr 78px;grid-template-areas:"turn shoot""power spin";gap:8px 12px;width:100%;min-height:156px;padding:10px 12px 12px;display:grid;bottom:0;left:0;right:0;transform:none;box-shadow:0 -18px 46px #0000006b}.turn-copy{flex-wrap:wrap;grid-area:turn;align-content:flex-start;align-items:baseline;gap:0 8px;width:auto;display:flex}.turn-eyebrow{width:100%;margin-bottom:2px}.turn-copy b{white-space:normal;font-size:18px}.turn-copy span{margin-top:2px;font-size:7px}.spin-block{flex:none;grid-area:spin;align-items:center;gap:3px;width:auto}.spin-pad{width:56px;height:56px}.spin-label{width:56px}.spin-value{display:none}.power-block{grid-area:power;align-self:center}.power-head b{font-size:15px}.power-note span:last-child{display:none}.shoot-btn{flex:none;grid-area:shoot;align-self:start;width:78px;height:100%;min-height:0;max-height:64px}.table-note{display:none}.pause-banner{max-width:calc(100vw - 24px);bottom:174px}.net-banner{top:66px}.toast-stack{width:min(310px,100vw - 20px);top:auto;bottom:176px;right:10px}.game-screen~.toast-stack{top:208px;bottom:auto}.victory-overlay{align-items:flex-end}.victory-card{width:calc(100vw - 24px);max-height:80vh;margin:0 12px 14px;padding:24px 22px 20px;overflow-y:auto}.victory-card h2{font-size:46px}.rules-modal{max-height:90vh}.rules-head{padding:20px 20px 16px}.rules-head h2{font-size:30px}.rules-tabs{padding:10px 14px 0;overflow-x:auto}.rules-tabs button{white-space:nowrap;padding:9px 10px}.rules-body{padding:16px}.rule-grid{grid-template-columns:1fr}.rules-foot{padding:12px 16px}}@media (width<=560px){.brand-word{letter-spacing:.16em;font-size:8px;display:flex}.landing-nav .brand-word span,.lobby-nav .brand-word span{display:none}.game-brand-text>span{letter-spacing:.14em;font-size:8px}.game-brand-text small{display:none}.landing-nav{padding:16px 18px}.landing-main{padding:74px 18px 70px}.hero-title{font-size:clamp(64px,19vw,90px);line-height:.76}.hero-chinese{gap:12px;font-size:15px}.hero-chinese i{width:34px}.hero-lede{margin-top:18px;font-size:11px;line-height:1.9}.hero-stats{gap:25px;margin-top:22px}.hero-stats b{font-size:22px}.reservation{padding:22px 18px 16px}.reservation-head h2{font-size:29px}.mode-card{padding:12px 11px}.mode-text b{font-size:20px}.mode-text small{font-size:8px}.field input{font-size:20px}.landing-foot{text-align:center;flex-direction:column;gap:8px}.landing-foot .foot-mid{display:none}.lobby-nav{padding:16px 18px}.lobby-nav-actions .ghost-btn{border:1px solid var(--line);border-radius:50%;place-items:center;gap:0;width:34px;height:34px;padding:8px;font-size:0;display:grid}.lobby-nav-actions .ghost-btn svg{width:16px}.lobby-nav-actions .leave-btn{border:0;width:auto;padding:8px 2px;font-size:8px}.lobby-main{padding:10px 14px 60px}.lobby-intro h1{font-size:40px}.lobby-intro p{font-size:10px}.lobby-card{padding:22px 16px 16px}.room-code-line strong{letter-spacing:.13em;font-size:36px}.copy-btn{padding:8px;font-size:8px}.seats{grid-template-columns:1fr 28px 1fr}.seat-versus span{display:none}.seat-versus b{font-size:10px}.lobby-seat{min-height:168px;padding:14px 6px 12px}.seat-avatar{width:52px;height:52px;font-size:18px}.seat-name{font-size:16px}.seat-label{letter-spacing:.08em;font-size:7px}.lobby-actions{flex-direction:column}.start-btn,.ready-btn,.host-waiting{padding:13px}.lobby-status{gap:8px;font-size:7px}.lobby-status span:last-child{display:none}.game-brand-text{display:flex}.conn-pill{border-radius:50%;justify-content:center;width:28px;height:28px;padding:0;font-size:0}.conn-pill svg{width:13px}.leave-game{padding:6px 8px;font-size:8px}.score-strip{top:60px}.player-card{gap:7px;min-height:70px;padding:8px}.player-avatar{width:30px;height:30px;font-size:12px}.player-name-row h3{font-size:14px}.you-tag{display:none}.group-chip{padding:2px 5px;font-size:6px}.snooker-score-row b{font-size:21px}.snooker-score-row span{display:none}.snooker-score-row em{font-size:7px}.target-panel{gap:8px;padding:7px 9px}.target-row h4{font-size:16px}.target-row p{display:none}.target-ball{width:23px;height:23px}.clock-row{gap:6px}.clock-dial{width:40px;height:40px}.clock-inner b{font-size:11px}.control-dock{padding:8px 9px max(10px, env(safe-area-inset-bottom));grid-template-columns:1fr 66px;gap:6px 8px;min-height:152px}.turn-copy b{font-size:16px}.turn-copy span{display:none}.spin-pad{width:48px;height:48px}.spin-label{width:48px}.spin-label span{display:none}.power-note{font-size:6px}.shoot-btn{width:66px;height:100%;min-height:0;max-height:56px;font-size:10px}.pause-banner{padding:8px 10px;bottom:156px}.pause-banner small{display:none}.net-banner{font-size:8px;top:60px}.toast-stack{bottom:158px}.victory-card{width:calc(100vw - 16px);margin:0 8px 8px;padding:20px 18px}.victory-card h2{font-size:38px}.victory-actions{flex-direction:column}.victory-actions button{width:100%}.final-score b{font-size:34px}.rules-modal{width:calc(100vw - 16px)}.rules-head h2{font-size:26px}.rules-head h2 br{display:none}.modal-backdrop{padding:8px}}@media (width<=360px){.brand-word,.game-brand-text{display:none}.game-top-actions{gap:4px}.icon-btn{width:31px;height:31px}.score-strip{left:6px;right:6px}.player-card{gap:5px;padding:7px 6px}.player-name-row h3{font-size:13px}.target-panel{padding:6px 8px}.control-dock{grid-template-columns:1fr 60px;padding-left:7px;padding-right:7px}.shoot-btn{width:60px}.spin-pad{width:44px;height:44px}.spin-label{width:44px}}@media (height<=700px) and (width>=900px){.score-strip{top:72px}.player-card{min-height:96px;padding:10px 13px}.target-panel{padding:9px 12px 7px}.clock-dial{width:52px;height:52px}.control-dock{min-height:110px;padding:12px 18px;bottom:14px}.shoot-btn{height:66px}.spin-pad{width:56px;height:56px}.event-rail{max-height:200px;top:196px}}
