/* v4.6.20 — Player Hub responsive foundation.
   Loaded after all older Hub density files so desktop, tablet, and phone use
   one predictable viewport-sized shell without CSS zoom or transform scaling. */

.player-hub {
  --dod-hub-vw: var(--dod-hub-viewport-width, 100vw);
  --dod-hub-vh: var(--dod-hub-viewport-height, 100dvh);
  box-sizing: border-box;
  width: var(--dod-hub-vw);
  height: var(--dod-hub-vh);
  max-width: 100vw;
  max-height: 100dvh;
  overflow: hidden !important;
  padding: clamp(10px, 1.6vw, 24px) !important;
  align-items: center !important;
  justify-content: center !important;
  transform: none !important;
  zoom: 1 !important;
  isolation: isolate;
}

.player-hub-card {
  box-sizing: border-box;
  width: min(1080px, calc(var(--dod-hub-vw) - clamp(20px, 3.2vw, 48px))) !important;
  height: min(840px, calc(var(--dod-hub-vh) - clamp(20px, 3.2vw, 48px))) !important;
  max-width: calc(100vw - 20px) !important;
  max-height: calc(100dvh - 20px) !important;
  min-width: 0 !important;
  min-height: 0 !important;
  grid-template-rows: auto auto minmax(0, 1fr) !important;
  overflow: hidden !important;
  transform: none !important;
  transform-origin: center !important;
  zoom: 1 !important;
  contain: layout paint;
}

.player-hub-header,
.player-hub-navigation,
.player-hub-tabs,
.player-hub-scroll,
.player-hub-panel {
  box-sizing: border-box;
  min-width: 0 !important;
  max-width: 100% !important;
}

.player-hub-header {
  padding: clamp(10px, 1.3vw, 15px) clamp(12px, 1.5vw, 18px) !important;
  gap: 10px !important;
}

.player-hub-header > div:first-child {
  min-width: 0;
}

.player-hub-kicker {
  font-size: clamp(8px, .7vw, 10px) !important;
  line-height: 1.2 !important;
  letter-spacing: .12em !important;
}

.player-hub-header h2 {
  font-size: clamp(15px, 1.35vw, 19px) !important;
  line-height: 1.12 !important;
  letter-spacing: .13em !important;
  overflow-wrap: anywhere;
}

.player-hub-header-actions {
  flex: 0 1 auto;
  min-width: 0 !important;
  max-width: 48%;
}

.player-hub-diamond-wallet {
  min-width: 0 !important;
  max-width: min(220px, 28vw) !important;
}

.player-hub-close {
  flex: 0 0 38px;
  width: 38px !important;
  height: 38px !important;
}

.player-hub-navigation {
  overflow: hidden !important;
}

.player-hub-tabs-classic,
.player-hub-tabs {
  min-height: 44px !important;
  gap: 6px !important;
  padding: 7px 34px 8px 10px !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scroll-padding-inline: 10px;
}

.player-hub-tabs-classic .player-hub-tab,
.player-hub-tab {
  min-height: 31px !important;
  max-width: 190px !important;
  padding: 7px 10px !important;
  font-size: clamp(9px, .72vw, 11px) !important;
  line-height: 1 !important;
  letter-spacing: .04em !important;
}

.player-hub-scroll {
  min-height: 0 !important;
  width: 100% !important;
  padding: clamp(11px, 1.5vw, 18px) !important;
  padding-bottom: max(clamp(18px, 2vw, 28px), env(safe-area-inset-bottom)) !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  overscroll-behavior: contain !important;
  touch-action: pan-y !important;
  scrollbar-gutter: stable;
  -webkit-overflow-scrolling: touch;
}

.player-hub-panel,
.player-hub-panel > *,
.player-hub-panel article,
.player-hub-panel section,
.player-hub-panel form,
.player-hub-panel label,
.player-hub-panel div {
  min-width: 0;
  max-width: 100%;
}

.player-hub-panel img,
.player-hub-panel svg,
.player-hub-panel canvas,
.player-hub-panel video,
.player-hub-panel iframe {
  max-width: 100%;
}

.player-hub-panel h3,
.player-hub-panel .hub-section-heading h3 {
  margin: 0 0 6px !important;
  font-size: clamp(14px, 1.15vw, 17px) !important;
  line-height: 1.2 !important;
  letter-spacing: .1em !important;
  overflow-wrap: anywhere;
}

.player-hub-panel > p,
.player-hub-panel .hub-section-heading p {
  margin: 0 0 12px !important;
  font-size: clamp(11px, .85vw, 13px) !important;
  line-height: 1.48 !important;
  letter-spacing: .015em !important;
  overflow-wrap: anywhere;
}

.player-hub-panel h4,
.player-hub-panel .character-section-title,
.player-hub-panel .mastery-section-heading h4 {
  font-size: clamp(12px, .95vw, 14px) !important;
  line-height: 1.28 !important;
  overflow-wrap: anywhere;
}

