:root{--felt-1:#187452;--felt-2:#0c4632;--felt-3:#062a1e;--gold:#d9b45a;--gold-dim:#a98a3d;--ivory:#f6efdc;--ink:#1b1a17;--lacquer:#a3242b;--lacquer-2:#7a1a20;--jade:#1f8f5f;--jade-dark:#0f4a31;--red:#b3262c;--green:#1f7a4d;--blue:#1f4f8f;--text:#f3ead2;--muted:#a9bfae;--tw-base:min(10vh, calc((100vw - 48px) / 15.6), 54px)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--felt-3);color:var(--text);overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app-root{height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:relative;overflow:hidden}.felt{background:radial-gradient(ellipse at 50% 38%, var(--felt-1) 0%, var(--felt-2) 55%, var(--felt-3) 100%);position:relative}.felt:before{content:"";pointer-events:none;opacity:.22;mix-blend-mode:multiply;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><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 .7 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:absolute;inset:0}.felt>*{position:relative}.btn{appearance:none;border:1px solid var(--gold);font:inherit;letter-spacing:.02em;color:var(--ivory);background:linear-gradient(#c43039, var(--lacquer-2));cursor:pointer;border-radius:10px;padding:10px 20px;font-weight:700;transition:transform 80ms,box-shadow 80ms,filter .15s;box-shadow:0 3px #4f0f13,0 6px 12px #0006,inset 0 1px #ffffff40}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #4f0f13,0 3px 6px #0006,inset 0 1px #ffffff40}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--jade{background:linear-gradient(#2fa974, var(--jade-dark));box-shadow:0 3px #082d1d,0 6px 12px #0006,inset 0 1px #ffffff40}.btn--ghost{background:#00000047;border-color:#d9b45a73;box-shadow:inset 0 0 0 1px #0003}.icon-btn{appearance:none;width:36px;height:36px;color:var(--gold);cursor:pointer;background:#00000059;border:1px solid #d9b45a8c;border-radius:50%;place-items:center;font-size:17px;line-height:1;display:grid}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}#rotate-overlay{z-index:9999;background:radial-gradient(ellipse at 50% 40%, var(--felt-1), var(--felt-3));color:var(--ivory);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.rotate-icon{margin-bottom:8px;font-size:64px}#rotate-overlay h2{color:var(--gold);margin:0 0 6px}#rotate-overlay p{color:var(--muted);margin:0}@media (orientation:portrait) and (width<=900px){#rotate-overlay{display:flex}#app-root{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.tile{--t:var(--tw,var(--tw-base));--r:calc(var(--t) * .15);width:var(--t);height:calc(var(--t) * 1.32);border-radius:var(--r);box-shadow:0 calc(var(--t) * .07) 0 #0c3f29, 0 calc(var(--t) * .13) calc(var(--t) * .14) #0000008c;background:linear-gradient(160deg,#2aa56d,#14603f);border:0;flex:none;padding:0;transition:transform .12s;display:block;position:relative}button.tile{cursor:pointer;font:inherit}.tile-face{inset:0 0 calc(var(--t) * .1) 0;border-radius:var(--r);box-shadow:inset 0 1px 0 #fffffff2, inset 0 calc(var(--t) * -.05) calc(var(--t) * .08) #78643233;background:radial-gradient(120% 90% at 30% 12%,#fffdf4 0%,#f3ebd4 58%,#e4d9b8 100%);position:absolute;overflow:hidden}.tile-face svg{width:84%;height:90%;position:absolute;inset:5% 8%}.tile--back .tile-face{box-shadow:inset 0 0 0 calc(var(--t) * .06) #d9b45a99, inset 0 calc(var(--t) * -.05) calc(var(--t) * .08) #0000004d;background:repeating-linear-gradient(45deg,#ffffff14 0 3px,#0000 3px 7px),linear-gradient(145deg,#38c385,#1a7a50)}.tile--side{width:calc(var(--t) * 1.32);height:var(--t)}.tile--side .tile-face{inset:0 0 calc(var(--t) * .1) 0}.tile.is-selected{transform:translateY(calc(var(--t) * -.34))}.tile.is-selected .tile-face{box-shadow:inset 0 1px 0 #fff, 0 0 0 2px var(--gold), 0 0 14px #d9b45abf}.tile.is-latest{outline:2px solid var(--gold);outline-offset:1px;animation:.38s cubic-bezier(.2,.9,.3,1.15) drop}@keyframes drop{0%{opacity:0;transform:translateY(-46px)scale(1.7)}to{opacity:1;transform:none}}.table{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:auto 1fr auto;gap:4px 10px;height:100%;padding:6px 12px 8px;display:grid}.hud{grid-column:1/-1;justify-content:space-between;align-items:center;display:flex}.hud-center{letter-spacing:.05em;background:#0000004d;border:1px solid #d9b45a66;border-radius:999px;align-items:center;gap:10px;padding:4px 16px 4px 5px;font-size:13px;font-weight:700;display:flex}.wind-badge{background:radial-gradient(circle at 35% 30%, #f1d98f, var(--gold-dim));width:26px;height:26px;color:var(--ink);border-radius:50%;place-items:center;font:900 16px Noto Serif TC,Songti TC,SimSun,serif;display:grid}.hud-sep{background:#d9b45a73;width:1px;height:14px}.seat-slot{place-items:center;min-height:0;display:grid}.seat{flex-direction:column;align-items:center;gap:8px;display:flex}.seat-chip{letter-spacing:.04em;background:#00000059;border:1px solid #d9b45a59;border-radius:999px;align-items:center;gap:6px;padding:3px 12px 3px 4px;font-size:12px;font-weight:700;display:inline-flex}.seat-chip:not(:has(.dealer-dot)){padding-left:12px}.dealer-dot{background:var(--lacquer);width:18px;height:18px;color:var(--ivory);border-radius:50%;place-items:center;font:900 11px Noto Serif TC,Songti TC,SimSun,serif;display:grid}.seat.is-active .seat-chip,.me.is-active .seat-chip{border-color:var(--gold);animation:1.4s ease-in-out infinite glow}@keyframes glow{0%,to{box-shadow:0 0 0 2px #d9b45a33,0 0 8px #d9b45a59}50%{box-shadow:0 0 0 3px #d9b45a59,0 0 18px #d9b45abf}}.seat-hand{--tw:calc(var(--tw-base) * .4);flex-direction:column;align-items:center;display:flex}.seat-hand .tile+.tile{margin-top:calc(var(--tw-base) * -.08)}.seat-hand .tile--drawn-side{margin-top:calc(var(--tw-base) * .16)}.pond{--tw:calc(var(--tw-base) * .76);place-content:center;gap:calc(var(--tw-base) * .07) 3px;background:radial-gradient(#0000001f,#00000052);border:1px solid #d9b45a47;border-radius:20px;flex-wrap:wrap;min-height:0;padding:12px;display:flex;overflow:hidden;box-shadow:inset 0 0 36px #0006}.pond-empty{letter-spacing:.3em;text-transform:uppercase;color:#d9b45a59;align-self:center;font-size:12px}.pond .tile:after{content:"";background:var(--gold);border-radius:50%;width:4px;height:4px;position:absolute;top:3px;left:3px;box-shadow:0 0 0 1px #00000040}.pond .tile[data-by="1"]:after{background:#ff9aa2}.pond .tile[data-by="2"]:after{background:#86cdf5}.me{flex-direction:column;grid-column:1/-1;align-items:center;gap:5px;padding-top:2px;display:flex}.actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;min-height:40px;display:flex}.hint{color:var(--muted);letter-spacing:.03em;font-size:12px}.hint--you{color:var(--gold);font-weight:700}.act{appearance:none;border:1px solid var(--gold);color:var(--ivory);font:inherit;cursor:pointer;background:linear-gradient(#c43039, var(--lacquer-2));border-radius:10px;align-items:baseline;gap:6px;padding:7px 16px;font-weight:800;transition:transform 80ms,opacity .15s;display:inline-flex;box-shadow:0 3px #4f0f13,0 5px 10px #0006,inset 0 1px #ffffff40}.act:active:not(:disabled){transform:translateY(2px)}.act:disabled{opacity:.4;cursor:not-allowed}.act .zh{font:900 19px/1 Noto Serif TC,Songti TC,SimSun,serif}.act .en{letter-spacing:.05em;font-size:12px}.act--jade{background:linear-gradient(#2fa974, var(--jade-dark));box-shadow:0 3px #082d1d,0 5px 10px #0006,inset 0 1px #ffffff40}.act--gold{color:var(--ink);background:linear-gradient(#f1d98f, var(--gold-dim));box-shadow:0 3px #6d561f,0 5px 10px #0006,inset 0 1px #ffffff80}.act--ghost{box-shadow:none;background:#0000004d}.hand{padding-top:calc(var(--tw-base) * .36);padding-bottom:calc(var(--tw-base) * .14);justify-content:center;align-items:flex-end;gap:2px;display:flex}.hand .tile--drawn{margin-left:calc(var(--tw-base) * .5)}.overlay{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#03140eb3;place-items:center;display:grid;position:fixed;inset:0}.dialog{text-align:center;border:2px solid var(--gold);background:linear-gradient(#18523d,#0c3a29);border-radius:16px;max-width:min(420px,86vw);padding:18px 26px 20px;box-shadow:0 0 0 5px #0000004d,0 18px 40px #0009}.dialog h2{color:var(--gold);margin:0 0 6px;font:900 34px Noto Serif TC,Songti TC,SimSun,serif}.dialog p{margin:4px 0}.dialog-note{color:var(--muted);font-size:12px}.dialog-row{justify-content:center;gap:10px;margin-top:14px;display:flex}.home{justify-content:center;align-items:center;gap:clamp(24px,7vw,90px);height:100%;padding:16px 28px;display:flex}.hero{text-align:center;flex-direction:column;align-items:center;display:flex}.tile-fan{justify-content:center;align-items:flex-end;margin-bottom:14px;display:flex}.tile-fan .tile{transform-origin:50% 110%;margin:0 -4px}.fan-1{transform:rotate(-12deg)translateY(4px)}.fan-2{z-index:1;transform:translateY(-6px)}.fan-3{transform:rotate(12deg)translateY(4px)}.logo-zh{letter-spacing:.08em;color:var(--gold);text-shadow:0 2px #6d561f,0 6px 18px #0000008c;margin:0;font:900 clamp(40px,15vh,78px)/1 Noto Serif TC,Songti TC,SimSun,serif}.logo-en{letter-spacing:.42em;color:var(--ivory);margin:6px 0 0;padding-left:.42em;font-size:clamp(11px,3vh,14px);font-weight:700}.tagline{color:var(--muted);letter-spacing:.08em;margin:4px 0 0;font-size:clamp(11px,2.9vh,13px)}.menu{flex-direction:column;gap:12px;width:min(300px,44vw);display:flex}.menu-row{gap:12px;display:flex}.menu-row .btn{flex:1}.btn--big{text-align:center;flex-direction:column;align-items:center;gap:2px;padding:clamp(8px,2.4vh,14px) 16px;font-size:clamp(14px,4vh,18px);display:flex}.btn--big small{letter-spacing:.04em;opacity:.8;font-size:11px;font-weight:500}.screen{flex-direction:column;height:100%;padding:8px 14px 10px;display:flex;overflow-y:auto}.screen-head{align-items:center;gap:12px;margin-bottom:8px;display:flex}.screen-head h1{color:var(--gold);letter-spacing:.06em;margin:0;font-size:20px}.screen-head .zh{color:var(--ivory);margin-left:6px;font-family:Noto Serif TC,Songti TC,SimSun,serif;font-size:17px;font-weight:900}.panel{background:#00000042;border:1px solid #d9b45a59;border-radius:14px;padding:12px 14px;box-shadow:inset 0 0 20px #00000040}.panel-lead{color:var(--muted);margin:0 0 10px}.calc input,.calc select,.panel input,.panel select{font:inherit;border:1px solid var(--gold-dim);color:var(--ink);-webkit-user-select:text;user-select:text;background:#f6efdc;border-radius:9px;min-width:0;padding:9px 11px;font-size:16px}.calc-setup{text-align:center;align-self:center;width:min(560px,100%);margin:auto}.calc-names{gap:8px;margin-bottom:12px;display:flex}.calc-names input{flex:1}.calc-grid{flex:1;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:12px;min-height:0;display:grid}.calc-main{flex-direction:column;gap:10px;display:flex}.score-cards{gap:10px;display:flex}.score-card{border:2px solid var(--gold);background:linear-gradient(#17553f,#0e3d2c);border-radius:14px;flex-direction:column;flex:1;align-items:center;padding:8px 6px 10px;display:flex;box-shadow:0 3px #082d1d,0 6px 12px #00000059}.score-name{letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;font-weight:700;overflow:hidden}.score-card strong{font-variant-numeric:tabular-nums;font-size:clamp(26px,8vh,38px);line-height:1.15}.score-card.pos strong{color:#7dff9b}.score-card.neg strong{color:#ff8f8f}.pay-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pay-form select,.pay-form input{flex:90px}.pays{color:var(--muted);font-size:13px}.calc-tools{flex-wrap:wrap;gap:8px;display:flex}.calc-tools .btn{padding:8px 14px;font-size:14px}.history{min-height:0;max-height:calc(100vh - 90px);overflow-y:auto}.history h2{letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:0 0 6px;font-size:14px}.history ol{margin:0;padding:0;list-style:none}.history li{border-bottom:1px dashed #d9b45a40;padding:6px 0;font-size:14px}.history .amt{float:right;color:var(--gold);font-weight:800}.muted{color:var(--muted);margin:0}.err{color:#ffadad;margin:0;font-size:14px}@media (height<=420px){.home{gap:28px}.tile-fan{margin-bottom:8px}}
