/* V33 illustrated friend-room lobby. Loaded last to isolate it from legacy lobby rules. */
body.view-lobby > #lobby-screen {
  width: 100vw !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 0 !important;
  padding: clamp(10px,1.5vw,22px) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
  background:
    linear-gradient(135deg,rgba(3,35,119,.82),rgba(9,112,199,.55)),
    url('../assets/mode-friends-v29.png') center / cover no-repeat !important;
}

body.view-lobby #roomLobbyPanel {
  width: min(1380px,100%) !important;
  height: min(860px,calc(100dvh - clamp(20px,3vw,44px))) !important;
  max-height: none !important;
  padding: clamp(14px,1.4vw,22px) !important;
  display: grid !important;
  grid-template-rows: auto minmax(0,1fr) !important;
  gap: clamp(12px,1.2vw,18px) !important;
  overflow: hidden !important;
  border: 2px solid rgba(121,235,255,.9) !important;
  border-radius: clamp(24px,2vw,34px) !important;
  color: #fff !important;
  background: linear-gradient(145deg,rgba(5,42,135,.9),rgba(8,94,190,.84)) !important;
  box-shadow: 0 18px 0 rgba(2,31,103,.38),0 35px 80px rgba(0,20,75,.42),inset 0 1px 0 rgba(255,255,255,.45) !important;
  backdrop-filter: blur(14px) saturate(1.12) !important;
}

body.view-lobby #roomLobbyPanel .lobby-header {
  min-height: 84px !important;
  padding: 12px 16px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 18px !important;
  border: 1px solid rgba(130,235,255,.48) !important;
  border-radius: 21px !important;
  background: linear-gradient(90deg,rgba(5,35,117,.92),rgba(65,39,168,.84)) !important;
  box-shadow: 0 7px 0 rgba(2,28,94,.4),inset 0 1px 0 rgba(255,255,255,.3) !important;
}

body.view-lobby .lobby-header .panel-kicker {
  display: inline-flex !important;
  padding: 5px 10px !important;
  color: #ffe45a !important;
  font-size: 11px !important;
  font-weight: 900 !important;
  letter-spacing: .08em !important;
  border-radius: 99px !important;
  background: rgba(35,17,111,.72) !important;
}

body.view-lobby #lobby-screen .lobby-header h1 {
  margin: 3px 0 0 !important;
  color: #fff !important;
  font-size: clamp(28px,2.4vw,42px) !important;
  line-height: 1.05 !important;
  text-shadow: 0 4px 0 rgba(3,22,84,.6),0 8px 18px rgba(0,0,0,.28) !important;
}

body.view-lobby .lobby-header p { display: none !important; }
body.view-lobby .lobby-header-actions { display: flex !important; gap: 9px !important; }
body.view-lobby .lobby-header-actions button {
  min-height: 46px !important;
  padding: 0 16px !important;
  border: 1px solid rgba(255,255,255,.55) !important;
  border-radius: 14px !important;
  color: #fff !important;
  font-size: 13px !important;
  font-weight: 900 !important;
  background: rgba(255,255,255,.14) !important;
  box-shadow: 0 4px 0 rgba(3,23,87,.42) !important;
}
body.view-lobby #lobbySettingsBtn { width: 46px !important; padding: 0 !important; font-size: 20px !important; }

body.view-lobby .lobby-content-grid {
  min-height: 0 !important;
  display: grid !important;
  grid-template-columns: minmax(330px,.78fr) minmax(0,1.35fr) !important;
  gap: clamp(12px,1.2vw,18px) !important;
}

body.view-lobby .lobby-showcase {
  position: relative !important;
  min-height: 0 !important;
  padding: clamp(20px,2vw,30px) !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-end !important;
  overflow: hidden !important;
  border: 2px solid rgba(255,255,255,.78) !important;
  border-radius: 25px !important;
  color: #fff !important;
  background:
    linear-gradient(180deg,rgba(3,42,125,.02) 20%,rgba(3,39,123,.9) 76%),
    url('../assets/mode-friends-v29.png') 42% center / cover no-repeat !important;
  box-shadow: 0 9px 0 rgba(2,35,104,.48),0 18px 36px rgba(1,25,85,.3) !important;
}