.player-hub-panel p,
.player-hub-panel small,
.player-hub-panel span,
.player-hub-panel label,
.player-hub-panel button,
.player-hub-panel a,
.player-hub-panel strong,
.player-hub-panel b {
  overflow-wrap: anywhere;
}

.player-hub input,
.player-hub select,
.player-hub textarea,
.player-hub button {
  max-width: 100%;
}

/* Shared grids are allowed to contract instead of forcing the modal wider. */
.player-hub :is(
  .character-avatar-grid,
  .mastery-character-grid,
  .powerup-upgrade-grid,
  .wearable-catalog-grid,
  .diamond-package-grid,
  .achievement-grid,
  .hub-stats-grid,
  .progression-difficulty-grid,
  .progression-reward-grid,
  .progression-powerup-grid,
  .inventory-grid,
  .market-grid,
  .locker-grid
) {
  min-width: 0 !important;
  max-width: 100% !important;
}

.player-hub .character-avatar-card,
.player-hub .mastery-character-card,
.player-hub .powerup-upgrade-card,
.player-hub .wearable-item-card,
.player-hub .achievement-card,
.player-hub .hub-stat-card,
.player-hub .diamond-package-card {
  min-width: 0 !important;
  max-width: 100% !important;
}

.player-hub .wearable-look-card,
.player-hub .wearable-toolbar,
.player-hub .prestige-card {
  min-width: 0 !important;
  max-width: 100% !important;
}

body.player-hub-open {
  overflow: hidden !important;
  overscroll-behavior: none;
}

/* Desktop: wider, calmer panel with four compact roster columns. */
@media (min-width: 1181px) {
  .player-hub-card {
    width: min(1080px, calc(var(--dod-hub-vw) - 48px)) !important;
    height: min(820px, calc(var(--dod-hub-vh) - 48px)) !important;
  }

  .player-hub .character-avatar-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }

  .player-hub .character-avatar-card {
    min-height: 124px !important;
    padding: 9px !important;
    gap: 8px !important;
  }

  .player-hub .character-avatar-preview,
  .player-hub .character-avatar-preview img {
    width: 72px !important;
    height: 106px !important;
  }

  .player-hub :is(.mastery-character-grid,.powerup-upgrade-grid,.wearable-catalog-grid,.diamond-package-grid,.achievement-grid,.hub-stats-grid) {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }

  .player-hub .wearable-look-card,
  .player-hub .wearable-toolbar {
    grid-template-columns: minmax(190px, .65fr) minmax(0, 1fr) !important;
  }
}

/* Tablet and smaller desktop windows. */
@media (min-width: 701px) and (max-width: 1180px) {
  .player-hub {
    padding: 10px !important;
  }

  .player-hub-card {
    width: calc(var(--dod-hub-vw) - 20px) !important;
    height: calc(var(--dod-hub-vh) - 20px) !important;
    max-width: calc(100vw - 20px) !important;
    max-height: calc(100dvh - 20px) !important;
    border-radius: 15px !important;
  }

  .player-hub .character-avatar-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
  }

  .player-hub .character-avatar-card {
    min-height: 116px !important;
    padding: 8px !important;
    gap: 7px !important;
  }

  .player-hub .character-avatar-preview,
  .player-hub .character-avatar-preview img {
    width: 66px !important;
    height: 98px !important;
  }

  .player-hub :is(.mastery-character-grid,.powerup-upgrade-grid,.wearable-catalog-grid,.diamond-package-grid,.achievement-grid,.hub-stats-grid) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 9px !important;
  }

  .player-hub .progression-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 7px !important;
  }

  .player-hub .progression-summary article {
    min-height: 78px !important;
    padding: 9px !important;
  }

  .player-hub .progression-summary strong {
    font-size: 20px !important;
  }

  .player-hub .wearable-look-card,
  .player-hub .wearable-toolbar {
    grid-template-columns: minmax(180px, .7fr) minmax(0, 1fr) !important;
    gap: 11px !important;
  }
}

@media (min-width: 701px) and (max-width: 860px) {
  .player-hub .character-avatar-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .player-hub .wearable-look-card,
  .player-hub .wearable-toolbar,
  .player-hub .prestige-card {
    grid-template-columns: 1fr !important;
  }
}

