/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.start{inset-inline-start:var(--spacing)}.table{display:table}}:root{--ink:#17352e;--ink-soft:#547069;--paper:#f4efe3;--paper-deep:#e9e0cf;--jade:#0f5a49;--jade-deep:#083d34;--jade-light:#2a7c66;--gold:#d6ad58;--gold-light:#f2d99a;--tile:#fffdf4;--tile-edge:#d8cfba;--red:#b64036;--blue:#225f75;--green:#2c704b}*{box-sizing:border-box}html{background:var(--paper)}body{color:var(--ink);background:radial-gradient(circle at 20% 0%, #d6ad5829, transparent 28rem), var(--paper);margin:0;font-family:Noto Serif SC,Songti SC,STSong,Georgia,serif}button{font:inherit}.page-shell{width:min(1180px,100%);margin:0 auto;padding:24px 24px 20px}.game-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;display:flex}.brand-block,.header-actions,.player-row-meta,.opponent-meta{align-items:center;display:flex}.brand-block{gap:12px}.brand-mark{width:46px;height:46px;color:var(--paper);background:var(--red);border:1px solid #501b164d;border-radius:50%;place-items:center;font-size:24px;font-weight:700;display:grid;box-shadow:inset 0 0 0 4px #ffffff21}.brand-block h1{letter-spacing:.12em;margin:0;font-size:clamp(24px,4vw,36px);line-height:1.1}.brand-block p{color:var(--ink-soft);letter-spacing:.14em;margin:4px 0 0;font-size:13px}.header-actions{gap:12px}.round-label{color:var(--ink-soft);font-size:14px}.new-game-button,.claim-button,.settings-link,.back-to-game{color:#fffaf0;background:var(--jade);cursor:pointer;border:1px solid #ffffff29;border-radius:999px;justify-content:center;align-items:center;padding:10px 18px;text-decoration:none;transition:transform .14s,background .14s;display:inline-flex;box-shadow:0 4px 12px #083d342e}.new-game-button:hover,.claim-button:hover,.settings-link:hover,.back-to-game:hover{background:var(--jade-light);transform:translateY(-1px)}:is(.new-game-button:focus-visible,.claim-button:focus-visible,.settings-link:focus-visible,.back-to-game:focus-visible,.mahjong-tile:focus-visible){outline:3px solid var(--gold-light);outline-offset:3px}.settings-link{color:var(--jade-deep);background:var(--gold-light);box-shadow:none;border-color:#573d1824}.settings-link:hover{color:#fffaf0}.mahjong-table{background:linear-gradient(135deg, #ffffff09, transparent 40%), var(--jade-deep);border:10px solid #6b4733;border-radius:34px;min-height:720px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #ffffff14,inset 0 0 70px #00000047,0 20px 50px #37281933}.opponent{z-index:3;color:#ffffffe0;position:absolute}.opponent-top{width:62%;top:18px;left:50%;transform:translate(-50%)}.opponent-left{width:160px;top:25%;left:18px}.opponent-right{width:160px;top:25%;right:18px}.opponent-meta{justify-content:center;gap:8px;margin-bottom:8px;font-size:13px}.opponent-meta small{opacity:.62}.wind-badge{min-width:24px;height:24px;color:var(--jade-deep);background:var(--gold-light);border-radius:50%;grid-auto-flow:column;place-items:center;gap:2px;padding:0 5px;font-size:13px;font-weight:700;display:inline-grid}.wind-badge.is-dealer{color:#fffaf0;background:var(--red);border-radius:999px;box-shadow:0 0 0 1px #ffffff2e}.wind-badge b{font-size:9px}.opponent-hand{justify-content:center;gap:3px;display:flex}.opponent-left .opponent-hand,.opponent-right .opponent-hand{flex-wrap:wrap;max-width:135px;margin:auto}.tile-back{background:repeating-linear-gradient(45deg,#ffffff14 0 3px,#0000 3px 7px),#2f8870;border:2px solid #d4c69e;border-radius:5px;flex:none;width:28px;height:38px;display:inline-block;box-shadow:0 2px #173e35}.tile-back.compact{width:22px;height:30px}.opponent-melds,.player-melds{flex-wrap:wrap;gap:8px;margin-top:9px;display:flex}.opponent-melds{justify-content:center}.meld{gap:2px;display:inline-flex}.table-center{z-index:3;color:#f8f0df;width:min(430px,45%);position:absolute;top:39%;left:50%;transform:translate(-50%,-50%)}.table-status{z-index:8;color:#fff7e6;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0000003d;border:1px solid #ffffff21;border-radius:12px;align-items:center;gap:10px;padding:8px 10px;display:flex;position:absolute;top:14px;left:14px}.turn-status,.remaining-status,.rolled-dice{align-items:center;display:flex}.turn-status{gap:5px;font-size:11px}.remaining-status{border-left:1px solid #ffffff26;gap:4px;padding-left:9px}.remaining-status strong{color:var(--gold-light);font-size:22px;line-height:1}.remaining-status span{color:#fff9;font-size:9px}.rolled-dice{gap:3px}.rolled-dice span{width:21px;height:21px;color:var(--red);background:#fffaf0;border-radius:5px;place-items:center;font-size:12px;font-weight:700;display:grid;box-shadow:0 2px 4px #0003}.center-compass{grid-area:compass;grid-template-columns:repeat(2,1fr);gap:4px;display:grid}.center-compass span{aspect-ratio:1;color:#ffffff73;background:#0000001f;border:1px solid #ffffff24;border-radius:8px;place-items:center;display:grid}.center-compass span.active{color:var(--jade-deep);background:var(--gold-light)}.wall-counter{text-align:center;grid-area:wall}.wall-counter strong{font-size:34px;line-height:1;display:block}.wall-counter span{opacity:.65;letter-spacing:.16em;font-size:12px}.last-discard{grid-area:tile;place-items:center;min-height:82px;display:grid}.empty-discard{color:#ffffff61;font-size:13px}.notice{text-align:center;background:#00000024;border:1px solid #ffffff1a;border-radius:999px;min-height:40px;margin:0;padding:8px 14px;font-size:13px}.mahjong-tile.last-played{outline:3px solid var(--gold-light);outline-offset:2px;transform:translateY(-3px);box-shadow:0 0 0 2px #b64036b3,0 6px 14px #00000061}.discard-river{z-index:2;position:absolute;inset:155px 185px 215px}.river{flex-wrap:wrap;gap:3px;max-width:310px;display:flex;position:absolute}.river-0{justify-content:center;bottom:6px;left:50%;transform:translate(-50%)}.river-2{justify-content:center;top:6px;left:50%;transform:translate(-50%)}.river-3{width:100px;top:50%;left:0;transform:translateY(-50%)}.river-1{justify-content:flex-end;width:100px;top:50%;right:0;transform:translateY(-50%)}.player-area{z-index:5;position:absolute;bottom:18px;left:22px;right:22px}.player-row-meta{color:#ffffffe0;justify-content:space-between;margin-bottom:8px;font-size:13px}.player-row-meta>div{align-items:center;gap:8px;display:flex}.player-row-meta>span{color:var(--gold-light)}.player-hand{justify-content:center;align-items:flex-end;gap:clamp(2px,.5vw,6px);display:flex}.player-hand .drawn-tile{z-index:2;border-color:var(--gold);margin-left:clamp(10px,1.6vw,22px);transform:translateY(-6px)scale(1.14);box-shadow:0 10px 18px #0000004d,0 0 0 2px #f2d99a61}.mahjong-tile{width:clamp(42px,5.5vw,62px);height:clamp(62px,7.8vw,86px);color:var(--blue);background:0 0;border:0;border-radius:7px;flex-direction:column;flex:none;justify-content:center;align-items:center;padding:0;font-family:Kaiti SC,STKaiti,serif;line-height:1;display:inline-flex;box-shadow:0 5px 9px #00000038}button.mahjong-tile{cursor:pointer;transition:transform .14s,box-shadow .14s}button.mahjong-tile:hover:not(:disabled){transform:translateY(-12px);box-shadow:0 13px 14px #0000003d}button.mahjong-tile.selected-tile:not(:disabled){outline:3px solid var(--gold-light);outline-offset:2px;transform:translateY(-12px);box-shadow:0 14px 18px #0000004d}button.mahjong-tile.drawn-tile:hover:not(:disabled),button.mahjong-tile.drawn-tile.selected-tile:not(:disabled){transform:translateY(-14px)scale(1.14)}button.mahjong-tile:disabled{cursor:default;filter:saturate(.8)}.mahjong-tile.compact{border-radius:4px;width:28px;height:39px;box-shadow:0 2px 4px #0000002e}.tile-face-image{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.tenpai-hint{color:#ffffffc7;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0003;border:1px solid #ffffff24;border-radius:12px;justify-content:center;align-items:center;gap:14px;min-height:48px;margin:0 auto 10px;padding:7px 12px;display:flex}.tenpai-hint.has-outs{color:#fff8e8;background:#432d1361;border-color:#f2d99a94}.tenpai-hint.is-standing{background:#0a4b3ab8;border-color:#5bcc949e;box-shadow:0 7px 18px #0000002e}.tenpai-hint.is-standing .tenpai-label{color:#dffbea}.tenpai-label{flex-direction:column;flex:none;gap:3px;font-size:13px;font-weight:700;display:flex}.tenpai-label small{color:#ffffff8f;font-size:10px;font-weight:400}.tenpai-outs{align-items:center;gap:8px;display:flex;overflow-x:auto}.tenpai-out{flex:none;align-items:center;gap:4px;display:flex}.tenpai-out b{color:var(--gold-light);white-space:nowrap;font-size:10px}.claim-bar{z-index:9;flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:70%;display:flex;position:absolute;bottom:142px;right:28px}.claim-button{background:#6f4c2f}.claim-button.primary{background:var(--red)}.claim-button.pass{color:var(--ink);background:var(--paper-deep);border-color:#0000001a}.result-overlay{z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#05211cb8;place-items:center;padding:20px;display:grid;position:absolute;inset:0;overflow-y:auto}.result-card{width:min(380px,100%);color:var(--ink);background:var(--paper);text-align:center;border:1px solid #d6ad58a6;border-radius:24px;padding:30px;box-shadow:0 24px 60px #00000052}.result-card.with-hands{width:min(860px,100%);max-height:calc(100% - 12px);overflow-y:auto}.result-seal{border:3px double var(--red);width:64px;height:64px;color:var(--red);border-radius:50%;place-items:center;margin:0 auto 14px;font-size:30px;font-weight:700;display:grid}.result-card h2{margin:0;font-size:28px}.result-card p{color:var(--ink-soft);margin:10px 0 20px}.settlement-panel{text-align:left;background:#f2d99a21;border:1px solid #d6ad5873;border-radius:12px;grid-template-columns:1.35fr .75fr;gap:10px;margin:0 0 12px;padding:12px;display:grid}.fan-list{flex-wrap:wrap;align-content:flex-start;gap:5px;display:flex}.fan-list span{color:var(--ink);background:var(--paper-deep);border-radius:999px;align-items:center;gap:6px;padding:5px 8px;font-size:11px;display:inline-flex}.fan-list b{color:var(--red)}.settlement-total{color:var(--ink-soft);flex-direction:column;justify-content:center;align-items:flex-end;gap:2px;font-size:10px;display:flex}.settlement-total strong{color:var(--red);font-size:25px}.score-deltas{grid-column:1/-1;grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.score-deltas span{background:#ffffff85;border-radius:8px;grid-template-columns:1fr auto;gap:2px 5px;padding:6px 7px;font-size:10px;display:grid}.score-deltas b{color:var(--ink-soft);text-align:right}.score-deltas small{color:var(--ink-soft);grid-column:1/-1}.score-deltas .gain b{color:var(--green)}.score-deltas .loss b{color:var(--red)}.draw-settlement{color:var(--ink-soft);background:var(--paper-deep);border-radius:10px;margin:0 0 16px;padding:10px;font-size:13px}.dealer-result{font-size:12px;font-weight:700;color:var(--jade)!important;margin:7px 0 10px!important}.revealed-hands{text-align:left;gap:8px;margin:0 0 20px;display:grid}.revealed-player{background:#ffffff59;border:1px solid #17352e1a;border-radius:10px;grid-template-columns:112px 1fr;align-items:center;gap:10px;padding:7px 9px;display:grid}.revealed-player.is-winner{background:#b6403612;border-color:#b640366b}.revealed-player-name{align-items:center;gap:6px;font-size:12px;display:flex}.revealed-player-name b{color:#fffaf0;background:var(--red);border-radius:999px;padding:3px 5px;font-size:9px}.revealed-tiles{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.revealed-meld{border-right:1px solid #17352e2e;gap:1px;margin-right:5px;padding-right:5px;display:inline-flex}.game-footer{color:var(--ink-soft);letter-spacing:.05em;justify-content:center;gap:28px;padding:14px 8px 0;font-size:12px;display:flex}.settings-page{background:radial-gradient(circle at 50% 5%, #f2d99a21, transparent 30rem), var(--jade-deep);place-items:center;min-height:100vh;padding:24px;display:grid}.settings-card{background:var(--paper);border:1px solid #d6ad588c;border-radius:28px;width:min(620px,100%);padding:clamp(24px,5vw,44px);box-shadow:0 28px 70px #00000047}.settings-heading{border-bottom:1px solid #17352e1f;align-items:center;gap:14px;padding-bottom:24px;display:flex}.settings-heading p{color:var(--ink-soft);letter-spacing:.12em;margin:0 0 3px;font-size:13px}.settings-heading h1,.settings-heading h2{margin:0;font-size:30px}.settings-modal-backdrop{z-index:60;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#051c18b8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.settings-dialog{max-height:calc(100vh - 48px);animation:.18s ease-out settings-in;position:relative;overflow-y:auto}.settings-dialog-close{z-index:2;width:38px;height:38px;color:var(--ink);background:var(--paper-deep);cursor:pointer;border:1px solid #17352e24;border-radius:50%;place-items:center;padding:0 0 3px;font-size:27px;line-height:1;display:grid;position:absolute;top:18px;right:18px}.settings-dialog-close:hover{color:#fffaf0;background:var(--jade)}.settings-dialog-close:focus-visible{outline:3px solid var(--gold);outline-offset:2px}@keyframes settings-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.setting-row{justify-content:space-between;align-items:center;gap:28px;padding:30px 0;display:flex}.setting-row+.setting-row{border-top:1px solid #17352e1a}.setting-row strong{font-size:19px}.setting-row p{max-width:390px;color:var(--ink-soft);margin:7px 0 0;font-size:14px;line-height:1.7}.switch-button{width:78px;height:42px;color:var(--ink-soft);cursor:pointer;background:#d8d3c7;border:0;border-radius:999px;flex:none;padding:0;transition:background .16s;position:relative}.switch-button span{background:var(--tile);border-radius:50%;width:32px;height:32px;transition:transform .16s;position:absolute;top:5px;left:5px;box-shadow:0 2px 7px #0003}.switch-button b{font-size:11px;position:absolute;top:50%;right:9px;transform:translateY(-50%)}.switch-button.is-on{color:#fffaf0;background:var(--jade)}.switch-button.is-on span{transform:translate(36px)}.switch-button.is-on b{left:9px;right:auto}.switch-button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.rules-panel{background:#ffffff4d;border:1px solid #17352e24;border-radius:14px;margin:0 0 18px;overflow:hidden}.rules-panel summary{color:var(--jade-deep);background:var(--paper-deep);cursor:pointer;padding:12px 15px;font-weight:700}.rules-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:14px;display:grid}.rules-grid section{background:#ffffff8c;border-radius:10px;padding:10px}.rules-grid h3{color:var(--jade);margin:0 0 6px;font-size:14px}.rules-grid p{color:var(--ink-soft);margin:3px 0;font-size:11px;line-height:1.55}.settings-note{color:var(--ink-soft);margin:0 0 24px;font-size:13px}.back-to-game{background:var(--jade)}.loading-table{min-height:100vh;color:var(--paper);background:var(--jade-deep);place-items:center;display:grid}.deal-screen{min-height:100vh;color:var(--paper);background:radial-gradient(circle at 50% 20%, #d6ad5838, transparent 28rem), var(--jade-deep);place-items:center;padding:24px;display:grid}.deal-card{text-align:center;background:#052620d1;border:1px solid #d6ad588c;border-radius:28px;width:min(430px,100%);padding:42px;box-shadow:0 28px 70px #0000004d}.deal-card .brand-mark{margin:0 auto 12px}.deal-card>p:first-of-type{color:var(--gold-light);letter-spacing:.18em;margin:0;font-size:12px}.deal-card h1{margin:7px 0 18px;font-size:34px}.dice-preview{justify-content:center;gap:12px;margin-bottom:18px;display:flex}.dice-preview span{width:56px;height:56px;color:var(--red);background:#fffaf0;border-radius:12px;place-items:center;font-size:42px;line-height:1;display:grid;box-shadow:0 9px 18px #00000040}.deal-copy{color:#ffffffa6;margin:0 auto 24px;font-size:13px;line-height:1.7}.deal-button{min-width:150px;color:var(--jade-deep);background:var(--gold-light);font-weight:700}.deal-button:hover{color:#fffaf0}@media (max-width:820px){.page-shell{padding:14px 10px 12px}.game-header{align-items:flex-start}.brand-block p{letter-spacing:.04em}.header-actions{flex-direction:column;align-items:flex-end;gap:5px}.new-game-button,.settings-link{padding:8px 13px}.mahjong-table{border-width:6px;border-radius:24px;min-height:670px}.opponent-top{width:88%}.opponent-left,.opponent-right{width:80px;top:24%}.opponent-left{left:7px}.opponent-right{right:7px}.opponent-left .opponent-hand,.opponent-right .opponent-hand{max-width:54px}.opponent-left .opponent-meta,.opponent-right .opponent-meta{flex-wrap:wrap;gap:3px}.opponent-left .opponent-meta small,.opponent-right .opponent-meta small{display:none}.tile-back.compact{width:16px;height:24px}.table-center{width:54%;top:39%}.table-status{gap:6px;padding:6px 7px;top:7px;left:7px}.remaining-status strong{font-size:18px}.discard-river{inset:135px 75px 205px}.river{max-width:180px}.river-3,.river-1{width:58px}.mahjong-tile.compact{width:22px;height:31px}.compact .tile-main{font-size:12px}.compact .tile-sub{font-size:7px}.player-area{bottom:14px;left:6px;right:6px}.tenpai-hint{gap:7px;margin-bottom:7px;padding:5px 7px}.tenpai-label{font-size:10px}.tenpai-label small{display:none}.tenpai-outs{gap:5px}.tenpai-out{gap:2px}.tenpai-out b{font-size:8px}.player-hand{gap:1px}.mahjong-tile{border-bottom-width:4px;border-radius:5px;width:clamp(25px,7vw,42px);height:clamp(48px,11vw,63px);padding:1px}.player-hand .drawn-tile{margin-left:7px;transform:translateY(-4px)scale(1.1)}button.mahjong-tile.drawn-tile:hover:not(:disabled){transform:translateY(-10px)scale(1.1)}button.mahjong-tile.selected-tile:not(:disabled){transform:translateY(-9px)}button.mahjong-tile.drawn-tile.selected-tile:not(:disabled){transform:translateY(-10px)scale(1.1)}.tile-main{font-size:clamp(16px,5vw,24px)}.tile-sub{margin-top:2px;font-size:clamp(9px,2.8vw,13px)}.claim-bar{max-width:90%;bottom:110px;right:10px}.claim-button{padding:8px 12px}.game-footer{flex-wrap:wrap;gap:5px 14px}}@media (max-width:480px){.round-label{display:none}.brand-mark{width:40px;height:40px}.brand-block h1{font-size:24px}.brand-block p{font-size:10px}.mahjong-table{min-height:620px}.opponent-top .opponent-hand .tile-back:nth-child(n+11),.opponent-left .opponent-hand .tile-back:nth-child(n+9),.opponent-right .opponent-hand .tile-back:nth-child(n+9),.opponent-melds{display:none}.table-center{width:62%;top:40%}.notice{margin-inline:-20px;font-size:11px}.discard-river{inset:125px 57px 190px}.river .mahjong-tile:nth-child(n+9){display:none}.player-row-meta{font-size:11px}.game-footer{font-size:10px}.setting-row{flex-direction:column;align-items:flex-start;gap:18px}.deal-card{padding:28px 22px}}@media (max-width:600px) and (orientation:portrait){html,body{overscroll-behavior:none;width:100%;height:100%;overflow:hidden}.page-shell{--mobile-stage-height:100dvw;transform-origin:50%;width:100dvh;max-width:none;height:100dvw;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)rotate(90deg)}}@media (max-height:500px) and (orientation:landscape),(max-width:600px) and (orientation:portrait){.page-shell{--mobile-stage-height:100dvh;padding:max(4px, env(safe-area-inset-top)) max(7px, env(safe-area-inset-right)) max(4px, env(safe-area-inset-bottom)) max(7px, env(safe-area-inset-left));flex-direction:column;display:flex;overflow:hidden}.game-header{flex:none;align-items:center;gap:10px;min-height:38px;margin-bottom:4px}.brand-block{gap:7px}.brand-mark{width:32px;height:32px;font-size:17px}.brand-block h1{font-size:20px}.brand-block p{display:none}.header-actions{flex-direction:row;align-items:center;gap:5px}.round-label{font-size:10px;display:inline}.new-game-button,.settings-link{padding:6px 10px;font-size:11px}.mahjong-table{min-height:0;height:calc(var(--mobile-stage-height) - 47px);border-width:4px;border-radius:15px;flex:auto}.opponent-top{width:62%;top:3px}.opponent-left,.opponent-right{width:70px;top:22%}.opponent-left{left:4px}.opponent-right{right:4px}.opponent-meta{gap:4px;margin-bottom:3px;font-size:9px}.opponent-left .opponent-meta,.opponent-right .opponent-meta{flex-wrap:nowrap}.opponent-left .opponent-meta span:not(.wind-badge),.opponent-right .opponent-meta span:not(.wind-badge),.opponent-left .opponent-meta small,.opponent-right .opponent-meta small{display:none}.wind-badge{width:auto;min-width:18px;height:18px;padding:0 3px;font-size:10px}.wind-badge b{font-size:7px}.opponent-hand{gap:1px}.opponent-left .opponent-hand,.opponent-right .opponent-hand{max-width:46px}.tile-back.compact{border-width:1px;border-radius:3px;width:13px;height:19px}.table-center{width:42%;top:39%}.table-status{border-radius:7px;gap:4px;padding:3px 5px;top:3px;left:3px}.turn-status{gap:3px;font-size:8px}.remaining-status{gap:2px;padding-left:4px}.remaining-status strong{font-size:15px}.remaining-status span{font-size:7px}.rolled-dice{gap:2px}.rolled-dice span{border-radius:3px;width:15px;height:15px;font-size:8px}.notice{min-height:24px;margin:0 -14px;padding:4px 7px;font-size:9px}.discard-river{inset:63px 62px 88px}.river{gap:1px;max-width:150px}.river-3,.river-1{width:46px}.mahjong-tile.compact{width:18px;height:25px}.player-area{bottom:4px;left:5px;right:5px}.player-row-meta{margin-bottom:2px;font-size:9px}.player-row-meta>div{gap:4px}.player-row-meta .wind-badge{width:auto;min-width:16px;height:16px}.player-melds{gap:3px;margin-top:2px}.player-hand{gap:1px}.mahjong-tile{border-radius:4px;width:clamp(27px,5vw,39px);height:clamp(38px,7vw,54px);padding:0}.player-hand .drawn-tile{margin-left:6px;transform:translateY(-3px)scale(1.06)}button.mahjong-tile:hover:not(:disabled),button.mahjong-tile.selected-tile:not(:disabled){transform:translateY(-6px)}button.mahjong-tile.drawn-tile:hover:not(:disabled),button.mahjong-tile.drawn-tile.selected-tile:not(:disabled){transform:translateY(-7px)scale(1.06)}.tenpai-hint{border-radius:7px;gap:5px;max-width:78%;min-height:31px;margin-bottom:3px;padding:3px 6px}.tenpai-label{font-size:9px}.tenpai-label small{display:none}.tenpai-outs{gap:4px}.tenpai-out{gap:2px}.tenpai-out .mahjong-tile{width:16px;height:23px}.tenpai-out b{font-size:7px}.claim-bar{gap:4px;max-width:92%;bottom:63px;right:7px}.claim-button{padding:5px 9px;font-size:10px}.game-footer{display:none}.result-overlay{padding:5px}.result-card.with-hands{width:min(720px,96%);padding:10px 16px}.result-card.with-hands .result-seal{width:34px;height:34px;margin-bottom:4px;font-size:18px}.result-card.with-hands h2{font-size:18px}.result-card.with-hands>p{margin:3px 0 7px;font-size:10px}.settlement-panel{grid-template-columns:1fr auto;gap:5px;margin-bottom:5px;padding:5px}.fan-list{gap:2px}.fan-list span{gap:3px;padding:2px 5px;font-size:7px}.settlement-total{font-size:7px}.settlement-total strong{font-size:16px}.score-deltas{gap:2px}.score-deltas span{padding:2px 3px;font-size:7px}.score-deltas small{font-size:6px}.dealer-result{font-size:8px;margin:2px 0 4px!important}.revealed-hands{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-bottom:8px}.revealed-player{grid-template-columns:67px 1fr;gap:4px;padding:3px 4px}.revealed-player-name{gap:3px;font-size:9px}.revealed-player-name .wind-badge{width:auto;min-width:15px;height:15px;font-size:8px}.revealed-player-name b{padding:2px 4px;font-size:7px}.revealed-tiles{gap:1px}.revealed-tiles .mahjong-tile{width:13px;height:19px}.revealed-meld{margin-right:2px;padding-right:2px}.result-card.with-hands .new-game-button{padding:5px 12px;font-size:10px}.settings-modal-backdrop{padding:8px}.settings-dialog{width:min(540px,88%);max-height:calc(var(--mobile-stage-height) - 18px);border-radius:16px;padding:18px 24px}.settings-heading{gap:9px;padding-bottom:10px}.settings-heading h2{font-size:21px}.settings-heading p{font-size:9px}.settings-dialog-close{width:30px;height:30px;font-size:21px;top:10px;right:10px}.setting-row{flex-direction:row;align-items:center;gap:14px;padding:12px 0}.setting-row strong{font-size:14px}.setting-row p{margin-top:3px;font-size:10px;line-height:1.45}.switch-button{width:65px;height:34px}.switch-button span{width:26px;height:26px;top:4px;left:4px}.switch-button.is-on span{transform:translate(31px)}.switch-button b{font-size:9px}.settings-note{margin-bottom:10px;font-size:9px}.rules-panel{border-radius:8px;margin-bottom:8px}.rules-panel summary{padding:6px 9px;font-size:10px}.rules-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:6px}.rules-grid section{padding:5px}.rules-grid h3{margin-bottom:2px;font-size:9px}.rules-grid p{margin:1px 0;font-size:7px;line-height:1.35}.back-to-game{padding:6px 14px;font-size:11px}}@media (max-height:500px) and (orientation:landscape){.deal-screen{min-height:100dvh;padding:8px}.deal-card{border-radius:18px;width:min(620px,92%);padding:14px 24px}.deal-card .brand-mark{width:34px;height:34px;margin-bottom:4px;font-size:17px}.deal-card h1{margin:3px 0 7px;font-size:22px}.dice-preview{gap:7px;margin-bottom:7px}.dice-preview span{border-radius:8px;width:36px;height:36px;font-size:28px}.deal-copy{margin-bottom:8px;font-size:10px;line-height:1.4}.deal-button{padding:6px 12px;font-size:11px}}@media (max-width:600px) and (orientation:portrait){.page-shell{--mobile-stage-height:100dvw}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
