:root{color:#e8ede6;font-synthesis:none;--gold:#dfbd77;--muted:#99aaa7;background:#0b1c21;font-family:Noto Sans JP,Hiragino Kaku Gothic ProN,Yu Gothic,sans-serif;font-weight:400}*{box-sizing:border-box}body{background:radial-gradient(at 45% 0,#254440 0%,#10292d 36%,#0b1c21 80%);min-height:100vh;margin:0}button,select{font:inherit}button{cursor:pointer;color:#e8ede6;background:#243b3d;border:1px solid #4e6561;border-radius:7px;padding:12px 18px;transition:background .15s,transform .15s}button:hover:not(:disabled){background:#385150}button:focus-visible,a:focus-visible,select:focus-visible{outline-offset:3px;outline:3px solid #f1cd83}button:disabled{cursor:default;opacity:.4}button.primary{background:var(--gold);border-color:var(--gold);color:#18292b;font-weight:700}button.primary:hover{background:#f2d597}button.gold{border-color:var(--gold);color:var(--gold);background:#3f3e2e}button.danger{color:#fff;background:#aa5548;border-color:#d77a65}button.quiet{background:0 0;border-color:#49625d;padding:8px 14px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Noto Serif JP,serif}h2{letter-spacing:.06em;font-size:29px}small{color:var(--muted);font-size:11px}main{max-width:1440px;margin:auto;padding:0 40px}.topbar{border-bottom:1px solid #ffffff12;justify-content:space-between;align-items:center;height:96px;display:flex}.brand{color:inherit;letter-spacing:.12em;align-items:center;gap:13px;font:600 23px Noto Serif JP,serif;text-decoration:none;display:flex}.brand small{letter-spacing:.28em;margin-top:5px;font:10px Noto Sans JP,sans-serif;display:block}.brand-mark{color:var(--gold);border:1px solid #b59d69;border-radius:3px;padding:3px 9px;font-size:26px}.top-actions{align-items:center;gap:12px;display:flex}.offline{color:#9dbcb0;letter-spacing:.08em;margin-right:14px;font-size:11px}.eyebrow{color:var(--gold);letter-spacing:.2em;font-size:11px}.lobby{max-width:1100px;margin:auto;padding:76px 0 50px;position:relative}.lobby h1{letter-spacing:.08em;margin:20px 0;font-size:clamp(38px,5vw,64px);font-weight:500;line-height:1.65}.lobby em{color:var(--gold);font-style:normal}.lobby p{color:#b8c6c0;font-size:15px;line-height:2.2}.hero-tiles{gap:12px;display:flex;position:absolute;top:125px;right:5%;transform:rotate(-13deg)}.hero-tiles .tile{width:78px;height:114px;font-size:40px;box-shadow:8px 18px #03151550}.hero-tiles .tile:nth-child(3){transform:translateY(-25px)}.hero-tiles .tile i{font-size:22px}.lobby-actions{gap:12px;margin:32px 0 60px;display:flex}.lobby-actions .primary{padding:18px 30px}.lobby-actions span{margin-left:45px}.facts{color:var(--muted);border-top:1px solid #ffffff1a;gap:65px;padding-top:30px;font-size:12px;display:flex}.facts strong{color:#e2e7dd;letter-spacing:.05em;margin-bottom:8px;font-size:15px;display:block}.game-heading{justify-content:space-between;align-items:center;padding:25px 0 20px;display:flex}.game-heading h1{margin:7px 0 0;font-size:28px}.game-heading h1 small{font:14px Noto Sans JP,sans-serif}.status-pill{color:#d8d6b6;background:#bbaf5320;border:1px solid #a5a87455;border-radius:20px;padding:8px 16px;font-size:12px}.game-layout{grid-template-columns:minmax(0,1fr) 245px;gap:24px;display:grid}.table{background:radial-gradient(#24514b,#153c3b);border:8px solid #25423f;border-radius:20px;outline:1px solid #587465;grid-template-rows:176px 150px 125px;grid-template-columns:1fr 1.05fr 1fr;gap:12px;min-height:515px;padding:22px 24px 32px;display:grid;position:relative;box-shadow:inset 0 0 60px #09242380,0 12px 40px #0003}.opponent{border-radius:8px;min-width:0;padding:8px}.opponent.active{background:#ffffff08;outline:1px solid #d4bd6e50}.opponent.seat-2{grid-area:1/2}.opponent.seat-3{grid-area:2/1}.opponent.seat-1{grid-area:2/3}.player-label{white-space:nowrap;align-items:center;gap:9px;font-size:12px;display:flex}.player-label small{font-size:9px;line-height:1.8;display:block}.player-label strong{color:#e6d7aa;letter-spacing:.02em;margin-left:auto;font-size:15px}.avatar{background:#32534e;border:1px solid #b6ad7170;border-radius:50%;place-items:center;width:32px;height:32px;font:17px Noto Serif JP,serif;display:grid}.avatar-1{background:#425451}.avatar-2{background:#394a65}.avatar-3{background:#6a4541}.concealed{gap:2px;margin:10px 0 8px;display:flex}.concealed span{background:linear-gradient(135deg,#496d67,#2c5551);border:1px solid #60897d;border-bottom:3px solid #143f3b;border-radius:2px;flex:1;max-width:15px;height:20px}.tile{color:#263f3b;vertical-align:middle;background:linear-gradient(120deg,#fffef1,#dddcc5);border:1px solid #e2ddc5;border-bottom:5px solid #a4b29b;border-radius:5px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:45px;height:63px;padding:2px 0 4px;font:700 27px Noto Serif JP,serif;display:inline-flex;position:relative;box-shadow:0 2px 2px #0004}.tile:disabled{opacity:1}.tile i{font:600 13px/1.2 Noto Serif JP,serif}.tile.m{color:#903d35}.tile.p{color:#34587a}.tile.s{color:#25694e}.tile.z{color:#315347}.tile.back{background:repeating-linear-gradient(45deg,#4b7064 0 3px,#42675a 3px 6px);border:1px solid #7f9985;border-bottom:5px solid #284c42}.tile.back:after{content:"◇";color:#b5cba8;font-size:25px}.tile:hover:not(:disabled){background:#fff9ce;transform:translateY(-5px)}.tile.selected{outline:3px solid var(--gold);outline-offset:1px;transform:translateY(-5px)}.tile-wrap{flex-direction:column;align-items:center;display:inline-flex;position:relative}.tile-wrap--hidden{filter:drop-shadow(0 0 6px #d4a017aa)}.hidden-badge{background:var(--gold);color:#1a1100;white-space:nowrap;pointer-events:none;z-index:1;border-radius:3px;padding:1px 5px;font-size:10px;font-weight:700;position:absolute;top:-20px;left:50%;transform:translate(-50%)}.tile.small{border-bottom-width:3px;border-radius:3px;width:23px;height:32px;font-size:15px}.tile.small i{font-size:8px}.river{flex-wrap:wrap;gap:3px;max-width:160px;display:flex}.river .called{opacity:.25}.table-center{text-align:center;color:#b1c8b7;background:#173b36b3;border:1px solid #8ea17b40;border-radius:12px;grid-area:2/2;align-self:center;padding:13px 5px}.table-center>span{letter-spacing:.3em;font-size:10px}.table-center>strong{letter-spacing:.15em;color:#ddcfab;margin:3px 0 7px;font:500 21px Noto Serif JP,serif;display:block}.table-center>div{font-size:12px}.table-center b{color:#ecdcab;font-size:19px}.table-center>small{font-size:10px}.dora{justify-content:center;align-items:center;gap:3px;margin:9px 0 2px;font-size:11px;display:flex}.dora small{margin-right:5px;font-size:9px}.own-river{grid-area:3/2;place-self:end center}.table-edge{text-align:center;color:#a6b39460;letter-spacing:.5em;font-size:8px;position:absolute;bottom:8px;left:0;right:0}.side-panel{background:#12282c;border:1px solid #ffffff12;border-radius:12px;flex-direction:column;padding:22px 18px;display:flex}.side-panel h2{border-bottom:1px solid #ffffff17;margin-bottom:0;padding-bottom:14px;font:500 14px Noto Sans JP,sans-serif}.log{height:205px;margin:10px 0;overflow:auto}.log p{color:#9eb2ac;border-left:2px solid #36574d;margin:12px 0;padding-left:10px;font-size:11px;line-height:1.7}.log p.latest{color:#d9d2ad;border-color:var(--gold)}.tip{border-top:1px solid #ffffff17;margin-top:auto;padding-top:16px}.tip span{color:var(--gold);font-size:10px}.tip p{color:#b2bfba;margin:8px 0 15px;font-size:11px;line-height:1.9}.auto{color:#c4cdc4;font-size:10px;line-height:1.8}.auto input{accent-color:var(--gold);vertical-align:middle}.auto small{margin:5px 0 0 22px;font-size:9px;display:block}.hand-panel{background:#193136;border:1px solid #ffffff18;border-radius:12px;margin:22px 0;padding:18px 25px}.hand-heading{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.hand-heading .player-label{min-width:230px}.hand-heading .player-label strong{font-size:21px}.hand-heading .player-label strong small{display:inline}.hand-hint{color:#b5c1b4;font-size:11px}.hand-scroll{justify-content:center;align-items:center;gap:20px;padding:7px 5px 13px;display:flex;overflow-x:auto}.hand{gap:5px;display:flex}.hand>.tile.drawn{margin-left:8px}.melds{flex-wrap:wrap;gap:6px;display:flex}.meld{gap:1px;display:inline-flex}.action-bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;min-height:45px;margin-top:12px;display:flex}.action-bar button{font-size:12px}.reaction-tile{align-items:center;gap:9px;margin-right:6px;font-size:12px;display:inline-flex}.waiting{color:#b5c0b7;font-size:12px}.error{color:#ffad94;text-align:center;font-size:13px}.overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10;background:#041217c9;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{text-align:center;background:linear-gradient(140deg,#223d3e,#142c31);border:1px solid #b5a47280;border-radius:16px;width:min(700px,100%);max-height:90dvh;padding:34px;overflow-y:auto;box-shadow:0 25px 100px #0009}.dialog h2{margin:14px 0 18px}.dialog p{color:#c1ccc3;font-size:13px;line-height:1.9}.dialog>small{line-height:1.8;display:block}.claim-price{color:var(--gold);margin:12px 0 24px;font:500 25px Noto Serif JP,serif}.exposed{flex-wrap:wrap;justify-content:center;gap:4px;margin:18px 0;padding-top:5px;display:flex}.dialog .tile{width:38px;height:54px;font-size:23px}.dialog .tile.small{width:25px;height:35px;font-size:15px}.vote-actions{gap:14px;margin:28px 0 20px;display:flex}.vote-actions button{flex:1;font-weight:600}.score-list{text-align:left;margin:25px 0}.dialog .score-explanation{color:#e3e7db;background:#ffffff0b;border-radius:8px;margin:22px 0 0;padding:10px 12px;font-size:13px}.score-list>div{border-bottom:1px solid #ffffff16;align-items:center;gap:18px;padding:13px 4px;font-size:14px;display:flex}.score-list>div>span{flex:1}.score-list small{margin-left:12px}.score-list strong{text-align:right;min-width:80px}.positive{color:#a5d9b2}.negative{color:#f3a08c}.wide{width:100%;margin-top:14px;display:block}.result-dialog{background:radial-gradient(at 100% 0,#345978,#14243e 65%,#0d172a);border:1px solid #c9ad78;width:min(850px,100%);box-shadow:0 24px 90px #0009,inset 0 0 60px #668cba12}.winner-heading{justify-content:center;align-items:center;gap:22px;margin:22px 0;display:flex}.winner-heading h2{margin:4px 0 0}.winner-emblem{color:#f2ce83;text-shadow:0 3px 18px #e3ab5566;border-block:1px solid #dfbd77;padding:10px 0;font:700 36px Noto Serif JP,serif}.hand-breakdown{grid-template-columns:1fr auto;align-items:center;gap:24px;margin:24px 0;display:grid}.result-yaku{text-align:left;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 20px;margin:0;padding:0;list-style:none;display:grid}.result-yaku li{background:#07132a45;border-bottom:1px solid #b9cee72b;justify-content:space-between;align-items:center;gap:12px;padding:10px;display:flex}.result-yaku strong{color:#f2ce83;white-space:nowrap}.han-total{color:#f2ce83;min-width:72px}.han-total b{font-size:42px}.han-total small{color:#d5deeb}.win-score{text-align:left;background:linear-gradient(105deg,#372734,#0b1325 75%);border-block:2px solid #d4ac64;justify-content:space-between;align-items:center;gap:12px;padding:18px 24px;display:flex}.win-score>span{color:#f1bf70;font:700 30px Noto Serif JP,serif}.win-score>span small{margin-top:8px;font:11px sans-serif;display:block}.win-score>strong{letter-spacing:-.04em;font-size:clamp(32px,6vw,54px);font-style:italic}.win-score>strong small{color:#e8ede6;margin-left:8px;font-size:18px}.dialog .claimed-score{margin:14px 0;font-size:12px}.transfer-table{grid-template-rows:repeat(3,auto);grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:12px;margin:24px 0;display:grid;position:relative}.transfer-card{text-align:right;background:linear-gradient(145deg,#314d76,#111d35);border:1px solid #97aac6;border-radius:2px 16px;grid-template-columns:auto 1fr;gap:4px 10px;min-width:0;padding:12px;display:grid;box-shadow:0 8px 24px #0005}.transfer-card.gained{border-color:#edc986;box-shadow:0 0 22px #e8be5125}.transfer-card.seat-0{grid-area:3/2}.transfer-card.seat-1{grid-area:2/3}.transfer-card.seat-2{grid-area:1/2}.transfer-card.seat-3{grid-area:2/1}.rank{color:#dfbd77;white-space:nowrap;grid-row:1/4;align-self:center;font-family:serif}.rank b{font-size:42px;font-style:italic}.transfer-name{overflow-wrap:anywhere;font-size:13px}.transfer-name small{display:block}.transfer-delta{font-size:20px}.previous-score{grid-column:2}.current-score{font-variant-numeric:tabular-nums;grid-column:1/-1;font-size:clamp(24px,3vw,34px)}.current-score small{color:#d5deeb;margin-left:5px}.transfer-center{color:#dfbd77;grid-area:2/2;font-size:20px}.transfer-center small{margin-top:6px;display:block}@media (width<=600px){.hand-breakdown{gap:12px}.result-yaku{grid-template-columns:1fr;gap:2px}.win-score{padding:14px 12px}.win-score>span{font-size:23px}.transfer-table{grid-template-rows:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.transfer-card.seat-0,.transfer-card.seat-1,.transfer-card.seat-2,.transfer-card.seat-3{grid-area:auto}.transfer-center{grid-area:auto/1/auto/-1}.transfer-card{gap:4px 6px;padding:10px}.rank b{font-size:32px}.transfer-delta{font-size:18px}}@media (prefers-reduced-motion:no-preference){.transfer-card{animation:.4s ease-out both score-arrive}.transfer-card.seat-1{animation-delay:80ms}.transfer-card.seat-2{animation-delay:.16s}.transfer-card.seat-3{animation-delay:.24s}@keyframes score-arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}.yaku{background:#ffffff08;border-radius:5px;padding:10px}.field{text-align:left;margin:20px 0;font-size:13px;display:block}.field select{color:#e6e8d6;background:#12292e;border:1px solid #697a65;border-radius:6px;width:100%;margin-top:10px;padding:12px;display:block}.rules{text-align:left}.dialog-heading{z-index:1;background:#223b3d;justify-content:space-between;align-items:center;padding:10px 0;display:flex;position:sticky;top:-34px}.dialog-heading h2{margin:0;font-size:24px}.rules h3{color:var(--gold);margin:24px 0 12px;font-size:16px}.rule-example{border-left:3px solid var(--gold);background:#ffffff08;padding:16px;font-size:12px;line-height:2}footer{color:#7c938e;letter-spacing:.1em;justify-content:space-between;padding:22px 0 30px;font-size:10px;display:flex}footer span{font-size:9px}@media (width>=1250px){.table{grid-template-rows:176px 150px 125px}.river{max-width:182px}.tile.small{width:26px;height:36px}.opponent .player-label{font-size:14px}}@media (width<=1000px){main{padding:0 22px}.game-layout{grid-template-columns:1fr}.side-panel{display:none}.hero-tiles{top:200px;right:0}.hero-tiles .tile{width:50px;height:80px}.table{min-height:490px}.hand-panel{padding:18px}.offline{display:none}}@media (width<=650px){main{padding:0 12px}.topbar{height:74px}.brand{gap:8px;font-size:18px}.brand-mark{font-size:22px}.brand small{font-size:8px}.top-actions{gap:6px}.top-actions button{padding:7px 9px;font-size:11px}.game-heading{padding:19px 0 14px}.game-heading h1{font-size:23px}.eyebrow{letter-spacing:.12em;font-size:9px}.status-pill{padding:7px 10px;font-size:10px}.table{border-width:5px;border-radius:13px;grid-template-rows:135px 154px 118px;grid-template-columns:1fr 1.1fr 1fr;gap:5px;min-height:455px;padding:12px 5px 25px}.opponent{padding:3px}.player-label{flex-wrap:wrap;gap:4px;font-size:10px}.player-label .avatar{width:25px;height:25px;font-size:14px}.opponent .player-label strong{text-align:center;width:100%;font-size:13px}.player-label small{font-size:8px}.concealed{gap:1px;margin:5px 0}.concealed span{border-bottom-width:2px;height:15px}.tile.small{border-bottom-width:2px;width:17px;height:25px;font-size:11px}.tile.small i{font-size:6px}.river{gap:2px;max-width:112px}.table-center{padding:10px 1px}.table-center>strong{letter-spacing:.04em;font-size:16px}.table-center>div{font-size:10px}.table-center b{font-size:15px}.table-center .dora{flex-wrap:wrap}.dora small{font-size:8px}.table-edge{font-size:7px}.hand-panel{margin-top:15px;padding:12px 8px}.hand-heading{align-items:flex-start;gap:8px;margin-bottom:8px}.hand-heading .player-label{flex-wrap:nowrap;gap:6px;min-width:155px}.hand-heading .player-label strong{font-size:17px}.hand-hint{text-align:right;max-width:135px;font-size:9px}.hand-scroll{flex-wrap:wrap;justify-content:flex-start;gap:7px;padding:7px 3px 10px}.hand{justify-content:center;gap:3px;width:100%}.hand .tile{border-bottom-width:3px;border-radius:3px;width:calc(7.14286vw - 6.71429px);max-width:38px;height:44px;font-size:19px}.hand .tile i{font-size:10px}.hand>.tile.drawn{margin-left:4px}.action-bar{gap:6px;margin-top:8px}.action-bar button{padding:11px 10px;font-size:11px}.reaction-tile{font-size:10px}.overlay{padding:12px}.dialog{border-radius:12px;max-height:94dvh;padding:22px 15px}.dialog h2{font-size:24px}.dialog .exposed{gap:3px}.dialog .tile{border-bottom-width:3px;width:27px;height:41px;font-size:19px}.dialog .tile i{font-size:9px}.dialog p{font-size:12px}.claim-price{font-size:23px}.score-list>div{gap:10px;font-size:12px}.score-list small{margin:3px 0 0;display:block}.dialog-heading{top:-22px}.dialog-heading h2{font-size:20px}.dialog-heading button{padding:8px;font-size:11px}.lobby{padding-top:42px}.lobby h1{letter-spacing:.025em;font-size:34px}.lobby p{font-size:12px}.hero-tiles{justify-content:center;margin:42px 0;position:relative;top:auto;right:auto}.hero-tiles .tile{width:50px;height:74px;font-size:30px}.hero-tiles .tile i{font-size:15px}.lobby-actions{flex-direction:column;margin-bottom:35px}.facts{flex-wrap:wrap;gap:20px}.facts strong{font-size:12px}.facts span{font-size:10px}footer{gap:15px;padding:18px 0;line-height:1.8}footer span{text-align:right;max-width:210px;font-size:8px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}@media (width<=1000px){.side-panel{padding:10px 14px;display:block}.side-panel>h2,.side-panel>.log,.side-panel>.tip{display:none}.side-panel .auto{font-size:11px}.side-panel .auto small{margin-left:8px;display:inline}.game-layout{gap:12px}}.tile:not(.back){box-shadow:none;background:0 0;border:0;padding:0}.tile img{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.tile:not(.back):hover:not(:disabled){filter:brightness(1.06);background:0 0}.tile.selected{border-radius:5px;box-shadow:0 5px 14px #d4bd6e55}body:has(.game-screen){padding:0;overflow:hidden}.game-screen{--tile-w:clamp(12px, 3.8cqh, 29px);background:radial-gradient(at 50% 42%,#326861,#173d3d 60%,#10282e);border:5px solid #253035;width:100dvw;max-width:none;height:100dvh;margin:0;padding:0;position:fixed;inset:0;overflow:hidden;box-shadow:inset 0 0 0 1px #ba996653,inset 0 0 100px #03121d;container-type:size}.game-screen .topbar{z-index:2;background:linear-gradient(#101d29e6,#101d2900);border:0;height:9cqh;min-height:32px;padding:0 2cqw;position:absolute;top:0;left:0;right:0}.game-screen .brand{gap:8px;font-size:clamp(14px,2.8cqh,22px)}.game-screen .brand-mark{font-size:inherit;padding:1px 5px}.game-screen .brand small,.game-screen .offline,.game-screen footer{display:none}.game-screen .top-actions button{padding:5px 12px;font-size:clamp(10px,2cqh,13px)}.game-screen .game-heading{z-index:2;padding:0;display:block;position:absolute;top:11cqh;left:2cqw}.game-screen .game-heading .eyebrow{letter-spacing:.1em;font-size:clamp(8px,1.6cqh,11px)}.game-screen .game-heading h1{margin:5px 0 10px;font-size:clamp(18px,3.5cqh,28px)}.game-screen .status-pill{border-radius:4px;padding:5px 10px;font-size:clamp(9px,1.7cqh,12px)}.game-screen .game-layout{display:contents}.game-screen .table{min-height:0;box-shadow:none;background:radial-gradient(#ffffff05,#0000 70%);border:0;border-radius:0;outline:0;padding:0;display:block;position:absolute;inset:6cqh 17cqw 26cqh}.game-screen .opponent{border-radius:6px;width:28%;padding:0;position:absolute}.game-screen .opponent.active{background:0 0;outline:none}.game-screen .opponent.active .player-label{border-color:#f3cf7b;box-shadow:0 0 18px #e3b04f40}.game-screen .opponent.seat-2{top:0;left:36%}.game-screen .opponent.seat-3{top:34%;left:-18%}.game-screen .opponent.seat-1{top:34%;right:-18%}.game-screen .player-label{flex-wrap:nowrap;gap:7px;font-size:clamp(10px,2cqh,14px)}.game-screen .opponent .player-label{background:linear-gradient(110deg,#16222dea,#233b48e0);border:1px solid #a8b8bc40;padding:6px 9px;box-shadow:0 5px 12px #0003}.game-screen .player-label strong{width:auto;font-size:clamp(12px,2.7cqh,20px)}.game-screen .player-label small{font-size:clamp(8px,1.5cqh,10px)}.game-screen .avatar{border-radius:5px;width:5.4cqh;min-width:24px;height:5.4cqh;min-height:24px;font-size:clamp(14px,3cqh,23px)}.game-screen .concealed{justify-content:center;gap:2px;margin:5px 0}.game-screen .concealed span{background:linear-gradient(#7299c9,#345b89);border-color:#8ca5c0 #8ca5c0 #1d3a5e;border-bottom-style:solid;border-bottom-width:3px;max-width:18px;height:3cqh}.game-screen .river{grid-template-columns:repeat(6, var(--tile-w));gap:1px;width:max-content;max-width:none;margin:auto;display:grid}.game-screen .tile.small{width:var(--tile-w);height:calc(var(--tile-w) * 1.4)}.game-screen .opponent.seat-2 .river{transform:rotate(180deg)}.game-screen .opponent.seat-3 .river{position:absolute;top:4cqh;left:103%;transform:rotate(90deg)}.game-screen .opponent.seat-1 .river{position:absolute;top:4cqh;right:103%;transform:rotate(-90deg)}.game-screen .table-center{background:linear-gradient(145deg,#132732,#243d43);border:2px solid #a9b7b14a;border-radius:6px;width:24%;padding:1.5cqh 5px;position:absolute;top:48%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px #0c2027,0 8px 20px #0004}.game-screen .table-center>span{letter-spacing:.1em;font-size:clamp(8px,1.6cqh,11px)}.game-screen .table-center>strong{letter-spacing:0;color:#eed198;margin:0;font:600 clamp(22px,5cqh,38px) serif}.game-screen .table-center>div{font-size:clamp(9px,1.8cqh,13px)}.game-screen .table-center b{font-size:clamp(13px,2.5cqh,20px)}.game-screen .table-center>small{font-size:clamp(8px,1.6cqh,11px)}.game-screen .dora{flex-wrap:nowrap;margin:4px 0 0}.game-screen .dora small{display:none}.game-screen .own-river{position:absolute;top:72%;left:50%;transform:translate(-50%)}.game-screen .table-edge{color:#d8c08f;letter-spacing:.12em;font-size:clamp(9px,1.6cqh,11px);bottom:0}.game-screen .side-panel{background:#112632a6;border-radius:6px;width:16cqw;padding:9px;display:block;position:absolute;bottom:28cqh;right:1.5cqw}.game-screen .side-panel>h2,.game-screen .side-panel>.log,.game-screen .side-panel>.tip{display:none}.game-screen .auto{margin:0;font-size:clamp(9px,1.7cqh,12px);display:block}.game-screen .auto small{margin:4px 0 0;font-size:clamp(8px,1.4cqh,10px);display:block}.game-screen .auto input{accent-color:#e4bd70}.game-screen .auto.pending{opacity:.45}.game-screen .hand-panel{height:25cqh;box-shadow:none;background:linear-gradient(#0000,#0e202bdd);border:0;border-radius:0;margin:0;padding:0 2cqw;position:absolute;bottom:0;left:0;right:0}.game-screen .hand-heading{width:17cqw;margin:0;display:block;position:absolute;bottom:3cqh;left:2cqw}.game-screen .hand-heading .player-label{gap:5px;min-width:0}.game-screen .hand-heading .player-label>span{font-size:0}.game-screen .hand-heading .player-label>span small{font-size:9px}.game-screen .hand-hint{text-align:left;max-width:none;margin-top:6px;font-size:clamp(9px,1.6cqh,11px);display:block}.game-screen .hand-scroll{flex-wrap:nowrap;justify-content:center;gap:10px;padding:10px 0 0;display:flex;overflow:visible}.game-screen .hand{justify-content:center;gap:2px;width:auto;display:flex}.game-screen .hand .tile{border-radius:3px;width:clamp(28px,7cqh,60px);max-width:none;height:clamp(40px,10cqh,85px)}.game-screen .hand .tile.drawn{margin-left:12px}.game-screen .hand .tile.selected{filter:brightness(1.13);transform:translateY(-9px)}.game-screen .action-bar{justify-content:flex-end;gap:8px;min-height:0;margin:0 0 0 20cqw;padding:0}.game-screen .action-bar button:not(.tile){border-radius:4px;padding:1.6cqh 16px;font-size:clamp(11px,2.2cqh,15px);box-shadow:0 3px #0003}.game-screen .reaction-tile,.game-screen .waiting{font-size:clamp(10px,1.9cqh,13px)}.game-screen .overlay{padding:12px;position:absolute}.game-screen .dialog{width:min(700px,88cqw);max-height:93cqh;padding:22px}.game-screen .result-dialog{width:min(850px,94cqw)}@container (height<=500px){.game-screen .result-dialog{padding:10px 16px}.result-dialog>.eyebrow{font-size:9px}.result-dialog h2{margin:4px 0;font-size:20px}.result-dialog h3,.result-dialog>p{margin:4px 0;font-size:10px}.result-dialog .score-explanation{margin:4px 0;padding:4px 8px;font-size:10px;line-height:1.4}.result-dialog button:not(.tile){padding:6px 12px;font-size:11px}.result-dialog .wide{margin-top:6px}.transfer-table{grid-template-rows:repeat(2,minmax(0,auto));grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:8px 0}.transfer-card{grid-template-rows:repeat(2,auto);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:2px 5px;padding:6px 8px}.transfer-card.seat-0{grid-area:2/1}.transfer-card.seat-1{grid-area:2/2}.transfer-card.seat-2{grid-area:1/2}.transfer-card.seat-3{grid-area:1/1}.transfer-name{text-align:left;grid-area:1/2;font-size:10px}.transfer-name small{margin-left:4px;font-size:8px;display:inline}.rank b{font-size:24px}.transfer-delta{grid-area:1/3;font-size:13px}.previous-score{text-align:left;grid-area:2/2;font-size:9px}.transfer-card .rank{grid-area:1/1/3}.current-score{grid-area:2/3;font-size:18px;line-height:1}.transfer-dialog>h2{margin-left:12px;font-size:18px;display:inline}.transfer-center{display:none}.transfer-center small{margin-top:2px}.transfer-dialog>.quiet{float:left}.transfer-dialog>.primary{width:auto;margin:0 0 0 auto}.winner-heading{gap:10px;margin:2px 0}.winner-emblem{padding:2px 0;font-size:22px}.game-screen .hand-dialog .exposed{gap:3px;margin:2px 0;padding:0}.game-screen .hand-dialog .exposed .tile{width:24px;height:34px}.game-screen .hand-dialog .exposed:empty{display:none}.hand-dialog>small{font-size:9px;line-height:1.2}.hand-breakdown{gap:12px;margin:3px 0}.result-yaku{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 12px;font-size:11px}.result-yaku li{padding:4px 8px}.han-total b{font-size:30px}.win-score{padding:3px 10px}.win-score>span{font-size:23px}.win-score>span small{margin-top:2px;font-size:9px}.win-score>strong{font-size:27px}.hand-dialog .claimed-score{margin:4px 0;line-height:1.3}}.game-screen .dialog-heading{top:-22px}.game-screen .dialog .tile{width:clamp(24px,5cqw,42px);height:clamp(35px,7cqw,60px)}.game-screen .dialog .exposed{gap:3px}.game-screen .error{z-index:30;background:#572c29;position:absolute;top:9cqh;left:25%;right:25%}@media (orientation:portrait){.game-screen{transform-origin:0 0;width:100dvh;height:100dvw;inset:0 auto auto 0;transform:translate(100dvw)rotate(90deg)}}@media (orientation:landscape) and (height<=500px){.game-screen{border-width:3px}.game-screen .side-panel .auto small{display:none}}.game-screen .opponent.seat-2 .player-label{width:100%;position:absolute;top:0;left:112%}.game-screen .table-center{line-height:1.25}@container (height<=500px){.game-screen .table-center{grid-template-columns:1fr 1fr;gap:2px;width:22%;padding:4px;display:grid}.game-screen .table-center>span{grid-column:1/-1;font-size:8px}.game-screen .table-center>strong{grid-row:2/4;align-self:center;font-size:23px}.game-screen .table-center>strong small,.game-screen .table-center>div,.game-screen .table-center>small{font-size:8px}.game-screen .table-center b{font-size:12px}.game-screen .table-center .dora{grid-column:1/-1;margin:0}.game-screen .table-center .dora .tile{width:12px;height:17px}.game-screen .game-heading h1{margin:2px 0;font-size:18px}.game-screen .game-heading .eyebrow{display:none}.game-screen .status-pill{padding:3px 5px;font-size:9px}.game-screen .hand-heading{bottom:2cqh}.game-screen .hand-heading .player-label{flex-wrap:wrap;gap:2px}.game-screen .hand-heading .player-label strong{width:100%;font-size:14px}.game-screen .hand-hint{margin-top:2px;font-size:8px}}.game-screen .table-edge{text-align:left;letter-spacing:0;left:0;right:auto}.game-screen .river>span{display:flex}.hand .tile{touch-action:manipulation}.decision-clock{color:#eed198;white-space:nowrap;font-variant-numeric:tabular-nums;align-items:baseline;gap:4px;font-size:12px;display:inline-flex}.decision-clock b{text-align:right;min-width:2ch;font-size:20px}.decision-clock.urgent{color:#ff9788}.dialog>.decision-clock{float:right;margin-left:12px}@container (height<=500px){.game-screen .top-actions{gap:7px}.game-screen .decision-clock{font-size:10px}.game-screen .decision-clock b{font-size:16px}}.game-screen{background:radial-gradient(at 50% 37%,#244653 0%,#142c3b 58%,#091720 100%);border:0;box-shadow:inset 0 0 105px #02090fd9}.game-screen .topbar{background:linear-gradient(#08131dcc,#08131d00)}.game-screen .table{background:radial-gradient(at 50% 42%,#2f6170 0%,#24505c 39%,#173845 74%,#102934 100%);border:clamp(7px,1.5cqh,15px) solid #3a3028;border-radius:clamp(18px,3cqh,34px);inset:6cqh 12cqw 26cqh;box-shadow:inset 0 0 0 2px #a6815280,inset 0 0 0 8px #0e2a35,inset 0 18px 38px #08192477,inset 0 -18px 45px #051924aa,0 4px #75553b,0 13px #2c211e,0 25px 32px #0009}.game-screen .table:before{content:"";pointer-events:none;background:linear-gradient(30deg,#0000 49.8%,#d9e6dd12 50%,#0000 50.2%),linear-gradient(150deg,#0000 49.8%,#d9e6dd12 50%,#0000 50.2%);border:1px solid #c1d3cd1c;border-radius:12px;position:absolute;inset:5%}.game-screen .table:after{content:"";border-radius:inherit;pointer-events:none;background:radial-gradient(at 50% 30%,#ffffff0c,#0000 60%);position:absolute;inset:0}.game-screen .game-heading{top:24cqh;left:1.5cqw}.game-screen .table-dora{z-index:3;color:#f2deb1;background:linear-gradient(145deg,#172631f0,#0b1921f2);border:1px solid #b6905c8c;border-radius:7px;min-width:13cqw;padding:8px 10px 10px;position:fixed;top:10cqh;left:1.5cqw;box-shadow:0 5px #463528,0 10px 20px #0008,inset 0 1px #fff2}.game-screen .table-dora>span{letter-spacing:.16em;margin-bottom:5px;font-size:clamp(9px,1.65cqh,12px);display:block}.game-screen .dora-tiles{min-height:calc(var(--tile-w) * 1.4);gap:2px;display:flex}.game-screen .dora-tiles .tile{filter:drop-shadow(1px 3px 1px #0009);width:clamp(18px,3.6cqh,30px);height:clamp(25px,5cqh,42px)}.game-screen .opponent.seat-2{width:42%;top:2%;left:29%}.game-screen .opponent.seat-2 .player-label{width:58%;left:105%}.game-screen .opponent.seat-2 .concealed{margin-top:0}.game-screen .opponent.seat-3,.game-screen .opponent.seat-1{width:16%;height:57%;top:21%}.game-screen .opponent.seat-3{left:3%}.game-screen .opponent.seat-1{right:3%}.game-screen .opponent.seat-3 .concealed,.game-screen .opponent.seat-1 .concealed{flex-direction:column;justify-content:center;gap:1px;margin:0;display:flex;position:absolute;top:0;bottom:0}.game-screen .opponent.seat-3 .concealed{left:0}.game-screen .opponent.seat-1 .concealed{right:0}.game-screen .opponent.seat-3 .concealed span,.game-screen .opponent.seat-1 .concealed span{background:linear-gradient(90deg,#d1d8d4 0 13%,#496d91 14% 86%,#244568 87%);border:1px solid #b7c9d0;border-bottom:3px solid #263d51;border-radius:2px;flex:1 1 0;width:clamp(14px,2.7cqh,23px);max-height:3cqh;box-shadow:2px 2px 2px #0007}.game-screen .opponent.seat-2 .concealed span{background:linear-gradient(#4c7497 0 72%,#d6d6c8 73% 86%,#385164 87%);max-width:clamp(13px,2.8cqh,24px);height:clamp(13px,2.8cqh,24px);box-shadow:2px 3px 3px #0008}.game-screen .opponent.seat-3 .player-label,.game-screen .opponent.seat-1 .player-label{width:18cqw;position:absolute;bottom:-7cqh}.game-screen .opponent.seat-3 .player-label{left:-1cqw}.game-screen .opponent.seat-1 .player-label{right:-1cqw}.game-screen .opponent.seat-3 .river{top:24%;left:55%}.game-screen .opponent.seat-1 .river{top:24%;right:55%}.game-screen .opponent .player-label{background:linear-gradient(135deg,#132736ed,#253d46ed);border:1px solid #c0a37970;border-radius:5px;box-shadow:0 4px #0a1b21,0 8px 14px #0006}.game-screen .table-center{background:radial-gradient(circle at 50% 35%,#2c4144,#111d2b 75%);border:3px solid #85765c;border-radius:9px;width:clamp(100px,19%,220px);padding:1.5cqh 5px;top:49%;box-shadow:inset 0 0 0 2px #102a31,inset 0 0 16px #0009,0 5px #3d3830,0 11px 18px #0008}.game-screen .table-center>strong{color:#f0cf82;text-shadow:0 2px 8px #d6a75688}.game-screen .tile.small:not(.back){filter:drop-shadow(1px 3px 1px #0008)}.game-screen .own-river{top:71%}.game-screen .table-edge{text-shadow:0 1px 3px #000;bottom:3%;left:3%}.game-screen .hand-panel{background:linear-gradient(#0000,#101b22e8 26%,#14232cf7);box-shadow:inset 0 1px #ffffff10}.game-screen .hand .tile{filter:drop-shadow(2px 5px 2px #0009)}@container (height<=500px){.game-screen .game-heading{top:35cqh}.game-screen .table-dora{padding:5px 7px 7px}.game-screen .table-dora>span{margin-bottom:2px}.game-screen .opponent.seat-3 .player-label,.game-screen .opponent.seat-1 .player-label{bottom:-13cqh}.game-screen .table-center{width:19%}}