/* Phone: true fullscreen shell using the visual viewport height. */
@media (max-width: 700px) {
  .player-hub {
    width: 100vw !important;
    height: var(--dod-hub-vh) !important;
    max-width: 100vw !important;
    max-height: var(--dod-hub-vh) !important;
    padding: 0 !important;
    align-items: stretch !important;
  }

  .player-hub-card {
    width: 100vw !important;
    height: var(--dod-hub-vh) !important;
    max-width: 100vw !important;
    max-height: var(--dod-hub-vh) !important;
    border-radius: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
  }

  .player-hub-header {
    padding-top: max(9px, env(safe-area-inset-top)) !important;
    padding-inline: 10px !important;
    padding-bottom: 8px !important;
  }

  .player-hub-header-actions {
    max-width: 54%;
    gap: 5px !important;
  }

  .player-hub-diamond-wallet {
    max-width: 138px !important;
    padding: 5px 7px !important;
  }

  .player-hub-close {
    flex-basis: 36px;
    width: 36px !important;
    height: 36px !important;
  }

  .player-hub-tabs-classic,
  .player-hub-tabs {
    min-height: 42px !important;
    padding: 6px 28px 7px 8px !important;
    gap: 5px !important;
  }

  .player-hub-tabs-classic .player-hub-tab,
  .player-hub-tab {
    min-height: 30px !important;
    max-width: 150px !important;
    padding: 6px 9px !important;
    font-size: 9px !important;
  }

  .player-hub-scroll {
    padding: 10px 10px max(18px, env(safe-area-inset-bottom)) !important;
    scrollbar-gutter: auto;
  }

  .player-hub input,
  .player-hub select,
  .player-hub textarea {
    font-size: 16px !important;
  }

  .player-hub .character-avatar-grid,
  .player-hub :is(.mastery-character-grid,.powerup-upgrade-grid,.wearable-catalog-grid,.diamond-package-grid,.achievement-grid,.hub-stats-grid) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 7px !important;
  }

  .player-hub .character-avatar-card {
    min-height: 104px !important;
    padding: 7px !important;
    gap: 6px !important;
  }

  .player-hub .character-avatar-preview,
  .player-hub .character-avatar-preview img {
    width: 56px !important;
    height: 84px !important;
  }

  .player-hub .wearable-look-card,
  .player-hub .wearable-toolbar,
  .player-hub .prestige-card {
    grid-template-columns: 1fr !important;
  }

  .player-hub .wearable-avatar-silhouette {
    width: min(145px, 52vw) !important;
    height: min(205px, 72vw) !important;
  }
}

@media (max-width: 430px) {
  .player-hub .character-avatar-grid,
  .player-hub :is(.mastery-character-grid,.powerup-upgrade-grid,.wearable-catalog-grid,.diamond-package-grid,.achievement-grid,.hub-stats-grid) {
    grid-template-columns: 1fr !important;
  }

  .player-hub .progression-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
}

/* Short landscape windows keep both bars compact and reserve space for content. */
@media (min-width: 701px) and (max-height: 700px) {
  .player-hub {
    padding: 7px !important;
  }

  .player-hub-card {
    width: calc(var(--dod-hub-vw) - 14px) !important;
    height: calc(var(--dod-hub-vh) - 14px) !important;
    max-width: calc(100vw - 14px) !important;
    max-height: calc(100dvh - 14px) !important;
  }

  .player-hub-header {
    padding-block: 8px !important;
  }

  .player-hub-tabs-classic,
  .player-hub-tabs {
    min-height: 38px !important;
    padding-block: 4px !important;
  }

  .player-hub-tabs-classic .player-hub-tab,
  .player-hub-tab {
    min-height: 28px !important;
    padding-block: 5px !important;
  }

  .player-hub-scroll {
    padding-top: 9px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .player-hub-card,
  .player-hub-panel,
  .player-hub-tab {
    animation: none !important;
    transition: none !important;
  }
}


/* v4.6.21.1 — desktop Player Hub tab-strip scrolling repair. */
.player-hub-navigation {
  min-width: 0 !important;
}
.player-hub-tabs-classic,
.player-hub-tabs {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  scroll-behavior: smooth;
  scroll-snap-type: x proximity;
  overscroll-behavior-x: contain !important;
  scrollbar-width: none !important;
  -ms-overflow-style: none;
  cursor: grab;
}
.player-hub-tabs-classic:active,
.player-hub-tabs:active,
.player-hub-tabs-classic.is-dragging,
.player-hub-tabs.is-dragging {
  cursor: grabbing;
  user-select: none;
}
.player-hub-tabs-classic::-webkit-scrollbar,
.player-hub-tabs::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none !important;
}
.player-hub-tabs-classic::after,
.player-hub-tabs::after {
  content: "";
  flex: 0 0 28px;
  width: 28px;
}
@media (pointer: fine) {
  .player-hub-tabs-classic,
  .player-hub-tabs {
    touch-action: pan-x;
  }
}

/* v4.6.21.2 — mobile Hub gesture isolation. */
.player-hub,
.player-hub-card,
.player-hub-navigation,
.player-hub-tabs-classic,
.player-hub-tabs,
.player-hub-tab {
  -webkit-tap-highlight-color: transparent;
}
.player-hub-tab {
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  touch-action: manipulation;
}
@media (pointer: coarse) {
  .player-hub-tabs-classic,
  .player-hub-tabs {
    touch-action: pan-x !important;
    overscroll-behavior-x: contain !important;
  }
  .player-hub-scroll {
    touch-action: pan-y !important;
  }
}
