/* Nerddi OS · Run 33 · center screen engine + Run 28/32 layout corrections.
   Loaded last so it wins the cascade over controldeck-master.css. */

/* --- Fix 1 · the D-pad hub no longer drifts off its keys.
   controller-hardening.css forces every key to --hardening-hit-target (46px default).
   The pad was sized from vh, so on a 390px-tall landscape phone each 1fr track was
   42px against a 46px minimum and every arm overflowed its cell. Size the pad FROM
   the hit target instead, so three legal keys plus gaps always fit. --- */
.controller-stage[data-controldeck-chassis="gamepad"] .master-direction-pad{
  --pad-gap:3px;
  --pad-key:var(--hardening-hit-target,46px);
  --pad-min:calc(var(--pad-key) * 3 + var(--pad-gap) * 2);
  width:clamp(var(--pad-min),34vh,210px)!important;
  gap:var(--pad-gap);
}
.deck-direction-module[data-direction-mode="both"] .master-direction-pad{
  --pad-gap:2px;
  width:clamp(var(--pad-min),15vh,108px)!important;
}
@media(orientation:landscape) and (max-height:600px){
  .controller-stage[data-controldeck-chassis="gamepad"] .master-direction-pad{width:clamp(var(--pad-min),32vh,165px)!important}
  .deck-direction-module[data-direction-mode="both"] .master-direction-pad{width:clamp(var(--pad-min),13vh,82px)!important}
}
/* Fallback chassis: the hub spanned 29%–71% while the arms span 31%–69%. */
.deck-dpad:not(.master-direction-pad):before{inset:31%}

/* --- Fix 2 · Run 32 gave the next-piece preview more room than the live board. --- */
.deck-center.gridfall-board-expanded .gridfall-phone-command>main{
  grid-template-columns:minmax(150px,1.55fr) minmax(96px,.75fr)!important;
}

/* --- Run 33 · the canvas screen --- */
.nerddi-screen-canvas{
  position:absolute;
  inset:0;
  z-index:3;
  display:block;
  width:100%;
  height:100%;
  touch-action:none;
  border-radius:inherit;
}
.deck-screen[data-nerddi-canvas="idle"] .nerddi-screen-canvas{display:none}
.deck-screen[data-nerddi-canvas="live"] .private-game-screen,
.deck-screen[data-nerddi-canvas="live"] .deck-screen-empty,
.deck-screen[data-nerddi-canvas="live"] .deck-screen-chrome{display:none!important}

/* Undocked: the controller is the console. Trim the wings, give the screen the room. */
.controller-app.nerddi-undocked header,
.controller-app.nerddi-undocked footer,
.controller-app.nerddi-undocked .controller-hud{display:none!important}
.controller-app.nerddi-undocked{grid-template-rows:minmax(0,1fr)}
.controller-app.nerddi-undocked .profile-shell{margin-top:0;border-radius:18px}
.controller-app.nerddi-undocked .controldeck-gamepad{
  grid-template-columns:minmax(96px,.62fr) minmax(300px,2.1fr) minmax(96px,.62fr)!important;
  gap:5px;
}
.controller-app.nerddi-undocked .deck-center{padding:2px 4px 4px}
.controller-app.nerddi-undocked .deck-center-head{display:none}
.controller-app.nerddi-undocked .deck-computer-dock{height:24px!important}
.controller-app.nerddi-undocked .deck-computer-dock>button[data-computer-mode],
.controller-app.nerddi-undocked .deck-computer-dock>button[data-computer-skin]{display:none}

.deck-computer-dock>button[data-computer-undock]{
  border-color:color-mix(in srgb,var(--deck-glow,#63f3ff) 45%,#2d414f);
  color:#cdf6ff;
}
.controller-app.nerddi-undocked .deck-computer-dock>button[data-computer-undock]{
  border-color:var(--deck-glow,#63f3ff);
  background:color-mix(in srgb,var(--deck-glow,#63f3ff) 18%,#050a0e);
  color:#fff;
}

.nerddi-undock-toast{
  position:absolute;
  z-index:9;
  left:50%;
  top:8px;
  transform:translateX(-50%);
  padding:4px 10px;
  border:1px solid color-mix(in srgb,var(--deck-glow,#63f3ff) 42%,#2d414f);
  border-radius:999px;
  background:#020509e8;
  color:#dffcff;
  font:950 5px/1 system-ui;
  letter-spacing:.14em;
  white-space:nowrap;
  pointer-events:none;
  animation:nerddiUndockToast 2.4s ease forwards;
}
@keyframes nerddiUndockToast{
  0%{opacity:0;transform:translate(-50%,-6px)}
  12%,68%{opacity:1;transform:translate(-50%,0)}
  100%{opacity:0;transform:translate(-50%,-4px)}
}
@media(prefers-reduced-motion:reduce){.nerddi-undock-toast{animation:none}}
