/* Activated only for phone-sized touch devices by phone.js. */
html.gin-phone {height:100%;overflow:hidden;overscroll-behavior:none}
.gin-phone body {position:fixed;top:var(--phone-top,0px);left:var(--phone-left,0px);width:var(--phone-w,100vw);height:var(--phone-h,100dvh);min-height:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);overflow:hidden;display:flex;flex-direction:column;--cardw:78px;--cardh:108px}
.gin-phone body.larger {--cardw:90px;--cardh:126px}
.gin-phone button {min-height:44px;touch-action:manipulation}
.gin-phone button:hover:enabled {transform:none}
.gin-phone .topbar {flex:0 0 49px;min-height:49px;padding:2px 10px;gap:10px}
.gin-phone #return {min-height:44px;display:flex;align-items:center;font-size:13px}
.gin-phone #phoneMenuButton {font-size:14px;padding:8px 17px}
.gin-phone .wordmark {display:none}
.gin-phone main {width:100%;max-width:none;flex:1;min-height:0;padding:3px 6px;overflow:hidden;display:flex;flex-direction:column}
.gin-phone #welcome {width:100%;min-height:0;max-width:none;overflow:auto;overscroll-behavior:contain;margin:0;padding:10px 5px 20px}
.gin-phone .welcome .crest,.gin-phone .welcome-cards {display:none}
.gin-phone .welcome h1 {font-size:39px;margin:4px 0 8px}
.gin-phone .welcome .eyebrow {font-size:9px;letter-spacing:2px;margin:0}
.gin-phone .intro {font-size:16px;line-height:1.35;margin:5px 0 14px}
.gin-phone .setup {padding:14px}
.gin-phone .fields {gap:12px}
.gin-phone .fine {font-size:9px;margin:14px 0}
.gin-phone #game {flex:1;min-height:0;display:flex;flex-direction:column;gap:4px;overflow:hidden}
.gin-phone .table-heading {padding:0 5px;flex:0 0 28px;min-height:28px}
.gin-phone .table-heading .eyebrow {display:none}
.gin-phone .table-heading h1 {font-size:24px}
.gin-phone .table-tools {font-size:13px}
.gin-phone .table {flex:1;min-height:0;padding:4px;border-radius:19px;display:flex;overflow:hidden}
.gin-phone .rail {width:100%;min-height:0;padding:6px;border-radius:14px;display:flex;flex-direction:column;gap:5px;overflow:hidden}
.gin-phone #phonePlayers {display:grid;grid-template-columns:1fr 1fr;gap:8px;flex:0 0 auto}
.gin-phone .player {font-size:13px;gap:5px;min-width:0;padding:0;border:0;justify-content:flex-start}
.gin-phone .player>div:not(.avatar):not(.score) {min-width:0;overflow-wrap:anywhere}
.gin-phone .player strong {font-size:13px;line-height:1.1}
.gin-phone .player small {font-size:10px;line-height:1.2;margin-top:2px}
.gin-phone .player .avatar {display:none}
.gin-phone .player .score {font-size:22px;padding-left:6px;flex:0 0 auto;margin-left:auto}
.gin-phone .player .score small {font-size:9px;letter-spacing:0}
.gin-phone .opponent-cards,.gin-phone .center-mark,.gin-phone .table-note {display:none}
.gin-phone .table-center {flex:1;min-height:124px;gap:38px;margin:0;align-items:center}
.gin-phone .pile-wrap {gap:7px}
.gin-phone .pile-wrap>span {font-size:11px;letter-spacing:.8px}
.gin-phone .pile {width:76px;height:102px;font-size:23px;flex-shrink:0}
.gin-phone .pile:disabled {filter:saturate(.55);opacity:.8}
.gin-phone .card .corner {top:6px;left:6px;width:18px;font-size:23px}
.gin-phone .card .corner b {font-size:18px}
.gin-phone .card .corner.bottom {top:auto;left:auto;right:6px;bottom:6px}
.gin-phone .card .center-suit {font-size:34px;top:34%}
.gin-phone .back-inner {font-size:38px}
.gin-phone .back-inner small {font-size:5px}
.gin-phone .guidance {flex:0 0 auto;font-size:13px;line-height:1.25;margin:0;min-height:0}
.gin-phone .turn-actions {margin:0;flex:0 0 auto}
/* The two piles already perform these actions; keep their full-size tap targets. */
.gin-phone #drawStock,.gin-phone #drawUp {display:none}
.gin-phone .turn-actions:not(:has(#pass:not([hidden]))) {display:none}
.gin-phone #pass {font-size:13px;padding:7px 15px}
.gin-phone .hand-header {flex:0 0 44px;min-height:44px;margin:0;flex-direction:row;align-items:center;gap:5px;font-size:12px}
.gin-phone #phoneSortButton {font-size:12px;padding:7px 9px}
.gin-phone .hand,.gin-phone body.larger .hand {display:flex;flex-wrap:nowrap;justify-content:flex-start;align-items:flex-start;gap:8px;min-height:0;height:calc(var(--cardh) + 24px);flex:0 0 calc(var(--cardh) + 24px);padding:10px 4px 14px;overflow-x:auto;overflow-y:hidden;touch-action:pan-x;overscroll-behavior:contain;scrollbar-color:#c8b575 #123d2e;user-select:none;-webkit-user-select:none}
.gin-phone .hand>.card,.gin-phone body.larger .hand>.card {width:var(--cardw);min-width:var(--cardw);max-width:none;height:var(--cardh);flex:0 0 var(--cardw);touch-action:pan-x;font-size:23px}
.gin-phone .hand .card.selected {transform:translateY(-5px);outline-width:3px}
.gin-phone .card.meld:after {font-size:9px;left:5px;bottom:5px}
.gin-phone .actionbar {flex:0 0 auto;display:grid;grid-template-columns:.7fr 1.6fr .8fr .7fr;gap:4px;margin:0}
.gin-phone .actionbar #selection {grid-column:1/-1;grid-row:1;text-align:center;font-size:12px;line-height:1.2;margin:0;min-height:15px}
.gin-phone .actionbar button {font-size:13px;padding:7px 3px}
.gin-phone #discard {font-size:12px}
.gin-phone .message {flex:0 0 auto;font-size:12px;line-height:1.2;margin:0;min-height:0;max-height:32px;overflow:auto}
.gin-phone .message:empty {display:none}
.gin-phone #endActions {margin:0;flex:0 0 auto;display:flex;gap:6px}
.gin-phone #endActions button {margin:0;flex:1;font-size:13px}
.gin-phone[data-gin-phase=result] .table-center,.gin-phone[data-gin-phase=match] .table-center {display:none}
.gin-phone[data-gin-phase=result] .rail,.gin-phone[data-gin-phase=match] .rail {overflow:auto}
.gin-phone .room-panel {padding:6px;margin:0;gap:5px;font-size:12px;flex:0 0 auto;flex-wrap:wrap}
.gin-phone .room-panel div {width:auto;flex:1;min-width:0}
.gin-phone .room-panel p {margin:2px 0;font-size:11px;line-height:1.2}
.gin-phone .room-panel strong {letter-spacing:0;font-size:12px;overflow-wrap:anywhere}
.gin-phone .room-panel button {font-size:12px;flex:0 0 auto;padding:6px}
.gin-phone #copyInvite {display:block}
.gin-phone[data-gin-phase=lobby] #copyInvite {display:block}
.gin-phone[data-gin-phase=lobby] #game {overflow:auto}
.gin-phone[data-gin-phase=lobby] .table {min-height:150px;flex:0 0 auto}
.gin-phone[data-gin-phase=lobby] .table-center,.gin-phone[data-gin-phase=lobby] .hand-header,.gin-phone[data-gin-phase=lobby] .hand,.gin-phone[data-gin-phase=lobby] .actionbar {display:none}
.gin-phone dialog {max-height:calc(var(--phone-h,100dvh) - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom));width:calc(100% - 16px);max-width:660px;overscroll-behavior:contain;overflow:auto}
.gin-phone .dialog-body {padding:14px}
.gin-phone .dialog-body h2 {font-size:25px;margin-bottom:12px}
.gin-phone .dialog-body p,.gin-phone .dialog-body li {font-size:14px;line-height:1.5}
.gin-phone .dialog-actions {position:sticky;bottom:-14px;background:#0b3329;padding:9px 0;margin-top:10px;gap:8px;z-index:2}
.gin-phone .dialog-actions button {flex:1;font-size:13px;padding:8px}
.gin-phone .closeDialog {position:sticky;bottom:0;min-height:44px}
.gin-phone .check {margin:12px 0}
.gin-phone .privacy-body .crest {height:35px;width:35px;font-size:27px;margin-bottom:9px}
.gin-phone .phoneMenuHeading {position:sticky;top:-14px;background:#0b3329;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0;z-index:2}
.gin-phone .phoneMenuHeading h2 {margin:0}
.gin-phone #phoneMenu nav {display:flex;gap:8px}
.gin-phone #phoneMenu nav button {flex:1}
.gin-phone #phoneMenu .sorts {display:flex;gap:6px;flex-wrap:wrap}
.gin-phone #phoneMenu .sorts button {font-size:13px;min-height:44px;padding:7px}
.gin-phone #phoneMenu h3 {font-size:20px;margin:10px 0}
.gin-phone #phoneMainTools {margin-top:14px}
.gin-phone #phoneMainTools>button {width:100%;margin-top:9px}
.gin-phone.phone-landscape .topbar {flex-basis:46px;min-height:46px}
.gin-phone.phone-landscape .table-heading {flex-basis:25px;min-height:25px}
.gin-phone.phone-landscape .rail {display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);grid-template-rows:38px minmax(0,1fr) auto;gap:4px 10px;padding:4px 6px}
.gin-phone.phone-landscape #phonePlayers {grid-column:1;grid-row:1}
.gin-phone.phone-landscape .player {font-size:12px}
.gin-phone.phone-landscape .player strong {font-size:12px}
.gin-phone.phone-landscape .player .score {font-size:20px}
.gin-phone.phone-landscape .table-center {grid-column:1;grid-row:2;min-height:0;gap:32px;align-self:start}
.gin-phone.phone-landscape .pile {height:94px;width:70px}
.gin-phone.phone-landscape .guidance {grid-column:1;grid-row:3;align-self:end;font-size:12px}
.gin-phone.phone-landscape .turn-actions {grid-column:2;grid-row:3;align-self:end;justify-self:start;z-index:1}
.gin-phone.phone-landscape .hand-header {grid-column:2;grid-row:1;min-height:38px;height:38px;align-self:center}
.gin-phone.phone-landscape #phoneSortButton {min-height:38px}
.gin-phone.phone-landscape .hand {grid-column:2;grid-row:2;align-self:start;height:calc(var(--cardh) + 22px)}
.gin-phone.phone-landscape .actionbar {grid-column:2;grid-row:3;align-self:end}
.gin-phone.phone-landscape[data-gin-phase=offer1] .actionbar,.gin-phone.phone-landscape[data-gin-phase=offer2] .actionbar {padding-left:140px}
.gin-phone.phone-landscape .actionbar #selection {font-size:11px}
.gin-phone.phone-landscape .message {grid-column:1;grid-row:3;align-self:start;background:#0b4a35;z-index:2}
.gin-phone.phone-landscape #endActions {grid-column:1;grid-row:2;align-self:start;flex-wrap:wrap}
.gin-phone.phone-landscape .room-panel {position:absolute;right:92px;top:3px;max-width:55%;border:0;background:transparent;padding:0;min-height:40px;align-items:center}
.gin-phone.phone-landscape .room-panel div {display:flex;gap:5px;align-items:center}
.gin-phone.phone-landscape .room-panel strong {font-size:10px}
.gin-phone.phone-landscape .room-panel p {font-size:10px}
.gin-phone.phone-landscape[data-gin-phase=lobby] .room-panel {position:static;max-width:none}
.gin-phone.phone-landscape[data-gin-phase=lobby] .rail {display:flex}
@media(max-height:350px){
 .gin-phone.phone-landscape body {--cardh:94px;--cardw:72px}
 .gin-phone.phone-landscape body.larger {--cardh:104px;--cardw:82px}
 .gin-phone.phone-landscape .pile {height:82px;width:62px}
 .gin-phone.phone-landscape .pile .center-suit {font-size:27px}
 .gin-phone.phone-landscape .pile-wrap {gap:5px}
 .gin-phone.phone-landscape .pile-wrap>span {font-size:10px}
 .gin-phone.phone-landscape .card .corner {font-size:20px}
 .gin-phone.phone-landscape .card .corner b {font-size:15px}
}
.gin-phone .player strong {display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gin-phone.phone-landscape[data-gin-phase=offer1] .actionbar,.gin-phone.phone-landscape[data-gin-phase=offer2] .actionbar {padding-left:0;width:90px;justify-self:end;display:block}
.gin-phone.phone-landscape[data-gin-phase=offer1] .actionbar :not(#hint),.gin-phone.phone-landscape[data-gin-phase=offer2] .actionbar :not(#hint) {display:none}
.gin-phone.phone-landscape .turn-actions {max-width:calc(100% - 100px)}
.gin-phone.phone-landscape .pile-wrap {gap:11px}
.gin-phone #phonePlayerDetails {font:14px/1.5 system-ui;overflow-wrap:anywhere}
.gin-phone .dialog-actions {bottom:0}
.gin-phone.phone-landscape .player>div:not(.avatar):not(.score) {flex:1;min-width:0}
.gin-phone.phone-landscape .player>div:not(.score) small {white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
