:root{--felt:#145236;--felt-deep:#0b2f20;--gold:#e7c56a;--gold-2:#f4e0a8;--ink:#1a140c;--cream:#f7f1df;--danger:#c44536;--shadow:0 12px 30px #00000047;color:var(--cream);font-family:Hiragino Sans,Yu Gothic UI,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{background:radial-gradient(circle at 50% 20%, #1c6a45 0%, var(--felt) 42%, var(--felt-deep) 100%);width:100%;max-width:100%;height:100dvh;min-height:100%;margin:0;overflow-x:hidden}body{overscroll-behavior:none;touch-action:manipulation}button,input{font:inherit}button{color:var(--cream);background:#ffffff1f;border:0;border-radius:12px;padding:.75rem 1rem}button.primary{color:var(--ink);background:linear-gradient(#f0d78a,#c9a24a);font-weight:700}button.primary:disabled,button:disabled{opacity:.45}button.ghost{background:0 0;border:1px solid #ffffff40}button.big{width:100%;padding:1rem;font-size:1.05rem}a{color:var(--gold-2)}.home{flex-direction:column;gap:.85rem;max-width:430px;min-height:100%;margin:0 auto;padding:2.2rem 1.2rem 2rem;display:flex}.crest{width:72px;height:72px;color:var(--gold);box-shadow:var(--shadow);background:#111;border-radius:50%;place-items:center;margin:0 auto;font-size:2.2rem;display:grid}.home h1{text-align:center;letter-spacing:.35em;color:var(--gold);margin:0;font-size:2rem}.home.setup h1{letter-spacing:.12em}.lede{text-align:center;color:#d9eadc;margin:0;line-height:1.6}.field-label small{opacity:.75;font-size:.75rem}input{color:#fff;background:#0003;border:1px solid #fff3;border-radius:12px;width:100%;padding:.85rem .9rem}.or{text-align:center;opacity:.7;font-size:.8rem}.warn{color:#ffd7c8;text-align:left;background:#c4453638;border-radius:12px;margin:0;padding:.75rem .85rem;font-size:.85rem;line-height:1.55}.join{grid-template-columns:1fr auto;gap:.5rem;display:grid}.rules{color:#d9eadc;margin:.4rem 0 0;padding-left:1.1rem;font-size:.9rem;line-height:1.7}.error{color:#ffb4a8;text-align:center}.code{letter-spacing:.28em;text-align:center;color:var(--gold);font-size:2.4rem;font-weight:800}.seats{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.seats li{background:#0000002e;border-radius:12px;grid-template-columns:2.5rem 1fr auto;align-items:center;gap:.6rem;padding:.7rem .8rem;display:grid}.seats li.empty{opacity:.55}.seats em{color:var(--gold);font-size:.75rem;font-style:normal}.table-wrap{width:100%;min-width:0;max-width:min(520px,100%);height:100%;max-height:100dvh;padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);grid-template-rows:auto auto minmax(0,1fr) auto;margin:0 auto;display:grid;overflow:hidden}.topbar{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.35rem;min-width:0;padding:.45rem .55rem;display:grid}.topbar .ghost{white-space:nowrap;padding:.45rem .6rem}.topbar-mid{flex-direction:column;align-items:center;min-width:0;font-size:.8rem;display:flex;overflow:hidden}.topbar-mid strong,.topbar-mid .muted{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.room-chip,.chip,.rank-badge{white-space:nowrap;background:#00000047;border-radius:999px;padding:.15rem .45rem;font-size:.7rem}.chip.hot{background:#9b1d2a}.rank-badge{color:var(--gold)}.rank-badge.tiny{margin-top:.15rem;display:inline-block}.status-chips{flex-wrap:wrap;justify-content:flex-end;gap:.25rem;max-width:7.2rem;display:flex}.topbar-right{flex-direction:column;align-items:flex-end;gap:.2rem;min-width:0;display:flex}.log-btn{width:38px;height:38px;color:var(--gold-2);background:#00000059;border:1px solid #f4e0a859;border-radius:50%;flex:none;place-items:center;padding:0;display:grid}.log-overlay{z-index:80;padding:.6rem .6rem calc(.6rem + env(safe-area-inset-bottom));background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.log-sheet{background:#123526;border:1px solid #e7c56a47;border-radius:16px 16px 12px 12px;flex-direction:column;width:min(520px,100%);max-height:min(72dvh,560px);display:flex;overflow:hidden;box-shadow:0 -8px 28px #00000059}.log-head{color:var(--gold);border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;padding:.7rem .8rem;display:flex}.log-list{-webkit-overflow-scrolling:touch;color:#e7f3ea;flex-direction:column;gap:.4rem;margin:0;padding:.55rem .85rem .9rem;font-size:.82rem;line-height:1.45;list-style:none;display:flex;overflow-y:auto}.log-list li{border-bottom:1px solid #ffffff14;padding-bottom:.4rem}.banner{text-align:center;color:var(--gold-2);text-overflow:ellipsis;white-space:nowrap;background:#e7c56a29;padding:.3rem .5rem;font-size:.82rem;font-weight:700;overflow:hidden}.arena{grid-template-rows:auto minmax(0,1fr);grid-template-columns:4.6rem minmax(0,1fr) 4.6rem;gap:.15rem;min-width:0;min-height:0;padding:.15rem .2rem .2rem;display:grid;position:relative;overflow:hidden}.seat{min-width:0;max-width:100%;position:static}.seat.north{grid-area:1/1/auto/-1;justify-self:center;max-width:calc(100% - .4rem);transform:none}.seat.west{grid-area:2/1;place-self:center start}.seat.east{grid-area:2/3;place-self:center end}.opp{text-align:center;min-width:0}.opp.out,.opp.done{opacity:.45}.opp-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.72rem;overflow:hidden}.opp-name small{opacity:.7;margin-left:.15rem}.opp-cards{justify-content:center;align-items:flex-end;max-width:100%;display:flex}.opp-cards .pcard{margin-left:-14px}.opp-cards .pcard:first-child{margin-left:0}.opp-cards .count{flex:none;margin-left:.15rem;font-size:.75rem;font-weight:700}.seat.west .opp-cards .pcard,.seat.east .opp-cards .pcard{margin-left:-16px}.field{background:#0000001f;border:1px dashed #ffffff38;border-radius:16px;flex-direction:column;grid-area:2/2;justify-content:center;place-self:center;align-items:center;width:min(7.4rem,100%);min-width:0;min-height:6rem;padding:.4rem .3rem .3rem;display:flex;position:relative;top:auto;left:auto;overflow:hidden;transform:none}.field-cards{gap:.25rem;display:flex}.field-note,.field-empty,.muted,.hint{color:#d5e8d8;text-align:center;text-overflow:ellipsis;max-width:100%;margin:.35rem 0 0;font-size:.78rem;overflow:hidden}.dock{padding:.45rem .55rem calc(.65rem + env(safe-area-inset-bottom));background:linear-gradient(#00000014,#00000061);min-width:0;overflow:hidden}.me-meta{flex-wrap:wrap;align-items:center;gap:.35rem;min-width:0;margin-bottom:.3rem;font-size:.8rem;display:flex}.your-turn{color:var(--gold);margin-left:auto;font-weight:700}.hand{-webkit-overflow-scrolling:touch;gap:.22rem;max-width:100%;padding:.35rem .1rem .55rem;display:flex;overflow:auto hidden}.actions,.choices,.join{gap:.5rem;min-width:0;max-width:100%;display:flex}.actions{flex-wrap:wrap;margin-top:.3rem}.actions button{flex:1}.actions .hint{white-space:normal;text-overflow:clip;word-break:break-word;flex:100%;overflow:visible}.choices{flex-wrap:wrap;margin-bottom:.35rem}.choices button{padding:.4rem .65rem;font-size:.8rem}.choices button.on{background:var(--gold);color:var(--ink)}.pcard{color:#1b1b1b;text-align:left;background:#fffdf6;border:2px solid #0000;border-radius:8px;flex-direction:column;flex:none;justify-content:space-between;width:44px;height:64px;padding:.28rem .32rem;display:flex;box-shadow:0 6px 12px #00000040}.pcard.small{width:28px;height:40px;padding:.12rem;font-size:.65rem}.pcard.compact{justify-content:flex-start;align-items:flex-start;width:30px;height:42px;padding:.12rem .1rem}.pcard-corner{letter-spacing:-.04em;font-size:.72rem;font-weight:800;line-height:1.05}.pcard.red{color:#c1121f}.pcard.joker{color:#6b2d9b;background:#f4ecff}.pcard.selected{border-color:var(--gold);transform:translateY(-10px)}.pcard.playable{border-color:#8dffb8;animation:1.15s ease-in-out infinite playable-pulse;box-shadow:0 0 0 2px #8dffb8d9,0 6px 12px #00000040}.pcard.back{color:var(--gold);background:repeating-linear-gradient(45deg,#7b1020,#7b1020 6px,#9b1d2a 6px 12px);justify-content:center;align-items:center;font-weight:800}.pcard-rank{font-size:.95rem;font-weight:800;line-height:1}.pcard-suit{align-self:flex-end;font-size:1.05rem}.field-stage{width:4.6rem;height:3.1rem;position:relative;overflow:visible}.field-pile{z-index:2;width:4.2rem;height:42px;position:absolute;bottom:0;left:.15rem}.field-pile.past{opacity:.5;filter:saturate(.75);transform:translate(calc(var(--stack,1) * -5px), calc(var(--stack,1) * -4px));z-index:1}.field-pile .pcard{left:calc(var(--i,0) * 9px);z-index:calc(var(--i,0) + 1);transform:rotate(var(--tilt,0deg));margin:0;position:absolute;top:0}.field-pile.now.throw-south .pcard{animation:.72s cubic-bezier(.18,.86,.24,1) both toss-south;animation-delay:calc(var(--i,0) * 55ms)}.field-pile.now.throw-north .pcard{animation:.72s cubic-bezier(.18,.86,.24,1) both toss-north;animation-delay:calc(var(--i,0) * 55ms)}.field-pile.now.throw-west .pcard{animation:.72s cubic-bezier(.18,.86,.24,1) both toss-west;animation-delay:calc(var(--i,0) * 55ms)}.field-pile.now.throw-east .pcard{animation:.72s cubic-bezier(.18,.86,.24,1) both toss-east;animation-delay:calc(var(--i,0) * 55ms)}@keyframes toss-south{0%{opacity:0;transform:translate(10px,150px)rotate(-28deg)scale(.78)}62%{opacity:1;transform:translate(-3px,-12px)rotate(7deg)scale(1.06)}to{transform:translate(0, 0) rotate(var(--tilt,0deg)) scale(1);opacity:1}}@keyframes toss-north{0%{opacity:0;transform:translate(-8px,-130px)rotate(22deg)scale(.78)}62%{opacity:1;transform:translate(3px,10px)rotate(-6deg)scale(1.06)}to{transform:translate(0, 0) rotate(var(--tilt,0deg)) scale(1);opacity:1}}@keyframes toss-west{0%{opacity:0;transform:translate(-42px,14px)rotate(-42deg)scale(.78)}62%{opacity:1;transform:translate(8px,-6px)rotate(8deg)scale(1.06)}to{transform:translate(0, 0) rotate(var(--tilt,0deg)) scale(1);opacity:1}}@keyframes toss-east{0%{opacity:0;transform:translate(42px,14px)rotate(42deg)scale(.78)}62%{opacity:1;transform:translate(-8px,-6px)rotate(-8deg)scale(1.06)}to{transform:translate(0, 0) rotate(var(--tilt,0deg)) scale(1);opacity:1}}.toggle{background:#0000002e;border-radius:12px;grid-template-columns:auto 1fr;align-items:start;gap:.7rem;padding:.7rem .8rem;display:grid}.toggle input{width:1.1rem;height:1.1rem;margin-top:.2rem}.toggle small{opacity:.75;margin-top:.18rem;font-size:.75rem;font-weight:400;display:block}.rule-h{color:var(--gold);margin:.75rem 0 .15rem;font-size:.95rem}.rule-block{flex-direction:column;gap:.5rem;display:flex}.rule-select{color:#fff;background:#0003;border:1px solid #fff3;border-radius:12px;width:100%;padding:.85rem .9rem}button.tiny{padding:.28rem .5rem;font-size:.72rem}.preset-actions{gap:.25rem;display:flex}.fx{pointer-events:none;z-index:50;place-items:center;animation:1.4s forwards fx-fade;display:grid;position:fixed;inset:0}.fx-text{letter-spacing:.06em;text-align:center;text-shadow:0 8px 28px #0000008c;z-index:2;margin:0;padding:0 .8rem;font-size:clamp(1.25rem,7vw,2.3rem);font-weight:900;line-height:1.35}.fx-burst{background:radial-gradient(circle,#ffffff61,#0000 68%);border-radius:50%;width:240px;height:240px;animation:1.1s fx-pop;position:absolute}.fx-revolution,.fx-revolutionReturn{background:#8c0c1c6b}.fx-eightCut{background:#12308c61}.fx-spa3{background:#14141473}.fx-suitLock,.fx-numberLock,.fx-gekiLock{background:#78500a61}.fx-sixCard,.fx-strongestSequence{background:#5a147866}.fx-miyakoOchi{background:#00000080}.fx-finish{background:#b48c1e59}.fx-illegalFinish{background:#5a000073}.fx-fieldClear{background:#00281447}.fx-miniBomber,.fx-queenBomber{background:#5a0a2873}.fx-skip5,.fx-jback{background:#14466e66}.fx-copy6,.fx-give7,.fx-discard10{background:#1e5a3266}.fx-pass{background:#2830446b}.score-chip{color:#ffe7a8;font-size:.78rem;font-weight:700;display:inline-block}.score-chip.tiny{margin:2px 0;font-size:.72rem}.rank-picks{flex-wrap:wrap;justify-content:center;gap:6px;width:100%;max-width:100%;display:flex}.rank-picks button{min-width:44px;padding:8px 10px}@keyframes playable-pulse{0%,to{box-shadow:0 0 0 2px #8dffb880}50%{box-shadow:0 0 0 4px #8dffb8}}@keyframes fx-fade{0%{opacity:0}15%{opacity:1}70%{opacity:1}to{opacity:0}}@keyframes fx-pop{0%{opacity:.2;transform:scale(.4)}40%{opacity:1;transform:scale(1.15)}to{opacity:0;transform:scale(1.6)}}@media (width>=600px){.pcard{width:58px;height:82px}}@media (width<=389px){.arena{grid-template-columns:4.1rem minmax(0,1fr) 4.1rem}.pcard{width:40px;height:58px}.status-chips{max-width:5.8rem}}
