.ps-canvas{
  width:100%;
  height:100%;
  display:block;
  background:#0a0c12;
  touch-action:none;
  cursor:default;
  user-select:none;
  -webkit-user-select:none;
  -webkit-tap-highlight-color:transparent;
}
.ps-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Shell safe areas (SDK v70): the shell publishes the viewport-edge insets its
 * floating chrome occupies — chat button, opened chat panel, status cluster —
 * as --mm-safe-top/right/bottom/left on the shell root. They inherit down to
 * the game container, so our own chrome insets itself instead of guessing
 * which corners the shell owns. --ps-gutter carries the game-side offset so
 * the responsive rules below stay one-token edits.
 * The canvas HUD reads the same vars in JS (CSS can't inset canvas painting).
 *
 * The top-right button row is GONE: player options are declared as
 * config.settings[] and live in the shell's ⚙ menu, which already owns that
 * corner. The touch pad below is the only chrome the game still draws. */
.ps-touch-btn:focus-visible{outline:3px solid #f5c93e;outline-offset:2px}
.ps-touch-controls{position:absolute;z-index:3;left:0;right:0;bottom:calc(var(--mm-safe-bottom,0px) + 8px);display:none;justify-content:space-between;align-items:end;padding:0 calc(var(--mm-safe-right,0px) + var(--ps-gutter,10px)) 0 calc(var(--mm-safe-left,0px) + var(--ps-gutter,10px));pointer-events:none}
.ps-touch-set{display:flex;flex:1 1 auto;justify-content:space-between;align-items:end;pointer-events:none}
.ps-touch-set[hidden]{display:none}
.ps-touch-group{display:flex;gap:7px;pointer-events:auto}
.ps-touch-btn.ps-touch-swap{background:rgba(232,72,45,.92)}
.ps-touch-btn{width:52px;height:52px;border:1px solid rgba(255,255,255,.25);border-radius:12px;background:rgba(10,12,19,.88);color:#fff;font:800 19px system-ui;box-shadow:0 3px 12px #0008;touch-action:none}
.ps-touch-btn[data-action="harddrop"]{background:rgba(232,72,45,.92)}
.ps-touch-btn.is-held{transform:translateY(2px);background:#b43b28}
@media (hover:none),(pointer:coarse){.ps-touch-controls{display:flex}}
@media (max-width:700px){.ps-touch-btn{width:48px;height:48px}.ps-touch-controls{--ps-gutter:5px}}
@media (max-width:430px){.ps-touch-controls{align-items:end;gap:4px}.ps-touch-group{display:grid;grid-template-columns:repeat(2,44px);gap:4px}.ps-touch-group:first-child{grid-template-columns:repeat(2,44px)}.ps-touch-btn{width:44px;height:44px}.ps-touch-btn[data-action="target"]{grid-column:1 / span 2;width:92px}}
.ps-touch-btn[hidden]{display:none}
