/* OkeyPro 1.2.113 Build 182
 * Clean Okey / 101 presentation layer.
 * This file is the only Okey-specific visual source loaded after the shared site/game styles.
 */

.game-panel.okey-layout-pro{
  --okey-wood-a:#b67640;
  --okey-wood-b:#8a4e28;
  --okey-wood-c:#563019;
  --okey-felt-a:#147653;
  --okey-felt-b:#0b5a42;
  --okey-felt-c:#073c31;
  --okey-card:#07110e;
  --okey-card-line:rgba(225,239,232,.16);
  --okey-gold:#e8c45f;
  --okey-rack-gap:1px;
}

.game-panel.okey-layout-pro #okeyGameBody{
  min-height:0;
  display:grid;
  grid-template-rows:minmax(0,1fr) auto;
  gap:6px;
  overflow:hidden;
  background:linear-gradient(180deg,#120f0d,#080807);
}

.game-panel.okey-layout-pro .okey-table-frame{
  min-height:0;
  padding:7px;
  overflow:hidden;
  border-radius:22px;
  background:linear-gradient(145deg,#4b2817,var(--okey-wood-b) 48%,#5b321d);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.07),inset 0 0 28px rgba(0,0,0,.34),0 16px 30px rgba(0,0,0,.22);
}

.game-panel.okey-layout-pro .okey-table-felt{
  position:relative;
  width:100%;
  height:100%;
  min-height:0;
  overflow:hidden;
  border:1px solid rgba(50,29,18,.9);
  border-radius:16px;
  background:
    radial-gradient(circle at 50% 43%,rgba(255,255,255,.055),transparent 34%),
    radial-gradient(circle at 18% 12%,rgba(72,181,132,.07),transparent 25%),
    linear-gradient(160deg,var(--okey-felt-a),var(--okey-felt-b) 58%,var(--okey-felt-c));
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.018),inset 0 0 46px rgba(0,0,0,.22);
  isolation:isolate;
}
.game-panel.okey-layout-pro .okey-table-felt::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.22;
  background-image:repeating-linear-gradient(17deg,rgba(255,255,255,.015) 0 1px,transparent 1px 5px),repeating-linear-gradient(103deg,rgba(0,0,0,.012) 0 1px,transparent 1px 6px);
}

/* GPU canvases are visual overlays only. Keeping them out of normal flow prevents
   ResizeObserver/Pixi feedback from growing the rack on every render. */
.game-panel.okey-layout-pro .okey-ambient-canvas,
.game-panel.okey-layout-pro .okey-commercial-canvas,
.game-panel.okey-layout-pro .okey-rack-gpu-canvas{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  display:block!important;
  pointer-events:none!important;
  z-index:0!important;
}
.game-panel.okey-layout-pro .okey-table-felt>.players,
.game-panel.okey-layout-pro .okey-table-felt>.table-discards,
.game-panel.okey-layout-pro .okey-table-felt>.game-lane,
.game-panel.okey-layout-pro .okey-table-felt>.table-melds{position:absolute}

