:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0;padding:0}button{font-family:inherit}:root{--pm-felt:#0b6a3b;--pm-felt-shadow:#074024;--pm-ink:#111;--pm-tile-bg:#fdfaf2;--pm-tile-border:#c9b798;--pm-corner:#c22b2b;--pm-accent:#d4af37;--pm-warning:#e6a817;--pm-bg:#042518}body{background:radial-gradient(circle at center, var(--pm-felt) 0%, var(--pm-felt-shadow) 85%);color:var(--pm-ink);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;min-height:100vh;margin:0;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;overflow:hidden}.pm-rotate-overlay{display:none}@media (orientation:portrait) and (width<=900px){.pm-rotate-overlay{z-index:1000;background:linear-gradient(160deg, var(--pm-felt) 0%, var(--pm-felt-shadow) 100%);color:#fff;text-align:center;box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}#root>:not(.pm-rotate-overlay){visibility:hidden}}.pm-rotate-overlay__icon{transform-origin:50%;margin-bottom:18px;font-size:72px;animation:2.4s ease-in-out infinite pm-rotate-hint}@keyframes pm-rotate-hint{0%,to{transform:rotate(0)}50%{transform:rotate(-90deg)}}.pm-rotate-overlay__title{letter-spacing:.1em;text-transform:uppercase;color:var(--pm-accent);margin:0 0 8px;font-size:22px;font-weight:700}.pm-rotate-overlay__sub{color:#e8e8e8;max-width:320px;margin:0;font-size:14px;line-height:1.5}.pm-tile{background:var(--pm-tile-bg);border:1px solid var(--pm-tile-border);cursor:default;border-radius:6px;justify-content:center;align-items:center;margin:0;padding:0;transition:transform .12s,box-shadow .12s;display:inline-flex;position:relative;box-shadow:0 2px 3px #00000059,inset 0 -2px #00000014}.pm-tile--sm{width:clamp(34px,4vmin,48px);height:clamp(46px,5.4vmin,64px)}.pm-tile--md{width:clamp(46px,5.6vmin,70px);height:clamp(62px,7.6vmin,94px)}.pm-tile--lg{width:clamp(58px,7vmin,88px);height:clamp(78px,9.4vmin,120px)}.pm-tile__corner{font-size:clamp(11px,1.5vmin,13px)}.pm-tile--sm .pm-tile__corner{font-size:clamp(8px,1.1vmin,10px);top:1px;left:2px}.pm-tile--lg .pm-tile__corner{font-size:clamp(13px,1.8vmin,16px)}@media (height<=600px){.pm-table__felt{grid-template-rows:minmax(56px,90px) 1fr;grid-template-columns:minmax(90px,1fr) 2fr minmax(90px,1fr)}.pm-table__seat--left{grid-area:1/1}.pm-table__seat--top{grid-area:1/2;justify-content:center}.pm-table__seat--right{grid-area:1/3}.pm-table__discards-center{grid-area:2/1/auto/-1;padding:clamp(2px,.6vmin,8px)}.pm-opponent--left,.pm-opponent--right,.pm-opponent--left .pm-opponent__bonuses,.pm-opponent--right .pm-opponent__bonuses,.pm-opponent--left .pm-opponent__melds,.pm-opponent--right .pm-opponent__melds{flex-direction:row}.pm-opponent__concealed{display:none}.pm-opponent{background:#00000059;border:1px solid #ffffff26;min-width:60px;min-height:40px;max-height:84px;padding:6px 10px;overflow:hidden}.pm-table__discards-center{min-height:80px}.pm-table__discards-center .pm-discard{grid-template-columns:repeat(auto-fill,minmax(26px,1fr));gap:2px}.pm-table__discards-center .pm-tile--sm{width:24px;height:32px}.pm-opponent__label{letter-spacing:.05em;min-width:36px;font-size:9px}.pm-opponent .pm-tile--sm{width:30px;height:40px}.pm-opponent .pm-tile__corner{font-size:10px;top:1px;left:2px}.pm-discard .pm-tile--sm{width:34px;height:44px}.pm-header__title{letter-spacing:.08em;font-size:12px}.pm-hints-toggle,.pm-howto-toggle{border-width:1px;padding:4px 8px;font-size:9px}.pm-table__wall-meter{padding:2px 6px;font-size:9px}.pm-hand .pm-tile--md{width:52px;height:70px}.pm-toolbar{top:calc(40px + env(safe-area-inset-top));bottom:auto;right:max(8px, env(safe-area-inset-right));flex-direction:row}.pm-toolbar__btn{padding:5px 8px;font-size:10px}}.pm-tile img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;box-sizing:border-box;width:100%;height:100%;padding:3px}.pm-tile__corner{color:#c20;pointer-events:none;text-shadow:0 0 2px #fffffff2,0 0 3px #ffffffd9;z-index:2;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;line-height:1;position:absolute;top:2px;left:3px}.pm-tile--down{background:linear-gradient(145deg,#2e7948,#1a5130);border-color:#0a3a1e}.pm-tile--down img{opacity:.85}.pm-tile__bonus-char{color:#1f4d2a;text-shadow:0 0 2px #fffffff2,0 0 3px #ffffffd9;pointer-events:none;z-index:2;font-family:STKaiti,Kaiti SC,Songti SC,Hiragino Mincho Pro,Yu Mincho,Georgia,serif;font-size:clamp(11px,1.6vmin,16px);font-weight:700;line-height:1;position:absolute;bottom:2px;right:3px}.pm-tile--sm .pm-tile__bonus-char{font-size:clamp(9px,1.2vmin,12px)}.pm-tile--lg .pm-tile__bonus-char{font-size:clamp(14px,2vmin,20px)}.pm-tile--white-dragon{background:linear-gradient(145deg,#fdfaf2,#f3ebd6)}.pm-tile--white-dragon img{outline:2px solid var(--pm-corner);outline-offset:-7px;border-radius:4px}.pm-tile--bonus img{padding:4px}.pm-tile--clickable{cursor:pointer}.pm-tile--clickable:hover{transform:translateY(-4px);box-shadow:0 6px 10px #00000073}.pm-tile--selected{border-color:var(--pm-accent);transform:translateY(-6px);box-shadow:0 8px 14px #d4af378c}.pm-tile--disabled{opacity:.85;cursor:default}.pm-tile--rot-90{transform:rotate(90deg)}.pm-tile--rot-180{transform:rotate(180deg)}.pm-tile--rot-270{transform:rotate(270deg)}.pm-table{width:100vw;height:100dvh;padding:clamp(36px,4.5vmin,52px) clamp(4px,1vmin,16px) clamp(64px,8vmin,84px);padding-top:max(clamp(36px, 4.5vmin, 52px), env(safe-area-inset-top));padding-bottom:calc(clamp(64px, 8vmin, 84px) + env(safe-area-inset-bottom));padding-left:max(clamp(4px, 1vmin, 16px), env(safe-area-inset-left));padding-right:max(clamp(4px, 1vmin, 16px), env(safe-area-inset-right));box-sizing:border-box;flex-direction:column;justify-content:flex-start;align-items:center;display:flex;overflow:hidden}.pm-table__felt{box-sizing:border-box;background:radial-gradient(#0e7b44 0%,#063a21 95%);border-radius:clamp(10px,2vmin,24px);flex:auto;grid-template-rows:auto 1fr;grid-template-columns:auto 1fr auto;gap:clamp(4px,.8vmin,10px);width:min(1400px,100%);min-height:0;max-height:1100px;padding:clamp(4px,1.2vmin,12px);display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 40px #00000080,0 10px 30px #0009}.pm-table__viewer{flex-direction:column;flex-shrink:0;align-items:center;gap:6px;width:min(1400px,100%);padding-top:clamp(4px,1vmin,10px);display:flex}.pm-table__wall-meter{color:#fff;z-index:2;background:#00000059;border-radius:12px;padding:4px 10px;font-size:13px;position:absolute;top:12px;right:18px}.pm-table__seat--top{grid-area:1/2;justify-content:center;display:flex}.pm-table__seat--left{grid-area:2/1;align-items:center;display:flex}.pm-table__seat--right{grid-area:2/3;align-items:center;display:flex}.pm-table__discards{grid-area:2/2;grid-template-rows:auto 1fr auto;grid-template-columns:auto 1fr auto;place-items:center;gap:clamp(2px,.6vmin,8px);min-width:0;min-height:0;padding:clamp(4px,1.2vmin,16px);display:grid}.pm-table__discards-center{grid-area:2/2;justify-content:center;align-items:center;width:100%;min-width:0;height:100%;min-height:0;padding:clamp(2px,.6vmin,8px) clamp(50px,9vmin,90px);display:flex}.pm-table__discards-center .pm-discard{grid-template-rows:none;grid-template-columns:repeat(auto-fill,minmax(38px,42px));grid-auto-flow:row;place-content:center;gap:3px;width:100%;max-width:clamp(320px,52vmin,540px);max-height:100%;margin:0 auto;display:grid}.pm-table__discards-slot--top{grid-area:1/2}.pm-table__discards-slot--left{grid-area:2/1}.pm-table__discards-slot--right{grid-area:2/3}.pm-table__discards-slot--bottom{grid-area:3/2}.pm-table__viewer-label{color:#fff;align-items:center;gap:10px;font-weight:600;display:flex}.pm-table__turn-badge{background:var(--pm-accent);color:#222;text-transform:uppercase;letter-spacing:.06em;border-radius:999px;padding:3px 12px;font-size:13px;font-weight:800;animation:1.6s ease-in-out infinite pm-turn-badge-pulse;box-shadow:0 0 0 2px #d4af3766,0 0 12px #d4af3799}@keyframes pm-turn-badge-pulse{0%,to{box-shadow:0 0 0 2px #d4af3766,0 0 10px #d4af3780}50%{box-shadow:0 0 0 3px #d4af37b3,0 0 18px #d4af37d9}}.pm-hand{flex-direction:column;align-items:center;gap:clamp(2px,.6vmin,6px);width:100%;display:flex}.pm-hand__concealed{flex-wrap:nowrap;justify-content:center;align-items:flex-end;gap:clamp(1px,.3vmin,4px);max-width:100%;display:flex}.pm-hand__tile-slot{display:inline-flex;position:relative}.pm-hand__tile-slot--draggable{cursor:grab}.pm-hand__tile-slot--draggable:active{cursor:grabbing}.pm-hand__tile-slot--drawn{margin-left:clamp(8px,1.4vmin,14px)}.pm-hand__drop-end{border:1px dashed #0000;border-radius:4px;width:clamp(10px,1.6vmin,16px);height:clamp(38px,4.8vmin,62px);transition:border-color .12s,background .12s}.pm-hand__drop-end:hover,.pm-hand__drop-end--touch-hover{background:#d4af3726;border-color:#d4af37cc}.pm-hand__tile-slot--touch-dragging{opacity:.5;transform:scale(.95)}.pm-hand__tile-slot--touch-dragging .pm-tile{box-shadow:0 0 0 2px var(--pm-accent), 0 8px 16px #0006}.pm-hand__tile-slot--touch-hover{position:relative}.pm-hand__tile-slot--touch-hover:before{content:"";background:var(--pm-accent);z-index:3;border-radius:2px;width:3px;position:absolute;top:-3px;bottom:-3px;left:-3px}.pm-hand__tile-slot--draggable{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.pm-hand__tile-slot--drawn .pm-tile{box-shadow:0 0 0 2px var(--pm-accent), 0 0 12px 2px #d4af3799, 0 6px 12px #00000073;transform:translateY(-3px)}.pm-hand__tile-slot--drawn:after{content:"just drew";letter-spacing:.08em;text-transform:uppercase;color:var(--pm-accent);white-space:nowrap;pointer-events:none;background:#00000080;border-radius:8px;padding:2px 6px;font-size:9px;position:absolute;top:-14px;left:50%;transform:translate(-50%)}.pm-hand__melds,.pm-hand__bonuses{flex-wrap:wrap;justify-content:center;gap:clamp(4px,1vmin,10px);display:flex}.pm-hand__meld{gap:2px;display:flex}.pm-opponent{color:#fff;border-radius:8px;flex-shrink:0;align-items:center;gap:clamp(2px,.6vmin,4px);min-height:0;max-height:100%;padding:clamp(2px,.8vmin,6px);display:flex}.pm-opponent--active{box-shadow:0 0 0 3px var(--pm-accent), 0 0 16px 4px #d4af378c;background:#d4af3740;border-radius:10px;animation:1.6s ease-in-out infinite pm-active-wall-pulse}@keyframes pm-active-wall-pulse{0%,to{box-shadow:0 0 0 3px var(--pm-accent), 0 0 12px 3px #d4af3773}50%{box-shadow:0 0 0 3px var(--pm-accent), 0 0 24px 8px #d4af37d9}}.pm-opponent--active .pm-opponent__label:after{content:" ◄ TURN";color:var(--pm-accent);letter-spacing:.06em;margin-left:4px;font-size:.85em;font-weight:800}.pm-opponent__label{letter-spacing:.08em;text-transform:uppercase;text-align:center;min-width:clamp(36px,7vmin,60px);font-size:clamp(9px,1.4vmin,12px);font-weight:600}.pm-opponent__concealed{flex-wrap:nowrap;gap:clamp(1px,.2vmin,2px);display:flex}.pm-opponent--top{flex-direction:column;align-items:center}.pm-opponent--top .pm-opponent__concealed,.pm-opponent--top .pm-opponent__melds,.pm-opponent--top .pm-opponent__meld{flex-direction:row}.pm-opponent--left{flex-direction:row;align-items:center}.pm-opponent--right{flex-direction:row-reverse;align-items:center}.pm-opponent--left .pm-opponent__concealed,.pm-opponent--right .pm-opponent__concealed{flex-flow:column;gap:1px}.pm-opponent--left .pm-opponent__melds,.pm-opponent--right .pm-opponent__melds{flex-direction:column}.pm-opponent__melds{z-index:4;flex-shrink:0;gap:1px;margin-left:6px;display:flex;position:relative}.pm-opponent__meld{display:contents}.pm-opponent__bonuses{background:#d4af372e;border-radius:6px;flex-flow:wrap;flex-shrink:0;gap:3px;padding:2px 4px;display:flex}.pm-opponent--left .pm-opponent__bonuses,.pm-opponent--right .pm-opponent__bonuses{flex-flow:column}.pm-discard{place-items:center;gap:clamp(1px,.3vmin,2px);display:grid}.pm-discard--bottom,.pm-discard--top{grid-template-rows:repeat(3,auto);grid-auto-flow:column}.pm-discard--left,.pm-discard--right{grid-template-columns:repeat(3,auto);grid-auto-flow:row}.pm-discard__slot--last .pm-tile{box-shadow:0 0 0 3px var(--pm-accent), 0 0 14px 4px #d4af37b3, 0 4px 10px #0000008c;z-index:2;animation:1.6s ease-in-out infinite pm-last-discard-pulse;transform:scale(1.12)}@keyframes pm-last-discard-pulse{0%,to{box-shadow:0 0 0 3px var(--pm-accent), 0 0 12px 3px #d4af378c, 0 4px 10px #0000008c}50%{box-shadow:0 0 0 3px var(--pm-accent), 0 0 22px 8px #d4af37d9, 0 4px 10px #0000008c}}.pm-claim-bar{bottom:calc(8px + env(safe-area-inset-bottom));color:#fff;z-index:10;border:1px solid var(--pm-accent);background:#0a1e14f2;border-radius:12px;flex-wrap:nowrap;justify-content:center;align-items:center;gap:10px;max-width:96vw;padding:6px 12px;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0000008c}.pm-claim-bar__discard{flex-direction:row;align-items:center;gap:6px;display:flex}.pm-claim-bar__tile-img{background:var(--pm-tile-bg);border:1px solid var(--pm-tile-border);box-sizing:border-box;border-radius:4px;width:30px;height:40px;padding:1px}.pm-claim-bar__timer{color:var(--pm-accent);font-size:11px;font-weight:600}.pm-claim-bar__actions{gap:5px;display:flex}.pm-claim-bar__btn{cursor:pointer;text-transform:uppercase;letter-spacing:.04em;border:none;border-radius:6px;padding:5px 10px;font-size:11px;font-weight:700;transition:transform 80ms,filter 80ms}.pm-claim-bar__btn:hover{filter:brightness(1.1);transform:translateY(-1px)}.pm-claim-bar__btn--win{color:#111;background:linear-gradient(135deg,#d4af37,#b8860b)}.pm-claim-bar__btn--kong{color:#fff;background:#9b59b6}.pm-claim-bar__btn--pung{color:#fff;background:#2c7dd0}.pm-claim-bar__btn--chow{color:#fff;background:#3aa76d}.pm-claim-bar__btn--pass{color:#eee;background:0 0;border:1px solid #777}.pm-claim-bar__btn--shake{outline-offset:2px;outline:2px solid #ff5050;animation:.45s ease-in-out pm-shake}@keyframes pm-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.pm-claim-bar__error{color:#fff;white-space:nowrap;background:#b41e1eeb;border-radius:8px;padding:6px 12px;font-size:clamp(11px,1.5vmin,13px);font-weight:600;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 4px 12px #00000073}.pm-header{z-index:4;pointer-events:none;position:fixed;top:clamp(6px,1vmin,12px);left:50%;transform:translate(-50%)}.pm-header__title{letter-spacing:.15em;text-transform:uppercase;color:var(--pm-accent);text-shadow:0 2px 6px #000000a6;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(16px,2.6vmin,24px);font-weight:700}.pm-header__title:before{content:"❀ ";color:#f5c4c4;font-weight:400}.pm-header__title:after{content:" ❀";color:#f5c4c4;font-weight:400}.pm-hints-toggle{z-index:6;color:var(--pm-accent);border:2px solid var(--pm-accent);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000b3;border-radius:10px;padding:clamp(8px,1.2vmin,12px) clamp(14px,2vmin,20px);font-size:clamp(12px,1.7vmin,14px);font-weight:700;transition:background .12s,transform 80ms;position:fixed;top:clamp(10px,1.6vmin,18px);left:clamp(10px,1.6vmin,18px);box-shadow:0 4px 14px #00000080}.pm-hints-toggle:hover{background:#d4af3740;transform:translateY(-1px)}.pm-howto-toggle{z-index:6;color:var(--pm-accent);border:2px solid var(--pm-accent);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000b3;border-radius:10px;padding:clamp(8px,1.2vmin,12px) clamp(14px,2vmin,20px);font-size:clamp(12px,1.7vmin,14px);font-weight:700;transition:background .12s,transform 80ms;position:fixed;top:clamp(10px,1.6vmin,18px);right:clamp(10px,1.6vmin,18px);box-shadow:0 4px 14px #00000080}.pm-howto-toggle:hover{background:#d4af3740;transform:translateY(-1px)}.pm-howto-backdrop{z-index:60;box-sizing:border-box;background:#000000c7;place-items:center;padding:clamp(8px,2vmin,24px);display:grid;position:fixed;inset:0}.pm-howto{width:min(720px,96vw);max-height:90vh;color:var(--pm-ink);background:linear-gradient(160deg,#fdfaf2,#ecdfc5);border-radius:16px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 20px 50px #0009}.pm-howto__header{border-bottom:1px solid #0000001a;justify-content:space-between;align-items:center;padding:18px 24px 12px;display:flex}.pm-howto__title{color:var(--pm-corner);margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(18px,2.4vmin,22px)}.pm-howto__close{cursor:pointer;color:#555;background:0 0;border:none;padding:0 8px;font-size:28px;line-height:1}.pm-howto__close:hover{color:var(--pm-corner)}.pm-howto__body{flex:1;padding:8px 24px 16px;font-size:14px;line-height:1.55;overflow-y:auto}.pm-howto__body section{margin:14px 0}.pm-howto__body h3{color:var(--pm-felt);letter-spacing:.04em;text-transform:uppercase;margin:0 0 6px;font-size:15px}.pm-howto__body p{margin:4px 0 6px}.pm-howto__body ul,.pm-howto__body ol{margin:4px 0 6px;padding-left:22px}.pm-howto__body li{margin:3px 0}.pm-howto__note{border-left:3px solid var(--pm-accent);background:#d4af372e;border-radius:4px;padding:6px 10px;font-size:13px;margin-top:6px!important}.pm-howto__footer{border-top:1px solid #0000001a;justify-content:flex-end;padding:12px 24px 18px;display:flex}.pm-howto__got-it{background:var(--pm-felt);color:#fff;cursor:pointer;letter-spacing:.04em;border:none;border-radius:8px;padding:10px 22px;font-size:14px;font-weight:700}.pm-howto__got-it:hover{background:#086a36}.pm-build-stamp{z-index:1;color:#ffffff59;pointer-events:none;font-family:monospace;font-size:9px;position:fixed;bottom:2px;right:4px}.pm-toolbar{right:max(clamp(8px, 1.6vmin, 20px), env(safe-area-inset-right));bottom:calc(clamp(70px, 12vmin, 200px) + env(safe-area-inset-bottom));z-index:5;flex-direction:column;gap:clamp(4px,.8vmin,8px);display:flex;position:fixed}.pm-toolbar__btn{cursor:pointer;border:none;border-radius:8px;padding:clamp(6px,1.2vmin,10px) clamp(10px,2vmin,16px);font-size:clamp(11px,1.6vmin,13px);font-weight:700;box-shadow:0 4px 10px #0006}.pm-toolbar__btn--win{color:#111;background:linear-gradient(135deg,#d4af37,#b8860b)}.pm-toolbar__btn--kong{color:#fff;background:#9b59b6}.pm-result-backdrop{z-index:50;background:#000000b8;place-items:center;display:grid;position:fixed;inset:0}.pm-result{min-width:360px;max-width:520px;color:var(--pm-ink);text-align:center;background:linear-gradient(160deg,#fdfaf2,#ecdfc5);border-radius:18px;padding:28px 36px;box-shadow:0 20px 40px #00000080}.pm-result__title{color:var(--pm-corner);margin:0 0 8px;font-size:28px}.pm-result__subtitle{color:#555;margin:0 0 16px}.pm-result__faan-total{color:var(--pm-accent);margin-bottom:16px;font-size:56px;font-weight:800;line-height:1}.pm-result__faan-total small{color:#555;letter-spacing:.1em;margin-top:4px;font-size:14px;font-weight:500;display:block}.pm-result__breakdown{text-align:left;border-top:1px solid #0000001a;margin:0 0 20px;padding:0;list-style:none}.pm-result__line{border-bottom:1px solid #00000014;justify-content:space-between;padding:8px 4px;display:flex}.pm-result__line strong{color:var(--pm-corner)}.pm-result__line--chicken{color:#555;padding:8px 4px;font-style:italic}.pm-result__continue{background:var(--pm-felt);color:#fff;cursor:pointer;letter-spacing:.05em;border:none;border-radius:10px;padding:12px 28px;font-size:15px;font-weight:700}