body.view-lobby .lobby-crown {
  position: absolute !important;
  left: 20px !important;
  top: 20px !important;
  width: 66px !important;
  height: 66px !important;
  display: grid !important;
  place-items: center !important;
  border: 2px solid #fff !important;
  border-radius: 20px !important;
  color: #fff !important;
  font-size: 23px !important;
  font-weight: 900 !important;
  background: linear-gradient(145deg,#06b6d4,#2563eb) !important;
  box-shadow: 0 6px 0 #074a9e,0 12px 24px rgba(0,0,0,.25) !important;
}

body.view-lobby .lobby-showcase-kicker {
  width: max-content !important;
  padding: 6px 10px !important;
  color: #ffe65b !important;
  border-radius: 99px !important;
  background: rgba(29,20,112,.78) !important;
  font-size: 10px !important;
  font-weight: 900 !important;
}

body.view-lobby .lobby-showcase h2 {
  margin: 7px 0 6px !important;
  color: #fff !important;
  font-size: clamp(30px,3vw,48px) !important;
  line-height: 1.02 !important;
  text-shadow: 0 4px 0 rgba(2,24,87,.65),0 9px 20px rgba(0,0,0,.34) !important;
}

body.view-lobby .lobby-showcase > p { display: none !important; }
body.view-lobby .lobby-step-list { margin-top: 10px !important; display: grid !important; gap: 7px !important; }
body.view-lobby .lobby-step-list > div {
  min-height: 40px !important;
  padding: 6px 10px !important;
  display: flex !important;
  align-items: center !important;
  gap: 9px !important;
  border: 1px solid rgba(255,255,255,.3) !important;
  border-radius: 12px !important;
  background: rgba(255,255,255,.13) !important;
  backdrop-filter: blur(6px) !important;
}
body.view-lobby .lobby-step-list b { width: 27px !important; height: 27px !important; display: grid !important; place-items: center !important; border-radius: 9px !important; color: #093074 !important; background: #68efff !important; font-size: 13px !important; }
body.view-lobby .lobby-step-list span { color: #fff !important; font-size: 12px !important; font-weight: 800 !important; }

body.view-lobby .lobby-form-panel {
  min-height: 0 !important;
  padding: clamp(16px,1.7vw,25px) !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  border: 2px solid rgba(130,235,255,.82) !important;
  border-radius: 25px !important;
  color: #fff !important;
  background:
    radial-gradient(circle at 95% 3%,rgba(217,70,239,.3),transparent 28%),
    linear-gradient(145deg,rgba(19,49,145,.96),rgba(42,36,151,.94)) !important;
  box-shadow: 0 9px 0 rgba(2,31,103,.45),0 18px 38px rgba(1,24,84,.3),inset 0 1px 0 rgba(255,255,255,.28) !important;
}

body.view-lobby .lobby-form-title { display: flex !important; align-items: center !important; gap: 11px !important; margin-bottom: 12px !important; }
body.view-lobby .lobby-form-title > span { width: 50px !important; height: 50px !important; display: grid !important; place-items: center !important; border: 2px solid #fff !important; border-radius: 15px !important; color: #fff !important; background: linear-gradient(145deg,#06b6d4,#2563eb) !important; box-shadow: 0 5px 0 #073c91 !important; }
body.view-lobby .lobby-form-title strong { color: #fff !important; font-size: clamp(20px,1.6vw,27px) !important; }
body.view-lobby .lobby-form-title small { color: #cceeff !important; font-size: 11px !important; }

body.view-lobby .room-action-card {
  padding: clamp(13px,1.25vw,18px) !important;
  border: 1px solid rgba(255,255,255,.45) !important;
  border-radius: 19px !important;
  background: linear-gradient(135deg,rgba(255,255,255,.17),rgba(112,219,255,.08)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18) !important;
}
body.view-lobby .room-action-heading { display: flex !important; align-items: center !important; gap: 10px !important; margin-bottom: 10px !important; }
body.view-lobby .room-action-icon { width: 39px !important; height: 39px !important; display: grid !important; place-items: center !important; border-radius: 12px !important; color: #fff !important; font-size: 20px !important; font-weight: 900 !important; background: linear-gradient(145deg,#8b5cf6,#d946ef) !important; box-shadow: 0 4px 0 #5420a4 !important; }
body.view-lobby .room-action-heading strong { color: #fff !important; font-size: 17px !important; }
body.view-lobby .room-action-heading small { color: #cceeff !important; font-size: 10px !important; }
body.view-lobby .lobby-field-row { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 9px !important; }
body.view-lobby .input-group { margin: 0 !important; }
body.view-lobby .input-group label { margin-bottom: 5px !important; color: #fff !important; font-size: 11px !important; font-weight: 900 !important; }
body.view-lobby input,body.view-lobby select { min-height: 43px !important; padding: 0 13px !important; border: 2px solid rgba(147,232,255,.8) !important; border-radius: 13px !important; color: #10275f !important; font-size: 13px !important; font-weight: 800 !important; background: rgba(255,255,255,.96) !important; }
body.view-lobby .room-wide-action,body.view-lobby #joinRoomBtn { min-height: 45px !important; border: 1px solid rgba(255,255,255,.68) !important; border-radius: 13px !important; color: #fff !important; font-size: 13px !important; font-weight: 900 !important; background: linear-gradient(90deg,#087bee,#315be9) !important; box-shadow: 0 5px 0 #073a9d !important; }
body.view-lobby .room-divider { height: 20px !important; display: grid !important; place-items: center !important; }
body.view-lobby .room-divider span { padding: 2px 10px !important; color: #ffe65b !important; font-size: 9px !important; font-weight: 900 !important; border-radius: 99px !important; background: #25167c !important; }
body.view-lobby .room-code-row { display: grid !important; grid-template-columns: minmax(0,1fr) 140px !important; align-items: end !important; gap: 9px !important; }
body.view-lobby #roomCodeHelp { color: #cceeff !important; font-size: 9px !important; }

body.view-lobby #roomInfo {
  min-height: 0 !important;
  margin-top: 12px !important;
  padding: 15px !important;
  overflow: auto !important;
  border: 2px solid #ffe45a !important;
  border-radius: 18px !important;
  color: #fff !important;
  background: linear-gradient(145deg,rgba(66,33,158,.94),rgba(21,62,164,.94)) !important;
  box-shadow: 0 6px 0 #25106f !important;
}
body.view-lobby #roomInfo h3 { color: #fff !important; font-size: 20px !important; }
body.view-lobby #roomCodeDisplay { padding: 6px 11px !important; border-radius: 10px !important; color: #271155 !important; background: #ffe65b !important; letter-spacing: .16em !important; }
body.view-lobby #startGameBtn { background: linear-gradient(90deg,#22c55e,#0ea5a6) !important; }

/* Preserve the desktop lobby composition on phones using the same no-scroll scale strategy. */
body.lobby-scaled.view-lobby > #lobby-screen { padding: 0 !important; }
body.lobby-scaled.view-lobby #roomLobbyPanel {
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  width: 1120px !important;
  height: 720px !important;
  padding: 16px !important;
  transform: translate(-50%,-50%) scale(var(--lobby-scale,1)) !important;
  transform-origin: center !important;
}
body.lobby-scaled.view-lobby .lobby-content-grid { grid-template-columns: 360px minmax(0,1fr) !important; }

/* V34: compact waiting-room roster; never allow player art to stretch. */
body.view-lobby #fullscreenBtn,
body.view-lobby #installPwaBtn {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

body.view-lobby #roomInfo {
  flex: 1 1 auto !important;
  width: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  overflow: hidden !important;
}

body.view-lobby #playersList {
  min-height: 0 !important;
  margin: 10px 0 12px !important;
  display: grid !important;
  grid-template-columns: repeat(2,minmax(0,1fr)) !important;
  gap: 9px !important;
  overflow: hidden !important;
}

body.view-lobby #playersList .difficulty-display {
  grid-column: 1 / -1 !important;
  min-height: 40px !important;
  padding: 8px 11px !important;
  border: 1px solid rgba(132,232,255,.65) !important;
  border-radius: 12px !important;
  color: #dffaff !important;
  font-size: 11px !important;
  background: rgba(5,30,107,.45) !important;
}

body.view-lobby #playersList .player-item {
  min-width: 0 !important;
  min-height: 66px !important;
  padding: 8px 11px !important;
  display: grid !important;
  grid-template-columns: 48px minmax(0,1fr) auto !important;
  align-items: center !important;
  gap: 10px !important;
  overflow: hidden !important;
  border: 1px solid rgba(255,255,255,.44) !important;
  border-radius: 15px !important;
  color: #fff !important;
  font-size: 13px !important;
  font-weight: 900 !important;
  background: linear-gradient(135deg,rgba(255,255,255,.18),rgba(103,218,255,.1)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18) !important;
}

body.view-lobby #playersList .player-item.host {
  border-color: #ffe65a !important;
  background: linear-gradient(135deg,rgba(255,218,69,.22),rgba(130,68,223,.2)) !important;
}

body.view-lobby #playersList .player-avatar {
  width: 48px !important;
  height: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  min-height: 48px !important;
  max-height: 48px !important;
  padding: 3px !important;
  display: block !important;
  object-fit: contain !important;
  border: 2px solid #fff !important;
  border-radius: 13px !important;
  background: #fff !important;
  box-shadow: 0 4px 0 rgba(4,25,88,.4) !important;
}

body.view-lobby #playersList .player-name {
  min-width: 0 !important;
  overflow: hidden !important;
  color: #fff !important;
  font-size: 14px !important;
  font-weight: 900 !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

body.view-lobby #playersList .host-badge {
  padding: 5px 7px !important;
  border-radius: 99px !important;
  color: #4d2800 !important;
  font-size: 8px !important;
  font-weight: 900 !important;
  background: #ffe65a !important;
}

body.view-lobby #roomInfo #startGameBtn,
body.view-lobby #roomInfo #leaveRoomBtn {
  min-height: 43px !important;
  padding: 0 16px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
  font-weight: 900 !important;
}

/* Once a room exists, replace the create/join form with the roster instead of stacking it below. */
body.view-lobby .lobby-form-panel:has(#roomInfo[style*="display: block"]) .lobby-form-title,
body.view-lobby .lobby-form-panel:has(#roomInfo[style*="display: block"]) .room-action-card,
body.view-lobby .lobby-form-panel:has(#roomInfo[style*="display: block"]) .room-divider {
  display: none !important;
}

body.view-lobby .lobby-form-panel:has(#roomInfo[style*="display: block"]) #roomInfo {
  height: 100% !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
}

body.view-lobby .lobby-form-panel:has(#roomInfo[style*="display: block"]) #playersList {
  flex: 1 1 auto !important;
  align-content: start !important;
}

body.lobby-scaled.view-lobby #playersList .player-avatar {
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  max-width: 44px !important;
  min-height: 44px !important;
  max-height: 44px !important;
}

/* V35: illustrated parent panel and transform-independent mobile centering. */
body.view-lobby #roomLobbyPanel {
  background:
    linear-gradient(145deg,rgba(4,37,126,.86),rgba(20,58,157,.72),rgba(80,39,157,.68)),
    url('../assets/mode-friends-v29.png') center / cover no-repeat !important;
}

body.view-lobby #roomLobbyPanel::before {
  content: '' !important;
  position: absolute !important;
  z-index: -1 !important;
  inset: 0 !important;
  border-radius: inherit !important;
  background:
    radial-gradient(circle at 12% 12%,rgba(98,235,255,.3),transparent 25%),
    radial-gradient(circle at 88% 86%,rgba(243,104,255,.24),transparent 28%) !important;
  pointer-events: none !important;
}

body.lobby-scaled.view-lobby #roomLobbyPanel {
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  width: 1120px !important;
  height: 720px !important;
  min-width: 1120px !important;
  max-width: 1120px !important;
  min-height: 720px !important;
  max-height: 720px !important;
  margin: 0 !important;
  transform: none !important;
  translate: -50% -50% !important;
  scale: var(--lobby-scale,1) !important;
  transform-origin: center !important;
  overflow: hidden !important;
}