/* player cards */
.game-panel.okey-layout-pro .players{position:absolute;inset:0;z-index:12;pointer-events:none}
.game-panel.okey-layout-pro .player-seat{
  position:absolute;
  box-sizing:border-box;
  min-height:44px;
  padding:6px 8px;
  display:grid;
  grid-template-columns:30px minmax(0,1fr);
  grid-template-areas:"avatar info";
  align-items:center;
  gap:6px;
  overflow:hidden;
  border:1px solid var(--okey-card-line);
  border-radius:14px;
  background:linear-gradient(180deg,rgba(7,18,15,.99),rgba(2,10,8,.98));
  box-shadow:0 10px 22px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.035);
  pointer-events:auto;
}
.game-panel.okey-layout-pro .player-seat.active{
  border-color:rgba(232,196,95,.9);
  box-shadow:0 0 0 1px rgba(232,196,95,.16),0 12px 25px rgba(0,0,0,.24);
}
.game-panel.okey-layout-pro .player-seat.active::after{
  content:attr(data-turn-label);
  position:absolute;
  top:-1px;
  right:7px;
  padding:2px 5px;
  border-radius:0 0 7px 7px;
  background:var(--okey-gold);
  color:#32250d;
  font-size:6px;
  font-weight:950;
  line-height:1.1;
}
.game-panel.okey-layout-pro .player-avatar{
  grid-area:avatar;
  width:30px;
  height:30px;
  min-width:30px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:1.5px solid rgba(255,255,255,.75);
  border-radius:50%;
  background:linear-gradient(180deg,#f7faf6,#d9e4dc);
  color:#242a24;
  font-size:12px;
  font-weight:950;
  box-shadow:0 0 0 1px rgba(0,0,0,.13),0 4px 9px rgba(0,0,0,.18);
}
.game-panel.okey-layout-pro .player-info{grid-area:info;display:grid;gap:2px;min-width:0;line-height:1.05}
.game-panel.okey-layout-pro .player-info b{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:8px;font-weight:900}
.game-panel.okey-layout-pro .player-info small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#aebcb5;font-size:5.5px}
.game-panel.okey-layout-pro .table-owner-mini{display:inline-flex;max-width:max-content;padding:1px 4px;border:1px solid rgba(232,196,95,.2);border-radius:999px;background:rgba(232,196,95,.13);color:#f1d979;font-size:5px;font-weight:850;line-height:1.1}
.game-panel.okey-layout-pro .player-seat.vacant{opacity:.58;border-style:dashed}

.game-panel.okey-layout-pro .player-seat.s2{top:12px;left:50%;width:172px;transform:translateX(-50%)}
.game-panel.okey-layout-pro .player-seat.s0{bottom:12px;left:50%;width:176px;transform:translateX(-50%)}
.game-panel.okey-layout-pro .player-seat.s3{left:14px;top:50%;width:126px;transform:translateY(-50%)}
.game-panel.okey-layout-pro .player-seat.s1{right:14px;top:50%;width:126px;transform:translateY(-50%)}

/* top opponents' latest discards */
.game-panel.okey-layout-pro .table-discards{position:absolute;inset:0;z-index:9;pointer-events:none}
.game-panel.okey-layout-pro .seat-discard{position:absolute;width:48px;height:62px;padding:5px 4px;display:grid;grid-template-rows:auto 1fr;justify-items:center;gap:3px;border:1px solid rgba(225,239,232,.09);border-radius:11px;background:rgba(4,35,28,.48);box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.game-panel.okey-layout-pro .seat-discard.sd2{left:10%;top:17%}
.game-panel.okey-layout-pro .seat-discard.sd1{right:10%;top:17%}
.game-panel.okey-layout-pro .seat-discard-label{font-size:6px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;color:#dce7e1}
.game-panel.okey-layout-pro .seat-discard-stage{position:relative;width:28px;height:38px;display:grid;place-items:center}
.game-panel.okey-layout-pro .seat-discard-placeholder{width:22px;height:31px;border:1px dashed rgba(255,255,255,.11);border-radius:6px;background:rgba(0,0,0,.06)}
.game-panel.okey-layout-pro .seat-discard .tile{position:absolute;width:23px;height:34px;cursor:default;transform:translate(calc(var(--discard-index,0) * 2px),calc(var(--discard-index,0) * -1px))}
.game-panel.okey-layout-pro .seat-discard .tile span{font-size:10px}

/* center watermark */
.game-panel.okey-layout-pro .table-center-logo{position:absolute;left:50%;top:50%;z-index:1;transform:translate(-50%,-50%);display:grid;gap:2px;place-items:center;pointer-events:none;color:rgba(var(--table-watermark-rgb,255,255,255),var(--table-watermark-opacity,.10));text-align:center;filter:blur(.15px)}
.game-panel.okey-layout-pro .table-center-logo span{max-width:70vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:min(var(--table-watermark-size,34px),30px);font-weight:950;letter-spacing:.07em}
.game-panel.okey-layout-pro .table-center-logo small{font-size:8px;font-weight:850;letter-spacing:.22em}

/* draw / take / discard docks */
.game-panel.okey-layout-pro .game-lane{position:absolute;z-index:11;box-sizing:border-box;display:grid;justify-items:center;gap:4px;padding:6px 5px 5px;border:1px solid rgba(226,239,233,.10);border-radius:12px;background:linear-gradient(180deg,rgba(5,36,29,.75),rgba(2,23,18,.70));box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 8px 17px rgba(0,0,0,.12)}
.game-panel.okey-layout-pro .incoming-lane{left:6%;bottom:12%;width:78px}
.game-panel.okey-layout-pro .outgoing-lane{right:6%;bottom:12%;width:78px}
.game-panel.okey-layout-pro .draw-lane{left:50%;top:50%;width:82px;transform:translate(-50%,-50%)}
.game-panel.okey-layout-pro .lane-label{font-size:7px;font-weight:900;letter-spacing:.055em;text-transform:uppercase;color:#e2ece7}
.game-panel.okey-layout-pro .tile-stage{position:relative;height:47px;min-width:34px;display:grid;place-items:end center}
.game-panel.okey-layout-pro .game-lane .discard-preview .tile{width:26px;height:39px;cursor:default}
.game-panel.okey-layout-pro .game-lane .discard-preview .tile span{font-size:13px}
.game-panel.okey-layout-pro .discard-preview.discard-stack .tile{position:absolute;left:50%;top:50%;margin:0}
.game-panel.okey-layout-pro .discard-preview.discard-stack .incoming-tile{transform:translate(calc(-50% + var(--stack-x,0px)),calc(-50% + var(--stack-y,0px))) rotate(90deg)}
.game-panel.okey-layout-pro .discard-preview.discard-stack .outgoing-tile{transform:translate(calc(-50% + var(--stack-x,0px)),calc(-50% + var(--stack-y,0px)))}
.game-panel.okey-layout-pro .discard-preview.discard-stack .stack-under{opacity:.72}
.game-panel.okey-layout-pro .table-action-btn{width:100%;min-width:0;height:28px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(255,255,255,.20);border-radius:9px;background:#183126;color:#fff;font-size:8px;font-weight:900;cursor:pointer;box-shadow:0 4px 10px rgba(0,0,0,.12)}
.game-panel.okey-layout-pro .table-action-btn.primary{background:#1d845b;border-color:#4bab84}
.game-panel.okey-layout-pro .table-action-btn.secondary{background:#253a30}
.game-panel.okey-layout-pro .table-action-btn.danger{background:#68412f;border-color:#91634d}
.game-panel.okey-layout-pro .table-action-btn:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.65)}
.game-panel.okey-layout-pro .table-action-btn svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.game-panel.okey-layout-pro .pile-visual{position:relative;width:46px;height:58px;display:grid;place-items:center}
.game-panel.okey-layout-pro .pile-visual i{position:absolute;width:35px;height:50px;border:1px solid #cbbd9d;border-radius:6px;background:linear-gradient(145deg,#fffdf6,#e9dec8);box-shadow:0 2px 5px rgba(0,0,0,.22)}
.game-panel.okey-layout-pro .pile-visual i:nth-child(1){transform:translate(-4px,3px)}
.game-panel.okey-layout-pro .pile-visual i:nth-child(2){transform:translate(-2px,2px)}
.game-panel.okey-layout-pro .pile-visual b{position:absolute;right:-3px;bottom:-1px;min-width:21px;height:18px;padding:0 4px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#14241d;color:#fff;font-size:7px}

/* rack */
.game-panel.okey-layout-pro .rack-wrap{display:grid;grid-template-rows:auto auto;gap:6px;width:100%;padding:0 4px 5px;margin:0;background:transparent;border:0;box-shadow:none;overflow:visible}
.game-panel.okey-layout-pro .rack-bed{position:relative;width:min(94vw,660px);height:132px;min-height:132px;max-height:132px;margin:0 auto;padding:10px 9px 11px;border:1px solid rgba(184,113,59,.58);border-radius:16px 16px 8px 8px;background:linear-gradient(180deg,var(--okey-wood-a),var(--okey-wood-b) 58%,var(--okey-wood-c));box-shadow:inset 0 1px 0 rgba(255,246,225,.28),inset 0 -10px 15px rgba(48,23,8,.25),0 12px 22px rgba(0,0,0,.17);overflow:hidden;box-sizing:border-box}
.game-panel.okey-layout-pro .rack-bed::before{content:"";position:absolute;left:8px;right:8px;top:50%;height:5px;transform:translateY(-50%);border-radius:999px;background:rgba(48,23,10,.34);box-shadow:inset 0 1px 2px rgba(0,0,0,.27)}
.game-panel.okey-layout-pro .rack{position:relative;z-index:2;display:grid;grid-template-rows:repeat(2,54px);gap:3px;width:100%;height:111px;align-content:start;--rack-slots:13}
.game-panel.okey-layout-pro .rack-row{display:grid;grid-template-columns:repeat(var(--rack-slots),40px);justify-content:center;align-items:end;gap:var(--okey-rack-gap);width:100%;height:54px;padding:0;overflow:visible}
.game-panel.okey-layout-pro .rack-slot{width:40px;height:54px;display:flex;align-items:flex-end;justify-content:center;padding:0;border-radius:5px;background:transparent}
.game-panel.okey-layout-pro .rack-slot:empty::before{content:"";display:block;width:38px;height:52px;border:1px dashed rgba(106,61,28,.28);border-radius:7px;background:rgba(255,255,255,.035);opacity:.55}
.game-panel.okey-layout-pro .rack-slot.drop-target:empty::before{border-style:solid;border-color:rgba(255,224,142,.95);background:rgba(255,225,133,.12);opacity:1}
.game-panel.okey-layout-pro .rack-slot .tile{width:39px;min-width:39px;max-width:39px;height:53px;min-height:53px;max-height:53px;margin:0;padding:2px 1px;border-radius:7px;background:linear-gradient(180deg,#fffefb,#faf5eb 72%,#ecdfca);box-shadow:0 8px 13px rgba(0,0,0,.18),inset 1px 1px 0 rgba(255,255,255,.98)}
.game-panel.okey-layout-pro .rack-slot .tile span{font-size:18px;letter-spacing:-.04em}
.game-panel.okey-layout-pro .rack-slot .tile.selected{transform:translateY(-5px)}
.game-panel.okey-layout-pro .rack-slot .tile.dragging{opacity:.34}
.game-panel.okey-layout-pro.mode-101 .rack-row{grid-template-columns:repeat(var(--rack-slots),32px)}
.game-panel.okey-layout-pro.mode-101 .rack-slot{width:32px}
.game-panel.okey-layout-pro.mode-101 .rack-slot:empty::before{width:30px}
.game-panel.okey-layout-pro.mode-101 .rack-slot .tile{width:31px;min-width:31px;max-width:31px}
.game-panel.okey-layout-pro.mode-101 .rack-slot .tile span{font-size:15px}

.game-panel.okey-layout-pro .rack-actions{width:min(94vw,660px);margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px}
.game-panel.okey-layout-pro .rack-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.game-panel.okey-layout-pro .rack-buttons .btn{min-height:36px;height:36px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:11px;font-size:10px;font-weight:900}
.game-panel.okey-layout-pro .rack-sort-btn svg,.game-panel.okey-layout-pro .rack-quick-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.game-panel.okey-layout-pro .rack-quick-tools{display:flex;align-items:center;gap:6px}
.game-panel.okey-layout-pro .rack-quick-btn{position:relative;width:36px;min-width:36px;height:36px;padding:0;display:grid;place-items:center;border:1px solid rgba(113,156,137,.40);border-radius:11px;background:linear-gradient(180deg,#173d31,#0e2a21);color:#f5faf8}
.game-panel.okey-layout-pro .rack-quick-btn span{display:none}
.game-panel.okey-layout-pro .rack-quick-btn.active{background:linear-gradient(180deg,#237a58,#18543d);border-color:rgba(102,205,155,.64)}
.game-panel.okey-layout-pro .rack-quick-badge{position:absolute;right:-5px;top:-5px;min-width:16px;height:16px;padding:0 4px;display:grid;place-items:center;border:2px solid #11231b;border-radius:999px;background:#da2e21;color:#fff;font-size:8px;font-style:normal;font-weight:900;line-height:1}
.game-panel.okey-layout-pro .rack-quick-badge.hidden{display:none}

/* 101 */
.game-panel.okey-layout-pro .table-melds{position:absolute;left:50%;bottom:72px;z-index:10;width:min(74%,620px);min-height:42px;padding:4px;display:flex;justify-content:center;align-items:flex-end;gap:4px;transform:translateX(-50%);pointer-events:none}.game-panel.okey-layout-pro .table-melds.can-add{pointer-events:auto}.game-panel.okey-layout-pro .table-meld.can-add{cursor:pointer;outline:1px solid rgba(118,203,158,.45);outline-offset:2px}.game-panel.okey-layout-pro .table-meld.can-add:hover{background:rgba(29,74,55,.72)}.game-panel.okey-layout-pro .meld-owner{align-self:center;color:#b9c9c1;font-size:7px;font-weight:800;white-space:nowrap}
.game-panel.okey-layout-pro .table-melds .tile{width:25px;height:37px;cursor:default}
.game-panel.okey-layout-pro .table-melds .tile span{font-size:13px}
.game-panel.okey-layout-pro .meld-builder{width:min(94vw,660px);margin:0 auto 5px;padding:7px;border:1px solid #33483e;border-radius:12px;background:#101b16}
.game-panel.okey-layout-pro .draft-melds{display:flex;gap:6px;flex-wrap:wrap}

@media (max-width:760px){
  .game-panel.okey-layout-pro.real-game:not(.hidden){
    display:grid!important;
    grid-template-rows:auto minmax(0,1fr)!important;
    min-height:0!important;
    top:var(--app-vv-top,0px)!important;
    right:auto!important;
    bottom:auto!important;
    left:var(--app-vv-left,0px)!important;
    width:var(--app-vw,100vw)!important;
    height:var(--app-vh,100dvh)!important;
    max-height:var(--app-vh,100dvh)!important;
    overflow:hidden!important;
    background:#080908!important;
  }
  .game-panel.okey-layout-pro #okeyGameBody{
    min-height:0!important;
    height:auto!important;
    max-height:100%!important;
    align-self:stretch!important;
    display:grid!important;
    grid-template-rows:minmax(0,1fr) 115px!important;
    gap:4px!important;
    padding:4px 4px max(7px,env(safe-area-inset-bottom))!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
  }
  .game-panel.okey-layout-pro .okey-table-frame{
    min-height:0!important;
    height:auto!important;
    align-self:stretch!important;
    padding:5px!important;
    overflow:hidden!important;
    border-radius:19px!important;
  }
  .game-panel.okey-layout-pro .okey-table-felt{height:100%!important;min-height:0!important;border-radius:14px!important}

  /* compact player cards */
  .game-panel.okey-layout-pro .player-seat{
    min-height:40px!important;
    padding:5px 7px!important;
    grid-template-columns:27px minmax(0,1fr)!important;
    gap:5px!important;
    border-radius:13px!important;
  }
  .game-panel.okey-layout-pro .player-avatar{width:27px!important;height:27px!important;min-width:27px!important;font-size:11px!important}
  .game-panel.okey-layout-pro .player-info b{font-size:8px!important}
  .game-panel.okey-layout-pro .player-info small{font-size:5.6px!important}
  .game-panel.okey-layout-pro .player-seat.active::after{font-size:5px!important;padding:1px 4px!important}
  .game-panel.okey-layout-pro .player-seat.s2{top:8px!important;width:min(40vw,148px)!important}
  .game-panel.okey-layout-pro .player-seat.s0{bottom:9px!important;width:min(41vw,152px)!important}
  .game-panel.okey-layout-pro .player-seat.s3{left:8px!important;width:min(26vw,96px)!important}
  .game-panel.okey-layout-pro .player-seat.s1{right:8px!important;width:min(26vw,96px)!important}
  .game-panel.okey-layout-pro .player-seat.s1 .player-info b,.game-panel.okey-layout-pro .player-seat.s3 .player-info b{font-size:6.9px!important}
  .game-panel.okey-layout-pro .player-seat.s1 .player-info small,.game-panel.okey-layout-pro .player-seat.s3 .player-info small{font-size:5px!important}

  .game-panel.okey-layout-pro .seat-discard{width:34px!important;height:46px!important;padding:3px!important}
  .game-panel.okey-layout-pro .seat-discard.sd2{left:7%!important;top:15%!important}
  .game-panel.okey-layout-pro .seat-discard.sd1{right:7%!important;top:15%!important}
  .game-panel.okey-layout-pro .seat-discard-label{font-size:4.7px!important}
  .game-panel.okey-layout-pro .seat-discard-stage{width:21px!important;height:30px!important}
  .game-panel.okey-layout-pro .seat-discard .tile{width:18px!important;height:27px!important}
  .game-panel.okey-layout-pro .seat-discard .tile span{font-size:8px!important}

  /* table actions */
  .game-panel.okey-layout-pro .incoming-lane,.game-panel.okey-layout-pro .outgoing-lane{
    bottom:8px!important;
    width:61px!important;
    min-height:76px!important;
    padding:4px 4px 4px!important;
    border-radius:11px!important;
  }
  .game-panel.okey-layout-pro .incoming-lane{left:6px!important}
  .game-panel.okey-layout-pro .outgoing-lane{right:6px!important}
  .game-panel.okey-layout-pro .draw-lane{width:66px!important;padding:5px 4px!important;top:50%!important}
  .game-panel.okey-layout-pro .lane-label{font-size:6.2px!important}
  .game-panel.okey-layout-pro .tile-stage{height:30px!important;min-width:20px!important}
  .game-panel.okey-layout-pro .game-lane .discard-preview .tile{width:19px!important;height:28px!important}
  .game-panel.okey-layout-pro .game-lane .discard-preview .tile span{font-size:8px!important}
  .game-panel.okey-layout-pro .table-action-btn{height:24px!important;font-size:6.6px!important;padding:0 3px!important;border-radius:8px!important}
  .game-panel.okey-layout-pro .table-action-btn svg{width:9px!important;height:9px!important}
  .game-panel.okey-layout-pro .pile-visual{width:32px!important;height:42px!important}
  .game-panel.okey-layout-pro .pile-visual i{width:24px!important;height:36px!important}
  .game-panel.okey-layout-pro .pile-visual b{min-width:18px!important;height:15px!important;font-size:6.3px!important}

  /* watermark should never compete with the play area */
  .game-panel.okey-layout-pro .table-center-logo{opacity:.58!important}
  .game-panel.okey-layout-pro .table-center-logo span{font-size:min(var(--table-watermark-size,34px),20px)!important;max-width:56vw!important}
  .game-panel.okey-layout-pro .table-center-logo small{font-size:5px!important}

  /* Rack geometry: fixed compact height, two rows, controls always visible. */
  .game-panel.okey-layout-pro:not(.mode-101){--okey-mobile-slot:clamp(21px,6.7vw,28px);--okey-mobile-row:clamp(28.5px,7.7vw,31px)}
  .game-panel.okey-layout-pro.mode-101{--okey-mobile-slot:clamp(18px,5.9vw,24px);--okey-mobile-row:clamp(28px,7.3vw,30.5px)}
  .game-panel.okey-layout-pro .rack-wrap{
    width:100%!important;
    height:115px!important;
    min-height:115px!important;
    max-height:115px!important;
    display:grid!important;
    grid-template-rows:76px 34px!important;
    gap:5px!important;
    padding:0 2px 1px!important;
    margin:0!important;
    overflow:visible!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
  }
  .game-panel.okey-layout-pro .rack-bed{
    position:relative!important;
    width:min(98vw,410px)!important;
    height:76px!important;
    min-height:76px!important;
    max-height:76px!important;
    margin:0 auto!important;
    padding:6px!important;
    overflow:hidden!important;
    border-radius:14px 14px 8px 8px!important;
  }
  .game-panel.okey-layout-pro .okey-rack-gpu-canvas{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    max-height:100%!important;
    pointer-events:none!important;
    z-index:0!important;
  }
  .game-panel.okey-layout-pro .rack{
    position:relative!important;
    z-index:2!important;
    width:100%!important;
    height:63px!important;
    display:grid!important;
    grid-template-rows:repeat(2,var(--okey-mobile-row))!important;
    gap:1px!important;
    align-content:start!important;
  }
  .game-panel.okey-layout-pro .rack-row{
    width:100%!important;
    height:var(--okey-mobile-row)!important;
    display:grid!important;
    grid-template-columns:repeat(var(--rack-slots),var(--okey-mobile-slot))!important;
    gap:1px!important;
    justify-content:center!important;
    align-items:end!important;
    padding:0!important;
    overflow:visible!important;
  }
  .game-panel.okey-layout-pro .rack-slot{
    width:var(--okey-mobile-slot)!important;
    min-width:var(--okey-mobile-slot)!important;
    max-width:var(--okey-mobile-slot)!important;
    height:var(--okey-mobile-row)!important;
    min-height:var(--okey-mobile-row)!important;
    max-height:var(--okey-mobile-row)!important;
    padding:0!important;
    display:flex!important;
    align-items:flex-end!important;
    justify-content:center!important;
  }
  .game-panel.okey-layout-pro .rack-slot:empty::before{
    width:calc(var(--okey-mobile-slot) - 2px)!important;
    height:calc(var(--okey-mobile-row) - 2px)!important;
    border-radius:5px!important;
    opacity:.22!important;
  }
  .game-panel.okey-layout-pro .rack-slot .tile{
    width:calc(var(--okey-mobile-slot) - 1px)!important;
    min-width:calc(var(--okey-mobile-slot) - 1px)!important;
    max-width:calc(var(--okey-mobile-slot) - 1px)!important;
    height:calc(var(--okey-mobile-row) - 1px)!important;
    min-height:calc(var(--okey-mobile-row) - 1px)!important;
    max-height:calc(var(--okey-mobile-row) - 1px)!important;
    margin:0!important;
    padding:1px 0!important;
    border-radius:5px!important;
  }
  .game-panel.okey-layout-pro .rack-slot .tile span{font-size:clamp(9px,2.75vw,12px)!important;line-height:.9!important}
  .game-panel.okey-layout-pro.mode-101 .rack-slot .tile span{font-size:clamp(8px,2.35vw,10.5px)!important}

  /* one-line toolbar below the rack */
  .game-panel.okey-layout-pro .rack-actions{
    width:min(98vw,410px)!important;
    height:34px!important;
    min-height:34px!important;
    margin:0 auto!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    align-items:center!important;
    gap:5px!important;
    overflow:visible!important;
  }
  .game-panel.okey-layout-pro .rack-buttons{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important;min-width:0!important}
  .game-panel.okey-layout-pro .rack-buttons .btn{
    width:100%!important;
    height:34px!important;
    min-height:34px!important;
    padding:0 8px!important;
    gap:5px!important;
    border-radius:10px!important;
    font-size:8.4px!important;
    white-space:nowrap!important;
  }
  .game-panel.okey-layout-pro .rack-quick-tools{display:flex!important;align-items:center!important;gap:5px!important}
  .game-panel.okey-layout-pro .rack-quick-btn{
    width:34px!important;
    min-width:34px!important;
    height:34px!important;
    min-height:34px!important;
    display:grid!important;
    place-items:center!important;
    padding:0!important;
    border-radius:10px!important;
    overflow:visible!important;
  }
  .game-panel.okey-layout-pro .rack-quick-btn span{display:none!important}
  .game-panel.okey-layout-pro .rack-sort-btn svg,.game-panel.okey-layout-pro .rack-quick-btn svg{width:14px!important;height:14px!important;display:block!important;fill:none!important;stroke:currentColor!important}

  .game-panel.okey-layout-pro .table-melds{bottom:47px!important;width:76%!important;min-height:30px!important;padding:2px!important;gap:2px!important}
  .game-panel.okey-layout-pro .table-melds .tile{width:18px!important;height:27px!important}
  .game-panel.okey-layout-pro .table-melds .tile span{font-size:8px!important}
  .game-panel.okey-layout-pro .meld-builder{width:min(98vw,410px)!important;padding:5px!important}
}

@media (max-width:430px){
  .game-panel.okey-layout-pro .player-seat.s2{width:min(39vw,142px)!important}
  .game-panel.okey-layout-pro .player-seat.s0{width:min(40vw,146px)!important}
  .game-panel.okey-layout-pro .player-seat.s1,.game-panel.okey-layout-pro .player-seat.s3{width:min(25vw,90px)!important}
  .game-panel.okey-layout-pro .rack-bed,.game-panel.okey-layout-pro .rack-actions{width:min(98vw,404px)!important}
}

@media (max-height:650px) and (max-width:760px){
  .game-panel.okey-layout-pro #okeyGameBody{grid-template-rows:minmax(0,1fr) 105px!important;gap:3px!important;padding-top:3px!important;padding-bottom:max(4px,env(safe-area-inset-bottom))!important}
  .game-panel.okey-layout-pro .player-seat.s2{top:6px!important}
  .game-panel.okey-layout-pro .player-seat.s0{bottom:7px!important}
  .game-panel.okey-layout-pro .rack-wrap{height:105px!important;min-height:105px!important;max-height:105px!important;grid-template-rows:70px 32px!important;gap:3px!important}
  .game-panel.okey-layout-pro .rack-bed{height:70px!important;min-height:70px!important;max-height:70px!important;padding:4px 6px!important}
  .game-panel.okey-layout-pro:not(.mode-101){--okey-mobile-row:29px}
  .game-panel.okey-layout-pro.mode-101{--okey-mobile-row:28px}
  .game-panel.okey-layout-pro .rack{height:59px!important}
  .game-panel.okey-layout-pro .rack-actions,.game-panel.okey-layout-pro .rack-buttons .btn,.game-panel.okey-layout-pro .rack-quick-btn{height:32px!important;min-height:32px!important}
}

@media (prefers-reduced-motion:reduce){
  .game-panel.okey-layout-pro .player-seat,
  .game-panel.okey-layout-pro .game-lane,
  .game-panel.okey-layout-pro .rack-slot .tile,
  .game-panel.okey-layout-pro .rack-quick-btn{transition:none!important;animation:none!important}
}
