/* One sizing policy for all 21 games. Desktop layouts retain their own styles. */
@media (any-pointer: coarse), (max-width: 600px) {
  html[data-dg-game] {
    -webkit-text-size-adjust: 100%; text-size-adjust: 100%;
    --dg-action: clamp(44px, min(14.5vw, 18dvh), 68px);
    --dg-joy: clamp(84px, min(26vw, 29dvh), 120px);
    --dg-gap: clamp(6px, 1.5vmin, 10px);
    --dg-edge: clamp(8px, 2.4vmin, 16px);
    --dg-left: max(var(--dg-edge), env(safe-area-inset-left, 0px));
    --dg-right: max(var(--dg-edge), env(safe-area-inset-right, 0px));
    --dg-top: max(var(--dg-edge), env(safe-area-inset-top, 0px));
    --dg-bottom: max(var(--dg-edge), env(safe-area-inset-bottom, 0px));
    --dg-control-bottom: calc(var(--dg-bottom) + 26px);
    --dg-menu-height: calc(var(--dg-viewport-height, 100dvh) - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 16px);
  }
  html[data-dg-game] .dg-mobile-menu {
    box-sizing: border-box; max-width: 100%; max-height: var(--dg-viewport-height, 100dvh);
    overflow-y: auto !important; overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch; touch-action: pan-y;
    align-items: safe center; justify-content: safe center;
  }
  html[data-dg-game] .dg-mobile-panel {
    box-sizing: border-box; min-width: 0 !important; min-height: 0 !important;
    max-width: 100% !important; max-height: var(--dg-menu-height) !important;
    overflow-y: auto !important; overscroll-behavior-y: contain;
    padding: clamp(12px, 3vmin, 22px) !important;
    flex-shrink: 0;
  }
  html[data-dg-game] .dg-mobile-menu h1,
  html[data-dg-game] .dg-mobile-menu .game-title,
  html[data-dg-game] .dg-mobile-menu .splash-title {
    font-size: clamp(24px, min(7vw, 9dvh), 40px) !important;
    line-height: 1.15; letter-spacing: 1px !important; overflow-wrap: anywhere;
  }
  html[data-dg-game] .dg-mobile-menu h2 { font-size: clamp(17px, 4vw, 24px); line-height: 1.25; }
  html[data-dg-game] .dg-mobile-menu button {
    box-sizing: border-box; min-height: 44px; max-width: 100%;
    font-size: clamp(13px, 3.4vw, 16px); white-space: normal;
  }
  html[data-dg-game] .dg-mobile-menu :is(input,select) { box-sizing: border-box; min-width: 0; max-width: 100%; min-height: 44px; font-size: 16px !important; }
  html[data-dg-game] .leaderboard-content { max-width: calc(100vw - 24px); max-height: var(--dg-menu-height); overflow-y: auto; }
  html[data-dg-game] .leaderboard-overlay { padding: 12px; box-sizing: border-box; }
  html[data-dg-game] .leaderboard-container { width: min(500px,100%); }
  html[data-dg-game] .leaderboard-container h2 { max-width: calc(100% - 44px); font-size: clamp(18px,4.5vw,24px); }
  html[data-dg-game] #dgHud { bottom: var(--dg-bottom) !important; left: var(--dg-left) !important; padding: 4px 8px !important; font-size: 10px !important; }
  html[data-dg-game] #dgHud .dgHudTrack { display: none; }
  html[data-dg-game] .dgAboutTab { max-height: 100px; font-size: 10px; }

  /* Alpine Ski: five controls in one compact row, separate from the speed HUD. */
  html[data-dg-game="alpine-ski"] .touch-btn {
    width: var(--dg-action) !important; height: var(--dg-action) !important;
    bottom: var(--dg-control-bottom) !important; font-size: 26px; border-width: 2px;
  }
  html[data-dg-game="alpine-ski"] #btn-left { left: var(--dg-left); font-size: 26px; }
  html[data-dg-game="alpine-ski"] #btn-right { left: calc(var(--dg-left) + var(--dg-action) + var(--dg-gap)); font-size: 26px; }
  html[data-dg-game="alpine-ski"] #btn-jump { right: var(--dg-right); font-size: 12px; }
  html[data-dg-game="alpine-ski"] #btn-tuck { right: calc(var(--dg-right) + var(--dg-action) + var(--dg-gap)); font-size: 24px; }
  html[data-dg-game="alpine-ski"] #btn-brake { right: calc(var(--dg-right) + 2 * (var(--dg-action) + var(--dg-gap))); font-size: 12px; }
  html[data-dg-game="alpine-ski"] #hud-speed { bottom: calc(var(--dg-control-bottom) + var(--dg-action) + 8px) !important; padding: 6px 10px; font-size: 12px; }
  html[data-dg-game="alpine-ski"] #hud-speed b { font-size: 21px; }
  html[data-dg-game="alpine-ski"] #hud-switch { bottom: calc(var(--dg-control-bottom) + var(--dg-action) + 60px) !important; padding: 5px 10px; font-size: 11px; }
  html[data-dg-game="alpine-ski"] #btn-pause { width: 44px !important; height: 44px !important; font-size: 19px !important; top: var(--dg-top); }
  html[data-dg-game="alpine-ski"] #hud-score, html[data-dg-game="alpine-ski"] #hud-coins { top: var(--dg-top); padding: 6px 8px; font-size: 12px; }
  html[data-dg-game="alpine-ski"] #hud-score { left: var(--dg-left); }
  html[data-dg-game="alpine-ski"] #hud-coins { right: var(--dg-right); }
  html[data-dg-game="alpine-ski"] #hud-rival { top: calc(var(--dg-top) + 48px); right: var(--dg-right); padding: 6px 8px; font-size: 11px; }
  html[data-dg-game="alpine-ski"] #hud-course { top: calc(var(--dg-top) + 48px); left: var(--dg-left); max-width: 130px; font-size: 10px; }
  html[data-dg-game="alpine-ski"] #hud-course b { font-size: 13px; }
  html[data-dg-game="alpine-ski"] #hud-park { top: calc(var(--dg-top) + 50px); padding: 5px 8px; width: min(42vw, 210px); }
  html[data-dg-game="alpine-ski"] #hud-park .park-hud-row { font-size: 14px; gap: 5px; }
  html[data-dg-game="alpine-ski"] #start-screen { padding: max(52px, env(safe-area-inset-top)) var(--dg-left) 24px; }
  html[data-dg-game="alpine-ski"] .big-btn { padding: 11px 26px; font-size: 16px; }
  html[data-dg-game="alpine-ski"] :is(.gear-btn,.diff-btn,.mode-btn) { padding: 8px 10px; font-size: 13px; }

  /* Breezy Buddies: the joystick and action buttons share a smaller lower band. */
  html[data-dg-game="breezy-buddies"] .mobile-controls { height: calc(var(--dg-joy) + var(--dg-control-bottom) + 10px); padding: 8px var(--dg-right) var(--dg-control-bottom) var(--dg-left); }
  html[data-dg-game="breezy-buddies"] .joystick-zone { width: var(--dg-joy); height: var(--dg-joy); flex: 0 0 var(--dg-joy); }
  html[data-dg-game="breezy-buddies"] .joystick-base { width: 85%; height: 85%; left: 7.5%; top: 7.5%; }
  html[data-dg-game="breezy-buddies"] .joystick-thumb { width: 36%; height: 36%; }
  html[data-dg-game="breezy-buddies"] .mobile-btn { width: var(--dg-action); height: var(--dg-action); font-size: 12px; }
  html[data-dg-game="breezy-buddies"] .mobile-action-buttons { gap: var(--dg-gap); }
  html[data-dg-game="breezy-buddies"] .stage-panel { bottom: calc(var(--dg-control-bottom) + var(--dg-joy) + 8px); padding: 7px 9px; max-width: 47vw; font-size: 11px; }
  html[data-dg-game="breezy-buddies"] .stage-panel h3 { font-size: 13px; }
  html[data-dg-game="breezy-buddies"] .modal-content { width: min(600px, 100%); }
  html[data-dg-game="breezy-buddies"] .hud-top-left { left: var(--dg-left); top: var(--dg-top); gap: 5px; }
  html[data-dg-game="breezy-buddies"] .hud-top-right { right: var(--dg-right); top: var(--dg-top); gap: 4px; }
  html[data-dg-game="breezy-buddies"] .hud-top-right .icon-btn { width: 44px; height: 44px; }
  html[data-dg-game="breezy-buddies"] .rank-badge { min-width: 38px; padding: 5px; }
  html[data-dg-game="breezy-buddies"] .rank-num { font-size: 22px; }
  html[data-dg-game="breezy-buddies"] .rank-total { font-size: 11px; }
  html[data-dg-game="breezy-buddies"] .level-info { min-width: 0; max-width: min(130px, calc(100vw - 245px)); }
  html[data-dg-game="breezy-buddies"] .level-title { display: block; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  html[data-dg-game="breezy-buddies"] .checkpoint-indicator { font-size: 10px; }
  html[data-dg-game="breezy-buddies"] :is(.lives-badge,.coin-badge) { min-width: 0; font-size: 12px; padding: 5px 7px; gap: 3px; }
  html[data-dg-game="breezy-buddies"] :is(.coin-count,.coin-icon) { font-size: 12px; }
  html[data-dg-game="breezy-buddies"] .race-pressure { font-size: 10px; }
  html[data-dg-game="breezy-buddies"] #stage-title { font-size: 13px; }
  html[data-dg-game="breezy-buddies"] #stage-hint { font-size: 11px; line-height: 1.3; }
  html[data-dg-game="breezy-buddies"] .stage-eyebrow { font-size: 9px; }

  /* Driving controls and displays scale with the short edge of the screen. */
  html[data-dg-game="port-azur"] :is(#tGas,#tBrake) { width: var(--dg-action); height: calc(var(--dg-action) * 1.12); bottom: var(--dg-control-bottom) !important; font-size: 13px; }
  html[data-dg-game="port-azur"] #tGas { right: var(--dg-right) !important; }
  html[data-dg-game="port-azur"] #tBrake { right: calc(var(--dg-right) + var(--dg-action) + var(--dg-gap)) !important; }
  html[data-dg-game="port-azur"] .touch-top { top: var(--dg-top); right: var(--dg-right); gap: 5px; }
  html[data-dg-game="port-azur"] .touch-pedals { right: var(--dg-right); bottom: var(--dg-control-bottom); gap: var(--dg-gap); }
  html[data-dg-game="port-azur"] .steerpad { left: var(--dg-left); bottom: var(--dg-control-bottom); width: clamp(110px,30vw,220px); height: clamp(60px,20dvh,90px); }
  html[data-dg-game="port-azur"] :is(#tCam,#tReset,#tPause) { min-height: 44px; font-size: 11px; padding: 4px 8px; }
  html[data-dg-game="port-azur"] .timing { top: calc(var(--dg-top) + 48px); left: var(--dg-left); min-width: 0; width: min(42vw, 170px); padding: 7px 9px; }
  html[data-dg-game="port-azur"] .timing .big .value { font-size: 23px; }
  html[data-dg-game="port-azur"] .sectors { display: none; }
  html[data-dg-game="port-azur"] .map { top: calc(var(--dg-top) + 48px); right: var(--dg-right); padding: 5px; }
  html[data-dg-game="port-azur"] #minimap { width: clamp(60px, min(25vw, 25dvh), 110px); height: clamp(60px, min(25vw, 25dvh), 110px); }
  html[data-dg-game="port-azur"] .cluster { bottom: var(--dg-control-bottom); width: min(37vw, 210px); padding: 5px 8px; }
  html[data-dg-game="port-azur"] .cluster .speed { font-size: 25px; }
  html[data-dg-game="port-azur"] .cluster .rpm { font-size: 13px; padding-top: 4px; }
  html[data-dg-game="port-azur"] .gearbox { width: 36px; height: 36px; margin: 0 5px; }
  html[data-dg-game="port-azur"] .gear { font-size: 26px; }
  html[data-dg-game="port-azur"] :is(.leaderboard,.overtake-hud) { top: calc(var(--dg-top) + 145px); left: var(--dg-left); min-width: 0; max-width: 40vw; padding: 6px; }
  html[data-dg-game="port-azur"] .driver { display: none; }
  html[data-dg-game="redline-rivals"] .active-controls { gap: 6px; }
  html[data-dg-game="redline-rivals"] .drive-button { min-height: 44px; padding: 8px 5px; font-size: 12px; }
  html[data-dg-game="redline-rivals"] .race-settings { min-width: 0; }
  html[data-dg-game="space-racer"] .touch-btn { width: var(--dg-action); height: var(--dg-action); font-size: 13px; }
  html[data-dg-game="space-racer"] #right-ctrl-area { padding: 0 var(--dg-right) var(--dg-control-bottom) 0; gap: var(--dg-gap); }
  html[data-dg-game="space-racer"] #left-ctrl-area { padding-bottom: var(--dg-control-bottom); }
  html[data-dg-game="space-racer"] #hud { top: calc(var(--dg-top) + 46px); left: var(--dg-left); right: var(--dg-right); gap: 5px; }
  html[data-dg-game="space-racer"] .hud-item { padding: 5px 8px; font-size: 12px; }

  html[data-dg-game="magic-valley"] #joystick-container { width: var(--dg-joy); height: var(--dg-joy); bottom: var(--dg-control-bottom); left: var(--dg-left) !important; }
  html[data-dg-game="magic-valley"] #joystick-knob { width: 40%; height: 40%; }
  html[data-dg-game="magic-valley"] .mobile-actions { right: var(--dg-right) !important; bottom: var(--dg-control-bottom) !important; gap: var(--dg-gap) !important; }
  html[data-dg-game="magic-valley"] :is(#attack-btn,#jump-btn,#interact-btn) { width: var(--dg-action) !important; height: var(--dg-action) !important; font-size: 22px; }
  html[data-dg-game="magic-valley"] #hud-quests { max-width: min(45vw, 230px); max-height: 28dvh; overflow-y: auto; }

  /* Island Shooter: keep all nine actions usable without filling the screen. */
  html[data-dg-game="island-shooter"] #tc-joystick { width: var(--dg-joy); height: var(--dg-joy); left: var(--dg-left); bottom: var(--dg-control-bottom); }
  html[data-dg-game="island-shooter"] #tc-knob { width: 40%; height: 40%; }
  html[data-dg-game="island-shooter"] .tc-btn { width: var(--dg-action) !important; height: var(--dg-action) !important; font-size: 20px; }
  html[data-dg-game="island-shooter"] #tc-fire { right: var(--dg-right); bottom: var(--dg-control-bottom); width: calc(var(--dg-action) * 1.1) !important; height: calc(var(--dg-action) * 1.1) !important; }
  html[data-dg-game="island-shooter"] #tc-jump { right: calc(var(--dg-right) + var(--dg-action) * 1.1 + var(--dg-gap)); bottom: var(--dg-control-bottom); }
  html[data-dg-game="island-shooter"] #tc-aim { right: var(--dg-right); bottom: calc(var(--dg-control-bottom) + var(--dg-action) * 1.1 + var(--dg-gap)); }
  html[data-dg-game="island-shooter"] #tc-crouch { right: calc(var(--dg-right) + var(--dg-action) * 1.1 + var(--dg-gap)); bottom: calc(var(--dg-control-bottom) + var(--dg-action) + var(--dg-gap)); }
  html[data-dg-game="island-shooter"] #tc-util { bottom: var(--dg-control-bottom); grid-template-columns: repeat(4, 44px); gap: 6px; }
  html[data-dg-game="island-shooter"] #tc-util .tc-btn { width: 44px !important; height: 44px !important; font-size: 18px; }
  html[data-dg-game="island-shooter"] #tc-pause { left: var(--dg-left); top: var(--dg-top); bottom: auto; width: 44px !important; height: 44px !important; }
  html[data-dg-game="island-shooter"] .home-link { left: calc(var(--dg-left) + 52px) !important; top: var(--dg-top) !important; font-size: 12px !important; }
  html[data-dg-game="island-shooter"] #enemies-left { top: 28px; right: calc(var(--dg-right) + 120px); max-width: 160px; font-size: 11px; text-align: right; }
  html[data-dg-game="island-shooter"] #overlay { padding: max(52px, env(safe-area-inset-top)) var(--dg-left) 18px !important; }
  html[data-dg-game="island-shooter"] .island-map-art { height: clamp(70px, 16dvh, 130px); }
  html[data-dg-game="island-shooter"] .weapon-options { flex-wrap: wrap; }
  html[data-dg-game="island-shooter"] #hud { padding: 7px; font-size: 12px; }

  /* Football and kicking: separate the left steering zone from right actions. */
  html[data-dg-game="futbol"] :is(#btn-pass,#btn-shoot) { width: var(--dg-action); height: var(--dg-action); bottom: var(--dg-control-bottom); font-size: 13px; }
  html[data-dg-game="futbol"] #btn-shoot { right: var(--dg-right); }
  html[data-dg-game="futbol"] #btn-pass { right: calc(var(--dg-right) + var(--dg-action) + var(--dg-gap)); }
  html[data-dg-game="futbol"] #joystick-wrapper { width: var(--dg-joy); height: var(--dg-joy); }
  html[data-dg-game="futbol"] #joystick-base { width: 100%; height: 100%; }
  html[data-dg-game="futbol"] #joystick-handle { width: 40%; height: 40%; }
  html[data-dg-game="futbol"] .mode-selection { min-width: 0; flex-wrap: wrap; }
  html[data-dg-game="futbol"] .mode-btn { min-width: 0; flex: 1 1 28%; padding: 8px 4px; }
  html[data-dg-game="futbol"] .bracket { min-width: 0; grid-template-columns: repeat(3,minmax(0,1fr)); }
  html[data-dg-game="futbol"] .competition-card { min-width: 0; width: 100%; }
  html[data-dg-game="futbol"] .settings-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
  html[data-dg-game="futbol"] .settings-grid > * { min-width: 0; }
  html[data-dg-game="futbol"] .choice-btn { min-width: 0; padding: 7px 4px; }
  html[data-dg-game="futbol"] .choice-group { min-width: 0; flex-wrap: wrap; }
  html[data-dg-game="frikik"] #arrow-controls,
  html[data-dg-game="9aylik"] #arrow-controls { width: min(250px, calc(100vw - 24px)); bottom: var(--dg-control-bottom); }
  html[data-dg-game="frikik"] .shoot-action-btn,
  html[data-dg-game="9aylik"] .shoot-action-btn { min-height: 44px; padding: 8px 16px; font-size: 14px; }
  html[data-dg-game="9aylik"] #bullet-menu { bottom: var(--dg-control-bottom); gap: var(--dg-gap); }
  html[data-dg-game="9aylik"] #bullet-menu button { width: var(--dg-action); height: var(--dg-action); font-size: 12px; }
  html[data-dg-game="9aylik"] :is(#shot-type-menu,#pass-menu,#gk-save-menu) { box-sizing: border-box; max-width: calc(100vw - 24px); max-height: 45dvh; overflow: auto; }
  html[data-dg-game="basketbol"] #quick-menu-btn { width: 44px; height: 44px; top: var(--dg-top); }
  html[data-dg-game="basketbol"] .quick-menu-card { width: min(440px, calc(100vw - 24px)); max-height: var(--dg-menu-height); overflow-y: auto; }
  html[data-dg-game="penalty-king"] .hud { gap: 4px; max-width: calc(100vw - 16px); top: calc(var(--dg-top) + 44px); }
  html[data-dg-game="penalty-king"] .hud-panel { min-width: 0; padding: 5px 7px; }
  html[data-dg-game="penalty-king"] .hud-value { font-size: 17px; }
  html[data-dg-game="penalty-king"] .splash-ball { font-size: clamp(32px, 8dvh, 60px); }
  html[data-dg-game="penalty-king"] .splash-content { gap: 10px; }

  /* Canvas arcade controls, studio panels and gesture-only games. */
  html[data-dg-game="platform"] #jumpBtn { width: var(--dg-action); height: var(--dg-action); font-size: 25px; border-width: 2px; }
  html[data-dg-game="platform"] #mobileControls { position: fixed; left: auto; width: auto; padding: 0; right: var(--dg-right); bottom: var(--dg-control-bottom); }
  html[data-dg-game="platform"] .icon-btn { width: 44px; height: 44px; font-size: 15px; }
  html[data-dg-game="platform"] .screen { position: fixed; inset: 0; width: 100%; height: var(--dg-viewport-height,100dvh); padding: 70px 12px 20px; }
  html[data-dg-game="platform"] .screen > * { flex-shrink: 0; }
  html[data-dg-game="platform"] .screen-title { font-size: clamp(18px,5vw,26px); }
  html[data-dg-game="platform"] .screen-sub { font-size: 11px; margin-bottom: 12px; }
  html[data-dg-game="platform"] .howto { gap: 8px; margin-bottom: 12px; }
  html[data-dg-game="platform"] .howto-item { width: 150px; padding: 8px; }
  html[data-dg-game="platform"] .howto-desc { font-size: 10px; }
  html[data-dg-game="platform"] .whatsnew-details { font-size: 10px; }
  html[data-dg-game="platform"] #topBtns { position: fixed; top: var(--dg-top); right: var(--dg-right); }
  html[data-dg-game="platform"] #homeLink { position: fixed; left: var(--dg-left); top: var(--dg-top); min-height: 44px; display: flex; align-items: center; font-size: 9px; }
  html[data-dg-game="platform"] #hud { position: fixed; top: calc(var(--dg-top) + 48px); padding: 6px var(--dg-left); }
  html[data-dg-game="platform"] .hud-val { font-size: 12px; }
  html[data-dg-game="venus-bird"] #touchFlapBtn { height: 48px; font-size: 14px; }
  html[data-dg-game="venus-bird"] #touchPauseBtn { min-height: 44px; font-size: 13px; }
  html[data-dg-game="venus-bird"] .touchControls { bottom: var(--dg-control-bottom); }
  html[data-dg-game="shark-snake"] .touchMeta { gap: 6px; flex-wrap: wrap; }
  html[data-dg-game="shark-snake"] .touchMeta .btn { min-height: 44px; padding: 7px 12px; font-size: 13px; }
  html[data-dg-game="shark-snake"] .gameWrap { min-height: 0; }
  html[data-dg-game="venus-bird"] .app,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .app:not(.is-fullscreen) {
    box-sizing: border-box; height: var(--dg-viewport-height,100dvh); min-height: 0;
    display: flex; flex-direction: column; padding: var(--dg-top) var(--dg-right) var(--dg-control-bottom) var(--dg-left); gap: 8px; overflow: hidden;
  }
  html[data-dg-game="venus-bird"] :is(.brand,.instructions-panel,.help,.btnLink),
  html[data-dg-game="shark-snake"] .dg-arcade-playing :is(.brand,.footer,.help,#shark-expansion,#shark-leaderboard,.btnLink) { display: none !important; }
  html[data-dg-game="venus-bird"] .topbar,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .topbar { flex: 0 0 auto; justify-content: center; gap: 5px !important; }
  html[data-dg-game="venus-bird"] .hud,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .hud { justify-content: center; gap: 5px !important; }
  html[data-dg-game="venus-bird"] .hudItem,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .hudItem { padding: 4px 7px; min-width: 36px; }
  html[data-dg-game="venus-bird"] .hudValue { font-size: 15px; }
  html[data-dg-game="venus-bird"] .stage,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .app:not(.is-fullscreen) .stage { flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; gap: 8px; justify-content: center; }
  html[data-dg-game="venus-bird"] canvas#game { display: block; box-sizing: border-box; width: var(--dg-board-size,60vmin); height: var(--dg-board-size,60vmin); }
  html[data-dg-game="shark-snake"] .dg-arcade-playing .app:not(.is-fullscreen) .canvas-container { flex: 0 0 auto; width: var(--dg-board-size,60vmin); height: var(--dg-board-size,60vmin); }
  html[data-dg-game="venus-bird"] .gameBottomPanel,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .app:not(.is-fullscreen) .touchControls { position: static; flex: 0 0 auto; margin: 0; width: 100%; padding: 0; border: 0; background: none; }
  html[data-dg-game="venus-bird"] .touchControls { display: grid; width: 100%; grid-template-columns: 1fr auto; }
  html[data-dg-game="venus-bird"] #touchFlapBtn { min-height: 48px; padding: 6px 12px; }
  html[data-dg-game="venus-bird"] .topbar .btn,
  html[data-dg-game="shark-snake"] .dg-arcade-playing .topbar .btn { min-height: 44px; padding: 6px 8px; }
  html[data-dg-game="shark-snake"] .dg-arcade-playing .app:not(.is-fullscreen) .touchMeta { justify-content: center; flex-direction: row; }
  html[data-dg-game="shark-snake"] #pauseMenu { gap: 8px; padding: 8px; }
  html[data-dg-game="istop"] .dbtn { width: 44px; height: 44px; font-size: 22px; }
  html[data-dg-game="istop"] .dpad { grid-template-columns: repeat(3,44px); grid-template-rows: repeat(3,44px); gap: 3px; left: var(--dg-left); bottom: var(--dg-control-bottom); transform: none; }
  html[data-dg-game="istop"] .dodge-btn { min-height: 44px; padding: 8px 14px; font-size: 14px; }
  html[data-dg-game="neon-rift"] #joystick { width: var(--dg-joy); height: var(--dg-joy); left: var(--dg-left); bottom: var(--dg-control-bottom); }
  html[data-dg-game="neon-rift"] #joystick i { width: 38%; height: 38%; left: 31%; top: 31%; }
  html[data-dg-game="neon-rift"] #dashBtn { width: var(--dg-action); height: var(--dg-action); right: var(--dg-right); bottom: var(--dg-control-bottom); font-size: 12px; }
  html[data-dg-game="neon-rift"] .overlay { padding-bottom: 60px; }
  html[data-dg-game="style-studio"] .screen-header { padding: 8px 10px; gap: 6px; }
  html[data-dg-game="style-studio"] .studio-body { gap: 8px; padding: 0 8px 8px; min-height: 0; }
  html[data-dg-game="style-studio"] .wardrobe { min-height: 0; }
  html[data-dg-game="style-studio"] :is(.tabs button,.category-btn) { min-height: 44px; padding: 6px; font-size: 12px; }
  html[data-dg-game="style-studio"] :is(.scene-tab,.cat-tab,.mini-btn) { min-height: 44px; padding: 6px 10px; }
  html[data-dg-game="style-studio"] .wardrobe { box-sizing: border-box; }
  html[data-dg-game="style-studio"] #app { height: var(--dg-viewport-height,100dvh); padding-bottom: var(--dg-control-bottom); }
  html[data-dg-game="style-studio"] .cat-tabs { flex-wrap: nowrap; overflow-x: auto; flex: 0 0 auto; }
  html[data-dg-game="style-studio"] .cat-tab { flex: 0 0 auto; }
  @media (orientation: portrait) and (max-width: 600px) {
    html[data-dg-game="style-studio"] .wardrobe { flex: 0 0 clamp(190px,36dvh,300px); max-height: none; }
  }
  html[data-dg-game="city-runner"] .screen { padding: max(48px, env(safe-area-inset-top)) var(--dg-left) 20px; }
  html[data-dg-game="city-runner"] .screen button { min-height: 44px; padding: 10px 24px; font-size: 15px; }
  html[data-dg-game="battle-for-lands"] .modal-content { max-width: calc(100vw - 24px); max-height: var(--dg-menu-height); overflow-y: auto; }
  html[data-dg-game="toybox-command"] #hud { padding: 5px 8px; gap: 5px; }
  html[data-dg-game="toybox-command"] #hud .btn { min-height: 44px; min-width: 44px; padding: 4px 8px; font-size: 12px; }
  html[data-dg-game="toybox-command"] .stat { padding: 4px 7px; font-size: 12px; gap: 3px; }
  html[data-dg-game="toybox-command"] #wavePreview { top: 54px; }
  html[data-dg-game="toybox-command"] .card .logo { font-size: clamp(28px, 8dvh, 48px); }

  @media (max-height: 450px) {
    html[data-dg-game] .dg-mobile-menu { padding-top: max(12px, env(safe-area-inset-top)); padding-bottom: max(12px, env(safe-area-inset-bottom)); }
    html[data-dg-game] .dg-mobile-menu :is(.controls-info,.splash-controls,.instructions-panel) { display: none; }
    html[data-dg-game="alpine-ski"] #start-screen { padding-top: max(48px, env(safe-area-inset-top)); }
    html[data-dg-game="alpine-ski"] #course-grid { max-height: 120px; }
    html[data-dg-game="alpine-ski"] #hud.park-active #hud-speed { bottom: auto !important; top: var(--dg-top); }
    html[data-dg-game="breezy-buddies"] #stage-hint { display: none; }
    html[data-dg-game="port-azur"] :is(.leaderboard,.overtake-hud) { display: none; }
    html[data-dg-game="style-studio"] .studio-body { flex-direction: row; }
    html[data-dg-game="style-studio"] .wardrobe { width: 44%; max-height: 100%; }
  }
}