body.lobby-scaled.view-lobby > #lobby-screen {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  height: 100dvh !important;
  min-height: 0 !important;
  padding: 0 !important;
  overflow: hidden !important;
}

@supports not (scale: 1) {
  body.lobby-scaled.view-lobby #roomLobbyPanel {
    transform: translate(-50%,-50%) scale(var(--lobby-scale,1)) !important;
  }
}

/* V36: pixel-positioned mobile scaling and visually separate outer/inner scenes. */
body.view-lobby > #lobby-screen {
  background:
    linear-gradient(135deg,rgba(25,11,92,.8),rgba(96,31,111,.58),rgba(194,72,38,.42)),
    url('../assets/mode-random-v29.png') center / cover no-repeat !important;
}

body.view-lobby #roomLobbyPanel {
  position: relative !important;
  background:
    linear-gradient(145deg,rgba(4,38,129,.82),rgba(20,69,168,.65),rgba(70,39,158,.62)),
    url('../assets/mode-friends-v29.png') center / cover no-repeat !important;
}

body.lobby-scaled.view-lobby #roomLobbyPanel {
  left: var(--lobby-left,0px) !important;
  top: var(--lobby-top,0px) !important;
  translate: none !important;
  scale: none !important;
  transform: scale(var(--lobby-scale,1)) !important;
  transform-origin: left top !important;
}

