:root{color-scheme:dark;--ink:#edf0df;--muted:#9db2a5;--gold:#d9ba77;--deep:#0d2723;--felt:#21594a;--line:rgba(225,221,190,.15);--tile-w:clamp(29px,4.1vw,52px);font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0;background:#102e28;background-image:radial-gradient(ellipse at 20% 20%,#234f3c55,transparent 60%),radial-gradient(ellipse at 90% 100%,#142522,transparent 60%);color:var(--ink);min-height:100svh}button,input{font:inherit}button{cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{cursor:default;opacity:.42}button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button{border:0;background:none}input{min-width:0;width:100%;border:1px solid #68817255;background:#112d27;border-radius:10px;padding:16px;color:var(--ink);outline:none}input::placeholder{color:#829a8d}input:focus{border-color:var(--gold)}.hidden{display:none!important}.app-header{height:84px;padding:0 clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:5}.brand{display:flex;align-items:center;gap:13px;text-align:left;letter-spacing:2px;font-weight:650;font-size:21px;padding:0}.brand small{display:block;color:var(--muted);font-size:10px;font-weight:400;letter-spacing:2px;margin-top:5px}.brand-tile{display:grid;place-items:center;width:35px;height:45px;border-radius:5px;background:#f0eddf;color:#b54738;font-family:serif;font-size:29px;border-bottom:4px solid #a7b49b;box-shadow:0 4px 8px #0003}.header-tools{display:flex;align-items:center;gap:20px}.connection{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;white-space:nowrap}.connection i{width:6px;height:6px;border-radius:50%;background:#bba166}.connection.online i{background:#8bc79d;box-shadow:0 0 9px #8bc79d55}.icon-button{padding:8px;color:#c2cdbd;display:grid;place-items:center}.icon-button svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.6}.quiet-button{color:#d3d8c4;font-size:12px;padding:8px 0}.home-screen{max-width:1160px;padding:70px 40px 28px;margin:0 auto;display:grid;grid-template-columns:1.15fr 1fr;gap:6vw}.welcome{padding:30px 0;position:relative}.eyebrow{font-size:11px;letter-spacing:3px;color:#bec79e;display:flex;align-items:center;gap:13px}.eyebrow:before{content:"";height:1px;width:26px;background:var(--gold)}h1{font-family:"Songti SC","Noto Serif CJK SC",SimSun,serif;font-weight:500;letter-spacing:3px;font-size:clamp(40px,4.5vw,64px);line-height:1.45;margin:28px 0 20px}h1>span{color:var(--gold)}.welcome>p{line-height:2.1;color:#b6c5b2;font-size:14px;letter-spacing:1px}.hero-tiles{height:182px;position:relative;margin-top:8px;margin-left:42px;perspective:800px}.hero-tile{width:90px;height:129px;position:absolute;top:22px;border-radius:11px;box-shadow:0 8px 0 #a1b39c,0 11px 0 #577c62,8px 18px 22px #05150e66;background:linear-gradient(130deg,#fffbed,#dddcc9);display:flex;align-items:center;justify-content:center;color:#af3f31;font-family:serif;font-size:61px;transform:rotate(-13deg);border:1px solid #fff9}.hero-tile.first{left:0;color:#244d42;flex-direction:column;font-size:40px;gap:0}.hero-tile.first small{color:#aa3b2c;font-size:35px;line-height:.9}.hero-tile.second{left:92px;top:12px;transform:rotate(-3deg);z-index:2}.hero-tile.third{left:185px;top:24px;transform:rotate(12deg);font:33px/.95 serif;text-align:center;color:#28594a}.home-footnote{display:flex;gap:12px;align-items:center;color:#9eb19d;font-size:11px;letter-spacing:1px;margin-top:20px}.home-footnote b{color:#b79d66;font-weight:400}.entry-card{align-self:center;background:linear-gradient(145deg,#284d3fbb,#1a3a30bb);border:1px solid #b5c1a62b;padding:32px;border-radius:20px;box-shadow:0 24px 60px #061b1933}.card-heading{display:flex;align-items:center;gap:14px;margin-bottom:28px}.section-number{font-family:Georgia,serif;color:#cbb378;font-size:31px;opacity:.7;border-right:1px solid var(--line);padding-right:14px}.card-heading h2{font-size:20px;letter-spacing:2px;font-weight:500;margin:0 0 6px}.card-heading p{margin:0;font-size:11px;color:var(--muted)}.field-label{display:block;font-size:11px;letter-spacing:1px;color:#becab7;margin:17px 0 9px}.primary-button{background:linear-gradient(110deg,#e3c78e,#ccb075);color:#253b2b;font-weight:650;border:1px solid #e8d8a3;border-radius:10px;padding:13px 22px;box-shadow:0 4px 14px #0002}.primary-button:hover:not(:disabled){filter:brightness(1.06)}.big-button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:17px 20px;margin-top:22px}.big-button>span:last-child{font-size:21px;font-weight:400}.entry-divider{display:flex;align-items:center;gap:14px;color:#91a793;font-size:10px;letter-spacing:1px;margin-top:26px}.entry-divider:before,.entry-divider:after{content:"";height:1px;flex:1;background:var(--line)}.join-row{display:flex;gap:10px}.join-row input{font-variant-numeric:tabular-nums;letter-spacing:2px}.join-row input::placeholder{letter-spacing:0;font-size:12px}.secondary-button{background:#b3b99817;border:1px solid #acb89b5c;border-radius:10px;padding:12px 22px;color:#d9dfc8;white-space:nowrap}.practice-button{display:flex;align-items:center;text-align:left;gap:14px;margin-top:25px;padding:18px 0 0;width:100%;border-top:1px solid var(--line);font-size:12px;color:#d2d9bf}.practice-button small{display:block;font-size:10px;font-weight:400;color:#8fa58f;margin-top:6px}.practice-button>span:last-child{margin-left:auto;color:#b9b47f}.practice-icon{font-size:28px;color:#b9b47f}.home-bottom{grid-column:1/-1;display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:24px;color:#7f9d8a;font-size:11px}.home-bottom button{color:#b4b99c;font-size:11px;padding:0}.resume-button{background:#688d6240;border:1px solid #99ac7455;border-radius:8px;padding:12px;width:100%;margin-top:16px;font-size:12px;color:#dfdfb9}.room-code{border:1px solid #b0c0a940;padding:8px 12px;border-radius:7px;color:#e6d3a0;font-variant-numeric:tabular-nums;font-size:12px;letter-spacing:1px}
.game-screen{height:calc(100svh - 84px);max-height:1100px;padding:0 24px 10px;display:flex;flex-direction:column}.table-topline{height:40px;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:1px;color:#a3b69f;flex-shrink:0;padding:0 8px}.table-topline button{font-size:10px;color:#bfc7ab}.orientation-note{display:none}.table-frame{position:relative;flex:1;min-height:220px;border:10px solid #142e26;border-radius:32px;background:radial-gradient(ellipse at center,#2d6a56,#1d5143 75%);box-shadow:inset 0 0 0 2px #68917144,inset 0 0 70px #092e2677,0 0 0 1px #91a48122,0 12px 30px #06191455;overflow:hidden}.felt-grain{pointer-events:none;position:absolute;inset:0;opacity:.15;background-image:repeating-linear-gradient(0deg,#ffffff0a 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,#ffffff10 0 1px,transparent 1px 3px)}.table-watermark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:serif;font-size:90px;opacity:.06;text-align:center;letter-spacing:16px;pointer-events:none;white-space:nowrap}.table-watermark>span{display:block;font:12px sans-serif;letter-spacing:6px}.player{position:absolute;z-index:2;display:flex;flex-direction:column;gap:6px;align-items:center;max-width:260px}.player-top{left:50%;top:14px;transform:translateX(-50%)}.player-left{left:18px;top:42%;transform:translateY(-50%);align-items:flex-start;max-width:25%}.player-right{right:18px;top:42%;transform:translateY(-50%);align-items:flex-end;max-width:25%}.player-head{display:flex;gap:9px;align-items:center;padding:6px 10px;border-radius:12px;background:#123d3470;border:1px solid #9ab38a2a;min-width:118px;position:relative}.player-head.active{border-color:#dec38c99;box-shadow:0 0 0 3px #d3bb7b14}.avatar{width:30px;height:30px;flex-shrink:0;border-radius:9px;border:1px solid #bfc6a137;background:#64826b55;display:grid;place-items:center;color:#e5d8b3;font-family:serif;font-size:19px}.player-info{min-width:0}.player-name{font-size:11px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-score{font-size:11px;font-variant-numeric:tabular-nums;color:#c1d1b7;margin-top:3px}.player-status{color:#86a18e;font-size:9px;margin-left:5px}.dealer-badge,.ready-badge{display:inline-grid;place-items:center;border-radius:4px;font-size:9px;padding:2px 4px;flex-shrink:0;background:#c8ad6d;color:#253c2e}.ready-badge{background:#729878;color:#f2f3d8}.player-tags{display:flex;gap:4px;margin-left:auto}.back-hand{display:flex;gap:1px;max-width:100%;height:20px;overflow:hidden}.back-hand .tile{width:12px;height:18px;--depth:2px;border-radius:2px;flex-shrink:0}.back-hand .back-mark{font-size:6px}.side-hand{font-size:9px;color:#98b59b}.melds{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;max-width:260px}.meld-group{display:inline-flex;gap:1px;position:relative}.meld-group .tile{width:18px;height:25px;--depth:2px;border-radius:3px}.meld-group .tile-face{padding:1px}.meld-group .wan-number{font-size:11px}.meld-group .wan-label{font-size:10px}.meld-group .red-dragon{font-size:20px}.meld-group .back-mark{font-size:10px}.meld-tag{position:absolute;bottom:-9px;right:0;font-size:8px;color:#c8d1b0;white-space:nowrap}.player-self{position:absolute;left:16px;bottom:12px;z-index:2}.player-self .player-head{min-width:110px}.own-melds{position:absolute;bottom:18px;left:160px;right:20px;display:flex;justify-content:flex-end;gap:12px}.own-melds .meld-group .tile{width:25px;height:35px}.own-melds .wan-number{font-size:15px}.own-melds .wan-label{font-size:12px}.own-melds .red-dragon{font-size:26px}.river-layout{position:absolute;inset:0;pointer-events:none}.river{position:absolute;display:grid;grid-template-columns:repeat(6,1fr);gap:2px;max-width:220px;align-content:start}.river .tile{width:clamp(17px,2.2vw,28px);height:clamp(24px,3vw,39px);--depth:2px;border-radius:3px}.river .tile-face{padding:1px}.river .wan-number{font-size:clamp(11px,1.4vw,17px)}.river .wan-label{font-size:clamp(9px,1.2vw,15px)}.river .red-dragon{font-size:clamp(18px,2.6vw,29px)}.river .claimed{opacity:.14;box-shadow:none}.river .recent{box-shadow:0 0 0 2px #e6c982,0 3px 0 #7f9577}.river-top{top:24%;left:50%;transform:translateX(-50%)}.river-bottom{bottom:21%;left:50%;transform:translateX(-50%)}.river-left{left:17%;top:43%;transform:translateY(-20%);grid-template-columns:repeat(4,1fr)}.river-right{right:17%;top:43%;transform:translateY(-20%);grid-template-columns:repeat(4,1fr)}.table-center{position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);text-align:center;z-index:3}.center-hub{display:flex;gap:12px;align-items:center;padding:12px 16px;background:#163c32eb;border:1px solid #a6b68e66;border-radius:13px;box-shadow:0 5px 20px #092b2944}.remaining-number{font:27px/1.1 Georgia,serif;color:#e1d7b2;min-width:32px}.remaining-number small{display:block;font:8px/1.5 sans-serif;color:#a1b398;margin-top:4px}.treasure-wrap{border-left:1px solid var(--line);padding-left:12px;position:relative;display:flex;flex-direction:column;align-items:center;gap:4px}.treasure-wrap>.tile{width:28px;height:38px;--depth:2px;border-radius:4px}.treasure-wrap .wan-number{font-size:17px}.treasure-wrap .wan-label{font-size:14px}.treasure-wrap .red-dragon{font-size:29px}.treasure-wrap .back-mark{font-size:17px}.treasure-wrap small{color:#b7c5a6;font-size:8px;white-space:nowrap}.center-turn{color:#d6d5ae;margin-top:10px;font-size:10px;letter-spacing:1px;white-space:nowrap}.claim-countdown{color:var(--gold);font-size:11px;display:block;margin-top:4px;font-variant-numeric:tabular-nums}.event-line{position:absolute;bottom:77px;left:50%;transform:translateX(-50%);font-size:10px;color:#b6c9ab;text-align:center;white-space:nowrap;letter-spacing:.5px;max-width:80%;overflow:hidden;text-overflow:ellipsis}.waiting-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,75%);text-align:center;z-index:4;background:#184336ee;border:1px solid #a9b58d55;border-radius:18px;padding:25px;box-shadow:0 15px 40px #092c2955}.waiting-panel h2{font-family:serif;font-size:26px;font-weight:400;margin:0 0 12px;letter-spacing:3px}.waiting-panel p{color:#b0c5a5;font-size:11px;line-height:1.9;margin:0 0 20px}.waiting-panel .buttons{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.waiting-panel .buttons button{font-size:12px}.waiting-links{display:flex;justify-content:center;gap:20px;margin-top:18px}.waiting-links button{font-size:10px;color:#b5c09d}.action-bar{height:65px;display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:6px 8px;flex-shrink:0}.action-bar>span{margin-right:auto;font-size:11px;color:#9cb59d;max-width:40%;line-height:1.6}.action-button{padding:11px 20px;min-height:43px;border:1px solid #b5c3a344;border-radius:9px;color:#d5dec3;background:#456b4d44;white-space:nowrap}.action-button.gold{background:linear-gradient(110deg,#e5c888,#c8ab70);color:#263b2b;border-color:#e4cd98;font-weight:600}.action-button.hu{background:#ac4a37;color:#fff2d4;border-color:#d88f65;font-weight:600}.action-button small{font-size:9px;margin-left:4px}.hand-area{height:calc(var(--tile-w)*1.46 + 29px);flex-shrink:0;position:relative;display:flex;flex-direction:column;align-items:center}.hand{display:flex;gap:4px;align-items:flex-end;justify-content:center;position:relative;max-width:100%;padding-top:12px}.tile{--depth:5px;display:inline-flex;position:relative;align-items:stretch;vertical-align:middle;width:var(--tile-w);height:calc(var(--tile-w)*1.4);border-radius:5px;background:#f5f0dd;box-shadow:0 var(--depth) 0 #95ad8b,0 calc(var(--depth) + 2px) 0 #3d644c,0 7px 9px #0003;border:1px solid #fff7;flex-shrink:0;padding:0;user-select:none;color:#203d35;transition:transform .15s,box-shadow .15s;overflow:visible}.tile-face{border-radius:inherit;width:100%;height:100%;display:flex;position:relative;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#fffdf0,#e5e3d1);padding:4px;overflow:hidden}.tile-face svg{width:100%;height:100%;overflow:visible}.tile-back{background:#668a62;border-color:#b6c5a56b;box-shadow:0 var(--depth) 0 #719167,0 calc(var(--depth) + 2px) 0 #294f3d}.tile-back .tile-face{background:linear-gradient(135deg,#708b60,#346549);padding:2px}.tile-back .tile-face:before{content:"";position:absolute;inset:4px;border:1px solid #b7bd8466;border-radius:2px}.back-mark{font-family:serif;color:#c1bf8d;font-size:calc(var(--tile-w)*.55);opacity:.65}.wan-number{font-family:"Songti SC",SimSun,serif;font-size:calc(var(--tile-w)*.52);font-weight:600;line-height:1.05}.wan-label{font-family:serif;font-size:calc(var(--tile-w)*.44);line-height:1.15;color:#b64334;font-weight:600}.red-dragon{font-family:serif;color:#b34031;font-size:calc(var(--tile-w)*.96);font-weight:600;line-height:1.2}.hand .tile:hover:not(:disabled){transform:translateY(-4px)}.hand .tile.selected{transform:translateY(-12px);box-shadow:0 5px 0 #a6b28a,0 7px 0 #506c41,0 0 0 2px #e6c78a,0 10px 15px #0004}.hand .tile.drawn{margin-left:12px}.hand .tile:disabled{opacity:1;cursor:default}.wait-indicator{height:22px;display:flex;gap:6px;align-items:center;margin-top:10px;color:#adbfa2;font-size:9px;white-space:nowrap;max-width:100%;overflow:hidden}.wait-chip{color:#dbd6ad}.sheet,.result-dialog{color:#e8ecd9;background:linear-gradient(145deg,#234b3c,#15372e);border:1px solid #9fb18b77;border-radius:18px;padding:25px;width:min(600px,calc(100vw - 30px));max-height:85svh;box-shadow:0 30px 100px #0008;overflow:auto}.sheet::backdrop,.result-dialog::backdrop{background:#071a15bb;backdrop-filter:blur(5px)}.sheet-top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:20px}.sheet-top h2{font-family:serif;font-size:23px;font-weight:400;margin:0;letter-spacing:2px}.close-button{font-size:28px;line-height:1;width:34px;height:34px;color:#c5cbb1}.choice-grid{display:grid;gap:9px}.choice-button{text-align:left;border:1px solid #9bb58a44;background:#46654c33;border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:15px;width:100%;min-height:60px}.choice-button:hover{border-color:var(--gold)}.choice-button .choice-label{font-size:12px;line-height:1.7}.choice-button small{color:#a9c09c;display:block;font-size:9px}.choice-tiles{display:flex;gap:3px;flex-shrink:0}.choice-tiles .tile{width:25px;height:35px;--depth:3px}.choice-tiles .wan-number{font-size:16px}.choice-tiles .wan-label{font-size:13px}.choice-tiles .red-dragon{font-size:25px}.rules-section{border-bottom:1px solid var(--line);padding:0 0 18px;margin-bottom:20px}.rules-section:last-child{border-bottom:0;margin-bottom:0}.rules-section h3{font-size:13px;color:#dfcf9e;font-weight:500}.rules-section p,.rules-section li{font-size:11px;line-height:2;color:#bdcdb4}.rules-section ul{padding-left:18px}.rules-section table{width:100%;font-size:11px;border-collapse:collapse}.rules-section th,.rules-section td{text-align:left;padding:10px 7px;border-bottom:1px solid var(--line);font-weight:400}.rules-section th{color:#c3cca9}.result-heading{text-align:center;padding:14px 0 20px}.result-heading .eyebrow{justify-content:center;font-size:10px}.result-heading .eyebrow:before{display:none}.result-heading h2{font:38px/1.4 serif;color:#e6d7a8;letter-spacing:5px;margin:14px 0 8px}.result-heading p{font-size:12px;color:#bac9ac;line-height:1.8}.result-multiplier{display:inline-block;border:1px solid #c6b37777;background:#a9955633;padding:5px 12px;border-radius:30px;color:#e9d4a1;font-size:12px}.result-table{width:100%;border-collapse:collapse;font-size:12px}.result-table th{font-size:10px;color:#a5b99c;font-weight:400}.result-table th,.result-table td{padding:13px 7px;text-align:right;border-bottom:1px solid var(--line)}.result-table th:first-child,.result-table td:first-child{text-align:left}.positive{color:#e0c07e}.negative{color:#c3d3b7}.result-buttons{display:flex;justify-content:center;gap:10px;margin-top:23px}.result-note{text-align:center;color:#98b096;font-size:10px;margin-top:16px}.result-hand{display:flex;gap:3px;justify-content:center;flex-wrap:wrap;margin:12px 0 23px}.result-hand .tile{width:27px;height:38px;--depth:3px}.result-hand .wan-number{font-size:17px}.result-hand .wan-label{font-size:14px}.result-hand .red-dragon{font-size:27px}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:#eee7cf;color:#244133;border:1px solid #f7efd9;padding:13px 21px;border-radius:10px;box-shadow:0 10px 30px #0005;z-index:30;font-size:12px;text-align:center;max-width:90vw;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translate(-50%,0)}.history-row{border-bottom:1px solid var(--line);padding:13px 0}.history-row h3{font-size:12px;font-weight:400;margin:0 0 8px;color:#dfd7b2}.history-row p{font-size:10px;color:#abc0a1;line-height:1.8;margin:0}.empty-history{color:#b3c4a8;line-height:2;font-size:12px;text-align:center;padding:25px}.small-link{font-size:10px;color:#b8c8a7;text-decoration:underline;text-underline-offset:3px}
@media(min-width:1450px){.game-screen{max-width:1400px;margin:0 auto}.table-frame{border-width:13px}.player-top{top:22px}.table-center{top:51%}.river-top{top:22%}.river-bottom{bottom:19%}.river-left{left:23%}.river-right{right:23%}}
@media(max-width:820px){.app-header{height:64px;padding:0 20px}.brand{font-size:18px;gap:9px}.brand-tile{width:29px;height:37px;font-size:25px}.brand small{font-size:8px;letter-spacing:1px}.header-tools{gap:12px}.connection{font-size:9px}.home-screen{padding:30px 25px;gap:28px;grid-template-columns:1fr 1fr}.welcome{padding:18px 0}.eyebrow{font-size:9px;letter-spacing:2px}h1{font-size:38px}.welcome>p{font-size:12px}.hero-tiles{transform:scale(.8);transform-origin:left center;margin-left:10px;height:150px}.entry-card{padding:23px}.card-heading{margin-bottom:20px}.home-footnote{font-size:9px;gap:9px}.home-bottom{font-size:9px}.game-screen{height:calc(100svh - 64px);padding:0 10px 7px}.table-frame{border-width:7px;border-radius:23px}.table-topline{height:31px}.player-head{min-width:95px;padding:5px 7px;gap:6px}.avatar{width:25px;height:25px;font-size:16px}.player-name{font-size:10px;max-width:75px}.player-score{font-size:10px}.player-status{font-size:8px}.player-top{top:9px}.player-left{left:8px}.player-right{right:8px}.player-self{left:9px;bottom:9px}.player-self .player-head{min-width:95px}.own-melds{left:120px;bottom:13px;gap:9px}.own-melds .meld-group .tile{width:20px;height:28px}.own-melds .wan-number{font-size:13px}.own-melds .wan-label{font-size:11px}.own-melds .red-dragon{font-size:21px}.center-hub{padding:9px 10px;gap:9px}.remaining-number{font-size:23px;min-width:25px}.treasure-wrap{padding-left:9px}.center-turn{font-size:9px}.river-left{left:17%}.river-right{right:17%}.event-line{bottom:64px;font-size:9px}.hand{gap:3px}.action-bar{height:55px;gap:7px;padding:4px}.action-button{padding:10px 15px;font-size:12px;min-height:40px}.action-bar>span{font-size:10px}.waiting-panel{padding:20px}.waiting-panel h2{font-size:23px}.waiting-panel p{margin-bottom:15px}.meld-group .tile{width:15px;height:21px}.meld-group .wan-number{font-size:9px}.meld-group .wan-label{font-size:8px}.meld-group .red-dragon{font-size:16px}}
@media(max-width:600px) and (orientation:portrait){:root{--tile-w:calc((100vw - 62px)/14)}.home-screen{display:flex;flex-direction:column;padding:25px 22px;gap:24px}.welcome{padding:6px 0 0;min-height:205px}h1{font-size:36px;line-height:1.35;margin:19px 0 14px}.welcome>p{font-size:11px}.hero-tiles{position:absolute;right:-48px;bottom:6px;transform:scale(.51);transform-origin:right bottom;width:280px;height:175px;margin:0;opacity:.95}.home-footnote{display:none}.entry-card{width:100%;padding:23px}.card-heading{margin-bottom:18px}.home-bottom{width:100%;gap:10px;padding-top:18px;line-height:1.8}.home-bottom button{font-size:9px;white-space:nowrap}.app-header{height:60px;padding:0 15px}.brand{font-size:17px;letter-spacing:1px}.brand small{display:none}.header-tools{gap:8px}.icon-button{padding:6px}.icon-button svg{width:17px;height:17px}.connection span{display:none}.room-code{padding:6px 8px;font-size:10px;letter-spacing:0}.game-screen{height:calc(100svh - 60px);padding:0 5px 8px}.orientation-note{display:block;font-size:8px;letter-spacing:0}.table-topline{height:30px;font-size:9px}.table-topline button{font-size:9px}.table-frame{border-width:5px;border-radius:20px}.player-left,.player-right{top:32%;max-width:42%}.player-left{left:7px}.player-right{right:7px}.player-head{min-width:88px;padding:5px;gap:5px}.avatar{width:23px;height:23px}.player-name{font-size:9px;max-width:60px}.player-score{font-size:9px}.player-status{font-size:7px}.player-top{top:10px}.back-hand .tile{width:10px;height:15px}.back-hand{height:17px}.player-tags{gap:2px}.dealer-badge,.ready-badge{font-size:8px;padding:1px 3px}.side-hand{font-size:8px}.table-center{top:52%}.center-hub{padding:8px 9px;gap:8px;border-radius:10px}.treasure-wrap>.tile{width:24px;height:33px}.treasure-wrap .wan-number{font-size:15px}.treasure-wrap .wan-label{font-size:12px}.treasure-wrap .red-dragon{font-size:24px}.remaining-number{font-size:22px}.remaining-number small{font-size:7px}.center-turn{font-size:8px;margin-top:8px}.river .tile{width:16px;height:22px}.river .wan-number{font-size:10px}.river .wan-label{font-size:9px}.river .red-dragon{font-size:17px}.river{gap:1px}.river-top{top:22%;left:50%}.river-bottom{bottom:22%}.river-left{left:6%;top:49%;grid-template-columns:repeat(3,1fr)}.river-right{right:6%;top:49%;grid-template-columns:repeat(3,1fr)}.player-self{left:7px;bottom:9px}.player-self .player-head{min-width:88px}.own-melds{left:110px;bottom:15px;gap:5px;flex-wrap:wrap}.own-melds .meld-group .tile{width:15px;height:21px}.own-melds .wan-number{font-size:10px}.own-melds .wan-label{font-size:8px}.own-melds .red-dragon{font-size:16px}.event-line{bottom:68px;max-width:93%;font-size:8px}.waiting-panel{width:84%;padding:20px 14px}.waiting-panel h2{font-size:23px}.waiting-panel p{font-size:10px}.waiting-panel .buttons button{padding:10px 14px;font-size:11px}.action-bar{height:61px;gap:5px;justify-content:center;flex-wrap:wrap;padding:7px 2px}.action-bar>span{flex-basis:100%;font-size:9px;max-width:100%;text-align:center;margin:0;line-height:1.4}.action-button{padding:7px 12px;font-size:11px;min-height:34px}.hand-area{height:calc(var(--tile-w)*1.4 + 34px)}.hand{gap:2px}.hand .tile{border-radius:3px;--depth:3px}.hand .tile-face{padding:2px}.hand .tile.drawn{margin-left:5px}.hand .tile.selected{transform:translateY(-9px)}.wait-indicator{font-size:8px;margin-top:9px;gap:4px}.sheet,.result-dialog{padding:20px}.result-heading h2{font-size:31px}.result-table{font-size:10px}.result-table th{font-size:9px}.result-table th,.result-table td{padding:12px 3px}.result-buttons button{font-size:11px;padding:11px 17px}}
@media(orientation:landscape) and (max-height:600px){:root{--tile-w:clamp(30px,5.1vw,43px)}.app-header{height:45px;padding:0 18px}.brand{font-size:15px;gap:8px}.brand small{display:none}.brand-tile{width:23px;height:30px;font-size:20px;border-bottom-width:3px}.header-tools{gap:13px}.connection{font-size:9px}.icon-button{padding:5px}.icon-button svg{width:16px;height:16px}.quiet-button{font-size:10px}.room-code{padding:5px 9px;font-size:10px}.game-screen{height:calc(100svh - 45px);padding:0 12px 5px}.table-topline{height:24px;font-size:9px}.table-frame{min-height:140px;border-width:5px;border-radius:19px}.player-top{top:4px}.player-head{padding:3px 6px;border-radius:8px;min-width:92px;gap:5px}.avatar{width:21px;height:21px;font-size:14px;border-radius:6px}.player-name{font-size:9px}.player-score{font-size:8px;margin-top:2px}.player-status{font-size:7px}.back-hand{display:none}.player-left,.player-right{top:35%;gap:4px}.player-left{left:7px}.player-right{right:7px}.side-hand{font-size:8px}.player-self{left:7px;bottom:6px}.player-self .player-head{min-width:95px}.own-melds{bottom:10px;left:125px}.own-melds .meld-group .tile{width:18px;height:25px}.own-melds .wan-number{font-size:12px}.own-melds .wan-label{font-size:10px}.own-melds .red-dragon{font-size:19px}.melds{gap:4px;max-width:180px}.meld-group .tile{width:14px;height:19px}.meld-group .wan-number{font-size:9px}.meld-group .wan-label{font-size:8px}.meld-group .red-dragon{font-size:15px}.table-center{top:47%}.center-hub{padding:6px 9px;gap:7px;border-radius:9px}.remaining-number{font-size:20px;min-width:24px}.remaining-number small{font-size:7px;margin-top:1px}.treasure-wrap{padding-left:7px;gap:2px}.treasure-wrap>.tile{width:22px;height:29px}.treasure-wrap .wan-number{font-size:14px}.treasure-wrap .wan-label{font-size:11px}.treasure-wrap .red-dragon{font-size:22px}.treasure-wrap small{font-size:7px}.center-turn{font-size:8px;margin-top:5px}.river .tile{width:16px;height:22px}.river .wan-number{font-size:10px}.river .wan-label{font-size:9px}.river .red-dragon{font-size:17px}.river{gap:1px}.river-top{top:28%;left:36%;transform:translateX(-50%);grid-template-columns:repeat(6,1fr)}.river-bottom{bottom:29%;left:64%;transform:translateX(-50%);grid-template-columns:repeat(6,1fr)}.river-left{left:18%;top:40%;grid-template-columns:repeat(4,1fr)}.river-right{right:18%;top:40%;grid-template-columns:repeat(4,1fr)}.event-line{bottom:39px;font-size:8px}.action-bar{height:41px;gap:7px;padding:3px 6px}.action-button{padding:6px 14px;font-size:10px;min-height:32px}.action-bar>span{font-size:9px}.hand-area{height:calc(var(--tile-w)*1.4 + 17px)}.hand{padding-top:7px;gap:3px}.hand .tile.selected{transform:translateY(-7px)}.hand .tile{--depth:3px}.wait-indicator{font-size:8px;height:14px;margin-top:7px}.waiting-panel{padding:13px 20px;width:min(350px,60%)}.waiting-panel h2{font-size:20px;margin-bottom:6px}.waiting-panel p{font-size:9px;margin-bottom:11px;line-height:1.6}.waiting-panel .buttons button{font-size:10px;padding:8px 13px}.waiting-links{margin-top:10px}.waiting-links button{font-size:9px}.sheet,.result-dialog{max-height:91svh;padding:20px}.result-heading{padding:0 0 10px}.result-heading h2{font-size:25px;margin:8px 0 3px}.result-heading p{font-size:10px;margin:5px 0}.result-hand{margin:10px 0 12px}.result-table th,.result-table td{padding:7px 6px}.result-buttons{margin-top:15px}.result-note{margin-top:10px}.home-screen{padding:20px 35px;gap:40px}.welcome{padding:5px 0}h1{font-size:32px;margin:18px 0 10px}.welcome>p{font-size:11px}.hero-tiles{height:100px;transform:scale(.6);transform-origin:left top;margin-top:10px}.home-footnote{display:none}.entry-card{padding:20px}.card-heading{margin-bottom:12px}.card-heading h2{font-size:17px}.card-heading p{font-size:9px}.field-label{margin:12px 0 7px}input{padding:11px}.big-button{padding:12px 15px;margin-top:15px}.entry-divider{margin-top:17px}.practice-button{padding-top:14px;margin-top:17px}.home-bottom{padding-top:15px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

/* Match the visible screen as Safari expands/collapses its browser controls. */
:root{--viewport-height:100vh;--app-header-height:84px;--header-inset:clamp(20px,5vw,72px);--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}
@supports(height:100dvh){:root{--viewport-height:100dvh}}
@media(max-width:820px){:root{--app-header-height:64px;--header-inset:20px}}
@media(max-width:600px) and (orientation:portrait){:root{--app-header-height:60px;--header-inset:15px}}
.app-header{height:calc(var(--app-header-height) + var(--safe-top));padding-top:var(--safe-top);padding-left:max(var(--header-inset),var(--safe-left));padding-right:max(var(--header-inset),var(--safe-right))}
body.game-active{height:var(--viewport-height);min-height:0;overflow:hidden;overscroll-behavior:none}
.game-active .game-screen{height:calc(var(--viewport-height) - var(--app-header-height) - var(--safe-top));max-height:none;padding-bottom:max(8px,var(--safe-bottom))}
.compact-status,.exit-focus-button{display:none}
.display-button-label{font-size:11px;white-space:nowrap;letter-spacing:1px}
.display-help p,.display-help li{font-size:13px;line-height:1.9;color:#c4d1bc}
.display-help ol{padding-left:22px;margin:16px 0 22px}
.display-help li{margin-bottom:10px}
.display-help strong{color:#e7d3a0;font-weight:500}
.display-help .primary-button{display:block;margin:20px auto 8px}
.focus-table.game-active .app-header{display:none}
.focus-table.game-active .game-screen{height:var(--viewport-height);padding-top:var(--safe-top)}
.focus-table.game-active .table-topline{padding-right:94px}
.focus-table.game-active .exit-focus-button{display:block;position:fixed;top:calc(var(--safe-top) + 5px);right:max(10px,var(--safe-right));z-index:8;background:#163b32ed;border:1px solid #a8ba9255;border-radius:7px;padding:6px 9px;font-size:10px;color:#ddcf9f}

/* A single bottom dock leaves room for the table even with Safari tabs visible. */
body.landscape-table{--app-header-height:34px;--dock-width:156px;--tile-min-width:25px;--tile-w:clamp(var(--tile-min-width),calc((100vw - var(--safe-left) - var(--safe-right) - var(--dock-width) - 48px)/15),44px);--dock-height:calc(var(--tile-w)*1.4 + 25px)}
.landscape-table.game-active .app-header{padding-left:max(12px,var(--safe-left));padding-right:max(12px,var(--safe-right))}
.landscape-table.game-active .brand{font-size:14px;gap:7px}
.landscape-table.game-active .brand-tile{width:20px;height:25px;font-size:18px;border-bottom-width:2px}
.landscape-table.game-active .brand small{display:none}
.landscape-table.game-active .header-tools{gap:12px}
.landscape-table.game-active .connection span{display:none}
.landscape-table.game-active .icon-button{padding:5px}
.landscape-table.game-active .icon-button svg{width:16px;height:16px}
.landscape-table.game-active .room-code{padding:4px 8px;font-size:10px}
.landscape-table .game-screen{position:relative;padding-left:max(10px,var(--safe-left));padding-right:max(10px,var(--safe-right))}
.landscape-table .table-topline{height:26px;padding:0 4px;gap:10px;letter-spacing:0;font-size:9px}
.landscape-table #round-label{flex-shrink:0}
.landscape-table .table-topline button{font-size:9px;white-space:nowrap;flex-shrink:0}
.landscape-table .orientation-note{display:none}
.landscape-table .compact-status{display:flex;flex:1;min-width:0;justify-content:center;align-items:center;gap:12px;font-size:10px;color:#d7d8b9;white-space:nowrap}
.compact-turn{max-width:120px;overflow:hidden;text-overflow:ellipsis}
.compact-self{color:#c2cdb7}
.compact-status .claim-countdown{display:inline;font-size:10px;margin:0}
.compact-treasure{display:flex;align-items:center;gap:5px}
.compact-treasure>.tile{width:15px;height:21px;--depth:2px;border-radius:2px}
.compact-treasure .tile-face{padding:1px}
.compact-treasure .wan-number{font-size:10px}
.compact-treasure .wan-label{font-size:8px}
.compact-treasure .red-dragon{font-size:17px}
.compact-treasure .back-mark{font-size:10px}
.compact-treasure small{font-size:8px;color:#adc09f}
.landscape-table .table-frame{min-height:0;border-width:4px;border-radius:17px}
.landscape-table .table-center,.landscape-table .event-line,.landscape-table .player-self,.landscape-table .back-hand,.landscape-table .side-hand{display:none}
.landscape-table .player-top{top:5px;left:50%;flex-direction:row;gap:8px;max-width:56%;align-items:flex-start}
.landscape-table .player-top .melds{max-width:200px}
.landscape-table .player-left,.landscape-table .player-right{top:5px;transform:none;gap:4px;max-width:clamp(108px,17vw,142px)}
.landscape-table .player-left{left:7px}
.landscape-table .player-right{right:7px}
.landscape-table .player-head{padding:3px 6px;min-width:92px;gap:5px;border-radius:8px}
.landscape-table .player-name{font-size:9px;max-width:72px}
.landscape-table .player-score{font-size:9px;margin-top:2px}
.landscape-table .player-status{font-size:7px}
.landscape-table .avatar{width:21px;height:21px;border-radius:6px;font-size:14px}
.landscape-table .dealer-badge,.landscape-table .ready-badge{font-size:8px;padding:1px 3px}
.landscape-table .melds{gap:4px;max-width:142px}
.landscape-table .player-left .melds{justify-content:flex-start}
.landscape-table .player-right .melds{justify-content:flex-end}
.landscape-table .meld-group .tile{width:15px;height:21px}
.landscape-table .meld-group .wan-number{font-size:10px}
.landscape-table .meld-group .wan-label{font-size:8px}
.landscape-table .meld-group .red-dragon{font-size:16px}
.landscape-table .own-melds{left:125px;right:125px;bottom:7px;gap:6px;justify-content:center;flex-wrap:nowrap}
.landscape-table .own-melds .meld-group .tile{width:18px;height:25px}
.landscape-table .own-melds .wan-number{font-size:12px}
.landscape-table .own-melds .wan-label{font-size:10px}
.landscape-table .own-melds .red-dragon{font-size:20px}
.landscape-table .river{gap:1px;pointer-events:auto;overflow:auto;scrollbar-width:thin;overscroll-behavior:contain;max-width:none;max-height:70px;padding:2px}
.landscape-table .river .tile{width:16px;height:22px}
.landscape-table .river .wan-number{font-size:10px}
.landscape-table .river .wan-label{font-size:9px}
.landscape-table .river .red-dragon{font-size:17px}
.landscape-table .river-top{top:43px;left:38%;transform:translateX(-50%);grid-template-columns:repeat(6,16px);max-height:calc(100% - 85px)}
.landscape-table .river-bottom{top:auto;bottom:38px;left:62%;transform:translateX(-50%);grid-template-columns:repeat(6,16px);max-height:calc(100% - 83px)}
.landscape-table .river-left{left:7px;top:96px;transform:none;grid-template-columns:repeat(6,16px);max-height:calc(100% - 105px)}
.landscape-table .river-right{right:7px;top:96px;transform:none;grid-template-columns:repeat(6,16px);max-height:calc(100% - 105px)}
.landscape-table .hand-area{height:var(--dock-height);margin-right:calc(var(--dock-width) + 8px);align-items:stretch}
.landscape-table .hand{width:100%;gap:3px;padding-top:9px}
.landscape-table .hand .tile{--depth:3px;border-radius:4px}
.landscape-table .hand .tile-face{padding:2px}
.landscape-table .hand .tile.drawn{margin-left:7px}
.landscape-table .hand .tile.selected{transform:translateY(-7px)}
.landscape-table .wait-indicator{height:10px;margin:7px auto 0;font-size:8px;gap:4px;line-height:10px}
.landscape-table .action-bar{position:absolute;bottom:max(8px,var(--safe-bottom));right:max(10px,var(--safe-right));width:var(--dock-width);height:var(--dock-height);padding:3px 0 3px 6px;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:5px}
.landscape-table .action-bar>span{display:none}
.landscape-table .action-button{flex:1 1 58px;font-size:11px;padding:7px 9px;min-height:34px;border-radius:8px}
.landscape-table .action-button small{font-size:8px;margin-left:2px}
.landscape-table .game-screen.is-waiting .action-bar{display:none}
.landscape-table .game-screen.is-waiting .player-self{display:block;bottom:6px;left:7px}
.landscape-table .waiting-panel{padding:12px 18px;width:min(360px,62%)}
.landscape-table .waiting-panel h2{font-size:19px;margin-bottom:5px}
.landscape-table .waiting-panel p{font-size:10px;line-height:1.5;margin-bottom:9px}
.landscape-table .waiting-panel .buttons button{padding:8px 13px;font-size:11px}
.landscape-table .waiting-links{margin-top:10px;gap:17px}
.landscape-table .waiting-links button{font-size:9px}
.landscape-table .sheet,.landscape-table .result-dialog{max-height:calc(var(--viewport-height) - 18px)}
.landscape-table .toast{bottom:calc(var(--dock-height) + 14px);padding:9px 15px;font-size:11px}

.landscape-table.many-actions{--dock-width:228px;--tile-min-width:20px;--dock-height:max(80px,calc(var(--tile-w)*1.4 + 25px))}

/* Room controls stay accessible in both ordinary and focused tables. */
.rejoin-note{color:#b5c5ad;font-size:12px;line-height:1.7;margin:10px 0 0}
.room-note{color:#c4d1bc;font-size:14px;line-height:1.9;margin:14px 0}
.room-menu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0 8px}
.room-menu button{min-height:44px;padding:12px;font-size:14px}
.danger-button{background:#724b3b;color:#fff1d1;border:1px solid #bd9376;border-radius:10px;padding:12px 20px;cursor:pointer}
.exit-room-code{display:block;color:#e8d49f;font-size:32px;letter-spacing:6px}
.vote-players,.room-scores{display:grid;gap:9px;margin:18px 0}
.vote-players>div,.room-scores>div{display:flex;justify-content:space-between;gap:16px;background:#ffffff08;border-radius:8px;padding:12px;color:#c6d2bd;font-size:14px}
.vote-players strong{font-size:12px;font-weight:500;color:#c4b38d}
.vote-players .vote-agreed{color:#9ed1ac}
.vote-exit{display:block;margin:18px auto 0;padding:10px}
.landscape-table .room-note{font-size:12px;margin:10px 0;line-height:1.6}
.landscape-table .room-menu{margin:12px 0 6px;gap:8px}
.landscape-table .room-menu button{min-height:38px;padding:9px;font-size:12px}
.landscape-table .vote-players{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:12px 0}
.landscape-table .vote-players>div{font-size:12px;padding:8px}
.landscape-table .vote-exit{margin:6px auto 0;padding:6px}
