:root{color:#303b37;font-synthesis:none;-webkit-font-smoothing:antialiased;--page:#f7f6f2;--green:#35644f;--key-height:clamp(52px, 8.5dvh, 72px);background:#f7f6f2;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none}button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}button,.tile-editor{touch-action:manipulation}button:focus-visible{outline:2px solid var(--green);outline-offset:2px}button:disabled{opacity:.3}.app{flex-direction:column;max-width:520px;height:100dvh;margin:0 auto;display:flex}.route-panel{height:100%}.route-panel[hidden]{display:none}.page-header{padding:calc(25px + env(safe-area-inset-top)) 23px 12px;letter-spacing:-.3px;flex-shrink:0;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.brand{flex-shrink:0;align-items:center;gap:8px;display:flex}.brand-tile{background:#fffefa;border-radius:3px;width:20px;height:28px;display:block;box-shadow:0 1px 2px #38412f20}.page-nav-link{color:#6d8166;letter-spacing:0;border-radius:10px;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0 7px;font-size:12px;font-weight:400;text-decoration:none;display:inline-flex}.page-nav-link[aria-current=page]{color:var(--green);background:#e7ecde;font-weight:600}.page-nav-link:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:3px}.reference-content{min-height:0;padding:27px 23px calc(32px + env(safe-area-inset-bottom));scrollbar-width:thin;flex:1;overflow-y:auto}.reference-intro h1{letter-spacing:-1px;margin:0 0 9px;font-size:28px;font-weight:450}.reference-intro p{color:#8b9584;margin:0;font-size:12px}.reference-toolbar{justify-content:space-between;align-items:center;gap:12px;margin:27px 0 17px;display:flex}.reference-count{color:#8b9584;font-variant-numeric:tabular-nums;font-size:10px}.reference-search{background:#eeeee6;border:1px solid #dce1d4;border-radius:11px;align-items:center;gap:10px;min-height:47px;padding:0 12px;display:flex}.reference-search:focus-within{border-color:#94aa8d;box-shadow:0 0 0 2px #dce5d24d}.reference-search>svg{color:#85957a;flex-shrink:0;width:18px;height:18px}.reference-search input{color:#354c3c;width:100%;min-width:0;font:inherit;background:0 0;border:0;outline:none;flex:1;padding:12px 0;font-size:16px}.reference-search input::placeholder{color:#9ba48f;font-size:13px}.reference-search input::-webkit-search-cancel-button{-webkit-appearance:none}.reference-search button{color:#7c8972;cursor:pointer;background:0 0;border:0;width:32px;min-height:44px;padding:0;font-size:23px}.reference-note{color:#98a08f;margin:12px 0 2px;font-size:10px;line-height:1.7}.reference-list{margin:0;padding:0;list-style:none}.reference-list>li{border-bottom:1px solid #dfe2d8;padding:25px 0}.reference-pattern-heading{align-items:baseline;gap:10px;display:flex}.pattern-number{color:#a3ac9b;font-variant-numeric:tabular-nums;font-size:9px}.reference-pattern-heading h2{letter-spacing:-.3px;flex:1;margin:0;font-size:16px;font-weight:500;line-height:1.35}.pattern-points{color:var(--green);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:17px}.pattern-points small{color:#8f9b84;margin-left:4px;font-size:9px}.pattern-description{color:#7e8975;margin:11px 0 0;font-size:11px;line-height:1.8}.reference-example{--reference-tile-width:min(21px, calc((100vw - 100px) / 14));flex-wrap:wrap;align-items:center;gap:19px 6px;padding-top:18px;display:flex}.reference-meld{gap:1px;padding-top:3px;display:inline-flex;position:relative}.reference-meld.meld-concealed{border-top:1px solid #75916b}.reference-concealed{color:#75916b;background:var(--page);justify-content:center;width:14px;height:10px;display:flex;position:absolute;top:-12px;left:50%;transform:translate(-50%)}.reference-concealed svg{width:11px;height:10px}.reference-tile{width:var(--reference-tile-width);height:calc(var(--reference-tile-width) * 1.4);background:#fffefa;border-radius:2px;display:block;box-shadow:0 1px 1px #38412f16}.pattern-example-note{color:#98a08f;margin:12px 0 0;font-size:10px;line-height:1.6}.reference-empty{text-align:center;padding:45px 0}.reference-empty h2{font-size:16px;font-weight:500}.reference-empty p{color:#8b9584;font-size:12px}.reference-source{color:#6d8166;margin-top:24px;font-size:11px;text-decoration:none;display:inline-block}.demo-label{letter-spacing:1.5px;color:#969b94;margin-left:auto;font-size:8px;font-weight:500}.hand-area{scrollbar-width:thin;flex:1;min-height:0;padding:clamp(38px,8dvh,78px) 23px 32px;overflow-y:auto}.hand-heading{color:#858e85;justify-content:space-between;align-items:center;margin-bottom:26px;font-size:11px;display:flex}.hand-heading label{text-transform:uppercase;letter-spacing:1.6px;font-size:10px;font-weight:600}.hand-heading>span{font-variant-numeric:tabular-nums}.tile-editor{--input-tile-width:min(28px, calc((100vw - 70px) / 14));--input-tile-height:calc(var(--input-tile-width) * 1.4);cursor:text;-webkit-user-select:none;user-select:none;outline:none;flex-wrap:wrap;align-content:flex-start;align-items:center;gap:16px 1px;width:100%;min-height:112px;padding:14px 2px 10px;display:flex}.empty-input{align-items:center;min-height:52px;display:flex;position:relative}.placeholder{color:#a3a69d;letter-spacing:-.7px;font-size:clamp(20px,5.5vw,25px);font-weight:350}.keyboard-open .placeholder{opacity:.65;padding-left:7px}.tile-image{object-fit:contain;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;display:block}.editor-token{width:var(--input-tile-width);height:var(--input-tile-height);background:#fffefa;border-radius:3px;flex-shrink:0;justify-content:center;display:inline-flex;position:relative;box-shadow:0 1px 1px #38412f16}.conceal-mode .editor-token:not(.space-token){cursor:pointer}.conceal-mode .editor-token:focus-visible{outline:2px solid var(--green);outline-offset:2px}.conceal-mode .input-help{color:var(--green)}.space-token{width:13px;box-shadow:none;background:0 0;align-items:center}.space-mark{color:#d1d3ca;opacity:0;font-size:18px}.keyboard-open .space-mark{opacity:1}.end-position{width:2px;height:var(--input-tile-height);align-self:center;position:relative}.caret{background:var(--green);border-radius:2px;width:2px;animation:1.1s step-end infinite blink;position:absolute;top:4px;bottom:4px;left:-3px}.empty-input .caret{left:0}.concealed-mark{border-bottom:1.5px solid var(--green);height:13px;color:var(--green);justify-content:center;display:flex;position:absolute;top:-14px;left:0;right:0}.concealed-mark svg{width:12px;height:11px}.input-help{color:#969d92;margin:19px 0 0;font-size:11px;line-height:1.7}.scoring{border-top:1px solid #dfe2d8;margin-top:35px;padding-top:20px;font-size:12px}.scoring-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.scoring h2{letter-spacing:-.4px;margin:0;font-size:17px;font-weight:500}.ruleset-label{color:#788373;align-items:center;gap:9px;font-size:10px;display:flex}.score-context{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:12px;display:grid}.score-field,.winning-tile-label{color:#788373;flex-direction:column;gap:7px;min-width:0;font-size:10px;display:flex}.selector{width:100%;min-width:0}.selector-trigger{color:#354c3c;text-align:left;cursor:pointer;background:#eeeee6;border:1px solid #dce1d4;border-radius:11px;align-items:center;gap:9px;width:100%;min-height:52px;padding:8px 11px;display:flex;box-shadow:0 1px #fffefa}.selector-trigger:active,.selector-trigger[aria-expanded=true]{background:#e5eadc;border-color:#94aa8d}.selector-value{text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:500;line-height:1.3;overflow:hidden}.selector-value small{color:#8c9682;margin-top:2px;font-size:9px;font-weight:400;display:block}.selector-tile{background:#fffefa;border-radius:3px;flex-shrink:0;width:24px;height:34px;display:flex}.selector-chevron{color:#788b70;flex-shrink:0;width:17px;height:17px}.selector-compact{width:auto}.selector-compact .selector-trigger{background:#e7ecde;border-color:#dce3d0;border-radius:20px;gap:7px;min-height:35px;padding:7px 10px 7px 14px}.selector-compact .selector-value{letter-spacing:.6px;font-size:12px}.selector-sheet{width:min(100%,520px);max-width:520px;max-height:78dvh;padding:0 18px calc(20px + env(safe-area-inset-bottom));color:#303b37;font:inherit;background:#f7f6f2;border:none;border-radius:22px 22px 0 0;margin:0 auto;position:fixed;inset:auto 0 0;overflow:hidden;box-shadow:0 -8px 50px #213d2924}.selector-sheet[open]{flex-direction:column;display:flex}.selector-sheet::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#26392e66}.sheet-handle{background:#cdd4c4;border-radius:2px;flex-shrink:0;width:32px;height:4px;margin:10px auto 7px}.sheet-heading{flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;margin:0 0 12px 2px;display:flex}.sheet-heading h3{letter-spacing:-.4px;margin:0;font-size:18px;font-weight:500}.sheet-close{color:#7c8972;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;padding:10px;display:flex}.sheet-close:active{background:#e4e9dc}.sheet-close svg{width:22px;height:22px}.selector-options{overscroll-behavior:contain;flex-direction:column;gap:6px;min-height:0;max-height:57dvh;padding:2px;display:flex;overflow-y:auto}.selector-option{color:#455440;text-align:left;cursor:pointer;background:#eeeee7;border:1px solid #0000;border-radius:11px;flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;min-height:48px;padding:11px 13px;font-size:14px;display:flex;position:relative}.selector-option[aria-selected=true]{color:#315b3c;background:#e3ebd9;border-color:#8fa584}.selector-option:active{background:#dce6d2}.option-label{min-width:0;line-height:1.35}.option-label small{color:#8b967e;margin-top:3px;font-size:9px;display:block}.option-check{color:#55784d;flex-shrink:0;width:16px;height:16px}.selector-tile-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.selector-tile-grid .selector-option{text-align:center;flex-direction:column;justify-content:center;gap:9px;min-height:112px;padding:16px 4px 11px;font-size:11px}.option-tile{background:#fffefa;border-radius:3px;width:32px;height:45px;display:block}.selector-tile-grid .option-check{width:13px;height:13px;position:absolute;top:4px;right:4px}.concealed-option{align-items:center;gap:7px;min-height:44px;margin:7px 0 2px;display:flex}.concealed-option input{width:17px;height:17px;accent-color:var(--green)}.scoring-details,.score-arrangement{color:#7b8575;font-size:11px;line-height:1.65}.scoring summary{cursor:pointer;min-height:38px;padding:10px 0}.scoring-details p{margin:11px 0}.scoring-details a{color:var(--green)}.winning-tile-label{margin:8px 0 16px}.score-message,.score-notice{color:#89907f;margin:17px 0;font-size:11px;line-height:1.8}.score-notice{color:#8d6e34}.score-patterns{margin:17px 0 0;padding:0;list-style:none}.score-patterns li{justify-content:space-between;align-items:baseline;gap:16px;padding:10px 0;display:flex}.score-patterns strong{font-variant-numeric:tabular-nums;font-weight:500}.score-patterns small{color:#89907f;margin-top:4px;font-size:10px;display:block}.score-total{border-top:1px solid #dfe2d8;justify-content:space-between;align-items:baseline;margin-top:12px;padding:15px 0;font-size:14px;display:flex}.score-total strong{color:var(--green);font-variant-numeric:tabular-nums;font-size:28px;font-weight:500}.score-total small{color:#89907f;padding-left:6px;font-size:10px;font-weight:400}.arrangement-groups{flex-wrap:wrap;gap:15px 10px;margin:10px 0;display:flex}.arrangement-group{gap:1px;display:inline-flex}.arrangement-group .tile-image{width:18px;height:25px}.keyboard{width:100vw;padding:0 6px calc(9px + env(safe-area-inset-bottom));-webkit-user-select:none;user-select:none;background:#e4e7e1;flex-shrink:0;align-self:center;position:relative}.keyboard-guide,.key-grid{max-width:508px;margin-inline:auto}.keyboard-guide{color:#6c786b;letter-spacing:.1px;justify-content:center;align-items:center;gap:21px;height:39px;font-size:10px;display:flex}.key-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px 6px;display:grid}.key{height:var(--key-height);cursor:pointer;background:#fffefa;border:0;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-width:0;padding:3px;display:flex;position:relative;box-shadow:0 1.5px #bec5b9}.key:active,.key.is-pressed{background:#d2dfd0;box-shadow:0 1px #a7b7a0}.key svg{width:23px;height:23px}.utility-key{color:#52614f;background:#cfd6cc;box-shadow:0 1.5px #b6c0b1}.utility-key.active-key{color:#284b37;background:#b9cdb7}.accent-key{background:var(--green);color:#fff;box-shadow:0 1.5px #254a38}.accent-key:active{background:#284f3d}.key-caption{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.1px;flex-shrink:0;max-width:100%;font-size:8px;font-weight:500;line-height:1.2;display:block;overflow:hidden}.key-number{font-variant-numeric:tabular-nums;font-size:26px;font-weight:400;line-height:1}.suit-hints{opacity:.75;gap:5px;height:15px;display:flex}.suit-hints .tile-image{width:10px;height:14px}.flick-key{touch-action:none;-webkit-touch-callout:none}.flick-key>.tile-image,.bonus-key>.tile-image{width:25px;height:35px}.view-digits{font-size:19px;line-height:23px}.empty-key{pointer-events:none}.flick-preview{z-index:5;pointer-events:none;color:#62705b;background:#fefefb;border-radius:14px;width:184px;height:147px;position:absolute;bottom:calc(100% + 9px);left:50%;transform:translate(-50%);box-shadow:0 4px 24px #23362429,0 0 0 1px #66785a12}.preview-option{background:#f1f2ec;border-radius:7px;justify-content:center;align-items:center;gap:1px;width:49px;height:54px;display:flex;position:absolute}.preview-option.selected{background:#d3e2ce;box-shadow:inset 0 0 0 1.5px #64845d}.preview-option .tile-image{width:28px;height:40px}.preview-direction{font-size:10px}.option-up{top:6px;left:67px}.option-left{top:65px;left:8px}.option-center{top:65px;left:67px}.option-right{top:65px;right:8px}.flick-preview.has-down{height:206px}.option-down{top:124px;left:67px}.preview-label{text-align:center;width:100%;font-size:10px;font-weight:500;position:absolute;bottom:8px;left:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes blink{50%{opacity:0}}@media (height<=620px){:root{--key-height:47px}.page-header{padding-top:calc(14px + env(safe-area-inset-top))}.hand-area{padding-top:25px;padding-bottom:14px}.hand-heading{margin-bottom:12px}.tile-editor{min-height:74px}.keyboard-guide{height:30px}.key-number{font-size:22px}.suit-hints,.suit-hints .tile-image{height:12px}.flick-key>.tile-image,.bonus-key>.tile-image{flex-shrink:0;width:21px;height:28px}}@media (prefers-reduced-motion:reduce){.caret{animation:none}}.page-navigation{gap:2px;margin-left:auto;display:flex}.session-content{padding-top:24px}.session-card{background:#fffefa;border:1px solid #dce1d4;border-radius:16px;margin-top:22px;padding:18px}.session-card h2{letter-spacing:-.4px;margin:0 0 15px;font-size:18px;font-weight:500}.session-card p{color:#687364;overflow-wrap:anywhere;font-size:13px;line-height:1.65}.session-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.session-heading>span{color:#687364;font-size:10px}.balance-list{margin:0;padding:0;list-style:none}.balance-list li{border-bottom:1px solid #e7eadf;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 0;font-size:14px;display:flex}.balance-list li>span{overflow-wrap:anywhere;min-width:0}.balance-list strong{font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:550}.positive{color:var(--green)}.negative{color:#a14d3b}.session-primary,.session-secondary{cursor:pointer;border:1px solid #ccd6c5;border-radius:10px;min-height:46px;padding:11px 14px;font-size:13px}.session-primary{background:var(--green);border-color:var(--green);color:#fff;width:100%}.session-secondary{background:#eeeee6}.session-primary:active{background:#284f3d}.session-actions{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.session-actions>button{flex:1;width:auto}.session-field,.session-add{color:#52614f;flex-direction:column;gap:8px;margin:17px 0;font-size:12px;display:flex}.session-add>div{gap:8px;display:flex}.session-page input:not([type=radio]){color:#303b37;width:100%;min-width:0;min-height:46px;font:inherit;background:#f7f6f2;border:1px solid #ccd6c5;border-radius:10px;padding:11px 12px;font-size:16px}.session-page input:focus-visible{outline:2px solid var(--green);outline-offset:2px}.session-method,.player-picker{border:0;min-width:0;margin:18px 0;padding:0}.session-method legend,.player-picker legend{color:#52614f;margin-bottom:10px;font-size:12px}.session-method{flex-wrap:wrap;gap:12px;display:flex}.session-method label{align-items:center;gap:7px;min-height:44px;font-size:14px;display:flex}.session-method input{width:18px;height:18px;accent-color:var(--green)}.session-card .session-help{font-size:12px}.player-chips{flex-wrap:wrap;gap:8px;display:flex}.player-chips button{cursor:pointer;overflow-wrap:anywhere;background:#eeeee6;border:1px solid #dce1d4;border-radius:22px;max-width:100%;min-height:44px;padding:10px 14px;font-size:14px}.player-chips button[aria-pressed=true]{color:#284f3d;background:#deead6;border-color:#719663;box-shadow:inset 0 0 0 1px #719663}.payment-preview{background:#f0f3eb;border-radius:10px;margin:16px 0;padding:2px 12px 12px}.session-status{min-height:20px;color:var(--green);font-size:13px}.session-error,.storage-alert{color:#823f2e;background:#fff0e7;border:1px solid #ce9e85;padding:12px;font-size:13px;line-height:1.6}.storage-alert{bottom:0;z-index:10;position:fixed;inset-inline:12px}@media (width<=360px){.page-header{gap:5px;padding-inline:18px;font-size:13px}.page-header .brand{gap:6px}.page-nav-link{padding-inline:5px;font-size:12px}.session-card{padding:14px}}.session-record-shortcut{margin-top:20px}.session-card[aria-label=Session\ balances] .balance-list{max-height:240px;overflow-y:auto}.session-tabs{background:#eeeee6;border-radius:12px;gap:6px;margin-top:22px;padding:5px;display:flex}.session-tabs button{cursor:pointer;background:0 0;border:0;border-radius:9px;flex:1;min-height:44px;font-size:14px}.session-tabs button[aria-selected=true]{color:var(--green);background:#fffefa;font-weight:600;box-shadow:0 1px 4px #303b3715}.session-page [role=tabpanel][hidden]{display:none}.session-page textarea,.session-page select{color:#303b37;width:100%;min-height:46px;font:inherit;background:#f7f6f2;border:1px solid #ccd6c5;border-radius:10px;padding:11px 12px;font-size:16px}.session-page textarea{resize:vertical}.session-page textarea:focus-visible,.session-page select:focus-visible{outline:2px solid var(--green);outline-offset:2px}.hand-history{padding-top:24px}.hand-history h2{margin:0;font-size:20px;font-weight:500}.hand-history>.session-help,.session-empty{color:#687364;font-size:13px;line-height:1.7}.session-empty{text-align:center;padding:32px 0}.history-list{margin:0 0 22px;padding:0;list-style:none}.history-card{margin-top:16px}.history-card h3{margin:0;font-size:16px;font-weight:600}.history-card time{color:#687364;font-size:11px}.history-card .session-heading{flex-wrap:wrap}.history-card .history-result{color:#303b37}.history-note{white-space:pre-wrap;background:#f0f3eb;border-radius:8px;padding:12px}.delete-confirmation{border-top:1px solid #e7eadf;margin-top:14px;padding-top:8px}.session-danger{color:#a14d3b;border-color:#ce9e85}.session-invite{text-align:left}.session-invite-summary{cursor:pointer;align-items:center;gap:10px;min-height:44px;list-style:none;display:flex}.session-invite-summary::-webkit-details-marker{display:none}.session-invite-summary h2{flex:1;margin:0}.session-invite-summary:focus-visible{outline:2px solid var(--green);outline-offset:4px;border-radius:4px}.session-invite-chevron{width:18px;height:18px;color:var(--green);flex-shrink:0}.session-invite details[open] .session-invite-chevron{transform:rotate(180deg)}.session-qr{background:#fffefa;border-radius:0;width:min(240px,100%);height:auto;margin:1rem auto;display:block}.join-code{letter-spacing:.08em;overflow-wrap:anywhere;font-family:ui-monospace,monospace}.session-invite-link{overflow-wrap:anywhere;margin-bottom:1rem;display:block}.connection-status{font-size:.8rem}.session-conflict{background:#fff7e6;border-left:3px solid #b87920;margin-bottom:1rem;padding:.6rem}