body.view-lobby .lobby-crown {
  left: 16px !important;
  top: 13px !important;
  width: 50px !important;
  height: 50px !important;
  border-radius: 15px !important;
  font-size: 18px !important;
}

body.view-lobby .lobby-showcase-kicker {
  margin-left: 60px !important;
  color: #fff36a !important;
  text-shadow: 0 2px 4px rgba(0,0,0,.68) !important;
}

body.view-lobby .lobby-showcase h2 {
  font-size: clamp(28px,2.55vw,40px) !important;
  line-height: 1.04 !important;
}

body.view-lobby #roomInfo h3 {
  color: #102d70 !important;
  font-size: 21px !important;
  font-weight: 900 !important;
  text-shadow: none !important;
}

body.view-lobby #roomInfo .difficulty-display {
  color: #fff !important;
  background: linear-gradient(90deg,#3159a8,#5844b0) !important;
}

body.lobby-scaled.view-lobby .lobby-header h1 { font-size: 38px !important; }
body.lobby-scaled.view-lobby .lobby-step-list span { font-size: 13px !important; }
body.lobby-scaled.view-lobby #playersList .player-name { font-size: 14px !important; }

/* V37: orientation-aware stretch canvases instead of one fixed desktop ratio. */
body.lobby-scaled.view-lobby #roomLobbyPanel {
  width: var(--lobby-canvas-width,1120px) !important;
  height: var(--lobby-canvas-height,600px) !important;
  min-width: var(--lobby-canvas-width,1120px) !important;
  max-width: var(--lobby-canvas-width,1120px) !important;
  min-height: var(--lobby-canvas-height,600px) !important;
  max-height: var(--lobby-canvas-height,600px) !important;
}

