      position: fixed;
      inset: 0;
      z-index: 35;
      pointer-events: none;
      touch-action: none;
      user-select: none;
      -webkit-user-select: none;
    }

    #touch-controls[hidden] {
      display: none;
    }

    .touch-surface,
    .touch-action-button {
      pointer-events: auto;
      touch-action: none;
      -webkit-tap-highlight-color: transparent;
    }

    .touch-surface {
      position: absolute;
      box-sizing: border-box;
      border: 1px solid rgba(176, 143, 74, 0.42);
      background: rgba(8, 6, 4, 0.34);
      box-shadow:
        inset 0 0 0 1px rgba(0, 0, 0, 0.48),
        0 8px 18px rgba(0, 0, 0, 0.28);
    }

    #touch-move-zone {
      left: max(18px, env(safe-area-inset-left));
      bottom: max(18px, env(safe-area-inset-bottom));
      width: clamp(132px, 28vw, 188px);
      height: clamp(132px, 28vw, 188px);
      border-radius: 50%;
    }

    #touch-stick-base {
      position: absolute;
      inset: 18px;
      border: 1px solid rgba(221, 192, 117, 0.5);
      border-radius: 50%;
      background: rgba(10, 7, 4, 0.52);
      box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.54);
    }

    #touch-stick-thumb {
      position: absolute;
      left: 50%;
      top: 50%;
      width: 44px;
      height: 44px;
      margin: -22px 0 0 -22px;
      border: 1px solid rgba(230, 207, 144, 0.68);
      border-radius: 50%;
      background: rgba(23, 16, 9, 0.86);
      box-shadow:
        inset 0 0 0 1px rgba(0, 0, 0, 0.58),
        0 3px 10px rgba(0, 0, 0, 0.36);
      transform: translate(0, 0);
    }

    #touch-look-zone {
      right: max(18px, env(safe-area-inset-right));
      bottom: max(118px, calc(env(safe-area-inset-bottom) + 118px));
      width: clamp(148px, 32vw, 280px);
      height: clamp(142px, 32vh, 270px);
      border-radius: 4px;
    }

    #shell[data-touch-controls="true"] #touch-look-zone {
      right: max(66px, calc(env(safe-area-inset-right) + 66px));
    }

    #touch-action-zone {
      position: absolute;
      right: max(18px, env(safe-area-inset-right));
      bottom: max(18px, env(safe-area-inset-bottom));
      display: grid;
      grid-template-columns: repeat(3, 58px);
      gap: 7px;
      pointer-events: none;
    }

    .touch-action-button {
      box-sizing: border-box;
      min-width: 0;
      height: 42px;
      border: 1px solid rgba(176, 143, 74, 0.68);
      border-radius: 3px;
      padding: 0 8px;
      background: rgba(13, 9, 5, 0.9);
      color: #f1dfaa;
      font: 700 12px/14px var(--overlay-display-font);
      text-shadow: 0 1px 0 #000;
      box-shadow:
        inset 0 0 0 1px rgba(0, 0, 0, 0.58),
        inset 0 1px 0 rgba(241, 223, 170, 0.08),
        0 5px 14px rgba(0, 0, 0, 0.28);
    }

    .touch-action-button[data-active="true"] {
      border-color: #f1dfaa;
      background: rgba(48, 31, 13, 0.92);
      color: #fff4c7;
    }

    #command-touch-mode {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      border: 1px solid var(--overlay-border-soft);
      background: rgba(5, 4, 3, 0.64);
    }

    #command-touch-mode button {
      min-width: 0;
      min-height: 30px;
      border: 0;
      border-right: 1px solid var(--overlay-border-soft);
      padding-inline: 8px;
      background: transparent;
      color: var(--overlay-text);
      cursor: pointer;
      font: 600 12px/14px var(--overlay-text-font);
    }

    #command-touch-mode button:last-child {
      border-right: 0;
    }

    #command-touch-mode button[aria-pressed="true"] {
      background: rgba(54, 34, 14, 0.72);
      color: #fff4c7;
    }

    #command-touch-look {
      width: 100%;
      accent-color: #b89e4b;
    }

    #output {
      display: none;
      height: 120px;
      width: 100%;
      box-sizing: border-box;
      border: 0;
      border-top: 1px solid #3a3529;
      padding: 8px;
      background: #080806;
      color: #d9cda8;
      font: 12px/16px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
      resize: none;
    }

    #video-overlay {
      position: fixed;
      inset: 0;
      z-index: 20;
      display: flex;
      align-items: center;
      justify-content: center;
      background: #000;
    }

    #video-overlay[hidden] {
      display: none;
