/* Portrait scoring: constrain every grid item before sizing its contents.
   Desktop/tablet landscape and setup pages retain their existing layout. */
@media (max-width:700px) and (orientation:portrait) {
 body:has(#gameScreen:not(.hidden)) .app {
  width:100%;min-width:0;max-width:100%;height:100dvh;max-height:100dvh;
  grid-template-columns:minmax(0,1fr);
  padding:max(6px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));gap:5px;
 }
 body:has(#gameScreen:not(.hidden)) header {
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:5px;min-width:0;
 }
 body:has(#gameScreen:not(.hidden)) header h1 {
  white-space:normal;overflow-wrap:anywhere;font-size:clamp(.95rem,4.3vw,1.35rem);line-height:1.05;min-width:0;
 }
 body:has(#gameScreen:not(.hidden)) header .home-link,
 body:has(#gameScreen:not(.hidden)) header .board-device-badge {
  min-width:0;min-height:32px;padding:5px;font-size:.62rem;
 }
 #gameScreen:not(.hidden),#gameScreen .layout,#gameScreen .layout>div,
 #gameScreen .game-toolbar,#gameScreen .scoring-panel,#gameScreen .entry-controls,
 #gameScreen .total-entry,#gameScreen .input-area,#gameScreen .scoring-footer {min-width:0;max-width:100%}
 #gameScreen .game-toolbar {gap:4px;font-size:.68rem}
 #gameScreen .toolbar-actions {display:grid;grid-template-columns:repeat(5,minmax(0,1fr));width:100%;min-width:0}
 #gameScreen .toolbar-actions button {
  white-space:normal;overflow-wrap:anywhere;line-height:1.1;font-size:.6rem!important;min-height:36px!important;padding:4px 2px!important;
 }
 #gameScreen .layout>div {grid-template-rows:minmax(0,.44fr) minmax(0,.56fr);gap:5px}
 #gameScreen .players {gap:5px}
 #gameScreen .players.many {grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
 #gameScreen .players[data-count="3"] {grid-template-rows:repeat(2,minmax(0,1fr))}
 #gameScreen .players[data-count="5"],#gameScreen .players[data-count="6"] {grid-template-rows:repeat(3,minmax(0,1fr))}
 #gameScreen .players .player {container-type:inline-size;padding:5px;gap:3px;border-radius:12px}
 #gameScreen .players .player .name,#gameScreen .players.many .player .name {
  display:block;width:100%;font-size:clamp(.75rem,3.3vw,1rem);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
 }
 #gameScreen .players .player-photo,#gameScreen .players.many .player-photo {width:20px;height:20px;vertical-align:middle;margin-right:3px}
 #gameScreen .players .score {font-size:clamp(2rem,min(48cqw,12dvh),6rem);margin:1px 0;line-height:1;letter-spacing:-.04em}
 #gameScreen .players.many .score {font-size:clamp(1.7rem,min(45cqw,6.5dvh),3.6rem)}
 #gameScreen .layout>div:has(.players[data-count="5"]),#gameScreen .layout>div:has(.players[data-count="6"]) {grid-template-rows:minmax(0,.48fr) minmax(0,.52fr)}
 #gameScreen .players[data-count="5"] .player,#gameScreen .players[data-count="6"] .player {padding:3px;gap:1px}
 #gameScreen .players[data-count="5"] .score,#gameScreen .players[data-count="6"] .score {font-size:clamp(1.5rem,min(45cqw,5dvh),3rem)}
 #gameScreen .players .mini,#gameScreen .players.many .mini {
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:2px;font-size:clamp(.55rem,2.5vw,.75rem);line-height:1.15;
 }
 #gameScreen .players .mini span,#gameScreen .players.many .mini span {min-width:0;padding:3px 1px;white-space:nowrap;border-radius:4px}
 #gameScreen .players .records,#gameScreen .players.many .records {font-size:clamp(.5rem,2.3vw,.65rem);line-height:1.15;white-space:normal}
 #gameScreen .players .checkout {font-size:.62rem;line-height:1.1}
 #gameScreen .scoring-panel {padding:6px;gap:5px;grid-template-rows:auto auto minmax(0,1fr) auto}
 #gameScreen .scoring-panel h2 {font-size:.85rem}
 #gameScreen .entry-controls {grid-template-columns:minmax(0,1fr);gap:4px}
 #gameScreen .swap-start {min-height:32px;height:32px;padding:4px;font-size:.75rem}
 #gameScreen .total-entry {grid-template-columns:minmax(0,1fr);gap:4px}
 #gameScreen .total-entry .field {min-width:0;font-size:.65rem;gap:2px}
 #gameScreen .total-entry input {width:100%;min-width:0;min-height:34px;height:34px;padding:5px 8px;font-size:1rem}
 #gameScreen .score-entry-actions {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
 #gameScreen .score-entry-actions button {width:100%;min-width:0;min-height:34px;height:34px;font-size:.73rem;padding:4px}
 #gameScreen .input-area:has(.score-presets:not([hidden])) {grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:5px}
 #gameScreen .score-keypad {gap:4px;min-width:0}
 #gameScreen .score-keypad button {min-width:0;min-height:0;padding:2px;font-size:clamp(1rem,5vw,1.5rem);line-height:1}
 #gameScreen .score-keypad .key-submit {font-size:clamp(.5rem,2.5vw,.85rem)}
 #gameScreen .score-presets {padding:4px;gap:4px}
 #gameScreen .score-presets h3 {font-size:.6rem}
 #gameScreen .score-presets-grid {gap:4px}
 #gameScreen .score-presets button {font-size:clamp(.85rem,3.7vw,1.25rem);padding:1px}
 #gameScreen .scoring-footer {flex-wrap:wrap;gap:3px}
 #gameScreen .actions {flex:1;min-width:0;flex-wrap:wrap;gap:3px}
 #gameScreen .actions button {min-height:30px;font-size:.66rem;padding:4px 6px}
 #gameScreen .status {font-size:.65rem;line-height:1.15;white-space:normal;overflow-wrap:anywhere}
}