@media (orientation: landscape) and (max-height: 560px) {
  body.lobby-scaled.view-lobby #roomLobbyPanel {
    padding: 12px !important;
    grid-template-rows: 70px minmax(0,1fr) !important;
    gap: 10px !important;
  }
  body.lobby-scaled.view-lobby #roomLobbyPanel .lobby-header { min-height: 70px !important; padding: 8px 13px !important; }
  body.lobby-scaled.view-lobby .lobby-header h1 { font-size: 32px !important; }
  body.lobby-scaled.view-lobby .lobby-content-grid { grid-template-columns: 330px minmax(0,1fr) !important; gap: 10px !important; }
  body.lobby-scaled.view-lobby .lobby-showcase { padding: 16px !important; border-radius: 20px !important; }
  body.lobby-scaled.view-lobby .lobby-showcase h2 { font-size: 31px !important; }
  body.lobby-scaled.view-lobby .lobby-step-list { gap: 5px !important; }
  body.lobby-scaled.view-lobby .lobby-step-list > div { min-height: 34px !important; padding: 4px 8px !important; }
  body.lobby-scaled.view-lobby .lobby-form-panel { padding: 14px !important; border-radius: 20px !important; }
  body.lobby-scaled.view-lobby .room-action-card { padding: 10px 12px !important; }
  body.lobby-scaled.view-lobby .room-action-heading { margin-bottom: 7px !important; }
  body.lobby-scaled.view-lobby .room-action-heading small { display: none !important; }
  body.lobby-scaled.view-lobby input,
  body.lobby-scaled.view-lobby select { min-height: 36px !important; }
  body.lobby-scaled.view-lobby .room-wide-action,
  body.lobby-scaled.view-lobby #joinRoomBtn { min-height: 38px !important; }
  body.lobby-scaled.view-lobby #roomInfo { padding: 12px !important; }
  body.lobby-scaled.view-lobby #playersList { gap: 7px !important; }
  body.lobby-scaled.view-lobby #playersList .player-item { min-height: 58px !important; }
}

