:root{--felt-1: #2c6c59;--felt-2: #215546;--felt-3: #173f35;--mat: rgba(10, 34, 27, .34);--mat-line: rgba(217, 180, 106, .26);--wood-1: #74512f;--wood-2: #503521;--wood-3: #2e1e12;--ivory: #fcf8ee;--ivory-2: #efe5cd;--ivory-side: #ddcfac;--jade: #2f7d60;--jade-2: #1f5d47;--jade-3: #154133;--paper: #f8f3e7;--paper-2: #ede5d2;--paper-3: #dcd0b4;--ink: #1c201e;--ink-2: #4b514d;--ink-3: #7b8079;--on-felt: #eaf2ec;--on-felt-2: #b0cabe;--on-felt-3: #84a798;--glass: rgba(8, 24, 19, .42);--glass-line: rgba(255, 255, 255, .07);--accent: #b8412c;--accent-2: #93301f;--accent-ink: #fff7ef;--gold: #dcb76b;--up: #2f7a55;--down: #b8412c;--ui: "PingFang HK", "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif;--serif: "Noto Serif TC", "Songti TC", "PMingLiU", serif;--brush: "LXGW WenKai TC", "Kaiti TC", "STKaiti", "BiauKai", "DFKai-SB", var(--serif);--noise: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");--paper-noise: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.38 0 0 0 0 0.25 0 0 0 .07 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");--grain: repeating-linear-gradient(92deg, rgba(255, 255, 255, .035) 0 2px, transparent 2px 7px, rgba(0, 0, 0, .05) 7px 9px, transparent 9px 15px);color-scheme:light}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--ui);background:var(--wood-3);color:var(--ink);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{font:inherit;color:inherit}input,select{font:inherit}.tile{--w: 24px;position:relative;display:inline-block;flex:none;width:var(--w);height:calc(var(--w) * 4 / 3);border-radius:calc(var(--w) * .14);background:linear-gradient(168deg,#fffef9 0%,var(--ivory) 38%,var(--ivory-2) 100%);box-shadow:inset 0 0 0 1px #ffffffb3,inset 0 calc(var(--w) * -.03) 0 #a08c642e,0 calc(var(--w) * .05) 0 var(--ivory-side),0 calc(var(--w) * .12) 0 var(--jade),0 calc(var(--w) * .15) 0 var(--jade-3),0 calc(var(--w) * .18) calc(var(--w) * .16) #00000052;margin-bottom:calc(var(--w) * .17)}.tile svg{display:block;width:100%;height:100%}.tile.flat{box-shadow:inset 0 0 0 1px #ffffffb3,0 calc(var(--w) * .04) 0 var(--ivory-side),0 calc(var(--w) * .09) 0 var(--jade),0 calc(var(--w) * .11) calc(var(--w) * .1) #0000004d;margin-bottom:calc(var(--w) * .11)}.tile.back{background:linear-gradient(168deg,#3c9272 0%,var(--jade) 45%,var(--jade-2) 100%);box-shadow:inset 0 0 0 1px #ffffff1f,0 calc(var(--w) * .05) 0 var(--jade-3),0 calc(var(--w) * .11) 0 var(--ivory-2),0 calc(var(--w) * .14) calc(var(--w) * .12) #00000052}.tile.stand{height:calc(var(--w) * 1.18);border-radius:calc(var(--w) * .12) calc(var(--w) * .12) calc(var(--w) * .08) calc(var(--w) * .08);background:linear-gradient(180deg,var(--ivory-2) 0 14%,var(--ivory-side) 14% 18%,transparent 18%),linear-gradient(168deg,#3c9272,var(--jade) 50%,var(--jade-2));box-shadow:inset 0 0 0 1px #ffffff1a,0 calc(var(--w) * .1) calc(var(--w) * .12) #00000052;margin-bottom:calc(var(--w) * .1)}.tile.r180 svg{transform:rotate(180deg)}.table{--pad: 8px;--k: 1;position:fixed;inset:0;display:grid;column-gap:8px;row-gap:6px;padding:calc(max(var(--pad),env(safe-area-inset-top)) + 6px) calc(max(var(--pad),env(safe-area-inset-right)) + 8px) calc(max(var(--pad),env(safe-area-inset-bottom)) + 4px) calc(max(var(--pad),env(safe-area-inset-left)) + 8px);background:var(--grain),linear-gradient(180deg,var(--wood-1),var(--wood-2) 60%,var(--wood-3));color:var(--on-felt);overflow:hidden;user-select:none;-webkit-user-select:none;grid-template-columns:[zl] minmax(0,1fr) [sl] var(--seatw) [bd] var(--BW) [sr] var(--seatw) [zr] minmax(0,1fr);grid-template-rows:var(--toph) var(--BH) var(--handh);grid-template-areas:"bl top top top br" "zl sl bd sr zr" "hand hand hand hand hand"}.table:before{content:"";position:absolute;inset:max(var(--pad),env(safe-area-inset-top)) max(var(--pad),env(safe-area-inset-right)) max(var(--pad),env(safe-area-inset-bottom)) max(var(--pad),env(safe-area-inset-left));border-radius:16px;background:var(--noise),radial-gradient(115% 85% at 50% 46%,var(--felt-1) 0%,var(--felt-2) 58%,var(--felt-3) 100%);box-shadow:inset 0 0 0 1px #00000059,inset 0 0 70px #0000006b,0 0 0 1px #ffdca01f;pointer-events:none}.table>*{position:relative;z-index:1;min-width:0;min-height:0}.bar{display:flex;gap:6px;align-items:flex-start}.bar-left{grid-area:bl}.bar-right{grid-area:br;justify-content:flex-end}.chip{border:0;border-radius:999px;padding:5px 11px;font-size:calc(13px * var(--k, 1));line-height:1.35;background:var(--glass);color:var(--on-felt);cursor:pointer;white-space:nowrap;box-shadow:inset 0 0 0 1px var(--glass-line);display:inline-flex;align-items:center;gap:5px}.chip:hover{background:#08181394}.chip.warn{background:var(--gold);color:var(--ink)}.chip b{letter-spacing:.1em}.chip svg{width:15px;height:15px;display:block}.chip.icon{padding:5px 8px}.zone-left{grid-area:zl;display:flex;flex-direction:column;gap:8px;justify-content:space-between;min-height:0}.log{list-style:none;margin:0;padding:0;display:grid;gap:5px;align-content:start;overflow:hidden;font-size:calc(13px * var(--k, 1));line-height:1.4;color:var(--on-felt-3);-webkit-mask-image:linear-gradient(180deg,#000 70%,transparent);mask-image:linear-gradient(180deg,#000 70%,transparent)}.log li{padding-left:9px;border-left:2px solid transparent}.log li:first-child{color:var(--on-felt);border-left-color:var(--gold)}.log li.new{animation:fade-in .3s ease}.log li:nth-child(2){color:var(--on-felt-2)}.log li.err{color:#ffcdbf}.log li.big:first-child{font-weight:700}@keyframes fade-in{0%{opacity:0}}.zone-right{grid-area:zr;display:flex;flex-direction:column;justify-content:flex-end;min-height:0}.panel{background:var(--glass);border-radius:14px;padding:10px;box-shadow:inset 0 0 0 1px var(--glass-line);display:grid;gap:8px;animation:fade-in .2s ease}.panel .ptitle{font-family:var(--brush);font-weight:700;font-size:calc(17px * var(--k, 1));margin:0;color:var(--on-felt)}.panel .psub{margin:0;font-size:calc(12.5px * var(--k, 1));color:var(--on-felt-2);line-height:1.5}.info-line{display:flex;justify-content:space-between;gap:8px;font-size:calc(12.5px * var(--k, 1));color:var(--on-felt-2)}.info-line b{color:var(--on-felt);font-weight:600}.claim-head{display:flex;align-items:center;gap:8px;font-size:calc(13px * var(--k, 1));color:var(--on-felt-2)}.claim-head .tile{--w: var(--md)}.acts{display:grid;gap:6px}.acts.two{grid-template-columns:1fr 1fr}.act{border:0;border-radius:11px;min-height:38px;padding:6px 10px;cursor:pointer;font-weight:700;font-size:calc(15px * var(--k, 1));display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;background:linear-gradient(180deg,#fffdf6,var(--ivory-2));color:var(--ink);box-shadow:0 3px 0 var(--ivory-side),0 5px 10px #0000004d}.act:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ivory-side),0 2px 6px #0000004d}.act .tile{--w: var(--xs);margin-bottom:0;box-shadow:inset 0 0 0 1px #00000014}.act .tile.hl{box-shadow:inset 0 0 0 2px var(--accent)}.act.win{background:linear-gradient(180deg,#c9503a,var(--accent) 55%,var(--accent-2));color:var(--accent-ink);font-family:var(--brush);font-size:calc(19px * var(--k, 1));min-height:46px;letter-spacing:.06em;box-shadow:0 3px #6e2216,0 6px 14px #00000059}.act.win small{font-family:var(--ui);font-size:12px;font-weight:600;letter-spacing:0;opacity:.9}.act.pass{background:transparent;color:var(--on-felt);box-shadow:inset 0 0 0 1.5px #eaf2ec73;font-weight:600}.act.dark{background:linear-gradient(180deg,#2b3430,#1a201d);color:var(--ivory);box-shadow:0 3px #0c0f0e,0 5px 10px #0000004d}.act:focus-visible,.chip:focus-visible,.btn:focus-visible,.link:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.clock{font-size:12px;font-variant-numeric:tabular-nums;color:var(--on-felt-2)}.clock.hot{color:#ffd59a;font-weight:700}.plate{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:999px;background:var(--glass);box-shadow:inset 0 0 0 1px var(--glass-line);min-width:0;max-width:100%;height:var(--plateh)}.plate.stack{border-radius:14px}.ava{--hue: 160;position:relative;flex:none;width:calc(var(--plateh) - 8px);height:calc(var(--plateh) - 8px);border-radius:50%;display:grid;place-items:center;color:var(--ivory);font-family:var(--brush);font-weight:700;font-size:calc((var(--plateh) - 8px) * .46);background:radial-gradient(circle at 35% 30%,hsl(var(--hue) 32% 46%),hsl(var(--hue) 34% 28%));box-shadow:inset 0 0 0 1.5px #ffffff2e}.ava .wind-badge{position:absolute;right:-3px;bottom:-3px;width:46%;height:46%;border-radius:50%;display:grid;place-items:center;background:var(--ivory);color:var(--ink);font-family:var(--brush);font-size:calc((var(--plateh) - 8px) * .27);box-shadow:0 1px 3px #0006}.ava .seal{position:absolute;inset:0;border-radius:22%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-size:calc((var(--plateh) - 8px) * .5);box-shadow:inset 0 0 0 2px #ffe6d28c;animation:seal-in .28s cubic-bezier(.2,.9,.3,1)}.ava .seal.long{font-size:calc((var(--plateh) - 8px) * .3);line-height:1.05}@keyframes seal-in{0%{transform:scale(.6) rotate(-8deg);opacity:0}}.plate.turn .ava{box-shadow:inset 0 0 0 1.5px #ffffff2e,0 0 0 2.5px var(--gold);animation:turn-ring 1.6s ease-in-out infinite}@keyframes turn-ring{50%{box-shadow:inset 0 0 0 1.5px #ffffff2e,0 0 0 2.5px #dcb76b59}}.pinfo{display:grid;min-width:0;line-height:1.25}.pname{display:flex;align-items:center;gap:4px;font-size:calc(13px * var(--k, 1));color:var(--on-felt);min-width:0}.pname span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pscore{display:flex;align-items:center;gap:4px;font-size:calc(13px * var(--k, 1));font-variant-numeric:tabular-nums;color:var(--on-felt-2);font-weight:600;white-space:nowrap}.pscore.up{color:#9fe0bd}.pscore.down{color:#ffb6a5}.badge{flex:none;font-size:calc(10.5px * var(--k, 1));line-height:1.5;padding:0 5px;border-radius:5px;background:var(--paper-2);color:var(--ink);font-weight:700}.badge.dealer{background:var(--gold)}.badge.ting{background:var(--accent);color:var(--accent-ink)}.badge.off{background:#6d6d6d;color:#fff}.seat{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}.seat-top{grid-area:top}.seat-left{grid-area:sl;flex-direction:column}.seat-right{grid-area:sr;flex-direction:column-reverse}.seat-left .plate,.seat-right .plate{width:100%}.strip-box{position:relative;flex:none}.strip{position:absolute;left:50%;top:50%;display:flex;flex-direction:column;justify-content:flex-end;gap:3px}.strip.one{flex-direction:row;align-items:flex-end;gap:6px}.strip-row{display:flex;align-items:flex-end;gap:1px}.strip-row.melds{gap:5px}.strip .meld,.mine .meld{display:inline-flex;gap:1px;align-items:flex-end}.strip .tile{--w: var(--sm)}.strip .tile.stand{--w: var(--so)}.strip .flowers .tile{--w: calc(var(--sm) * .78)}.board{grid-area:bd;position:relative;border-radius:18px;background:var(--mat);box-shadow:inset 0 0 0 1px var(--mat-line),inset 0 2px 18px #00000040}.pond{position:absolute;left:50%;top:50%;transform-origin:0 0;display:flex;flex-wrap:wrap;align-content:flex-start;gap:2px}.pond .tile{--w: var(--pt)}.pond .tile.last:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 2px var(--gold),inset 0 0 8px #dcb76b99}.pond .tile.fresh{animation:drop .22s ease-out}@keyframes drop{0%{opacity:0;transform:scale(.82)}}.compass{position:absolute;left:50%;top:50%;width:var(--C);height:var(--C);transform:translate(-50%,-50%);border-radius:16%;background:radial-gradient(circle at 50% 40%,#3d2c1d,#241910 75%);box-shadow:inset 0 0 0 1.5px #dcb76b66,inset 0 0 18px #0009,0 6px 18px #00000059}.cw{position:absolute;left:50%;top:50%;width:calc(var(--C) * .24);height:calc(var(--C) * .24);display:grid;place-items:center;font-family:var(--brush);font-weight:700;font-size:calc(var(--C) * .17);color:#efe5cd99}.cw:after{content:"";position:absolute;left:18%;right:18%;bottom:calc(var(--C) * -.035);height:3px;border-radius:3px;background:transparent}.cw.turn{color:var(--gold);text-shadow:0 0 10px rgba(220,183,107,.55)}.cw.turn:after{background:var(--gold);box-shadow:0 0 8px #dcb76bcc;animation:turn-bar 1.6s ease-in-out infinite}@keyframes turn-bar{50%{opacity:.45}}.cw .dealer-dot{position:absolute;top:4%;right:-14%;width:34%;height:34%;border-radius:4px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-size:calc(var(--C) * .075)}.cc{position:absolute;inset:26%;display:grid;place-content:center;justify-items:center;text-align:center;gap:1px}.cc .wall{font-variant-numeric:tabular-nums;font-size:calc(var(--C) * .2);font-weight:700;color:var(--ivory);line-height:1}.cc .wall-label{font-size:calc(var(--C) * .075);color:#efe5cd99}.cc .round{font-family:var(--brush);font-size:calc(var(--C) * .085);color:#efe5cdbf;white-space:nowrap}.ring{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);pointer-events:none}.ring rect{fill:none;stroke:var(--gold);stroke-width:2.5;stroke-linecap:round;transition:stroke-dashoffset .25s linear}.mine{grid-area:hand;display:flex;align-items:flex-end;justify-content:center;gap:calc(var(--lg) * .4);min-width:0}.hand{display:flex;gap:2px;align-items:flex-end;padding-top:calc(var(--lg) * .26);padding-bottom:6px;flex-wrap:nowrap}.hand .tile{--w: var(--lg);cursor:default;transition:transform .12s ease,filter .12s}.hand.active .tile{cursor:pointer}.hand .tile.drawn{margin-left:calc(var(--lg) * .3);animation:fade-in .25s ease}.hand .tile.sel{transform:translateY(calc(var(--lg) * -.24))}.hand .tile.dim{filter:brightness(.78) saturate(.85)}.hand.active .tile.tingable:before{content:"";position:absolute;left:50%;bottom:calc(var(--lg) * -.27);width:6px;height:6px;margin-left:-3px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold)}@media(hover:hover){.hand.active .tile:not(.sel):hover{transform:translateY(calc(var(--lg) * -.1))}}.my-melds{display:flex;gap:calc(var(--md) * .25);align-items:flex-end;padding-bottom:6px}.my-melds .tile{--w: var(--md)}.my-melds .flowers{display:inline-flex;gap:1px;align-items:flex-end}.my-melds .flowers .tile{--w: var(--xs)}.overlay{position:fixed;inset:0;z-index:20;background:#0a141199;display:grid;place-items:center;padding:10px;animation:fade-in .25s ease}.card{background:var(--paper-noise),linear-gradient(180deg,#fcf9f0,var(--paper));color:var(--ink);border-radius:18px;box-shadow:0 18px 50px #00000073,inset 0 0 0 1px #ffffffb3}.result{width:min(940px,100%);max-height:calc(100dvh - 20px);display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:0;overflow:hidden}.result .col{padding:16px 18px;overflow:auto;display:grid;gap:12px;align-content:start;min-height:0}.result .col+.col{background:#00000009;border-left:1px solid var(--paper-3)}.r-head{display:flex;align-items:center;gap:12px}.r-seal{flex:none;width:48px;height:48px;border-radius:10px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-family:var(--brush);font-size:26px;box-shadow:inset 0 0 0 2px #ffe6d28c}.r-seal.draw{background:var(--ink-2)}.r-title{margin:0;font-family:var(--brush);font-size:26px;line-height:1.2}.r-sub{margin:0;font-size:13px;color:var(--ink-2)}.win-hand{display:flex;flex-wrap:wrap;gap:2px;align-items:flex-end;padding:10px;border-radius:12px;background:linear-gradient(180deg,#245b4b,#1b4a3d)}.win-hand .tile{--w: var(--rt)}.win-hand .meld,.win-hand .flowers{display:inline-flex;gap:1px;margin-left:calc(var(--rt) * .35);align-items:flex-end}.win-hand .flowers .tile{--w: calc(var(--rt) * .7)}.win-hand .win-tile{margin-left:calc(var(--rt) * .35)}.win-hand .win-tile:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 2px var(--accent)}.fans{width:100%;border-collapse:collapse;font-size:14px}.fans td{padding:5px 4px;border-bottom:1px dashed var(--paper-3)}.fans td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.fans tbody tr{animation:fan-in .3s ease backwards}.fans tr.sub td{color:var(--ink-2);font-weight:400}.fans tfoot td{font-weight:700;border-bottom:0;font-size:17px;padding-top:8px}.fans tfoot td:last-child{color:var(--accent);font-family:var(--brush);font-size:22px}.win-block{display:grid;gap:12px}.win-hand.grouped{gap:3px calc(var(--rt) * .18)}.win-hand .grp{display:inline-flex;gap:1px;padding:3px;border-radius:8px;align-items:flex-end;transition:background-color .15s,box-shadow .15s}.win-hand.grouped .win-tile{margin-left:0}.win-hand .meld.grp{margin-left:calc(var(--rt) * .2)}.win-hand.focus .tile{opacity:.32;transition:opacity .15s}.win-hand.focus .grp.lit .tile,.win-hand.focus .tile.lit{opacity:1}.win-hand.focus .grp.lit{background:#ffe09647;box-shadow:inset 0 0 0 1.5px #ffe096d9}.fans tr[data-fi]{cursor:pointer}.fans tr[data-fi]:focus-visible{outline:2px solid var(--jade);outline-offset:-2px}.fans tr.on td{background:#dcb76b38}.fans tr.on td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.fan-hint{margin:-4px 0 0}@keyframes fan-in{0%{opacity:0}}.scores{display:grid;gap:6px}.srow{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:6px 8px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px var(--paper-3);font-size:14px}.srow .ava{width:30px;height:30px;font-size:14px}.srow .sname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.srow .sdelta{font-variant-numeric:tabular-nums;font-weight:700;min-width:3.5em;text-align:right}.srow .stotal{font-variant-numeric:tabular-nums;color:var(--ink-2);min-width:4em;text-align:right;font-size:13px}.sdelta.up{color:var(--up)}.sdelta.down{color:var(--down)}.shead{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;padding:0 8px 0 48px;font-size:11.5px;color:var(--ink-3)}.shead span:nth-child(2){min-width:3.5em;text-align:right}.shead span:nth-child(3){min-width:4em;text-align:right}.laa{display:grid;gap:5px;padding:10px 12px;border-radius:12px;background:var(--paper-2);font-size:13.5px}.laa p{margin:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.5}.laa .laa-title{font-weight:700;font-family:var(--brush);font-size:16px}.laa .laa-event{color:var(--ink-2)}.next-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.next-row .hint{font-size:13px;color:var(--ink-2)}.btn{border:0;border-radius:12px;padding:10px 18px;font-size:15px;font-weight:700;cursor:pointer;background:var(--paper-2);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;box-shadow:0 2px 0 var(--paper-3)}.btn:hover{filter:brightness(.98)}.btn:active{transform:translateY(1px);box-shadow:0 1px 0 var(--paper-3)}.btn.primary{background:linear-gradient(180deg,#c64d37,var(--accent));color:var(--accent-ink);box-shadow:0 2px 0 var(--accent-2)}.btn.jade{background:linear-gradient(180deg,#357f63,var(--jade-2));color:var(--ivory);box-shadow:0 2px 0 var(--jade-3)}.btn.dark{background:var(--ink);color:var(--ivory);box-shadow:0 2px #000}.btn.ghost{background:transparent;box-shadow:inset 0 0 0 1.5px var(--paper-3)}.btn.small{min-height:30px;padding:4px 10px;font-size:13px;border-radius:9px;background:var(--ink);color:var(--ivory);box-shadow:none}.btn.wide{width:100%}.btn .clock{color:inherit;opacity:.85}.ptitle{margin:0;font-size:18px;font-weight:700;font-family:var(--brush)}.psub{margin:0;font-size:13px;color:var(--ink-2);line-height:1.6}.fine{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.6}.modal{position:fixed;inset:0;z-index:40;display:none;place-items:center;padding:12px;background:#0a141180}.modal.show{display:grid;animation:fade-in .2s ease}.modal .card{width:min(380px,100%);max-height:calc(100dvh - 24px);overflow:auto;padding:16px 18px;display:grid;gap:12px}.modal .card.wide{width:min(560px,100%)}.field{display:grid;gap:5px;font-size:13px;color:var(--ink-2)}.field input,.field select,.join-row input{border:1.5px solid var(--paper-3);background:#fff;border-radius:11px;padding:10px 12px;font-size:16px;color:var(--ink);min-width:0}.field input:focus,.field select:focus,.join-row input:focus{outline:none;border-color:var(--jade);box-shadow:0 0 0 3px #2f7d602e}.range-row{display:grid;grid-template-columns:5.5em 1fr 2.6em;align-items:center;gap:10px;font-size:14px}.range-row input{width:100%;accent-color:var(--jade)}.range-row output{font-variant-numeric:tabular-nums;color:var(--ink-2);text-align:right;font-size:13px}.check{display:flex;gap:8px;align-items:flex-start;font-size:14px;line-height:1.55}.check input{margin-top:4px;width:18px;height:18px;accent-color:var(--jade);flex:none}.help-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 14px;margin:0;padding:0;list-style:none;font-size:13.5px}.help-grid li{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dashed var(--paper-3);padding:4px 0}.help-grid b{font-variant-numeric:tabular-nums;color:var(--accent)}.rotate-art{display:grid;place-items:center;height:74px}.rotate-art svg{width:74px;height:74px}.home{position:relative;min-height:100dvh;display:grid;place-items:center;padding:22px 16px;background:var(--noise),radial-gradient(110% 80% at 50% 35%,var(--felt-1) 0%,var(--felt-2) 55%,var(--felt-3) 100%);box-shadow:inset 0 0 0 max(8px,env(safe-area-inset-left)) var(--wood-2),inset 0 0 90px #00000073}.home-wrap{width:min(980px,100%);display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(20px,5vw,64px);align-items:center}.hero{color:var(--on-felt);display:grid;gap:14px}.hero-tiles{display:flex;gap:10px}.hero-tiles .tile{--w: clamp(34px, 5.4vw, 58px)}.hero h1{margin:0;font-family:var(--brush);font-size:clamp(44px,7.4vw,84px);line-height:1.05;letter-spacing:.06em;color:var(--ivory);text-shadow:0 3px 0 rgba(0,0,0,.25)}.hero .tag{display:flex;gap:8px;flex-wrap:wrap}.hero .tag span{font-size:13px;padding:3px 10px;border-radius:999px;background:var(--glass);box-shadow:inset 0 0 0 1px var(--glass-line);color:var(--on-felt-2)}.hero p{margin:0;color:var(--on-felt-2);font-size:15px;line-height:1.7;max-width:30em}.home-card{width:100%;padding:22px 20px;display:grid;gap:12px}.home-card.solo-card{width:min(440px,100%)}.home-card.wide-card{width:min(820px,100%)}.choice{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice .btn{flex-direction:column;gap:2px;min-height:64px;font-size:16px}.choice .btn small{font-size:12px;font-weight:500;opacity:.85}.join-row{display:flex;gap:8px}.join-row input{flex:1;text-transform:uppercase;letter-spacing:.2em}.links{display:flex;gap:18px;justify-content:center}.account{display:grid;gap:8px;justify-items:center;text-align:center}.account:not(:empty){border-top:1px dashed var(--paper-3);padding-top:12px}.account .gsi{min-height:44px;display:flex;justify-content:center;width:100%}.acc-line{margin:0;font-size:14px}.acc-msg{color:var(--jade-2)}.link{border:0;background:none;color:var(--jade-2);font-weight:700;cursor:pointer;padding:4px;text-decoration:underline;text-underline-offset:3px;font-size:14px}.or{display:flex;align-items:center;gap:10px;color:var(--ink-3);font-size:12px}.or:before,.or:after{content:"";flex:1;height:1px;background:var(--paper-3)}.shake{animation:shake .35s;border-color:var(--accent)!important}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.lobby-code{display:flex;justify-content:center;gap:10px}.lobby-code .tile{--w: clamp(44px, 9vw, 60px);display:grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:clamp(26px,5.4vw,36px);color:var(--ink)}.lobby .status{text-align:center;color:var(--ink-2);font-size:14px;margin:0}.lobby .join-row input{font-size:13px;letter-spacing:0;text-transform:none}.seats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.seats li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px var(--paper-3);font-size:15px;min-width:0}.seats li .ava{width:34px;height:34px;font-size:16px}.seats li .sn{display:grid;min-width:0;line-height:1.3}.seats li .sn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seats li .sn small{color:var(--ink-3);font-size:12px}.seats li.bot{background:transparent;color:var(--ink-2);box-shadow:inset 0 0 0 1.5px dashed var(--paper-3);border:1.5px dashed var(--paper-3)}.seats li.bot .ava{--hue: 40 !important;filter:grayscale(.6);opacity:.75}.rules-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.rules-head h2,.rules-head h3{margin:0;font-family:var(--brush)}.rules-head h2{font-size:24px}.section{display:grid;gap:10px;padding:14px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1px var(--paper-3)}.section h3{margin:0;font-family:var(--brush);font-size:18px}.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.fan-search{width:100%}.fan-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 18px}.fan-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px dashed var(--paper-3);font-size:14px}.fan-row small{display:block;color:var(--ink-3);font-size:12px;margin-top:1px;line-height:1.4}.fan-row input{width:70px;flex:none;border:1.5px solid var(--paper-3);border-radius:9px;padding:5px 7px;font-size:15px;text-align:right;background:#fff}.fan-row input.changed{border-color:var(--gold);background:#fffaf0}.save-bar{position:sticky;bottom:0;padding:10px 0 2px;background:linear-gradient(180deg,transparent,var(--paper) 30%)}.steps{list-style:none;margin:0;padding:0;display:grid;gap:10px;counter-reset:step}.steps li{display:grid;grid-template-columns:30px 1fr;gap:10px;font-size:15px;line-height:1.7;counter-increment:step}.steps li:before{content:counter(step);width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--jade-2);color:var(--ivory);font-weight:700;font-family:var(--serif)}@media(max-height:520px){.table{--pad: 5px;row-gap:4px;column-gap:6px}.chip{font-size:12px;padding:4px 9px}.log{font-size:11.5px;gap:3px}.panel{padding:7px;gap:6px;border-radius:12px}.panel .ptitle{font-size:15px}.act{min-height:32px;font-size:13.5px;padding:4px 8px;border-radius:9px}.act.win{min-height:38px;font-size:16px}.pname,.pscore{font-size:11.5px}.plate{gap:6px;padding-right:8px}.result .col{padding:12px 14px;gap:9px}.r-seal{width:38px;height:38px;font-size:21px}.r-title{font-size:21px}.srow{padding:4px 8px;font-size:13px}.home{padding:14px max(26px,env(safe-area-inset-right)) 14px max(26px,env(safe-area-inset-left))}.home-card{padding:14px;gap:9px}.hero{gap:8px}.hero p{display:none}.btn{min-height:38px;padding:7px 14px}.choice .btn{min-height:52px}}.table.port{grid-template-columns:[a] var(--seatw) [b] calc(var(--BW) / 2) [c] calc(var(--BW) / 2) [d] var(--seatw);grid-template-rows:auto var(--toph) var(--BH) var(--zoneh) var(--handh);grid-template-areas:"bl bl br br" "top top top top" "sl bd bd sr" "zl zl zr zr" "hand hand hand hand";justify-content:center;align-content:center}.table.port .zone-left{justify-content:flex-start}.table.port .seat-left .plate,.table.port .seat-right .plate{flex-direction:column;height:auto;padding:5px 3px;gap:3px;text-align:center}.table.port .seat .pinfo{justify-items:center}.table.port .seat .pname{justify-content:center;flex-wrap:wrap}.table.port .log{max-height:calc(var(--zoneh) - var(--plateh) - 8px)}.table.port .zone-right{justify-content:flex-start}.table.port.one .mine{flex-direction:row;align-items:flex-end;justify-content:center;gap:calc(var(--lg) * .4)}.table.port.one .hand{flex-wrap:nowrap}.table.port.one .seat-left .plate,.table.port.one .seat-right .plate{flex-direction:row;height:var(--plateh);padding:4px 10px 4px 4px;text-align:left;gap:8px}.table.port.one .seat .pinfo{justify-items:start}.table.port.one .seat .pname{justify-content:flex-start;flex-wrap:nowrap}.table.port .acts,.table.port .acts.two{grid-template-columns:repeat(auto-fit,minmax(58px,1fr))}.table.port .panel{gap:6px;padding:8px}.table.port .mine{flex-direction:column-reverse;align-items:center;justify-content:flex-start;gap:2px}.table.port .hand{flex-wrap:wrap;justify-content:center;row-gap:4px;padding-top:calc(var(--lg) * .26)}@media(max-width:760px){.home-wrap{grid-template-columns:1fr}.hero{justify-items:center;text-align:center}.hero .tag{justify-content:center}.result{grid-template-columns:1fr;overflow:auto}.result .col{overflow:visible}.result .col+.col{border-left:0;border-top:1px solid var(--paper-3)}.seats{grid-template-columns:1fr}}@media(max-width:760px)and (max-height:520px){.home-wrap{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.hero{justify-items:start;text-align:left}.result{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);overflow:hidden}.result .col{overflow:auto}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.board>.center-slot{position:absolute;z-index:6;left:50%;bottom:10px;transform:translate(-50%);width:max-content;max-width:calc(100% - 12px)}.board>.center-slot:empty{display:none}.center-acts{display:grid;justify-items:center;gap:10px;padding:12px 16px 16px;border-radius:20px;background:#081612d6;box-shadow:0 14px 40px #00000080,inset 0 0 0 1px #dcb76b66;animation:rise .2s ease-out}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.ca-head{display:flex;align-items:center;gap:10px;color:var(--on-felt);font-size:calc(15px * var(--k, 1))}.ca-head .tile{--w: var(--md)}.big-acts{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.bact{min-width:calc(84px * var(--k, 1));min-height:calc(72px * var(--k, 1));padding:6px 14px;border:0;border-radius:18px;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-family:var(--brush);font-weight:700;font-size:calc(32px * var(--k, 1));line-height:1;background:linear-gradient(180deg,#fffdf6,var(--ivory-2));color:var(--ink);box-shadow:0 5px 0 var(--ivory-side),0 8px 18px #0006}.bact:active{transform:translateY(3px);box-shadow:0 2px 0 var(--ivory-side),0 4px 10px #0006}.bact small{font-family:var(--ui);font-size:calc(12px * var(--k, 1));font-weight:700;opacity:.88}.bact .combo{display:inline-flex;gap:1px}.bact .combo .tile{--w: calc(var(--xs) * 1.05);margin-bottom:0;box-shadow:inset 0 0 0 1px #00000014}.bact .combo .tile.hl{box-shadow:inset 0 0 0 2px var(--accent)}.bact.win{min-width:calc(120px * var(--k, 1));font-size:calc(40px * var(--k, 1));background:linear-gradient(180deg,#d0573f,var(--accent) 55%,var(--accent-2));color:var(--accent-ink);box-shadow:0 5px #6e2216,0 8px 22px #b8412c80}.bact.ting{background:linear-gradient(180deg,#f3d897,var(--gold));box-shadow:0 5px #9b7a35,0 8px 18px #0006}.bact.dark{background:linear-gradient(180deg,#2b3430,#1a201d);color:var(--ivory);box-shadow:0 5px #0c0f0e,0 8px 18px #0006}.bact.pass{background:transparent;color:var(--on-felt);box-shadow:inset 0 0 0 2px #eaf2ec80;font-size:calc(26px * var(--k, 1))}.bact:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.table.deciding .board>.pond,.table.deciding .board>.compass,.table.deciding .seat{filter:brightness(.5) saturate(.8);transition:filter .2s}@media(max-height:520px){.bact{min-width:62px;min-height:52px;font-size:25px;border-radius:14px;padding:4px 10px}.bact.win{min-width:88px;font-size:30px}.bact.pass{font-size:20px}.center-acts{padding:8px 10px 12px;gap:6px;border-radius:16px}.big-acts{gap:8px}.ca-head{font-size:12.5px}}.battle-layer{position:fixed;inset:0;z-index:35;pointer-events:none}.battle-layer:empty{display:none}.battle{position:absolute;inset:0;pointer-events:auto;display:grid;place-items:center;padding:10px;background:var(--noise),radial-gradient(circle at 50% 42%,#46160cf7,#0e0a08fb 70%,#040605fc);animation:fade-in .2s ease}.bt-stage{--fa: clamp(44px, min(14vh, 20vw), 104px);width:min(1000px,100%);max-height:calc(100dvh - 20px);display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:clamp(8px,2vh,18px);color:var(--ivory)}.bt-stage.shake{animation:shake-st .32s}@keyframes shake-st{20%{transform:translate(-6px,3px)}40%{transform:translate(5px,-4px)}60%{transform:translate(-4px,2px)}80%{transform:translate(3px,-1px)}}.bt-title{display:grid;justify-items:center;gap:2px}.bt-title-text{font-family:var(--brush);font-size:clamp(26px,min(6.5vh,8vw),58px);text-align:center;letter-spacing:.08em;color:#ffe6b0;text-shadow:0 0 18px rgba(255,140,60,.6),0 3px 0 rgba(0,0,0,.4);line-height:1.15}.bt-title-text.slam{animation:slam .35s cubic-bezier(.2,.9,.3,1)}@keyframes slam{0%{transform:scale(.6);opacity:0;filter:blur(4px)}}.bt-sub{font-size:clamp(12px,2vh,15px);color:#fff0dcb8}.bt-arena{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr);gap:clamp(10px,2vw,24px);align-items:center;min-height:0}.bt-side{display:grid;gap:8px;align-content:center;min-width:0}.fighter{display:flex;align-items:center;gap:12px;padding:10px;border-radius:16px;background:#ffffff0f;box-shadow:inset 0 0 0 1px #ffffff1a;min-width:0}.fighter.atk{box-shadow:inset 0 0 0 1.5px #dcb76ba6}.fighter .ava{width:var(--fa);height:var(--fa);font-size:calc(var(--fa) * .46);overflow:hidden}.fighter .ava:after{content:"";position:absolute;inset:0;border-radius:50%;background:#fff;opacity:0;pointer-events:none}.fighter.hit .ava:after{animation:flash .28s ease-out}@keyframes flash{0%{opacity:.9}to{opacity:0}}.fighter.hit{animation:shake-f .3s}@keyframes shake-f{25%{transform:translate(5px)}50%{transform:translate(-4px)}75%{transform:translate(2px)}}.fighter.lunge{animation:lunge .22s ease-out}@keyframes lunge{40%{transform:translate(6px)}}.slash{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.slash path{fill:none;stroke:#fff2d6;stroke-width:7;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 4px #ff8a4a)}.slash.cut path{animation:slash .42s ease-out}@keyframes slash{0%{stroke-dashoffset:100;opacity:1}45%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}.f-info{display:grid;min-width:0;gap:1px}.f-name{font-size:clamp(13px,2.2vh,17px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f3eadb}.f-num{font-family:var(--brush);font-size:clamp(20px,min(5vh,8vw),40px);font-variant-numeric:tabular-nums;color:#ffb3a1;line-height:1.1;min-height:1.1em;white-space:nowrap}.fighter.atk .f-num{color:#a8ecc6}.fighter .f-num.neg{color:#ffb3a1}.fighter .f-num.pos{color:#a8ecc6}.f-num.pop{animation:num-pop .25s ease-out}@keyframes num-pop{0%{transform:scale(.8);color:#fff}}.f-tag{font-size:clamp(11px,1.8vh,13px);color:#ffd59a;min-height:1.3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bt-stage.multi .tgt .fighter{padding:6px 8px;gap:8px}.bt-stage.multi .tgt .ava{--fa: clamp(30px, 8vh, 60px)}.bt-stage.multi .tgt .f-num{font-size:clamp(17px,3.6vh,28px)}.bt-lane{display:grid;gap:clamp(6px,1.6vh,14px);justify-items:center;text-align:center;min-width:0}.bt-move{display:grid;justify-items:center;gap:3px;width:100%;min-height:calc(clamp(26px,6vh,52px)*1.05 + clamp(13px,2.6vh,20px)*1.3 + 3px);align-content:center}.mv-name{font-family:var(--brush);font-size:clamp(26px,6vh,52px);line-height:1.05;color:#fff;text-shadow:0 0 14px rgba(255,170,80,.55);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.mv-fan{font-size:clamp(13px,2.6vh,20px);line-height:1.3;font-weight:700;color:var(--gold);max-width:100%}.bt-move.heavy .mv-name{color:#ffd59a;text-shadow:0 0 22px rgba(255,90,40,.95)}.bt-move.finisher .mv-name{color:#ff9b7a;text-shadow:0 0 24px rgba(255,70,40,.95)}.bt-move.laa .mv-name{color:#a9dcff;text-shadow:0 0 16px rgba(80,170,255,.85)}.bt-move.kick .mv-name{color:#b8f5b2;text-shadow:0 0 16px rgba(90,220,110,.8)}.bt-move.cut .mv-name{color:#fff;text-shadow:0 0 22px rgba(255,255,255,.95)}.bt-move.pop{animation:move-pop .26s ease-out}@keyframes move-pop{0%{transform:scale(.78);opacity:0}}.bt-track{position:relative;width:100%;height:clamp(18px,3.6vh,30px);border-radius:999px;background:#ffffff0f;box-shadow:inset 0 0 0 1px #ffffff14;overflow:hidden}.orb{position:absolute;left:0;top:0;width:clamp(18px,3.6vh,30px);height:100%;border-radius:50%;background:radial-gradient(circle at 40% 40%,#fff,#ffd27a 40%,#ff6a3a 72%,transparent 74%);opacity:0}.orb.fly{animation:fly .17s linear}.orb.fly-back{animation:fly-back .17s linear}@keyframes fly{0%{opacity:1;transform:translate(0)}to{opacity:1;transform:translate(var(--dist))}}@keyframes fly-back{0%{opacity:1;transform:translate(var(--dist))}to{opacity:1;transform:translate(0)}}.beam{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,#fff0c8f2,#ffb347 40%,#ff4e2a);transform:scaleX(0);transform-origin:left;opacity:0}.bt-track.charge .beam{animation:charge .7s ease-in forwards}@keyframes charge{0%{opacity:.3;transform:scaleX(.02)}to{opacity:.95;transform:scaleX(.2)}}.bt-track.blast .beam{animation:blast .65s ease-out forwards}@keyframes blast{0%{opacity:1;transform:scaleX(.2)}30%{opacity:1;transform:scaleX(1)}to{opacity:0;transform:scaleX(1)}}.chainbar{position:absolute;inset:28% 6px;border-radius:999px;background:repeating-linear-gradient(90deg,#d7e0e6 0 10px,transparent 10px 13px,#93a4ae 13px 23px,transparent 23px 26px);opacity:0}.bt-track.chained .chainbar{animation:chain-in .35s ease-out forwards}@keyframes chain-in{0%{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}.bt-track.snap .chainbar{animation:snap .55s ease-out forwards}@keyframes snap{0%{opacity:1;filter:brightness(2)}to{opacity:0;filter:brightness(1)}}.bt-combo{display:flex;align-items:baseline;gap:6px;min-height:clamp(30px,6vh,50px)}.bt-combo b{font-family:var(--brush);font-size:clamp(28px,6vh,50px);color:#ffcf6e;line-height:1;font-variant-numeric:tabular-nums;text-shadow:0 0 12px rgba(255,180,60,.6)}.bt-combo span{font-family:var(--brush);font-size:clamp(14px,2.6vh,20px);color:#ffe6b0}.bt-combo.pop b{animation:num-pop .22s ease-out}.bt-moves{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-content:flex-start;min-height:28px}.bt-chip{font-size:clamp(12px,2vh,14px);padding:3px 10px;border-radius:999px;background:#ffffff1a;color:#fdf0d8;animation:fade-in .2s;white-space:nowrap}.bt-chip.heavy{background:#ff783c47;color:#ffd9b8}.bt-chip.laa{background:#50a0ff3d}.bt-chip.kick{background:#78dc7838}.bt-moves.dense{gap:4px}.bt-moves.dense .bt-chip{font-size:11px;padding:2px 7px}.bt-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}.bt-total{font-size:clamp(14px,2.4vh,18px);color:#ffe6b0}.bt-total b{font-family:var(--brush);font-size:1.5em;color:#fff}.battle .btn.small{background:#ffffff24;color:#fff;box-shadow:inset 0 0 0 1px #ffffff40}@media(max-aspect-ratio:4/5){.bt-arena{grid-template-columns:1fr}.bt-side.atk{justify-items:center}}
