:root{--bg:#000;--surface:#121214;--surface-2:#1c1c1e;--surface-3:#2c2c2e;--line:#ffffff14;--text:#f5f5f7;--muted:#8e8e93;--faint:#5a5a5f;--red:#ff5a52;--card-red:#e5383b;--card-ink:#1b1b1d;--gold:#ffd60a;--blue:#64d2ff;--green:#30d158;--pink:#ff8fc2;--lilac:#c7a6ff;--r-card:.15em;--r-btn:16px;--spring:cubic-bezier(.34, 1.56, .64, 1);--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Helvetica Neue", Arial, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);overscroll-behavior:none;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;font-size:15px}b{font-weight:600}.muted{color:var(--muted)}.small{font-size:12px}.red{color:var(--red)}.row{align-items:center;gap:8px;display:flex}.row.end{justify-content:flex-end;margin-top:12px}.num,.big-num,.room-code{font-family:var(--display);letter-spacing:-.02em;font-weight:300}button{font:inherit;color:inherit;cursor:pointer}.btn{border-radius:var(--r-btn);background:var(--surface-2);min-height:42px;color:var(--text);white-space:nowrap;transition:transform .15s var(--spring), background .15s, opacity .15s;border:0;padding:10px 18px;font-weight:500}.btn:active:not(:disabled){transform:scale(.94)}.btn:hover:not(:disabled){background:var(--surface-3)}.btn.primary{color:#000;background:#fff;font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(.94);background:#fff}.btn:disabled{opacity:.35;cursor:default}.btn.small{border-radius:11px;min-height:32px;padding:5px 12px;font-size:13px}.btn.big{border-radius:18px;min-height:54px;font-size:17px}.btn.icon{border-radius:50%;place-items:center;width:38px;min-width:38px;padding:0;display:inline-grid}.btn.icon.small{width:28px;min-width:28px;min-height:28px}.btn .red-on-light{color:var(--card-red)}.lobby-seat .btn:not(.primary),.sheet .btn:not(.primary),.a2hs .btn,.takeover-prompt .btn:not(.primary){background:var(--surface-3)}.lobby-seat .btn:not(.primary):hover,.sheet .btn:not(.primary):hover{background:#3a3a3c}.chip-btn{border:0;border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.chip-btn.gold{background:var(--gold);color:#000}.link{color:var(--blue);text-align:left;background:0 0;border:0;padding:4px 0;font-size:14px}input{font:inherit;border-radius:var(--r-btn);background:var(--surface-2);color:var(--text);border:1px solid #0000;outline:none;width:100%;padding:14px 16px;font-size:16px;transition:border-color .15s}input::placeholder{color:var(--faint)}input:focus{border-color:#48484a}.page{max-width:460px;min-height:100%;padding:max(28px, env(safe-area-inset-top)) 20px max(24px, env(safe-area-inset-bottom));flex-direction:column;gap:14px;margin:0 auto;display:flex;position:relative}.page>*{position:relative}.page.center{justify-content:center;align-items:center}.aurora{pointer-events:none;z-index:0;inset:0;overflow:hidden;position:fixed!important}.aurora i{filter:blur(60px);opacity:.55;border-radius:50%;animation:14s ease-in-out infinite alternate drift;position:absolute}.aurora .b1{background:#7aa7ff;width:320px;height:320px;top:-120px;left:-80px}.aurora .b2{background:#ff9db8;width:280px;height:280px;animation-delay:-5s;top:-60px;right:-90px}.aurora .b3{opacity:.35;background:#ffd08a;width:260px;height:260px;animation-delay:-9s;top:40px;left:30%}.aurora .wave{opacity:.55;width:100%;height:110px;position:absolute;top:150px;left:0;right:0}.aurora .wave path{fill:none;stroke:#fff;stroke-width:2.2px;stroke-linecap:round;vector-effect:non-scaling-stroke}@keyframes drift{to{transform:translate(30px,24px)scale(1.12)}}.hero-cards{height:150px;margin-top:8px;position:relative}.hero-cards .card.fan{width:84px;height:118px;animation:fan-in .7s var(--spring) both;transition:transform .35s var(--spring);font-size:84px;position:absolute;bottom:auto;right:auto;box-shadow:0 18px 40px #00000073}.hero-cards .card.f1{animation-delay:50ms;top:14px;left:50%;transform:translate(-120%)rotate(-14deg)}.hero-cards .card.f2{animation-delay:.12s;top:4px;left:50%;transform:translate(-50%)rotate(-2deg)}.hero-cards .card.f3{animation-delay:.19s;top:14px;left:50%;transform:translate(22%)rotate(12deg)}@keyframes fan-in{0%{opacity:0;translate:0 30px}}.hero-cards:hover .f1{transform:translate(-130%)rotate(-18deg)}.hero-cards:hover .f3{transform:translate(32%)rotate(16deg)}.wordmark{text-align:center;font-family:var(--display);letter-spacing:.02em;margin:4px 0 0;font-size:46px;font-weight:600}.wordmark .dot{color:var(--card-red)}.tagline{text-align:center;color:var(--muted);letter-spacing:.12em;margin:-6px 0 6px;font-size:13px}.form{flex-direction:column;gap:12px;display:flex}.field{background:var(--surface-2);border-radius:var(--r-btn);align-items:center;gap:10px;padding:6px 6px 6px 8px;display:flex}.field input{background:0 0;padding:10px 6px}.avatar-picker{grid-template-columns:repeat(6,1fr);gap:6px;padding:4px 0;display:grid}.avatar-choice{transition:transform .25s var(--spring);background:0 0;border:0;border-radius:50%;place-items:center;padding:2px;display:grid;position:relative}.avatar-choice svg{opacity:.72;width:100%;max-width:52px;height:auto;transition:opacity .2s}.avatar-choice.on svg,.avatar-choice:hover svg{opacity:1}.avatar-choice.on{transform:scale(1.12)translateY(-2px)}.avatar-choice.on:after{content:"";background:#fff;border-radius:50%;width:5px;height:5px;position:absolute;bottom:-5px}.join{gap:8px;display:flex}.join input{flex:1}.lobby-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:4px;display:flex}.room-code{font-size:56px;line-height:1}.seats{grid-template-columns:1fr;gap:8px;display:grid}.lobby-seat{background:var(--surface-2);min-height:76px;animation:pop-in .4s var(--spring) both;border:1px solid #0000;border-radius:20px;align-items:center;gap:12px;padding:12px 14px;display:flex}.lobby-seat:nth-child(2){animation-delay:40ms}.lobby-seat:nth-child(3){animation-delay:80ms}.lobby-seat:nth-child(4){animation-delay:.12s}.lobby-seat.mine{border-color:#ffffff40}.lobby-seat .seat-text{flex:1;min-width:0}.lobby-seat .name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.empty-avatar{width:48px;height:48px;color:var(--faint);font-family:var(--display);border:1.5px dashed #3a3a3c;border-radius:50%;flex:none;place-items:center;display:grid}svg.offline{opacity:.35;filter:grayscale()}.a2hs{background:var(--surface-2);border-radius:var(--r-btn);justify-content:space-between;align-items:center;gap:8px;padding:8px 8px 8px 14px;display:flex}.steps{margin:0;padding-left:20px;line-height:1.9}@keyframes pop-in{0%{opacity:0;transform:translateY(8px)scale(.97)}}@media (orientation:landscape) and (height<=500px){.page{max-width:820px;padding-top:max(14px, env(safe-area-inset-top))}.seats{grid-template-columns:1fr 1fr}.home{grid-template-columns:1fr 1.15fr;align-content:center;column-gap:28px;display:grid}.home .hero-cards,.home .wordmark,.home .tagline{grid-column:1}.home .form{grid-area:1/2/span 3;align-self:center}.home .hero-cards{height:120px}.hero-cards .card.fan{width:70px;height:98px;font-size:70px}.wordmark{font-size:36px}.aurora .wave{top:60px}}.table{-webkit-user-select:none;user-select:none;height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;max-width:1600px;margin:0 auto;display:flex;position:relative;overflow:hidden}.topbar{flex-wrap:nowrap;align-items:center;gap:4px 8px;min-height:44px;padding:6px 12px;display:flex;position:relative}.stat{white-space:nowrap;background:var(--surface-2);border-radius:12px;align-items:center;gap:6px;min-width:0;min-height:32px;padding:4px 10px;display:flex}.stat .label{color:#b9b9c2;font-size:12px;font-weight:600}.stat .num{font-size:22px;line-height:1}.stat .name{text-overflow:ellipsis;max-width:6.5em;font-size:14px;font-weight:500;overflow:hidden}.stat .sub{color:var(--muted);font-size:13px}.stat .who{align-items:center;gap:5px;display:inline-flex}.stat .arrow{color:var(--faint)}.stat .name.alone{color:var(--gold)}.count-tag{background:var(--surface-3);color:var(--text);border-radius:6px;padding:3px 5px;font-size:11px;font-weight:700;line-height:1}.count-tag.all{background:var(--gold);color:#000}.mini-card{min-width:19px;height:24px;color:var(--card-ink);font-family:var(--display);background:#fff;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;gap:1px;padding:0 4px;font-size:14px;font-weight:500;line-height:1;display:inline-flex;box-shadow:0 2px 6px #0006}.mini-card.red{color:var(--card-red)}.mini-card.empty{background:var(--surface-3);color:var(--muted);box-shadow:none}.mini-card .ms{font-size:15px}.drag-chip{background:var(--red);color:#fff;animation:pop-in .35s var(--spring);border-radius:12px;align-items:center;gap:4px;padding:2px 8px;font-size:13px;font-weight:700;display:inline-flex}.drag-chip .name{font-size:inherit;max-width:5em;font-weight:700}.score .bar{background:var(--surface-3);border-radius:2px;width:84px;height:4px;position:relative}.score .fill{background:linear-gradient(90deg, var(--blue), var(--lilac), var(--pink));transition:width .5s var(--spring);border-radius:2px;position:absolute;inset:0 auto 0 0}.score .mark{background:#fff;border-radius:1px;width:2px;position:absolute;top:-4px;bottom:-4px}.spacer{flex:1}.menu-wrap{position:relative}.dots{gap:3px;display:inline-flex}.dots i{background:var(--text);border-radius:50%;width:4px;height:4px}.menu-scrim{z-index:90;position:fixed;inset:0}.menu{z-index:100;-webkit-backdrop-filter:blur(20px);min-width:240px;animation:menu-in .2s var(--spring);transform-origin:100% 0;background:#242426f5;border-radius:18px;padding:6px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 20px 50px #0009}.menu-head{color:var(--muted);padding:8px 12px 6px;font-size:12px}.menu button{text-align:left;background:0 0;border:0;border-radius:12px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:15px;display:flex}.menu button:hover{background:#ffffff12}.menu .mi{text-align:center;width:22px}@keyframes menu-in{0%{opacity:0;transform:scale(.9)}}.arena{flex:1;min-height:0;position:relative}.arena:before{content:"";pointer-events:none;background:radial-gradient(#788cff12,#0000 70%);border:1px solid #ffffff0f;border-radius:50%;position:absolute;inset:10% 12% 4%}.seat{z-index:5;text-align:center;flex-direction:column;align-items:center;gap:2px;max-width:30%;display:flex;position:absolute}.seat.top{text-align:left;flex-direction:row;gap:10px;top:2px;left:50%;transform:translate(-50%)}.seat.top-l,.seat.top-r{text-align:left;flex-direction:row;gap:10px;top:2px;transform:translate(-50%)}.seat.top-l{left:24%}.seat.top-r{left:76%}.seat.left{top:46%;left:14px;transform:translateY(-50%)}.seat.right{top:46%;right:14px;transform:translateY(-50%)}.seat.bottom:not(.self){bottom:6px;left:50%;transform:translate(-50%)}.seat.self{text-align:left;flex-direction:row;flex:none;gap:10px;max-width:none;position:static}.seat-top{align-items:center;gap:4px;display:flex}.seat.right .seat-top{flex-direction:row-reverse}.seat-info{flex-direction:column;align-items:center;min-width:0;display:flex}.seat.top .seat-info,.seat.top-l .seat-info,.seat.top-r .seat-info,.seat.self .seat-info{align-items:flex-start}.seat-name{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:9em;font-size:13px;overflow:hidden}.seat.active .seat-name{color:var(--text)}.seat-name-row{align-items:center;gap:5px;min-width:0;display:flex}.team-tag{white-space:nowrap;border-radius:8px;flex:none;padding:3px 6px;font-size:11px;font-weight:700;line-height:1}.team-tag.dealer{background:var(--gold);color:#000}.team-tag.def{background:var(--blue);color:#000}.avatar-wrap.team-dealer{box-shadow:0 0 0 2.5px var(--gold)}.avatar-wrap.team-def{box-shadow:0 0 0 2.5px var(--blue)}.seat-meta{white-space:nowrap;align-items:center;gap:5px;font-size:12px;display:flex}.seat-meta .lv{color:var(--text);font-family:var(--display)}.seat-meta .pts{background:var(--surface-3);min-width:22px;height:18px;color:var(--gold);font-family:var(--display);border-radius:9px;place-items:center;padding:0 5px;font-size:11px;font-weight:500;display:inline-grid}.seat-meta .cnt{color:var(--muted)}.seat-meta .drag{color:var(--red)}.seat .btn{margin-top:4px}.badge{z-index:2;width:19px;height:19px;animation:pop-in .35s var(--spring);border-radius:50%;place-items:center;font-size:11px;font-weight:800;display:grid;position:absolute;box-shadow:0 2px 6px #00000080}.badge.dealer{color:#000;background:#fff;bottom:-2px;right:-3px}.badge.partner{background:var(--gold);color:#000;bottom:-2px;left:-3px}.badge.zz{background:var(--surface-3);font-size:11px;top:-4px;right:-4px}.badge.drag{white-space:nowrap;background:var(--red);color:#fff;width:auto;animation:pop-in .35s var(--spring), drag-pulse 1.6s ease-in-out .4s 3;border-radius:10px;padding:0 6px;top:-6px;left:-6px}@keyframes drag-pulse{50%{transform:scale(1.15)}}.level-row .drag-tag{color:#fff;background:var(--red);white-space:nowrap;border-radius:10px;flex-shrink:0;padding:1px 7px;font-size:12px;font-weight:700}.badge.inline{width:18px;height:18px;box-shadow:none;margin-left:6px;display:inline-grid;position:static}.avatar-wrap{border-radius:50%;flex:none;place-items:center;padding:3px;display:grid;position:relative}.avatar-wrap svg{filter:drop-shadow(0 4px 10px #00000073);display:block}.avatar-wrap .ring{background:conic-gradient(#fff calc(var(--p) * 360deg), #ffffff1a 0);border-radius:50%;position:absolute;inset:0;-webkit-mask:radial-gradient(circle,#0000 calc(50% - 2.5px),#000 calc(50% - 2px));mask:radial-gradient(circle,#0000 calc(50% - 2.5px),#000 calc(50% - 2px))}.seat.active .avatar-wrap svg{animation:1.6s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(-2px)}}.avatar-wrap.urgent .ring{background:conic-gradient(var(--red) calc(var(--p) * 360deg), #ff5a5226 0)}.avatar-wrap.urgent svg{animation:.5s ease-in-out infinite shake}@keyframes shake{25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}.card-stack{flex:none;position:relative}.card-stack .card.back{position:absolute;inset:auto}.stack-count{border:1px solid var(--surface-3);min-width:20px;height:18px;font-size:11px;font-family:var(--display);z-index:3;background:#000;border-radius:9px;place-items:center;padding:0 4px;display:grid;position:absolute;bottom:-4px;right:-4px}.trick{pointer-events:none;position:absolute;inset:0}.trick-slot{flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute}.trick-slot.bottom{bottom:4px;left:50%;transform:translate(-50%)}.trick-slot.top{left:50%;top:calc(var(--tw) * .25 + 50px);transform:translate(-50%)}.trick-slot.top-l{left:30%;top:calc(var(--tw) * .25 + 50px);transform:translate(-50%)}.trick-slot.top-r{left:70%;top:calc(var(--tw) * .25 + 50px);transform:translate(-50%)}.trick-slot.left{top:46%;left:clamp(110px,20%,240px);transform:translateY(-50%)}.trick-slot.right{top:46%;right:clamp(110px,20%,240px);transform:translateY(-50%)}.players-6{--seat-h:54px;--side-w:126px}.players-6 .trick-slot.top,.players-6 .trick-slot.top-l,.players-6 .trick-slot.top-r{top:var(--seat-h)}.players-6 .trick-slot.top-l{left:24%}.players-6 .trick-slot.top-r{left:76%}.players-6 .trick-slot.left{left:var(--side-w);top:60%}.players-6 .trick-slot.right{right:var(--side-w);top:60%}.seat-meta .cnt.alt{display:none}@media (width<=760px){.players-6 .seat .card-stack{display:none}.players-6 .seat-meta .cnt.alt{display:inline}.players-6 .seat.top-l{left:27%}.players-6 .seat.top-r{left:73%}.players-6 .team-tag{padding:2px 4px;font-size:10px}.players-6 .trick-slot.top-l{left:30%}.players-6 .trick-slot.top-r{left:70%}.players-6{--side-w:124px}}.trick-slot.leading .card-row{filter:drop-shadow(0 0 14px #ffd60a59)}.trick-slot.leading:after{content:"最大";background:var(--gold);color:#000;animation:pop-in .3s var(--spring);border-radius:6px;padding:1px 5px;font-size:10px;font-weight:700;position:absolute;bottom:-4px;right:-32px}.trick.last .trick-slot.leading:after{content:"赢"}.lead-tag{color:var(--muted);font-size:10px;position:absolute;bottom:-4px;left:-30px}.last-trick{pointer-events:auto;position:absolute;bottom:6px;right:12px}.trick.last{background:#0000008c}.fly .card-row{animation:fly-in .38s var(--spring)}.from-bottom .card-row{--dx:0;--dy:90px}.from-top .card-row{--dx:0;--dy:-70px}.from-left .card-row{--dx:-100px;--dy:0}.from-top-l .card-row{--dx:-60px;--dy:-70px}.from-top-r .card-row{--dx:60px;--dy:-70px}.from-right .card-row{--dx:100px;--dy:0}@keyframes fly-in{0%{transform:translate(var(--dx), var(--dy)) scale(.7) rotate(-6deg);opacity:0}}.collect .card-row{animation:.32s ease-in .55s forwards collect}.to-bottom .card-row{--tx:0;--ty:130px}.to-top .card-row{--tx:0;--ty:-130px}.to-left .card-row{--tx:-230px;--ty:0}.to-top-l .card-row{--tx:-150px;--ty:-130px}.to-top-r .card-row{--tx:150px;--ty:-130px}.to-right .card-row{--tx:230px;--ty:0}@keyframes collect{to{transform:translate(var(--tx), var(--ty)) scale(.5) rotate(10deg);opacity:0}}.event-banner{z-index:30;color:#111;white-space:nowrap;animation:banner-in .45s var(--spring);pointer-events:none;background:linear-gradient(120deg,#fff 0%,#f1ecff 100%);border-radius:999px;align-items:center;gap:10px;padding:8px 18px 8px 10px;font-size:16px;display:flex;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 40px #0000008c}.event-banner b{font-weight:700}.event-banner .emoji{font-size:24px;line-height:1;animation:.6s ease-in-out .2s wiggle}.event-banner.partner{background:linear-gradient(120deg,#d6f3ff,#e7dcff)}.event-banner.declare,.event-banner.counter,.event-banner.trump{background:linear-gradient(120deg,#fff4c2,#ffe0ec)}.event-banner.throwFail,.event-banner.dragged{background:linear-gradient(120deg,#ffd9d6,#ffe9c7)}.event-banner.hand{background:linear-gradient(120deg,#e8f0ff,#f3e8ff)}.event-banner.call{background:linear-gradient(120deg,#fff4c2,#d6f3ff)}.event-banner.kitty{background:linear-gradient(120deg,#d7ffe6,#fff4c2)}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-20%)scale(.7)}}@keyframes wiggle{25%{transform:rotate(-14deg)scale(1.2)}75%{transform:rotate(10deg)scale(1.1)}}.takeover-prompt{z-index:40;background:var(--surface-2);border:1px solid var(--gold);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:6px 6px 6px 16px;font-size:14px;display:flex;position:absolute;top:8px;left:50%;transform:translate(-50%)}.dock{padding:0 12px 4px}.dock-row{align-items:center;gap:12px;min-height:48px;display:flex}.actions{flex-wrap:wrap;flex:1;justify-content:flex-end;align-items:center;gap:6px;min-width:0;display:flex}.actions .hint{color:var(--muted);flex:200px;min-width:0;font-size:14px}.actions .hint b{color:var(--text);font-family:var(--display)}.hint.warn,.warn{color:var(--red)!important}.countdown{font-family:var(--display);color:#000;background:#fff;border-radius:7px;padding:0 6px;font-size:13px;font-weight:600}.picker{flex-wrap:wrap;flex:100%;justify-content:flex-end;align-items:center;gap:4px;display:flex}.picker .sep{width:8px}.chip{background:var(--surface-2);min-height:30px;color:var(--text);font-weight:500;font-family:var(--display);transition:transform .15s var(--spring);border:0;border-radius:10px;padding:4px 10px}.chip:active{transform:scale(.92)}.chip.on{color:#000;background:#fff}.chip.red{color:var(--red)}.chip.red.on{color:var(--card-red)}.card{border-radius:var(--r-card);color:var(--card-ink);font-family:var(--display);background:linear-gradient(#fff 0% 70%,#f1f1f4 100%);font-weight:400;position:absolute;inset:0;overflow:hidden;box-shadow:-.02em 0 .04em #0000002e,0 .04em .14em #00000059}.card.red{color:var(--card-red)}.card .idx{flex-direction:column;align-items:center;width:.32em;line-height:1;display:flex;position:absolute;top:.09em;left:.05em}.card .rank{letter-spacing:-.03em;font-size:.36em}.card .rank.ten{letter-spacing:-.07em;transform-origin:50%;white-space:nowrap;display:inline-block;transform:scaleX(.8)}.card .rank.cn{font-family:var(--font);font-size:.27em;font-weight:600;line-height:1.1}.card .suit{margin-top:.22em;font-size:.34em}.card .crown{opacity:.9;width:.42em;height:.35em;position:absolute;bottom:.1em;right:.1em}.card.five{box-shadow:inset 0 0 0 .035em var(--card-red), -.02em 0 .04em #0000002e, 0 .04em .14em #00000059}.card .five-mark{color:var(--card-red);opacity:.85;font-size:.3em;position:absolute;bottom:.07em;right:.1em}.card.trump{background:linear-gradient(#ffefb3 0%,#fff7d9 55%,#f3e9c6 100%)}.card.trump:before{content:"";background:var(--gold);height:.065em;position:absolute;top:0;left:0;right:0}.card .joker-idx{gap:.005em;top:.1em}.card .joker-idx span{font-family:var(--font);font-size:.21em;font-weight:900;line-height:.98}.card.fresh{box-shadow:inset 0 0 0 .05em var(--blue), 0 0 .18em #64c8ffb3;background:linear-gradient(#bfe8ff 0%,#e3f5ff 60%,#d3ecfa 100%)}.card .fresh-tag{background:var(--blue);color:#000;font-family:var(--font);border-radius:.05em;padding:.02em .05em;font-size:.2em;font-weight:800;line-height:1;position:absolute;bottom:.06em;left:.04em}.card.dim{filter:brightness(.38)saturate(.6)}.card.glow{box-shadow:0 0 0 .035em var(--gold), 0 0 .25em #ffd60acc;animation:1.4s ease-in-out infinite glow}@keyframes glow{50%{box-shadow:0 0 0 .035em var(--gold), 0 0 .12em #ffd60a66}}.card.back{background:#fff;padding:.07em}.card.back .stripes{background:repeating-linear-gradient(135deg,#111 0 .028em,#fff .028em .1em);border-radius:.08em;width:100%;height:100%}.card-row{flex:none;position:relative}.card-row .card{transform-origin:50% 80%}.hand{touch-action:none;position:relative}.hand-card{transition:top .18s var(--spring);cursor:pointer;position:absolute}.hand-card .card{font-size:inherit}.hand-card.selected .card{box-shadow:0 0 0 .03em #fff,0 .1em .3em #000000b3}.hand-card.selected .card:after{content:"";background:var(--blue);width:.12em;height:.12em;box-shadow:0 0 .1em var(--blue);border-radius:50%;position:absolute;top:.1em;right:.1em}.sheet-backdrop{-webkit-backdrop-filter:blur(6px);z-index:1000;background:#0000008c;place-items:center;padding:12px;animation:.2s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{background:var(--surface-2);width:100%;max-width:480px;max-height:calc(100dvh - 24px);animation:sheet-in .35s var(--spring);border-radius:26px;flex-direction:column;display:flex;box-shadow:0 30px 80px #000000b3}@keyframes sheet-in{0%{opacity:0;transform:translateY(20px)scale(.96)}}.sheet.wide{max-width:640px}.sheet-head{justify-content:space-between;align-items:center;gap:12px;padding:16px 16px 8px 22px;display:flex}.sheet-head h2{margin:0;font-size:19px;font-weight:600}.sheet-body{padding:4px 22px 20px;line-height:1.6;overflow:auto}.rules h3{color:var(--muted);letter-spacing:.04em;margin:16px 0 4px;font-size:13px;font-weight:600}.rules p{margin:0 0 6px}.log{margin:0;padding-left:0;font-size:14px;list-style:none}.log li{border-bottom:1px solid var(--line);padding:7px 0}.result{flex-direction:column;gap:12px;display:flex}.hero{color:#111;background:linear-gradient(120deg,#fde7c8,#f9c7e1 55%,#d9c8ff);border-radius:22px;align-items:center;gap:14px;padding:16px 18px;display:flex}.hero.defenders{background:linear-gradient(120deg,#cdeffd,#d9d4ff 55%,#f6d2f0)}.hero.gold{background:linear-gradient(120deg,#fff1a8,#ffd3a1 50%,#ffb8d0)}.hero-emoji{font-size:42px;line-height:1;animation:.8s ease-in-out .3s wiggle}.hero-text{flex:1;min-width:0}.hero-title{font-size:18px;font-weight:700}.hero-sub{opacity:.65;margin-top:2px;font-size:12px}.hero-num{flex-direction:column;align-items:flex-end;display:flex}.hero-num .label{opacity:.6;font-size:11px}.big-num{font-size:52px;line-height:1}.result .label{color:var(--muted);font-size:12px}.hero .label{color:inherit}.kitty{align-items:center;gap:12px;padding:4px 2px;display:flex}.levels{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.level-row{background:var(--surface-3);border-radius:16px;align-items:center;gap:10px;padding:6px 12px 6px 6px;font-size:14px;display:flex}.level-row.me{box-shadow:inset 0 0 0 1px #ffffff40}.level-row .nm{white-space:nowrap;flex:1;align-items:center;min-width:0;display:flex;overflow:hidden}.level-row .lv{font-family:var(--display);align-items:baseline;gap:4px;display:flex}.level-row .from{color:var(--muted)}.level-row .to-arrow{color:var(--faint)}.level-row .changed,.level-row .won{color:var(--gold)}.result>.btn.big{box-shadow:0 -14px 18px var(--surface-2);position:sticky;bottom:0}.banner{color:#000;text-align:center;z-index:2000;background:#ff9f0a;padding:6px;font-size:13px;font-weight:600;position:fixed;top:0;left:0;right:0}.toast{z-index:2000;text-align:center;max-width:86%;animation:banner-in-top .35s var(--spring);background:#2c2c2ef7;border-radius:999px;padding:10px 18px;position:fixed;top:28%;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000080}@keyframes banner-in-top{0%{opacity:0;transform:translate(-50%,-10px)scale(.9)}}.wechat-tip{z-index:3000;background:var(--gold);color:#000;justify-content:center;align-items:center;gap:8px;padding:10px 14px;font-size:14px;font-weight:600;display:flex;position:fixed;top:0;left:0;right:0}.wechat-tip .arrow{font-size:20px}.rotate-tip{display:none}@media (orientation:portrait) and (width<=820px){.rotate-tip{z-index:2500;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:20px;font-size:18px;display:flex;position:fixed;inset:0}.phone-icon{border:3px solid var(--text);width:46px;height:80px;animation:rotate-phone 2.2s var(--spring) infinite;border-radius:12px;position:relative}.phone-icon:after{content:"";background:var(--text);border-radius:2px;width:12px;height:3px;margin-left:-6px;position:absolute;bottom:6px;left:50%}}@keyframes rotate-phone{0%,30%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}@media (width<=780px){.topbar{flex-wrap:wrap}.stat.dragged{flex-basis:100%;order:99;gap:4px;min-height:0}.drag-chip .detail{display:none}}@media (height<=420px){.topbar{gap:4px 6px;min-height:38px;padding:3px 8px}.stat{gap:5px;min-height:28px;padding:2px 8px}.stat .label{font-size:11px}.stat .num{font-size:19px}.mini-card{height:21px;font-size:13px}.seat-name{font-size:12px}.seat-meta{font-size:11px}.seat.top,.seat.top-l,.seat.top-r{top:0}.dock-row{min-height:40px}.actions .hint{font-size:13px}.btn{border-radius:12px;min-height:34px;padding:6px 14px}.btn.small{min-height:28px;padding:3px 10px;font-size:12px}.btn.icon{width:32px;min-width:32px}.score .bar{width:56px}.drag-chip{gap:3px;padding:1px 6px;font-size:12px}.drag-chip .name{max-width:4.5em}.stat.dragged .label{display:none}.stat.dragged{background:0 0;padding:0}.event-banner{padding:5px 14px 5px 6px;font-size:14px}.event-banner .emoji{font-size:20px}.sheet-head{padding:10px 12px 4px 18px}.sheet-head h2{font-size:17px}.sheet-body{padding:2px 16px 10px}.result{gap:6px}.hero{border-radius:18px;padding:10px 14px}.hero-emoji{font-size:30px}.hero-title{font-size:15px}.big-num{font-size:34px}.level-row{padding:3px 10px 3px 4px}.result>.btn.big{min-height:40px;font-size:15px}}@media (height>=700px){.players-6{--seat-h:84px;--side-w:140px}.seat-name{font-size:15px}.seat-meta{font-size:13px}.stat .num{font-size:26px}.stat .label{font-size:13px}.stat .name{font-size:16px}.stat .sub{font-size:14px}.mini-card{min-width:22px;height:27px;font-size:16px}.mini-card .ms{font-size:17px}.topbar{min-height:58px;padding:6px 18px}.seat .avatar-wrap svg{width:54px;height:54px}.seat.self .avatar-wrap svg{width:44px;height:44px}.actions .hint{font-size:15px}}@media (height>=900px){.players-6{--seat-h:100px;--side-w:170px}body{font-size:17px}.topbar{min-height:68px;padding:8px 22px}.stat .label{font-size:14px}.stat .num{font-size:32px}.stat .name{font-size:18px}.mini-card{min-width:24px;height:30px;font-size:18px}.mini-card .ms{font-size:19px}.seat-name{font-size:18px}.seat-meta{font-size:15px}.seat .avatar-wrap svg{width:64px;height:64px}.badge{width:24px;height:24px;font-size:13px}.actions .hint{font-size:18px}.btn{min-height:50px;padding:10px 24px;font-size:17px}.btn.small{min-height:38px;font-size:15px}.event-banner{font-size:20px}.trick-slot.left{left:clamp(200px,20%,340px)}.trick-slot.right{right:clamp(200px,20%,340px)}.trick-slot.top,.trick-slot.top-l,.trick-slot.top-r{top:calc(var(--tw) * .25 + 90px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.collect{display:none}}.mode-picker{justify-content:center;gap:8px;display:flex}.chip.bad{box-shadow:inset 0 0 0 1.5px var(--red)}.avatar-wrap.tappable{cursor:pointer}.avatar-wrap.tappable:active svg{transform:scale(.92)}.emote-picker{z-index:100;-webkit-backdrop-filter:blur(20px);animation:menu-in .18s var(--spring);background:#242426f5;border-radius:18px;padding:6px 6px 4px;position:fixed;box-shadow:0 16px 40px #0009}.emote-to{color:var(--muted);white-space:nowrap;padding:0 6px 2px;font-size:11px}.emote-to b{color:var(--text);font-weight:600}.emote-btns{gap:2px;display:flex}.emote-btns button{width:48px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:12px;flex-direction:column;align-items:center;gap:1px;padding:4px 0 3px;font-size:10px;display:flex}.emote-btns button:hover:not(:disabled){background:#ffffff14}.emote-btns button:active:not(:disabled) .e{transform:scale(.85)}.emote-btns button:disabled{opacity:.35;cursor:default}.emote-btns .e{font-size:26px;line-height:1.1;transition:transform .1s}.emote-layer{pointer-events:none;z-index:60;position:fixed;inset:0;overflow:hidden}.emote{width:0;height:0;position:absolute}.emote-fly{animation:.7s cubic-bezier(.3,.1,.6,1) forwards emote-fly;position:absolute}.emote-arc{font-size:34px;line-height:1;animation:.7s ease-in-out emote-arc;display:block;position:absolute;transform:translate(-50%,-50%)}.emote-arc.spin{animation:.7s ease-in-out emote-arc,.35s linear infinite emote-spin}@keyframes emote-fly{0%{transform:translate(0)scale(.6)}to{transform:translate(var(--dx), var(--dy)) scale(1)}}@keyframes emote-arc{50%{translate:0 var(--arc)}}@keyframes emote-spin{0%{rotate:0deg}to{rotate:360deg}}.k-tomato .emote-fly,.k-bomb .emote-fly{animation:.7s cubic-bezier(.3,.1,.6,1) forwards emote-fly,0s .7s forwards emote-gone}.k-water .emote-fly{animation:.7s cubic-bezier(.3,.1,.6,1) forwards emote-fly,.25s 1.65s forwards emote-gone}.k-flower .emote-fly,.k-cheers .emote-fly{animation:.7s cubic-bezier(.3,.1,.6,1) forwards emote-fly,0s .7s forwards emote-gone}@keyframes emote-gone{to{opacity:0}}.emote-hit{transform:translate(var(--dx), var(--dy));position:absolute}.fx{opacity:0;font-style:normal;line-height:1;animation-delay:.7s;animation-fill-mode:forwards;display:block;position:absolute;top:0;left:0;translate:-50% -50%}.fx.splat{background:radial-gradient(circle at 40% 40%,#ff6b4a,#d7261e 60%,#a3140f);border-radius:42% 58% 53% 47%/55% 45% 60% 40%;width:58px;height:50px;animation-name:splat;animation-duration:1.3s;box-shadow:18px -14px 0 -14px #d7261e,-20px 10px 0 -15px #e2352a,16px 18px 0 -16px #c81f17}.fx.squash{font-size:30px;animation-name:squash;animation-duration:1.3s}.fx.drip{background:#d7261e;border-radius:50%/35% 35% 65% 65%;width:7px;height:11px;animation-name:drip;animation-duration:1.2s}.fx.drip.d1{animation-delay:.85s;left:-14px}.fx.drip.d2{animation-delay:.95s;left:4px}.fx.drip.d3{animation-delay:.8s;left:16px}@keyframes splat{0%{opacity:1;scale:.2}15%{opacity:.95;scale:1.15}30%{scale:1}75%{opacity:.9}to{opacity:0;scale:1.05}}@keyframes squash{0%{opacity:1;transform:scale(1.2,.5)}60%{opacity:1;transform:scale(1.4,.4)}to{opacity:0;transform:scale(1.5,.3)}}@keyframes drip{0%{opacity:.95;transform:translateY(8px)}to{opacity:0;transform:translateY(40px)scaleY(1.4)}}.k-water .emote-fly .emote-arc{animation:.7s ease-in-out emote-arc,1.2s ease-in-out .7s forwards pour}@keyframes pour{20%,80%{rotate:-125deg}to{opacity:0;rotate:-125deg}}.fx.drop{font-size:16px;animation-name:drop;animation-duration:.7s}.fx.drop.d1{animation-delay:.85s;left:-12px}.fx.drop.d2{animation-delay:1.05s;left:0}.fx.drop.d3{animation-delay:1.25s;left:10px}@keyframes drop{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(44px)}}.fx.steam{font-size:26px;animation-name:steam;animation-duration:1.1s;animation-delay:.95s;top:34px}@keyframes steam{0%{opacity:0;transform:translateY(6px)scale(.6)}30%{opacity:1}to{opacity:0;transform:translateY(-34px)scale(1.3)}}.fx.land{font-size:34px;animation-name:land;animation-duration:1.3s}@keyframes land{0%{opacity:1;transform:rotate(0)}20%{transform:rotate(-18deg)scale(1.2)}80%{opacity:1;transform:rotate(-18deg)}to{opacity:0;transform:rotate(-18deg)translateY(8px)}}.fx.petal{font-size:15px;animation-name:petal;animation-duration:1.2s}.fx.petal.p1{top:-26px;left:-22px}.fx.petal.p2{animation-delay:.8s;top:-30px;left:20px}.fx.petal.p3{animation-delay:.9s;top:-36px;left:2px}@keyframes petal{0%{opacity:0;transform:translate(0)rotate(0)}20%{opacity:1}to{opacity:0;transform:translate(10px,56px)rotate(160deg)}}.fx.heart{font-size:18px;animation-name:heart;animation-duration:1.1s;animation-delay:.85s;top:-18px;left:20px}@keyframes heart{0%{opacity:0;transform:scale(.4)}30%{opacity:1;transform:scale(1.15)}to{opacity:0;transform:translateY(-26px)scale(1)}}.fx.flash{background:radial-gradient(circle,#fff0b4f2,#ff8c2880 45%,#0000 70%);border-radius:50%;width:120px;height:120px;animation-name:flash;animation-duration:.5s}@keyframes flash{0%{opacity:1;scale:.2}to{opacity:0;scale:1.4}}.fx.boom{font-size:54px;animation-name:boom;animation-duration:1s}@keyframes boom{0%{opacity:1;transform:scale(.2)}25%{transform:scale(1.3)}60%{opacity:1;transform:scale(1.1)}to{opacity:0;transform:scale(1.4)}}.fx.smoke{font-size:22px;animation-name:smoke;animation-duration:1.1s;animation-delay:.85s}.fx.smoke.s1{left:-20px}.fx.smoke.s2{left:20px;scale:-1 1}@keyframes smoke{0%{opacity:0;transform:translate(0)}30%{opacity:.9}to{opacity:0;transform:translateY(-30px)scale(1.4)}}.fx.clink{font-size:38px;animation-name:clink;animation-duration:1.3s}@keyframes clink{0%{opacity:1;transform:scale(.5)}20%{transform:scale(1.25)rotate(-10deg)}35%{transform:scale(1.1)rotate(8deg)}50%{transform:scale(1.15)rotate(0)}85%{opacity:1}to{opacity:0;transform:translateY(-10px)scale(1.1)}}.fx.spark{font-size:14px;animation-name:spark;animation-duration:.9s}.fx.spark.k1{animation-delay:.8s;top:-18px;left:-26px}.fx.spark.k2{animation-delay:.9s;top:-22px;left:26px}.fx.spark.k3{animation-delay:1s;top:-34px;left:0}@keyframes spark{0%{opacity:0;transform:scale(.3)rotate(0)}40%{opacity:1;transform:scale(1.2)rotate(40deg)}to{opacity:0;transform:scale(.6)rotate(90deg)}}@media (prefers-reduced-motion:reduce){.emote-layer{display:none}}
