/* Shared Nintendo Switch-style stage for all six games. */
@media (orientation: landscape) and (max-width: 1024px) and (max-height: 600px) {
  html:has(body[data-gsh-game]),
  body[data-gsh-game] {
    width: 100%;
    height: 100%;
    overflow: hidden;
  }

  body.gsh-ml-active {
    --gsh-ml-safe-l: max(12px, env(safe-area-inset-left));
    --gsh-ml-safe-r: max(12px, env(safe-area-inset-right));
    --gsh-ml-safe-t: max(8px, env(safe-area-inset-top));
    --gsh-ml-safe-b: max(8px, env(safe-area-inset-bottom));
    --gsh-ml-top-h: clamp(40px, 11dvh, 52px);
    --gsh-ml-gap: clamp(4px, 1.3dvh, 10px);
    --gsh-ml-top-control-gap: 5px;
    --gsh-ml-pad: clamp(6px, 1.7dvh, 12px);
    --gsh-ml-font-sm: clamp(11px, 2.7dvh, 15px);
    --gsh-ml-font: clamp(13px, 3.2dvh, 18px);
    --gsh-ml-control-h: clamp(34px, 10dvh, 48px);
    --gsh-ml-answer-h: clamp(38px, 16dvh, 56px);
    --gsh-ml-position-two-size: clamp(64px, 22.5dvh, 88px);
    --gsh-ml-tone-choice: clamp(64px, 24dvh, 96px);
    --gsh-ml-key-h: clamp(40px, 11.5dvh, 56px);
    --gsh-ml-kbd-gap: clamp(1px, .2dvh, 1.5px);
    position: fixed;
    inset: 0;
    min-height: 0;
    padding: 0 !important;
  }

  body[data-gsh-game="tone"].gsh-ml-active {
    --gsh-ml-tone-choice: var(--gsh-ml-position-two-size);
  }

  body.gsh-ml-active > .site-nav,
  body.gsh-ml-active > .page-strip,
  body.gsh-ml-active > #bottom-nav,
  body.gsh-ml-active > footer,
  body.gsh-ml-active .gsh-page-header,
  body.gsh-ml-active .tf-page-header,
  body.gsh-ml-active .bars-wrap,
  body.gsh-ml-active .gsh-progress,
  body.gsh-ml-active #rg-cta-login {
    display: none !important;
  }

  body.gsh-ml-active > .gsh-shell,
  body.gsh-ml-active > .page,
  body.gsh-ml-active > #buildPanel,
  body.gsh-ml-active > .gsh-resume-banner,
  body.gsh-ml-active > [data-shared-result-ui="v1"] {
    opacity: 0;
    pointer-events: none;
    user-select: none;
  }

  body.gsh-ml-active #gc-cap-banner {
    display: none !important;
  }

  #gsh-ml-stage {
    position: fixed;
    z-index: 900;
    inset: 0;
    box-sizing: border-box;
    padding: var(--gsh-ml-safe-t) var(--gsh-ml-safe-r) var(--gsh-ml-safe-b) var(--gsh-ml-safe-l);
    display: grid;
    grid-template-rows: var(--gsh-ml-top-h) minmax(0, 1fr);
    gap: var(--gsh-ml-gap);
    overflow: hidden;
    background: #f5f0e8;
    color: var(--ink, #1c1c1c);
    font-family: 'Noto Sans TC', sans-serif;
  }

  .gsh-ml-top,
  .gsh-ml-play,
  .gsh-ml-exclusive {
    min-width: 0;
    min-height: 0;
    display: grid;
    grid-template-columns: minmax(0, 30fr) minmax(0, 40fr) minmax(0, 30fr);
    column-gap: var(--gsh-ml-gap);
  }

  .gsh-ml-top { grid-row: 1; align-items: center; position: relative; z-index: 20; }
  .gsh-ml-play,
  .gsh-ml-exclusive { grid-row: 2; grid-column: 1; position: relative; overflow: hidden; }

  [data-gsh-ml-slot] { box-sizing: border-box; min-width: 0; min-height: 0; }
  [data-gsh-ml-slot="dropdowns"],
  [data-gsh-ml-slot="shared-controls"],
  [data-gsh-ml-slot="main-action"] {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: var(--gsh-ml-gap);
    overflow: visible;
  }
  [data-gsh-ml-slot="dropdowns"] { justify-content: flex-start; z-index: 3; }
  [data-gsh-ml-slot="shared-controls"] { justify-content: center; }
  [data-gsh-ml-slot="main-action"] { justify-content: flex-end; z-index: 3; }

  [data-gsh-ml-slot="shared-controls"] .rg-ctl-wrap {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    max-width: 100% !important;
    height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    transform: none !important;
    display: flex !important;
    flex: 0 1 auto;
    flex-flow: row nowrap !important;
    align-items: center !important;
    justify-content: center !important;
    gap: var(--gsh-ml-gap) !important;
  }
  [data-gsh-ml-slot="shared-controls"] button.rg-ctl-fab[aria-pressed] {
    display: none !important;
  }

  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="shared-controls"] .tf-page-title {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    color: var(--gold-deep, #8b6310);
    font-size: clamp(15px, 4.2dvh, 21px) !important;
    line-height: 1.1 !important;
    letter-spacing: clamp(.4px, .15vw, 1px) !important;
    text-align: center;
    white-space: nowrap;
    text-overflow: ellipsis;
    pointer-events: none;
  }

  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    max-width: 100% !important;
    height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    transform: none !important;
    display: flex !important;
    flex: 0 1 auto;
    flex-flow: row nowrap !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: var(--gsh-ml-top-control-gap) !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap > button.rg-ctl-fab {
    width: var(--gsh-ml-control-h) !important;
    min-width: var(--gsh-ml-control-h) !important;
    max-width: var(--gsh-ml-control-h) !important;
    height: var(--gsh-ml-control-h) !important;
    min-height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    padding: 0 !important;
    border-radius: 50% !important;
    line-height: 1 !important;
    white-space: nowrap;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap > button.rg-ctl-fab[aria-pressed] {
    display: none !important;
  }

  [data-gsh-ml-slot="main-action"] > *,
  [data-gsh-ml-slot="main-action"] .btn,
  [data-gsh-ml-slot="main-action"] button {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    max-width: 100% !important;
    min-height: var(--gsh-ml-control-h);
    margin: 0 !important;
    padding: 5px 10px !important;
    flex: 0 1 auto;
    white-space: normal;
    line-height: 1.15;
  }
  [data-gsh-ml-slot="main-action"] #tf-nav-bar,
  [data-gsh-ml-slot="main-action"] .out-actions {
    display: flex !important;
    align-items: center;
    justify-content: flex-end;
    gap: var(--gsh-ml-gap);
    padding: 0 !important;
  }
  [data-gsh-ml-slot="main-action"] #tf-nav-bar {
    width: 100% !important;
    max-width: 100% !important;
    min-height: var(--gsh-ml-control-h);
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
  }
  [data-gsh-ml-slot="main-action"] #tf-nav-bar .tf-nav-btn {
    width: 0 !important;
    height: var(--gsh-ml-control-h) !important;
    min-height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    flex: 1 1 0 !important;
    border-radius: 999px !important;
    padding: 5px 8px !important;
    line-height: 1 !important;
    white-space: nowrap;
  }
  [data-gsh-ml-slot="main-action"] #tf-nav-bar .tf-nav-btn:disabled {
    opacity: .32;
    cursor: default;
  }

  [data-gsh-ml-slot="left"] { grid-column: 1; }
  [data-gsh-ml-slot="center"] {
    grid-column: 2;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: var(--gsh-ml-gap);
    overflow: hidden;
    z-index: 2;
  }
  [data-gsh-ml-slot="right"] { grid-column: 3; }
  [data-gsh-ml-slot="left"],
  [data-gsh-ml-slot="right"] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: auto;
    overscroll-behavior: contain;
  }
  [data-gsh-ml-slot="account"] {
    flex: 0 0 auto;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: var(--gsh-ml-font-sm);
    max-height: var(--gsh-ml-control-h);
    overflow: hidden;
  }
  [data-gsh-ml-slot="question"],
  [data-gsh-ml-slot="current-input"] {
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: var(--gsh-ml-gap);
    overflow: hidden;
    overflow-wrap: anywhere;
  }
  [data-gsh-ml-slot="question"] > *,
  [data-gsh-ml-slot="current-input"] > * {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    margin: 0 !important;
    transform: none !important;
    box-sizing: border-box;
  }
  [data-gsh-ml-slot="question"] .word-area,
  [data-gsh-ml-slot="question"] #tf-banner,
  [data-gsh-ml-slot="question"] .out-banner { padding: var(--gsh-ml-pad) !important; overflow: hidden; }
  [data-gsh-ml-slot="question"] #tf-body { overflow: hidden; }
  [data-gsh-ml-slot="question"] #tf-body > * { max-width: 100%; box-sizing: border-box; }
  [data-gsh-ml-slot="current-input"] input { width: 100%; box-sizing: border-box; }

  [data-gsh-ml-slot="split-content"],
  [data-gsh-ml-slot="split-keyboard"] {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
  }
  [data-gsh-ml-slot="split-keyboard"] { z-index: 3; }

  [data-gsh-ml-split] {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    height: 100% !important;
    min-width: 0;
    min-height: 0;
    max-width: none !important;
    margin: 0 !important;
    padding: var(--gsh-ml-pad) 0 !important;
    display: grid !important;
    grid-template-columns: minmax(0, 30fr) minmax(0, 40fr) minmax(0, 30fr);
    grid-auto-rows: min-content;
    align-content: center;
    column-gap: var(--gsh-ml-gap);
    row-gap: var(--gsh-ml-gap);
    overflow: auto;
    overscroll-behavior: contain;
    pointer-events: auto;
    box-sizing: border-box;
  }
  [data-gsh-ml-split] > [data-gsh-side="left"] { grid-column: 1; }
  [data-gsh-ml-split] > [data-gsh-side="right"] { grid-column: 3; }
  [data-gsh-ml-split] > .used { display: none !important; }
  [data-gsh-ml-split] button,
  [data-gsh-ml-split] .btn {
    min-width: 0;
    width: max-content;
    max-width: 100%;
    min-height: var(--gsh-ml-control-h);
    max-height: var(--gsh-ml-answer-h);
    box-sizing: border-box;
    padding: clamp(5px, 1.3dvh, 9px) clamp(8px, 1.5vw, 14px) !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    justify-self: center;
    text-align: center;
    overflow-wrap: anywhere;
    line-height: 1.15;
    font-size: var(--gsh-ml-font);
  }

  body.gsh-ml-active #gsh-ml-stage .gsh-split-thai-keyboard {
    width: 100%;
    height: 100%;
    padding: 0 !important;
    display: grid !important;
    grid-template-rows: repeat(5, var(--gsh-ml-key-h));
    gap: var(--gsh-ml-kbd-gap);
    align-content: end;
    pointer-events: auto;
    background: transparent !important;
    box-shadow: none !important;
    overflow: hidden;
  }
  body[data-gsh-game="typing"].gsh-ml-active #gsh-ml-stage #rg-kbd {
    max-width: none !important;
    align-content: center;
    touch-action: none;
    user-select: none;
    -webkit-user-select: none;
  }
  body[data-gsh-game="typing"].gsh-ml-active #gsh-ml-stage #rg-kbd .gsh-split-kbd-row {
    grid-template-columns: minmax(0, 30fr) minmax(0, 40fr) minmax(0, 30fr) !important;
    column-gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="typing"].gsh-ml-active #gsh-ml-stage #rg-kbd .gsh-split-kbd-half {
    padding-inline: clamp(3px, .8dvh, 5px);
    box-sizing: border-box;
  }
  .gsh-split-kbd-row {
    min-width: 0;
    min-height: 0;
    display: grid !important;
    grid-template-columns: minmax(0, 40fr) minmax(0, 20fr) minmax(0, 40fr);
    column-gap: 0;
  }
  .gsh-split-kbd-half {
    min-width: 0;
    min-height: 0;
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(0, 1fr);
    gap: var(--gsh-ml-kbd-gap);
  }
  .gsh-split-kbd-half[data-gsh-side="left"] { grid-column: 1; }
  .gsh-split-kbd-half[data-gsh-side="right"] { grid-column: 3; }
  body.gsh-ml-active #gsh-ml-stage .gsh-split-thai-keyboard .gsh-kbd-key {
    min-width: 0 !important;
    width: auto !important;
    max-width: none !important;
    height: var(--gsh-ml-key-h) !important;
    min-height: var(--gsh-ml-key-h) !important;
    max-height: var(--gsh-ml-key-h);
  }
  body.gsh-ml-active #gsh-ml-stage .gsh-split-thai-keyboard .tk-base { font-size: 15px; }
  body.gsh-ml-active #gsh-ml-stage .gsh-split-thai-keyboard .tk-shift { font-size: 9px; }
  body[data-gsh-game="typing"].gsh-ml-active #gsh-ml-stage #rg-kbd.shift-on .tk-key .tk-shift {
    font-size: 15px;
    color: #3a2a0a;
    font-weight: 700;
    line-height: 1.15;
  }
  body[data-gsh-game="typing"].gsh-ml-active #gsh-ml-stage #rg-kbd.shift-on .tk-key .tk-base {
    font-size: 9px;
    color: #b89860;
    font-weight: 400;
    line-height: 1;
  }
  body.gsh-ml-active #gsh-ml-stage .gsh-split-thai-keyboard .gsh-kbd-function { font-size: var(--gsh-ml-font-sm); }

  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="center"],
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"],
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="current-input"] {
    justify-content: flex-start;
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"] > *,
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="current-input"] > * {
    width: 52.5% !important;
    max-width: 52.5% !important;
    align-self: center;
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"] .word-area {
    flex: 0 1 auto;
    padding: clamp(3px, .8dvh, 6px) var(--gsh-ml-pad) !important;
    overflow: hidden;
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"] #slot-row {
    flex: 0 1 auto;
    gap: clamp(2px, .5dvh, 4px);
    overflow: hidden;
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="current-input"] #rg-type-wrap {
    flex: 0 0 auto;
    min-height: var(--gsh-ml-control-h);
  }
  @media (min-width: 800px) and (max-width: 900px) and (max-height: 430px) {
    body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"] > *,
    body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="current-input"] > * {
      width: 100% !important;
      max-width: 100% !important;
    }
    body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"] .word-th {
      padding-block: 1px !important;
      font-size: clamp(21px, 6dvh, 24px) !important;
      line-height: 1.25 !important;
    }
    body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="question"] .gsh-copy-row {
      margin-top: 2px !important;
      font-size: clamp(11px, 3dvh, 13px) !important;
      line-height: 1.25 !important;
    }
    body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="current-input"] .type-target {
      width: 100% !important;
      max-width: 100% !important;
      min-height: var(--gsh-ml-control-h) !important;
      padding: 4px 8px !important;
      font-size: clamp(19px, 5.5dvh, 22px) !important;
      line-height: 1.25 !important;
      overflow-wrap: anywhere;
    }
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="left"],
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-ml-slot="right"] {
    overflow: hidden;
    overscroll-behavior: none;
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-dropdown="tools"] #word-ctl-row {
    display: flex !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: var(--gsh-ml-gap) !important;
    flex-wrap: wrap !important;
  }
  body[data-gsh-game="typing"].gsh-ml-active [data-gsh-dropdown="tools"] #word-ctl-row > * {
    flex: 1 1 calc(33.333% - var(--gsh-ml-gap));
    min-width: var(--gsh-ml-control-h);
    height: var(--gsh-ml-control-h) !important;
    min-height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .gsh-ml-dropdown { position: relative; z-index: 2; flex: 0 1 auto; min-width: 0; }
  .gsh-ml-dropdown-trigger {
    min-width: 0;
    min-height: var(--gsh-ml-control-h);
    padding: 5px clamp(7px, 1.2vw, 12px);
    border: 1.5px solid var(--gold-bright, #c8973a);
    border-radius: 999px;
    background: #fff;
    color: var(--gold-deep, #8b6310);
    font: 700 var(--gsh-ml-font-sm)/1 'Noto Sans TC', sans-serif;
    white-space: nowrap;
    cursor: pointer;
    pointer-events: auto;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  [data-gsh-ml-quick-action] {
    position: static !important;
    inset: auto !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: none !important;
    min-height: var(--gsh-ml-control-h) !important;
    height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    padding: 5px clamp(7px, 1.2vw, 12px) !important;
    border: 1.5px solid var(--gold-bright, #c8973a) !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: transparent !important;
    font-size: 0 !important;
    box-shadow: none !important;
    white-space: nowrap;
    cursor: pointer;
    pointer-events: auto !important;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  [data-gsh-ml-quick-action]::after {
    content: attr(data-gsh-ml-quick-action);
    color: var(--gold-deep, #8b6310);
    font: 700 var(--gsh-ml-font-sm)/1 'Noto Sans TC', sans-serif;
  }
  .gsh-ml-dropdown-panel {
    position: fixed;
    z-index: 1300;
    min-width: min(220px, 42vw);
    max-width: calc(100vw - var(--gsh-ml-safe-l) - var(--gsh-ml-safe-r));
    max-height: calc(100dvh - var(--gsh-ml-safe-t) - var(--gsh-ml-safe-b) - var(--gsh-ml-top-h) - var(--gsh-ml-gap));
    padding: var(--gsh-ml-pad);
    border: 1.5px solid var(--gold-bright, #c8973a);
    border-radius: 12px;
    background: #fffdf7;
    box-shadow: 0 8px 28px rgba(58, 42, 10, .22);
    overflow: auto;
    overscroll-behavior: contain;
    pointer-events: auto;
    touch-action: pan-y;
  }
  .gsh-ml-dropdown-panel[hidden] { display: none !important; }
  .gsh-ml-dropdown-panel > * {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 var(--gsh-ml-gap) !important;
    transform: none !important;
    box-sizing: border-box;
  }
  .gsh-ml-dropdown-panel .level-tabs,
  .gsh-ml-dropdown-panel .mode-tabs,
  .gsh-ml-dropdown-panel .gsh-level-selector {
    display: flex !important;
    flex-wrap: wrap;
    gap: var(--gsh-ml-gap);
  }
  .gsh-ml-dropdown-panel button,
  .gsh-ml-dropdown-panel [role="button"] {
    min-height: var(--gsh-ml-control-h);
    pointer-events: auto;
    touch-action: manipulation;
  }

  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-dropdown="level"] .gsh-level-selector {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: stretch;
    justify-content: center;
    gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-dropdown="level"] .tf-ltab {
    width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 4px 6px !important;
    border: 0 !important;
    border-radius: 9px !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    pointer-events: auto !important;
    touch-action: manipulation;
  }

  body.gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap > button.rg-ctl-fab {
    position: relative !important;
    z-index: 2;
    pointer-events: auto !important;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-dropdown="level"] .tf-ltab:not(.active) {
    background: transparent !important;
  }

  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label] {
    height: var(--gsh-ml-control-h) !important;
    min-height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    padding: 4px 8px !important;
    display: grid;
    grid-template-columns: 28px max-content;
    align-items: center;
    justify-content: center;
    gap: 9px;
    border: 1px solid rgba(139, 99, 16, .18);
    border-radius: 9px;
    background: #fff;
    color: var(--gold-deep, #8b6310);
    text-align: center;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label]::after {
    content: attr(data-gsh-ml-tool-label);
    grid-column: 2;
    text-align: center;
    font: 700 var(--gsh-ml-font-sm)/1.2 'Noto Sans TC', sans-serif;
    white-space: nowrap;
  }
  body.gsh-ml-active [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label] {
    grid-template-columns: 28px minmax(0, 1fr);
    width: 100% !important;
    padding-inline: clamp(12px, 2vw, 18px) !important;
    justify-content: stretch;
    gap: 8px;
    border: 0 !important;
    background: transparent;
    border-radius: 10px !important;
    text-align: left;
    box-shadow: none !important;
    cursor: pointer;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label]::after {
    content: none !important;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel .gsh-ml-tool-text {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    color: var(--gold-deep, #8b6310) !important;
    -webkit-text-fill-color: var(--gold-deep, #8b6310) !important;
    font: 700 var(--gsh-ml-font-sm)/1.2 'Noto Sans TC', sans-serif !important;
    text-align: left;
    white-space: nowrap;
  }
  [data-gsh-dropdown="level"] .gsh-ml-dropdown-panel > * {
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
  }
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel] .gs-tab,
  body.gsh-ml-active .grw-menu[data-gsh-ml-utility-panel] .grw-item {
    justify-content: flex-start !important;
    text-align: left !important;
    padding-inline: clamp(12px, 2vw, 18px) !important;
    border: 0 !important;
    box-shadow: none !important;
  }
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel] .gs-divider {
    display: none !important;
  }
  body.gsh-ml-active [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel {
    width: min(240px, 42vw) !important;
    min-width: min(220px, 42vw) !important;
    max-width: min(240px, calc(100vw - var(--gsh-ml-safe-l) - var(--gsh-ml-safe-r))) !important;
    max-height: calc(var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-gap) + var(--gsh-ml-gap) + var(--gsh-ml-gap) + var(--gsh-ml-gap) + var(--gsh-ml-gap) + var(--gsh-ml-pad) + var(--gsh-ml-pad)) !important;
    display: flex;
    flex-direction: column;
    gap: var(--gsh-ml-gap);
    padding: var(--gsh-ml-pad) !important;
    border: 1.5px solid rgba(139, 99, 16, .25) !important;
    border-radius: 14px !important;
    background: #faf4e8 !important;
    box-shadow: 0 6px 24px rgba(90, 62, 10, .22) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }
  body.gsh-ml-active [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel[hidden] {
    display: none !important;
  }
  body.gsh-ml-active [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label] {
    margin: 0 !important;
  }
  body.gsh-ml-active [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label]::after {
    content: none;
  }
  body.gsh-ml-active [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel .gsh-ml-tool-text {
    grid-column: 2;
    grid-row: 1;
    min-width: 54px;
    color: var(--gold-deep, #8b6310) !important;
    -webkit-text-fill-color: var(--gold-deep, #8b6310) !important;
    font: 700 var(--gsh-ml-font-sm)/1.2 'Noto Sans TC', sans-serif !important;
    text-align: left;
    white-space: nowrap;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-direct-tool="true"] {
    font-size: 0 !important;
    color: transparent !important;
    overflow: hidden;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-direct-tool="true"]::before {
    content: attr(data-gsh-ml-tool-icon);
    grid-column: 1;
    grid-row: 1;
    color: var(--gold-deep, #8b6310);
    font-size: 18px;
    line-height: 1;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--gold-bright, #c8973a), var(--gold-deep, #8b6310));
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-direct-tool="true"]::after {
    color: var(--gold-deep, #8b6310) !important;
    -webkit-text-fill-color: var(--gold-deep, #8b6310) !important;
    opacity: 1 !important;
    position: relative;
    z-index: 1;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label] > button {
    grid-column: 1;
    grid-row: 1;
    width: 28px !important;
    height: 28px !important;
    min-height: 28px !important;
    padding: 0 !important;
    margin: 0 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    border-radius: 50% !important;
    background: linear-gradient(135deg, var(--gold-bright, #c8973a), var(--gold-deep, #8b6310)) !important;
    color: #fff !important;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label][data-gsh-ml-unavailable="true"] {
    opacity: .42;
    cursor: not-allowed;
    pointer-events: none;
    filter: grayscale(.75);
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label][data-gsh-ml-unavailable="false"] {
    opacity: 1;
    filter: none;
  }

  /* Floating utility menus always open below their trigger. */
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel],
  body.gsh-ml-active #core5-more-menu[data-gsh-ml-utility-panel],
  body.gsh-ml-active #grw-feedback-menu[data-gsh-ml-utility-panel] {
    position: fixed !important;
    width: min(240px, 42vw) !important;
    min-width: min(220px, 42vw) !important;
    max-width: min(240px, calc(100vw - var(--gsh-ml-safe-l) - var(--gsh-ml-safe-r))) !important;
    max-height: calc(var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-control-h) + var(--gsh-ml-gap) + var(--gsh-ml-gap) + var(--gsh-ml-pad) + var(--gsh-ml-pad)) !important;
    padding: var(--gsh-ml-pad) !important;
    gap: var(--gsh-ml-gap) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    z-index: 1400 !important;
  }
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel] {
    max-height: calc((7 * var(--gsh-ml-control-h)) + (6 * var(--gsh-ml-gap)) + (2 * var(--gsh-ml-pad))) !important;
  }
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel] .gs-tab,
  body.gsh-ml-active .grw-menu[data-gsh-ml-utility-panel] .grw-item {
    box-sizing: border-box;
    width: 100%;
    min-height: var(--gsh-ml-control-h) !important;
    height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    justify-content: center !important;
    text-align: center !important;
  }
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel] .gs-tab,
  body.gsh-ml-active .grw-menu[data-gsh-ml-utility-panel] .grw-item {
    justify-content: flex-start !important;
    text-align: left !important;
    padding-inline: clamp(12px, 2vw, 18px) !important;
    border: 0 !important;
    box-shadow: none !important;
  }
  body.gsh-ml-active #game-switcher[data-gsh-ml-utility-panel] .gs-divider {
    display: none !important;
  }

  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="center"],
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"],
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="current-input"] {
    justify-content: flex-start;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="left"],
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"],
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-split="tone"] {
    overflow-y: hidden;
    overscroll-behavior-y: none;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-split="tone"] {
    overflow-x: auto;
    align-content: center;
    padding-block: var(--gsh-ml-pad) !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"] #tf-banner,
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"] #tf-body {
    overflow-x: hidden !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"] #tf-body {
    flex: 1 1 auto;
    min-height: 0;
    padding: clamp(2px, .8dvh, 5px) clamp(6px, 1vw, 10px) !important;
    overflow-y: auto !important;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    scrollbar-width: thin;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"] #tf-banner {
    flex: 0 1 auto;
    padding: clamp(3px, 1dvh, 6px) !important;
  }
  /* Tone: reserve the center column for the word and its explanation. Skip is
     the single bottom action and must never float into that content area. */
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"] {
    flex: 1 1 auto;
    min-height: 0;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="current-input"]:has(> [data-gsh-ml-role="skip"]) {
    flex: 0 0 auto;
    margin-top: auto;
    padding-top: var(--gsh-ml-gap);
    justify-content: flex-end;
  }
  /* While Tone choices are split into the two side columns, the center owns
     only the vocabulary card and the bottom Skip action. Let the vocabulary
     card consume the full remaining height so its lower edge reaches Skip,
     and collapse the now-empty source body that previously left a large gap. */
  body[data-gsh-game="tone"].gsh-ml-active
  #gsh-ml-stage:has([data-gsh-ml-split="tone"] > .sg-tone-btn)
  [data-gsh-ml-slot="question"] #tf-banner {
    flex: 1 1 auto;
    min-height: 0;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
  }
  body[data-gsh-game="tone"].gsh-ml-active
  #gsh-ml-stage:has([data-gsh-ml-split="tone"] > .sg-tone-btn)
  [data-gsh-ml-slot="question"] #tf-body {
    flex: 0 0 0;
    width: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid + div {
    display: none !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid {
    grid-template-rows: repeat(3, var(--gsh-ml-tone-choice));
    grid-auto-rows: var(--gsh-ml-tone-choice);
    align-content: center;
    row-gap: clamp(8px, 2dvh, 12px);
  }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-tone-btn {
    width: var(--gsh-ml-tone-choice) !important;
    height: var(--gsh-ml-tone-choice) !important;
    min-width: var(--gsh-ml-tone-choice) !important;
    min-height: var(--gsh-ml-tone-choice) !important;
    max-width: var(--gsh-ml-tone-choice) !important;
    max-height: var(--gsh-ml-tone-choice) !important;
    aspect-ratio: 1;
    border-radius: 50% !important;
    padding: 0 !important;
    font-size: clamp(24px, 7dvh, 32px) !important;
    line-height: 1 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-tone-btn:nth-child(1) { grid-row: 1; }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-tone-btn:nth-child(2) { grid-row: 2; }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-tone-btn:nth-child(3) { grid-row: 3; }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-tone-btn:nth-child(4) { grid-row: 1; }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-tone-btn:nth-child(5) { grid-row: 2; }
  body[data-gsh-game="tone"].gsh-ml-active .sg-tone-grid > .sg-dontknow-btn {
    grid-column: 3;
    grid-row: 3;
    width: var(--gsh-ml-tone-choice) !important;
    height: var(--gsh-ml-tone-choice) !important;
    min-width: var(--gsh-ml-tone-choice) !important;
    min-height: var(--gsh-ml-tone-choice) !important;
    max-width: var(--gsh-ml-tone-choice) !important;
    max-height: var(--gsh-ml-tone-choice) !important;
    aspect-ratio: 1;
    padding: 6px !important;
    margin: 0 !important;
    border: 2px solid rgba(139, 99, 16, .5) !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: var(--gold-deep, #8b6310) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    justify-self: center;
    align-self: center;
    font-size: var(--gsh-ml-font-sm) !important;
    line-height: 1.15 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"]:has(> [data-gsh-ml-role^="result-"]),
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"]:has(> [data-gsh-ml-role^="summary-"]),
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="exclusive-right"]:has(> [data-gsh-ml-role^="summary-"]) {
    display: grid;
    grid-template-rows: repeat(3, var(--gsh-ml-tone-choice));
    align-content: center;
    justify-items: center;
    gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-role^="result-"],
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-role^="summary-"],
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="exclusive-right"] > [data-gsh-ml-role^="summary-"] {
    box-sizing: border-box;
    width: var(--gsh-ml-tone-choice) !important;
    height: var(--gsh-ml-tone-choice) !important;
    min-width: var(--gsh-ml-tone-choice) !important;
    min-height: var(--gsh-ml-tone-choice) !important;
    max-width: var(--gsh-ml-tone-choice) !important;
    max-height: var(--gsh-ml-tone-choice) !important;
    aspect-ratio: 1;
    align-self: center;
    justify-self: center;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    padding: 6px !important;
    border: 2px solid rgba(139, 99, 16, .5) !important;
    border-radius: 50% !important;
    background: #fff !important;
    color: var(--gold-deep, #8b6310) !important;
    font-size: var(--gsh-ml-font-sm) !important;
    line-height: 1.15 !important;
    text-align: center;
    white-space: normal;
    transform: none !important;
    pointer-events: auto !important;
    touch-action: manipulation;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-role="result-english"] {
    grid-row: 2;
    border-color: #c39bff !important;
    color: #c39bff !important;
    font-size: clamp(24px, 7dvh, 32px) !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-role="result-next"] {
    grid-row: 3;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-role="summary-replay"] {
    grid-row: 3;
  }
  body.gsh-ml-active #gsh-ml-stage [data-game-result-switch="v1"] {
    display: none !important;
  }
  body.gsh-ml-active #gsh-ml-stage .gsh-result-primary-actions:not(:has(> :not([data-game-result-switch="v1"]))) {
    display: none !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="left"]:has(> [data-gsh-ml-role="summary-scroll"]),
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="exclusive-left"]:has(> [data-gsh-ml-role="summary-scroll"]) {
    display: grid;
    grid-template-rows: repeat(3, var(--gsh-ml-tone-choice));
    align-content: center;
    justify-items: center;
    gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-role="summary-scroll"] {
    grid-row: 2;
    box-sizing: border-box;
    width: var(--gsh-ml-tone-choice) !important;
    height: var(--gsh-ml-tone-choice) !important;
    min-width: var(--gsh-ml-tone-choice) !important;
    min-height: var(--gsh-ml-tone-choice) !important;
    margin: 0 !important;
    padding: 6px !important;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border: 2px dashed rgba(139, 99, 16, .5) !important;
    border-radius: 50% !important;
    background: rgba(255, 255, 255, .8) !important;
    color: var(--gold-deep, #8b6310) !important;
    line-height: 1.05 !important;
    text-align: center;
    touch-action: none;
    user-select: none;
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-role="summary-scroll"] > span {
    font-size: clamp(22px, 6dvh, 30px);
  }
  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-role="summary-scroll"] > small {
    font-size: clamp(9px, 2.5dvh, 12px);
    font-weight: 800;
  }
  body.gsh-ml-active [data-gsh-ml-slot="current-input"] > [data-gsh-ml-role="skip"] {
    align-self: center;
    width: min(100%, 190px) !important;
    min-height: var(--gsh-ml-control-h) !important;
    padding: 6px 16px !important;
    margin: 0 auto !important;
    border-radius: 999px !important;
    font-size: var(--gsh-ml-font) !important;
    font-weight: 800 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options > .tf-opt-wrap,
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts > .tf-mark-btn {
    width: 100%;
    max-width: 100%;
    justify-self: stretch;
    align-self: center;
    box-sizing: border-box;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options > .tf-opt-wrap {
    min-height: clamp(52px, 14dvh, 60px);
    padding: 0 var(--gsh-ml-pad);
    display: flex !important;
    align-items: center !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options > .tf-opt-wrap .tf-opt,
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts > .tf-mark-btn {
    min-height: clamp(52px, 14dvh, 60px);
    max-height: none;
    padding: clamp(8px, 2dvh, 12px) clamp(10px, 1.8vw, 16px) !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options > .tf-opt-wrap .tf-tip-btn {
    width: clamp(42px, 11dvh, 48px) !important;
    height: clamp(42px, 11dvh, 48px) !important;
    min-width: clamp(42px, 11dvh, 48px) !important;
    min-height: clamp(42px, 11dvh, 48px) !important;
    padding: 0 !important;
    border-radius: 50% !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options[data-gsh-ml-split="tone"] {
    align-content: center !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="open"]
  [data-gsh-ml-split="tone"] {
    grid-template-rows: repeat(2, minmax(0, 1fr));
    grid-auto-rows: minmax(0, 1fr);
    align-content: stretch !important;
    overflow: hidden;
  }
  /* Lin Human review 2026-09-06: Tone derivation choices share exact
     horizontal planes across the two side frames. Their widths/heights may
     remain different. */
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="open"]
  .tf-options:has(> .tf-opt-wrap:nth-child(2):last-child),
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="open"]
  .tf-mark-opts:has(> .tf-mark-btn:nth-child(2):last-child) {
    grid-template-rows: min-content;
    grid-auto-rows: min-content;
    align-content: center !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="open"]
  .tf-options:has(> .tf-opt-wrap:nth-child(3):last-child),
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="open"]
  .tf-options:has(> .tf-opt-wrap:nth-child(4):last-child),
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="open"]
  .tf-mark-opts:has(> .tf-mark-btn:nth-child(4):last-child) {
    grid-template-rows: repeat(2, min-content);
    grid-auto-rows: min-content;
    align-content: center !important;
    row-gap: clamp(14px, 4dvh, 20px);
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(2):last-child) > .tf-opt-wrap,
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts:has(> .tf-mark-btn:nth-child(2):last-child) > .tf-mark-btn,
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(3):last-child) > .tf-opt-wrap,
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(4):last-child) > .tf-opt-wrap,
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts:has(> .tf-mark-btn:nth-child(4):last-child) > .tf-mark-btn {
    transform: translateY(var(--gsh-ml-tone-plane-shift, 0px));
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(2):last-child) > .tf-opt-wrap,
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts:has(> .tf-mark-btn:nth-child(2):last-child) > .tf-mark-btn {
    grid-row: 1;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(3):last-child) > .tf-opt-wrap[data-gsh-side="left"] {
    grid-row: 1 / 3;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(3):last-child) > .tf-opt-wrap[data-gsh-side="right"][data-gsh-side-index="0"] {
    grid-row: 1;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(3):last-child) > .tf-opt-wrap[data-gsh-side="right"][data-gsh-side-index="1"] {
    grid-row: 2;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(4):last-child) > .tf-opt-wrap[data-gsh-side-index="0"],
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts:has(> .tf-mark-btn:nth-child(4):last-child) > .tf-mark-btn[data-gsh-side-index="0"] {
    grid-row: 1;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-options:has(> .tf-opt-wrap:nth-child(4):last-child) > .tf-opt-wrap[data-gsh-side-index="1"],
  body[data-gsh-game="tone"].gsh-ml-active .tf-mark-opts:has(> .tf-mark-btn:nth-child(4):last-child) > .tf-mark-btn[data-gsh-side-index="1"] {
    grid-row: 2;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-qbox {
    padding: clamp(6px, 1.8dvh, 10px) clamp(8px, 1.5vw, 14px) !important;
    margin-bottom: clamp(3px, 1dvh, 6px) !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-qtext {
    font-size: clamp(14px, 3.8dvh, 18px) !important;
    line-height: 1.25 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-body .result-v2 {
    width: 100%;
    height: auto;
    max-height: none;
    padding: 0 !important;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--gsh-ml-gap);
    overflow: visible;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-body .result-v2 > * {
    flex: 0 0 auto;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    box-sizing: border-box;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-body .result-v2 > .result-v2-word {
    align-self: center;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-body .result-v2 > .result-v2-actions:empty {
    display: none !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #tf-body .tf-session-summary {
    width: 100%;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: var(--gsh-ml-gap) !important;
    padding: 0 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #tf-body .tf-session-summary > * {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    box-sizing: border-box;
  }
  body[data-gsh-game="tone"].gsh-ml-active #tf-body .gsh-result-primary-actions:empty {
    display: none !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-word {
    font-size: clamp(28px, 8dvh, 34px) !important;
    line-height: 1.05 !important;
    margin-bottom: 1px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-tone-card {
    padding: clamp(5px, 1.4dvh, 8px) clamp(8px, 1.4vw, 12px) !important;
    margin: 0 !important;
    border-radius: 10px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-tone-card > div:first-child {
    margin-bottom: 2px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-tone-num {
    font-size: clamp(22px, 6dvh, 26px) !important;
    margin-bottom: 1px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-tone-match,
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-guess-val,
  body[data-gsh-game="tone"].gsh-ml-active .rule-txt {
    font-size: clamp(11px, 3dvh, 13px) !important;
    line-height: 1.2 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-actions {
    margin: 0 !important;
    gap: 4px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-actions .tf-session-next-btn {
    min-height: clamp(38px, 10dvh, 44px);
    padding: 6px 12px !important;
    margin: 0 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2 > div:has(> .result-v2-guess-label) {
    width: 100%;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 5px;
    margin: 0 !important;
    text-align: center;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2 > div:has(> .result-v2-guess-label) > .result-v2-guess-label {
    margin-right: 0 !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2 > .tf-read-th,
  body[data-gsh-game="tone"].gsh-ml-active .result-v2 > .tf-read-en,
  body[data-gsh-game="tone"].gsh-ml-active .result-v2 > .word-zh {
    min-height: 1.4em;
    margin: 0 !important;
    line-height: 1.4 !important;
    text-align: center;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-bd {
    padding: 4px 6px !important;
    margin: 0 !important;
    border-radius: 8px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .gsh-detail-box {
    margin-top: 3px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-ans-inner {
    padding: 4px 6px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-ans-rows {
    gap: 2px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-path {
    padding: 4px 7px !important;
    margin-bottom: 0 !important;
    border-radius: 7px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-path-label,
  body[data-gsh-game="tone"].gsh-ml-active .result-v2-bd-title {
    margin-bottom: 2px !important;
  }

  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="center"],
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"],
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="current-input"] { justify-content: flex-start; }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="left"],
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="right"],
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-split="reading"] {
    overflow-y: hidden;
    overscroll-behavior-y: none;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-split="reading"] {
    --gsh-ml-reading-choice-safe-x: clamp(28px, 4vw, 36px);
    grid-template-columns: minmax(0, 30fr) minmax(0, 40fr) minmax(0, 30fr) !important;
    grid-template-rows: repeat(100, minmax(0, 1fr));
    grid-auto-rows: minmax(0, 1fr);
    align-content: stretch;
    justify-content: stretch !important;
    column-gap: var(--gsh-ml-gap) !important;
    row-gap: 0 !important;
    padding-block: clamp(28px, 8dvh, 34px) !important;
    overflow-x: hidden;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-split="reading"] > .opt {
    grid-row: var(--gsh-ml-row-start) / span var(--gsh-ml-row-span);
    justify-self: var(--gsh-ml-inline-align, center);
    align-self: center;
    margin-inline: var(--gsh-ml-reading-choice-safe-x) !important;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] .word-area {
    flex: 0 1 auto;
    z-index: auto;
    padding: 0 var(--gsh-ml-pad) !important;
    background: transparent;
    overflow: hidden;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #word-ctl-row { display: none !important; }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] .word-th {
    padding-top: 0;
    font-size: clamp(28px, 8dvh, 38px);
    line-height: 1.15;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] .word-zh,
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] .rev-pron,
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] .rev-en {
    margin-top: 0;
    font-size: clamp(11px, 3dvh, 14px);
    line-height: 1.2;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #syl-strip {
    flex: 0 1 auto;
    flex-wrap: nowrap;
    gap: 3px;
    margin: 0 !important;
    overflow: hidden;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #syl-strip .syl-chip {
    min-width: 40px;
    padding: 2px 7px;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #syl-strip .syl-th {
    font-size: clamp(16px, 4.5dvh, 21px);
    line-height: 1.2;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #slot-row {
    flex: 0 1 auto;
    flex-wrap: nowrap;
    gap: clamp(3px, .8vw, 6px);
    margin: 0 !important;
    overflow: hidden;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #slot-row .slot-col {
    min-width: 0;
    flex: 1 1 0;
    gap: 2px;
  }
  body[data-gsh-game="reading"].gsh-ml-active [data-gsh-ml-slot="question"] #slot-row .slot-box {
    width: 100%;
    min-width: 0;
    min-height: clamp(44px, 12dvh, 52px);
    padding: 2px 4px;
    font-size: clamp(22px, 6dvh, 28px);
  }
  body.gsh-ml-active #gsh-ml-stage .grw-menu,
  body.gsh-ml-active #gsh-ml-stage .wm-panel {
    z-index: 1400;
    max-width: calc(100vw - var(--gsh-ml-safe-l) - var(--gsh-ml-safe-r));
    max-height: calc(100dvh - var(--gsh-ml-safe-t) - var(--gsh-ml-safe-b) - var(--gsh-ml-top-h));
    overflow: auto;
    overscroll-behavior: contain;
  }

  [data-gsh-ml-slot="right"] [data-gsh-ml-role="lego-menu"] {
    position: static !important;
    inset: auto !important;
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    max-height: 100% !important;
    margin: 0 !important;
    transform: none !important;
    overflow: auto;
    overscroll-behavior: contain;
  }
  [data-gsh-ml-slot="left"] #baseplate {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    height: 100%;
    margin: 0 !important;
    padding: var(--gsh-ml-pad) !important;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--gsh-ml-gap);
    align-content: center;
    overflow: auto;
  }
  [data-gsh-ml-slot="left"] #baseplate .slot { min-width: 0; }
  [data-gsh-ml-slot="left"] #baseplate .slot-btn { min-width: 0; min-height: var(--gsh-ml-control-h); padding: 4px; }

  /* Tone 字母練習區 reuses the live Desktop ALPHA nodes and handlers inside
     the Human-reviewed two-column Landscape surface. */
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .gsh-ml-play {
    display: block;
    padding: var(--gsh-ml-pad);
    background: rgba(36, 35, 34, .48);
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="left"],
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="right"],
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="split-content"] {
    display: none;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="center"] {
    width: min(660px, calc(100% - (2 * var(--gsh-ml-pad))));
    height: 100%;
    max-height: 100%;
    margin: 0 auto;
    padding: 0;
    border-radius: 16px;
    background: #fffdf7;
    overflow: hidden;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="account"],
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="current-input"],
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] #tf-banner {
    display: none !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  [data-gsh-ml-slot="question"] {
    width: 100%;
    height: 100%;
    display: block;
    overflow: hidden;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] #tf-body {
    width: 100% !important;
    height: 100% !important;
    padding: 0 !important;
    overflow-y: auto !important;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .tf-alpha-surface {
    width: 100%;
    min-height: 100%;
    margin: 0 !important;
    padding: 14px 16px 18px !important;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-content: start;
    column-gap: 10px;
    row-gap: 14px;
    border: 0 !important;
    border-radius: 0 !important;
    background: #fffdf7 !important;
    box-shadow: none !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  .tf-alpha-surface > .tf-level-title {
    grid-column: 1 / -1;
    margin: 0 !important;
    padding: 2px 48px 10px;
    border-bottom: 1px solid rgba(139, 99, 16, .24);
    color: var(--gold-deep, #8b6310);
    font-size: clamp(16px, 4.2dvh, 21px);
    font-weight: 700;
    text-align: center;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  .tf-alpha-surface > .tf-level-btn {
    width: 100% !important;
    min-width: 0 !important;
    min-height: clamp(54px, 15dvh, 70px) !important;
    margin: 0 !important;
    padding: 9px 10px !important;
    box-sizing: border-box;
    border-radius: 10px !important;
    overflow-wrap: anywhere;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  .tf-alpha-surface > .tf-back-level-btn {
    grid-column: 1 / -1;
    justify-self: center;
    width: max-content !important;
    max-width: 100% !important;
    min-height: 40px;
    margin: 0 !important;
    padding: 7px 14px !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  .tf-alpha-surface:has(> .afc-scene) {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .afc-scene {
    width: min(280px, 90%);
    margin: 0 auto !important;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .afc-card {
    width: 100%;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .afc-face {
    min-height: clamp(150px, 46dvh, 210px);
    padding: clamp(14px, 3dvh, 22px) 14px;
    gap: 14px;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .afc-letter {
    font-size: clamp(58px, 22dvh, 92px);
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"] .afc-exp {
    width: min(100%, 420px);
    max-width: 100%;
    margin: 0 auto !important;
    box-sizing: border-box;
  }
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  .afc-controls,
  body[data-gsh-game="tone"].gsh-ml-active #gsh-ml-stage[data-gsh-ml-tone-alpha="true"]
  .afc-shuffle {
    flex: 0 0 auto;
    margin: 0 !important;
  }

  .gsh-ml-exclusive { opacity: 0; pointer-events: none; }
  [data-gsh-ml-slot="exclusive-left"],
  [data-gsh-ml-slot="exclusive-center"],
  [data-gsh-ml-slot="exclusive-right"] {
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: var(--gsh-ml-gap);
    overflow: auto;
    overscroll-behavior: contain;
  }
  [data-gsh-ml-slot="exclusive-left"] { grid-column: 1; }
  [data-gsh-ml-slot="exclusive-center"] { grid-column: 2; }
  [data-gsh-ml-slot="exclusive-right"] { grid-column: 3; }
  [data-gsh-ml-slot^="exclusive-"] > * {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    margin: 0 !important;
    transform: none !important;
    box-sizing: border-box;
  }
  [data-gsh-ml-slot="exclusive-center"] [data-shared-result-ui="v1"] {
    display: flex !important;
    overflow: auto;
    padding: var(--gsh-ml-pad) !important;
  }
  [data-gsh-ml-slot="exclusive-center"] [data-shared-result-detail-active="true"] {
    display: flex !important;
    flex-direction: column;
    overflow: auto;
    overscroll-behavior: contain;
    padding: var(--gsh-ml-pad) !important;
  }
  [data-gsh-ml-slot="exclusive-center"] .gsh-resume-banner,
  [data-gsh-ml-slot="exclusive-center"] [data-gsh-ml-custom-input] {
    padding: var(--gsh-ml-pad) !important;
    background: #fffdf7;
    border-radius: 14px;
  }
  [data-gsh-ml-slot="exclusive-center"] [data-gsh-ml-custom-input] {
    display: block !important;
  }
  [data-gsh-ml-slot="exclusive-center"] .gsh-resume-banner[style*="display:none"],
  [data-gsh-ml-slot="exclusive-center"] .gsh-resume-banner[style*="display: none"] {
    display: none !important;
  }

  /* Core 5 Resume overlays the restored game; Lego keeps its separate flow. */
  body[data-gsh-game]:not([data-gsh-game="lego"]).gsh-ml-active #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-ml-exclusive {
    grid-row: 1 / 3;
    z-index: 60;
    padding: var(--gsh-ml-pad);
    background: rgba(28, 28, 28, .42);
  }
  body[data-gsh-game].gsh-ml-active #gsh-ml-stage[data-gsh-ml-view="resume"] [data-gsh-ml-slot="exclusive-center"] {
    grid-column: 1 / 4;
    width: min(100%, 680px);
    justify-self: center;
  }
  body[data-gsh-game].gsh-ml-active #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-resume-banner {
    width: 100% !important;
    max-width: 640px !important;
    margin: 0 auto !important;
    padding: clamp(7px, 1.7dvh, 12px) !important;
  }
  body[data-gsh-game].gsh-ml-active #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-resume-actions {
    width: 100%;
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--gsh-ml-gap) !important;
  }
  body[data-gsh-game].gsh-ml-active #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-resume-actions button {
    width: 100% !important;
    min-width: 0 !important;
    min-height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    padding: 5px 7px !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-align: center;
    white-space: nowrap;
  }
  #gsh-ml-custom-cancel { display: none; }
  #gsh-ml-stage[data-gsh-ml-view="custom-input"] #gsh-ml-custom-cancel {
    display: inline-flex;
    min-height: var(--gsh-ml-control-h);
    align-items: center;
    justify-content: center;
  }
  [data-gsh-ml-slot="exclusive-left"] .gsh-result-utility-actions,
  [data-gsh-ml-slot="exclusive-left"] .gsh-result-home-actions,
  [data-gsh-ml-slot="exclusive-right"] .gsh-result-primary-actions {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: var(--gsh-ml-gap);
  }

  #gsh-ml-stage[data-gsh-ml-view="result"] .gsh-ml-top,
  #gsh-ml-stage[data-gsh-ml-view="result"] .gsh-ml-play,
  #gsh-ml-stage[data-gsh-ml-view="result-detail"] .gsh-ml-top,
  #gsh-ml-stage[data-gsh-ml-view="result-detail"] .gsh-ml-play,
  #gsh-ml-stage[data-gsh-ml-view="custom-input"] .gsh-ml-top,
  #gsh-ml-stage[data-gsh-ml-view="custom-input"] .gsh-ml-play {
    opacity: 0;
    pointer-events: none;
  }
  #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-ml-top,
  #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-ml-play {
    opacity: 1;
    pointer-events: none;
  }
  #gsh-ml-stage[data-gsh-ml-view="resume"] .gsh-ml-exclusive,
  #gsh-ml-stage[data-gsh-ml-view="result"] .gsh-ml-exclusive,
  #gsh-ml-stage[data-gsh-ml-view="result-detail"] .gsh-ml-exclusive,
  #gsh-ml-stage[data-gsh-ml-view="custom-input"] .gsh-ml-exclusive {
    opacity: 1;
    pointer-events: auto;
  }

  /* 5.2 locked shared landscape geometry: the top band is identical in all
     six games and the five standard games use visible 30 / 40 / 30 zones. */
  #gsh-ml-stage {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }
  .gsh-ml-top,
  .gsh-ml-play,
  .gsh-ml-exclusive,
  [data-gsh-ml-split],
  .gsh-split-kbd-row {
    grid-template-columns: minmax(0, 30fr) minmax(0, 40fr) minmax(0, 30fr);
  }

  [data-gsh-ml-slot="dropdowns"] {
    flex-wrap: nowrap;
    gap: var(--gsh-ml-top-control-gap);
  }
  [data-gsh-ml-slot="main-action"] {
    gap: var(--gsh-ml-top-control-gap);
  }
 [data-gsh-ml-slot="shared-controls"] > .tf-page-title,
  [data-gsh-ml-slot="shared-controls"] > .page-title,
  [data-gsh-ml-slot="shared-controls"] > h1 {
    position: static !important;
    inset: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    display: block !important;
    overflow: hidden;
    color: var(--gold-deep, #8b6310);
    font-size: clamp(15px, 4.2dvh, 21px) !important;
    line-height: 1.1 !important;
    letter-spacing: clamp(.2px, .1vw, .8px) !important;
    text-align: center !important;
    white-space: nowrap;
    text-overflow: ellipsis;
    pointer-events: none;
  }

  body.gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    max-width: 100% !important;
    height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    display: flex !important;
    flex: 0 1 auto;
    flex-flow: row nowrap !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: var(--gsh-ml-top-control-gap) !important;
  }
  body.gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap > button.rg-ctl-fab {
    width: var(--gsh-ml-control-h) !important;
    min-width: var(--gsh-ml-control-h) !important;
    max-width: var(--gsh-ml-control-h) !important;
    height: var(--gsh-ml-control-h) !important;
    min-height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    padding: 0 !important;
    border-radius: 50% !important;
  }
  body.gsh-ml-active [data-gsh-ml-slot="main-action"] .rg-ctl-wrap > button.rg-ctl-fab[aria-pressed] {
    display: none !important;
  }
  [data-gsh-ml-slot="skip"],
  [data-gsh-ml-slot="check"],
  [data-gsh-ml-slot="reset"] {
    flex: 0 0 var(--gsh-ml-control-h);
    width: var(--gsh-ml-control-h);
    height: var(--gsh-ml-control-h);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  [data-gsh-ml-slot="skip"]:empty,
  [data-gsh-ml-slot="check"]:empty,
  [data-gsh-ml-slot="reset"]:empty {
    display: none;
  }
  [data-gsh-ml-slot="skip"] > [data-gsh-ml-role="skip"],
  [data-gsh-ml-slot="check"] > [data-gsh-ml-role="check"],
  [data-gsh-ml-slot="reset"] > [data-gsh-ml-role="reset"] {
    position: static !important;
    inset: auto !important;
    width: var(--gsh-ml-control-h) !important;
    min-width: var(--gsh-ml-control-h) !important;
    max-width: var(--gsh-ml-control-h) !important;
    height: var(--gsh-ml-control-h) !important;
    min-height: var(--gsh-ml-control-h) !important;
    max-height: var(--gsh-ml-control-h) !important;
    margin: 0 !important;
    padding: 2px !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    font-size: clamp(9px, 2.2dvh, 12px) !important;
    line-height: 1.05 !important;
    text-align: center;
    white-space: normal;
    border: 1.5px solid rgba(200, 151, 58, .65) !important;
    background: #242322 !important;
    color: #c8973a !important;
    box-shadow: 0 3px 10px rgba(36, 35, 34, .22) !important;
    font-weight: 700 !important;
  }

  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel {
    width: min(240px, 42vw) !important;
    min-width: min(220px, 42vw) !important;
    max-height: calc((6 * var(--gsh-ml-control-h)) + (5 * var(--gsh-ml-gap)) + (2 * var(--gsh-ml-pad))) !important;
    display: flex;
    flex-direction: column;
    gap: var(--gsh-ml-gap);
    overflow-x: hidden !important;
    overflow-y: auto !important;
  }
  [data-gsh-dropdown="tools"] .gsh-ml-dropdown-panel > [data-gsh-ml-tool-label] {
    flex: 0 0 var(--gsh-ml-control-h);
    width: 100% !important;
    grid-template-columns: 28px minmax(0, 1fr);
    justify-content: stretch;
    border: 0 !important;
    border-radius: 10px !important;
    background: transparent !important;
    box-shadow: none !important;
    cursor: pointer;
  }

  body.gsh-ml-active:not([data-gsh-game="lego"]) [data-gsh-ml-slot="left"],
  body.gsh-ml-active:not([data-gsh-game="lego"]) [data-gsh-ml-slot="center"],
  body.gsh-ml-active:not([data-gsh-game="lego"]) [data-gsh-ml-slot="right"] {
    border: 1.5px solid rgba(184, 134, 40, .34);
    border-radius: clamp(12px, 2vw, 18px);
    background: rgba(255, 253, 247, .58);
    padding: var(--gsh-ml-pad);
  }
  body.gsh-ml-active:not([data-gsh-game="lego"]) [data-gsh-ml-slot="center"] {
    overflow-y: auto;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
  }

  body.gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-position="2"] {
    position: relative !important;
    z-index: 5;
    width: var(--gsh-ml-position-two-size) !important;
    min-width: var(--gsh-ml-position-two-size) !important;
    max-width: var(--gsh-ml-position-two-size) !important;
    height: var(--gsh-ml-position-two-size) !important;
    min-height: var(--gsh-ml-position-two-size) !important;
    max-height: var(--gsh-ml-position-two-size) !important;
    margin: var(--gsh-ml-gap) auto !important;
    padding: 5px !important;
    border-radius: 50% !important;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    text-align: center;
    white-space: normal;
  }
  body.gsh-ml-active #gsh-ml-stage .gsh-ml-position-two-inactive {
    display: none !important;
    pointer-events: none !important;
  }
  body.gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="reserved"] [data-gsh-ml-slot="right"] {
    display: grid;
    grid-template-rows: repeat(3, var(--gsh-ml-position-two-size));
    align-content: center;
    justify-items: center;
    gap: var(--gsh-ml-gap);
  }
  body.gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-position="2"] {
    grid-row: 3;
    margin: 0 auto !important;
    font-size: var(--gsh-ml-font-sm) !important;
    line-height: 1.12 !important;
  }
  body.gsh-ml-active [data-gsh-ml-slot="right"] > [data-gsh-ml-position="2"]:disabled {
    opacity: .32;
    cursor: default;
  }

  /* Position 2 exclusively owns the lower-right 35% in the approved
     games. Current Reading choices use this shared rule; any future
     split-choice surface for Typing inherits it automatically. Tone keeps its
     dedicated 4 / 5 / 不確定 rows, with 不確定 as Position 2 itself. */
  body.gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="reserved"]
  [data-gsh-ml-split]:not([data-gsh-ml-split="tone"]) {
    grid-template-rows: repeat(100, minmax(0, 1fr));
    grid-auto-rows: minmax(0, 1fr);
    align-content: stretch;
    row-gap: 0 !important;
  }
  body.gsh-ml-active #gsh-ml-stage[data-gsh-ml-position-two-zone="reserved"]
  [data-gsh-ml-split]:not([data-gsh-ml-split="tone"]) > [data-gsh-side] {
    grid-row: var(--gsh-ml-row-start) / span var(--gsh-ml-row-span);
  }
  [data-gsh-ml-slot="sentence"] { display: none; }
  body[data-gsh-game="lego"].gsh-ml-active .gsh-ml-play {
    grid-template-rows: minmax(54px, 29%) minmax(0, 1fr);
    row-gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="sentence"] {
    grid-column: 1 / 4;
    grid-row: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    min-height: 0;
    padding: var(--gsh-ml-pad);
    border: 1.5px solid rgba(184, 134, 40, .42);
    border-radius: clamp(12px, 2vw, 18px);
    background: rgba(255, 253, 247, .72);
    overflow: hidden;
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="sentence"] .out-banner {
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    margin: 0 !important;
    padding: 4px !important;
    overflow: auto;
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="left"],
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="center"],
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="right"] {
    grid-row: 2;
    min-width: 0;
    min-height: 0;
    padding: var(--gsh-ml-pad);
    border: 1.5px solid rgba(184, 134, 40, .34);
    border-radius: clamp(12px, 2vw, 18px);
    background: rgba(255, 253, 247, .58);
    overflow: auto;
    overscroll-behavior: contain;
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="left"],
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="center"] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-content: center;
    gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="center"] .out-actions {
    grid-column: 1 / -1;
    position: static !important;
    width: 100% !important;
    margin: 0 !important;
    display: flex !important;
    justify-content: center;
    gap: var(--gsh-ml-gap);
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="left"] > .slot,
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="center"] > .slot {
    min-width: 0;
    margin: 0 !important;
  }
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="left"] .slot-btn,
  body[data-gsh-game="lego"].gsh-ml-active [data-gsh-ml-slot="center"] .slot-btn {
    width: 100% !important;
    min-width: 0 !important;
    min-height: var(--gsh-ml-control-h) !important;
    padding: 4px 6px !important;
  }

  body[data-gsh-game="tone"].gsh-ml-active [data-gsh-ml-slot="question"] #tf-banner {
    min-height: 0;
    max-height: 58% !important;
    overflow-y: auto !important;
    overscroll-behavior-y: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    scrollbar-width: thin;
  }
  body[data-gsh-game="tone"].gsh-ml-active .tf-adv-sent-main,
  body[data-gsh-game="tone"].gsh-ml-active .tf-adv-sent-reading,
  body[data-gsh-game="tone"].gsh-ml-active .tf-adv-sent-ctx-zh {
    line-height: 1.25 !important;
    margin-block: 0 var(--gsh-ml-gap) !important;
  }

  body.gsh-ml-active .gsh-confirm-card,
  body.gsh-ml-active .gsh-game-exit-dialog,
  body.gsh-ml-active .modal,
  body.gsh-ml-active .modal-card,
  body.gsh-ml-active #gt-tour-card {
    width: min(72vw, 640px) !important;
    max-width: calc(100vw - var(--gsh-ml-safe-l) - var(--gsh-ml-safe-r)) !important;
    max-height: calc(78dvh - var(--gsh-ml-safe-t) - var(--gsh-ml-safe-b)) !important;
    overflow: auto !important;
    overscroll-behavior: contain;
  }

  /* The four original how-to dialogs keep their own content and controls,
     but share one Landscape shell above the Switch-style stage. */
  body.gsh-ml-active #tf-howto-modal,
  body.gsh-ml-active #rg-howto-modal {
    z-index: 100002 !important;
    box-sizing: border-box;
    padding: max(var(--gsh-ml-pad), var(--gsh-ml-safe-t)) max(var(--gsh-ml-pad), var(--gsh-ml-safe-r)) max(var(--gsh-ml-pad), var(--gsh-ml-safe-b)) max(var(--gsh-ml-pad), var(--gsh-ml-safe-l)) !important;
  }
  body.gsh-ml-active #tf-howto-modal > :first-child,
  body.gsh-ml-active #rg-howto-modal > :first-child {
    box-sizing: border-box;
    width: min(72vw, 640px) !important;
    max-width: calc(100vw - var(--gsh-ml-safe-l) - var(--gsh-ml-safe-r)) !important;
    max-height: calc(100dvh - var(--gsh-ml-safe-t) - var(--gsh-ml-safe-b) - (2 * var(--gsh-ml-pad))) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
  }

  body.gsh-ml-login-open #gsh-ml-stage { pointer-events: none; }
  body.gsh-ml-active #rg-gate { z-index: 100000; }
  body.gsh-ml-active .gsh-game-exit-overlay,
  body.gsh-ml-active .gsh-confirm-overlay,
  body.gsh-ml-active .modal-overlay,
  body.gsh-ml-active #gt-tour-overlay,
  body.gsh-ml-active #gt-tour-card,
  body.gsh-ml-active #cookieConsentBanner { z-index: 100001; }
}

/* Safari can leave only ~240px of visual height when both browser bars are
   visible in landscape. Keep all three controls on each side fully inside the
   stage instead of letting the first and last rows clip behind the chrome. */
@media (orientation: landscape) and (max-width: 1024px) and (max-height: 300px) {
  body.gsh-ml-active {
    --gsh-ml-safe-t: max(3px, env(safe-area-inset-top));
    --gsh-ml-safe-b: max(3px, env(safe-area-inset-bottom));
    --gsh-ml-top-h: 32px;
    --gsh-ml-gap: 3px;
    --gsh-ml-pad: 2px;
    --gsh-ml-control-h: 30px;
    --gsh-ml-position-two-size: clamp(46px, 22.5dvh, 58px);
    --gsh-ml-tone-choice: var(--gsh-ml-position-two-size);
  }
}