@media (orientation: portrait) and (max-width: 700px) {
  body.lobby-scaled.view-lobby #roomLobbyPanel {
    padding: 16px !important;
    grid-template-rows: 92px minmax(0,1fr) !important;
    gap: 14px !important;
  }
  body.lobby-scaled.view-lobby #roomLobbyPanel .lobby-header { min-height: 92px !important; padding: 12px 16px !important; }
  body.lobby-scaled.view-lobby .lobby-header h1 { font-size: 35px !important; }
  body.lobby-scaled.view-lobby .lobby-header-actions button { min-height: 45px !important; font-size: 12px !important; }
  body.lobby-scaled.view-lobby .lobby-content-grid {
    grid-template-columns: 1fr !important;
    grid-template-rows: 390px minmax(0,1fr) !important;
    gap: 14px !important;
  }
  body.lobby-scaled.view-lobby .lobby-showcase { padding: 20px !important; background-position: center 42% !important; }
  body.lobby-scaled.view-lobby .lobby-showcase h2 { max-width: 470px !important; font-size: 39px !important; }
  body.lobby-scaled.view-lobby .lobby-step-list { grid-template-columns: repeat(3,minmax(0,1fr)) !important; gap: 7px !important; }
  body.lobby-scaled.view-lobby .lobby-step-list > div { min-width: 0 !important; min-height: 60px !important; padding: 7px !important; }
  body.lobby-scaled.view-lobby .lobby-step-list span { font-size: 10px !important; line-height: 1.3 !important; }
  body.lobby-scaled.view-lobby .lobby-form-panel { padding: 18px !important; }
  body.lobby-scaled.view-lobby .lobby-form-title strong { font-size: 25px !important; }
  body.lobby-scaled.view-lobby .room-action-card { padding: 14px !important; }
  body.lobby-scaled.view-lobby .room-action-heading strong { font-size: 18px !important; }
  body.lobby-scaled.view-lobby .room-code-row { grid-template-columns: minmax(0,1fr) 150px !important; }
  body.lobby-scaled.view-lobby #playersList { grid-template-columns: 1fr 1fr !important; }
  body.lobby-scaled.view-lobby #playersList .player-item { min-height: 70px !important; }
  body.lobby-scaled.view-lobby #playersList .player-avatar { width: 50px !important; height: 50px !important; min-width: 50px !important; max-width: 50px !important; min-height: 50px !important; max-height: 50px !important; }
}
