:root {
  --bg: #0f172a;
  --panel: #111827;
  --panel-soft: #1f2937;
  --text: #e5e7eb;
  --muted: #9ca3af;
  --border: rgba(255, 255, 255, 0.1);
  --primary: #22c55e;
  --primary-dark: #16a34a;
  --danger: #ef4444;
  --warning: #f59e0b;
  --shadow: 0 18px 50px rgba(0, 0, 0, 0.28);
  --radius: 18px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  color: var(--text);
  background:
    radial-gradient(circle at top left, rgba(34, 197, 94, 0.22), transparent 34rem),
    radial-gradient(circle at 80% 10%, rgba(59, 130, 246, 0.15), transparent 28rem),
    var(--bg);
  min-height: 100vh;
}

.container {
  width: min(1220px, calc(100% - 32px));
  margin: 0 auto;
}

.app-header {
  padding: 44px 0 28px;
  border-bottom: 1px solid var(--border);
}

.header-grid {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: center;
}

h1,
h2,
p {
  margin-top: 0;
}

h1 {
  font-size: clamp(2rem, 5vw, 4rem);
  line-height: 0.98;
  margin-bottom: 12px;
  letter-spacing: -0.05em;
}

h2 {
  margin-bottom: 6px;
  font-size: 1.18rem;
}

.subtitle {
  margin-bottom: 0;
  color: var(--muted);
  max-width: 760px;
}

.eyebrow {
  margin-bottom: 8px;
  color: var(--primary);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-size: 0.78rem;
}

.header-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.app-main {
  padding: 28px 0 18px;
}

.cards-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}

.metric-card,
.panel {
  background: rgba(17, 24, 39, 0.82);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  backdrop-filter: blur(12px);
}

.metric-card {
  padding: 18px;
}

.metric-label {
  display: block;
  color: var(--muted);
  font-size: 0.88rem;
  margin-bottom: 8px;
}

.metric-card strong {
  display: block;
  font-size: 1.9rem;
  letter-spacing: -0.03em;
}

.metric-card strong.danger {
  color: var(--danger);
}

.panel {
  padding: 18px;
  margin-bottom: 18px;
}

.admin-panel {
  display: grid;
  gap: 18px;
}

.panel-header {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 16px;
}

.panel-header.compact {
  margin-bottom: 12px;
}

.panel-header p {
  margin-bottom: 0;
  color: var(--muted);
}

.grid-two {
  display: grid;
  grid-template-columns: 1.2fr 0.8fr;
  gap: 18px;
}

.filters-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
  width: min(520px, 100%);
}

.table-wrap {
  overflow-x: auto;
}

table {
  width: 100%;
  border-collapse: collapse;
}

th,
td {
  padding: 13px 12px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: middle;
}

th {
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

tr:last-child td {
  border-bottom: 0;
}

.number {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.center {
  text-align: center;
}

.small {
  font-size: 0.82rem;
}

.muted {
  color: var(--muted);
}

.text-danger {
  color: var(--danger);
}

.status,
.mini-badge {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 4px 9px;
  font-size: 0.8rem;
  font-weight: 700;
}

.mini-badge {
  margin-left: 8px;
  color: #e5e7eb;
  background: rgba(156, 163, 175, 0.18);
}

.status-ok {
  color: #bbf7d0;
  background: rgba(34, 197, 94, 0.15);
}

.status-danger {
  color: #fecaca;
  background: rgba(239, 68, 68, 0.15);
}

.status-muted {
  color: #e5e7eb;
  background: rgba(156, 163, 175, 0.18);
}

.button {
  border: 0;
  border-radius: 999px;
  cursor: pointer;
  font-weight: 800;
  padding: 11px 16px;
  transition: transform 0.14s ease, background 0.14s ease, opacity 0.14s ease;
}

.button:hover {
  transform: translateY(-1px);
}

.button-primary {
  color: #052e16;
  background: var(--primary);
}

.button-primary:hover {
  background: var(--primary-dark);
}

.button-secondary {
  color: var(--text);
  background: var(--panel-soft);
}

.button-danger {
  color: #fff;
  background: var(--danger);
}

.full-width {
  width: 100%;
}

.input {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: rgba(15, 23, 42, 0.9);
  color: var(--text);
  padding: 11px 12px;
  outline: none;
}

.input:focus {
  border-color: rgba(34, 197, 94, 0.7);
  box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.12);
}

.search-input {
  max-width: 320px;
}

.filter-input {
  max-width: 220px;
}

.notice {
  padding: 14px 16px;
  border-radius: 14px;
  margin-bottom: 18px;
  border: 1px solid var(--border);
}

.notice-warning {
  background: rgba(245, 158, 11, 0.13);
  color: #fde68a;
}

.notice-error {
  background: rgba(239, 68, 68, 0.13);
  color: #fecaca;
}

.movement-list,
.stadium-list {
  display: grid;
  gap: 10px;
}

.movement-item,
.stadium-item {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
  padding: 12px;
  background: rgba(31, 41, 55, 0.65);
  border: 1px solid var(--border);
  border-radius: 14px;
}

.movement-item span,
.movement-item small,
.stadium-item span,
.stadium-item small {
  display: block;
  color: var(--muted);
}

.movement-amount {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.movement-amount.positive {
  color: #bbf7d0;
}

.movement-amount.negative {
  color: #fecaca;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.form-grid label,
.login-card label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-weight: 700;
  font-size: 0.9rem;
}

.checkbox-label {
  display: flex !important;
  flex-direction: row;
  align-items: center;
  gap: 10px !important;
  min-height: 44px;
}

.checkbox-label input {
  width: 18px;
  height: 18px;
}

.span-2 {
  grid-column: span 2;
}

.form-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.form-status {
  color: var(--muted);
  margin: 0;
}

.login-dialog {
  border: 0;
  padding: 0;
  border-radius: 20px;
  background: transparent;
}

.login-dialog::backdrop {
  background: rgba(2, 6, 23, 0.78);
  backdrop-filter: blur(4px);
}

.login-card {
  position: relative;
  width: min(420px, calc(100vw - 32px));
  display: grid;
  gap: 14px;
  padding: 24px;
  border-radius: 20px;
  border: 1px solid var(--border);
  background: #111827;
  box-shadow: var(--shadow);
  color: var(--text);
}

.dialog-close {
  position: absolute;
  top: 12px;
  right: 12px;
  border: 0;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 1.6rem;
}

.app-footer {
  color: var(--muted);
  padding: 18px 0 40px;
}

.hidden {
  display: none !important;
}

code {
  background: rgba(15, 23, 42, 0.9);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 2px 5px;
}

.field-hint {
  display: block;
  margin-top: 0.35rem;
  color: var(--muted);
  font-size: 0.82rem;
}

.field-hint.hint-positive {
  color: #bbf7d0;
}

.field-hint.hint-negative {
  color: #fecaca;
}

@media (max-width: 920px) {
  .header-grid,
  .grid-two,
  .cards-grid,
  .form-grid {
    grid-template-columns: 1fr;
  }

  .span-2 {
    grid-column: span 1;
  }

  .panel-header {
    flex-direction: column;
  }

  .filters-row,
  .search-input,
  .filter-input {
    max-width: none;
    width: 100%;
  }

  .header-actions {
    justify-content: flex-start;
  }
}

.link-button {
  border: 0;
  padding: 0;
  background: transparent;
  color: var(--primary);
  font-weight: 700;
  cursor: pointer;
}

.link-button:hover {
  text-decoration: underline;
}

.status-warning {
  background: rgba(245, 158, 11, 0.16);
  color: #fbbf24;
  border: 1px solid rgba(245, 158, 11, 0.24);
}

.text-success {
  color: var(--primary);
}

.import-report {
  margin-top: 18px;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.46);
}

.import-summary-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}

.import-summary-grid div,
.player-summary-grid div {
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.04);
}

.import-summary-grid span,
.player-summary-grid span {
  display: block;
  color: var(--muted);
  font-size: 0.78rem;
  margin-bottom: 4px;
}

.import-summary-grid strong,
.player-summary-grid strong {
  font-size: 1.05rem;
}

.import-columns {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.import-columns h3 {
  margin: 0 0 8px;
  font-size: 0.95rem;
}

.import-columns ul {
  margin: 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 0.88rem;
}

.player-dialog .player-card {
  max-width: min(920px, calc(100vw - 32px));
}

.player-detail-body {
  display: grid;
  gap: 14px;
}

.player-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.compact-table {
  max-height: 360px;
  overflow: auto;
}

@media (max-width: 900px) {
  .import-summary-grid,
  .import-columns,
  .player-summary-grid {
    grid-template-columns: 1fr;
  }
}

.import-columns-wide {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

#listoneMetaText {
  display: block;
  margin-top: 4px;
}

@media (max-width: 1200px) {
  .import-columns-wide {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .import-columns-wide {
    grid-template-columns: 1fr;
  }
}

.panel-actions {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
}

.panel-toggle {
  padding: 8px 12px;
  font-size: 0.82rem;
}

.panel.is-collapsed > :not(.panel-header) {
  display: none !important;
}

.panel.is-collapsed {
  padding-bottom: 12px;
}

.panel.is-collapsed .panel-header {
  margin-bottom: 0;
}

/* V8: navigazione a pagine */
.app-nav {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  padding-top: 18px;
}

.nav-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 9px 14px;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text);
  text-decoration: none;
  font-weight: 800;
  background: rgba(31, 41, 55, 0.58);
  transition: transform 0.14s ease, background 0.14s ease, border-color 0.14s ease;
}

.nav-link:hover {
  transform: translateY(-1px);
  background: rgba(31, 41, 55, 0.9);
}

.nav-link.active {
  color: #052e16;
  background: var(--primary);
  border-color: rgba(34, 197, 94, 0.9);
}

.nav-link-admin {
  margin-left: auto;
}

.app-page {
  display: none;
}

.app-page.is-active {
  display: block;
}

.admin-locked {
  display: none !important;
}

.page-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
  padding: 18px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: rgba(17, 24, 39, 0.52);
  box-shadow: var(--shadow);
}

.page-heading h2 {
  font-size: 1.65rem;
  margin-bottom: 6px;
  letter-spacing: -0.03em;
}

.page-heading p:last-child {
  color: var(--muted);
  margin-bottom: 0;
}

@media (max-width: 920px) {
  .app-nav {
    overflow-x: auto;
    flex-wrap: nowrap;
    padding-bottom: 4px;
  }

  .nav-link {
    white-space: nowrap;
  }

  .nav-link-admin {
    margin-left: 0;
  }
}


.season-control-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem;
  margin: 0 0 1rem;
  border: 1px solid var(--border);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}

.season-control-panel h3 {
  margin: 0.1rem 0;
  font-size: 1.05rem;
}

.season-control-panel p {
  margin: 0.2rem 0 0;
  color: var(--muted);
}

.season-select-label {
  min-width: 260px;
  display: grid;
  gap: 0.35rem;
  font-weight: 700;
}

.season-select {
  width: 100%;
}

@media (max-width: 720px) {
  .season-control-panel {
    align-items: stretch;
    flex-direction: column;
  }

  .season-select-label {
    min-width: 0;
  }
}

/* V10: selezione stagione globale e schede rosa */
.season-switcher {
  display: grid;
  gap: 6px;
  min-width: 210px;
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 800;
}

.season-input {
  min-width: 190px;
}

.roster-card-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}

.roster-club-card {
  display: grid;
  gap: 7px;
  width: 100%;
  min-height: 142px;
  text-align: left;
  color: var(--text);
  background: rgba(31, 41, 55, 0.66);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 14px;
  cursor: pointer;
  transition: transform 0.14s ease, border-color 0.14s ease, background 0.14s ease;
}

.roster-club-card:hover {
  transform: translateY(-2px);
  border-color: rgba(34, 197, 94, 0.55);
  background: rgba(31, 41, 55, 0.92);
}

.roster-card-title {
  font-weight: 900;
  font-size: 1rem;
}

.roster-card-stats {
  color: var(--muted);
  font-size: 0.86rem;
}

.roster-card-stats strong {
  color: var(--text);
}

.player-dialog .player-card {
  width: min(1180px, calc(100vw - 32px));
  max-width: none;
}

.roster-dialog .roster-card {
  width: min(1120px, calc(100vw - 32px));
  max-width: none;
}

.roster-detail-body {
  display: grid;
  gap: 14px;
}

.roster-summary-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.roster-dialog-table {
  max-height: 560px;
}

@media (max-width: 1200px) {
  .roster-card-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .roster-summary-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}


/* V27: fallback for mobile browsers that report a wide viewport. */
body.is-mobile-ux {
  padding-bottom: 86px;
}
body.is-mobile-ux .app-nav {
  display: none !important;
}
body.is-mobile-ux .mobile-bottom-nav {
  position: fixed;
  left: 10px;
  right: 10px;
  bottom: 10px;
  z-index: 1000;
  display: grid !important;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  padding: 8px;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 24px;
  background: rgba(15, 23, 42, 0.96);
  box-shadow: 0 18px 60px rgba(0, 0, 0, 0.42);
  backdrop-filter: blur(16px);
}
body.is-mobile-ux .mobile-more-backdrop:not(.hidden) {
  position: fixed;
  inset: 0;
  z-index: 1008;
  display: block !important;
  background: rgba(2, 6, 23, 0.56);
}
body.is-mobile-ux .mobile-more-sheet:not(.hidden) {
  position: fixed;
  left: 10px;
  right: 10px;
  bottom: 90px;
  z-index: 1010;
  display: grid !important;
  gap: 8px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 24px;
  background: rgba(17, 24, 39, 0.98);
  box-shadow: 0 20px 70px rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(16px);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .roster-card-grid,
  .roster-summary-grid {
    grid-template-columns: 1fr;
  }

  .season-switcher,
  .season-input {
    width: 100%;
  }
}

/* V13 additions */
.app-nav {
  flex-wrap: wrap;
}

.dashboard-grid {
  margin-top: 18px;
}

.stack-list,
.news-list,
.competition-list,
.admin-list {
  display: grid;
  gap: 12px;
}

.stack-section {
  display: grid;
  gap: 10px;
}

.stack-section h3,
.competition-card h4 {
  margin: 8px 0 2px;
  font-size: 0.95rem;
}

.stack-item,
.admin-list-item,
.movement-item,
.stadium-item {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
}

.stack-item {
  border: 1px solid var(--border);
  background: rgba(15, 23, 42, 0.42);
  border-radius: 14px;
  padding: 12px;
}

.stack-item div:first-child,
.admin-list-item span:first-child {
  display: grid;
  gap: 4px;
}

.stack-item small,
.admin-list-item small,
.news-card small {
  color: var(--muted);
}

.stack-item-side {
  white-space: nowrap;
  text-align: right;
}

.news-card,
.competition-card,
.compact-card {
  border: 1px solid var(--border);
  background: rgba(15, 23, 42, 0.5);
  border-radius: 18px;
  padding: 16px;
}

.news-card h3,
.competition-card h3 {
  margin: 8px 0;
}

.news-card p {
  margin: 8px 0 0;
  color: var(--text);
  line-height: 1.55;
}

.news-card-header,
.competition-card-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
}

.competition-card-header > div {
  display: grid;
  gap: 4px;
}

.competition-card-header span:not(.status) {
  color: var(--muted);
  font-size: 0.88rem;
}

.admin-list-item {
  border-top: 1px solid var(--border);
  padding: 10px 0;
}

.admin-list-item span:last-child {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.button-small {
  padding: 6px 10px;
  font-size: 0.8rem;
}

.textarea {
  min-height: 110px;
  resize: vertical;
}

.compact-card {
  padding: 12px;
}

.compact-card .table-wrap {
  margin-top: 8px;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .stack-item,
  .admin-list-item,
  .news-card-header,
  .competition-card-header {
    align-items: stretch;
    flex-direction: column;
  }
  .stack-item-side {
    text-align: left;
  }
}

/* V14 */
.detail-section {
  margin-top: 1.25rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(148, 163, 184, 0.25);
}
.detail-section h3 {
  margin: 0 0 0.75rem;
  font-size: 1rem;
}
.text-ok {
  color: #15803d;
}

/* V15 additions */
.club-name-with-logo {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  vertical-align: middle;
}

.club-logo {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  object-fit: cover;
  border: 1px solid rgba(148, 163, 184, 0.35);
  background: rgba(148, 163, 184, 0.12);
  flex: 0 0 auto;
}

.club-logo-lg {
  width: 64px;
  height: 64px;
}

.club-logo-placeholder {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 0.8rem;
  color: var(--text, #0f172a);
}

.logo-admin-preview {
  min-height: 68px;
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.table-sort {
  appearance: none;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 700;
  padding: 0;
  cursor: pointer;
  text-align: inherit;
}

.table-sort:hover {
  text-decoration: underline;
}

.collapse-card {
  border: 1px solid rgba(148, 163, 184, 0.25);
  border-radius: 14px;
  padding: 0.75rem 0.9rem;
  background: rgba(15, 23, 42, 0.72);
  color: var(--text);
  margin-bottom: 0.75rem;
}

.collapse-card summary {
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.collapse-card summary span {
  color: var(--muted, #64748b);
  font-size: 0.85rem;
}

.club-link {
  text-align: left;
}


/* V16 admin and readability refinements */
.admin-edit-section {
  margin-top: 1rem;
  border-top: 1px solid var(--border);
  padding-top: 1rem;
}

.admin-edit-section summary {
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  color: var(--text);
}

.admin-edit-section summary span {
  color: var(--muted);
  font-size: 0.85rem;
}

.admin-search-input {
  margin: 0.85rem 0 0.5rem;
  width: min(520px, 100%);
}

.admin-empty-message {
  margin: 0.75rem 0 0;
}

.collapse-card .table-wrap,
.collapse-card table {
  color: var(--text);
}

.collapse-card tbody tr:hover {
  background: rgba(34, 197, 94, 0.08);
}

.roster-card-title .club-name-with-logo,
.link-button .club-name-with-logo {
  pointer-events: none;
}


/* V17 */
.result-score { font-size: 1.05rem; }
.honor-context-detail { border-top: 1px solid rgba(255,255,255,0.08); padding-top: 1rem; }
.honor-context-button { white-space: nowrap; }
.compact-table table th, .compact-table table td { vertical-align: middle; }

/* V18 compact admin calendar and honor readability */
.calendar-compact-form {
  grid-template-columns: repeat(4, minmax(140px, 1fr));
  gap: 0.8rem;
  align-items: start;
}
.calendar-compact-form .form-actions {
  grid-column: 1 / -1;
}
@media (max-width: 900px) {
  .calendar-compact-form {
    grid-template-columns: repeat(2, minmax(140px, 1fr));
  }
}
@media (max-width: 640px) {
  .calendar-compact-form {
    grid-template-columns: 1fr;
  }
}
.honor-table-wrap table,
.honor-cup-content table {
  min-width: 880px;
}
.honor-cup-content h4 {
  margin: 1rem 0 0.5rem;
  color: var(--text-primary, #f8fafc);
}
.podium-mini-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0.75rem;
  margin: 0.75rem 0 1rem;
}
.podium-mini-item {
  border: 1px solid var(--border, rgba(148, 163, 184, 0.25));
  border-radius: 1rem;
  padding: 0.75rem;
  background: rgba(15, 23, 42, 0.35);
}
.podium-mini-item span,
.podium-mini-item small {
  display: block;
  color: var(--muted, #94a3b8);
  font-size: 0.78rem;
}
.podium-mini-item strong {
  display: block;
  margin: 0.25rem 0;
}
.result-score {
  display: block;
  font-size: 1.05rem;
}

.single-panel-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

.detail-actions {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 0.75rem;
}

.stack-item-side small {
  display: block;
  margin-top: 0.15rem;
  color: var(--muted, #8a94a6);
  font-weight: 500;
}

/* V25 dashboard competition states */
.dashboard-competition-body {
  display: grid;
  gap: 0.85rem;
}
.dashboard-match-block {
  display: grid;
  gap: 0.4rem;
}
.dashboard-match-block h4,
.dashboard-competition-body h4 {
  margin: 0;
  font-size: 0.9rem;
  color: var(--text);
}
.winner-line {
  margin: 0;
  padding: 0.65rem 0.75rem;
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 0.9rem;
  background: rgba(15, 23, 42, 0.35);
}
.planned-competitions-card .tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 0.7rem;
}

/* V26: mobile UX. Desktop layout remains unchanged. */
.mobile-bottom-nav,
.mobile-more-sheet,
.mobile-more-backdrop,
.mobile-page-subnav {
  display: none;
}

.mobile-icon-button {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text);
  background: rgba(31, 41, 55, 0.86);
  font-size: 1.35rem;
  font-weight: 900;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  body {
    padding-bottom: 86px;
  }

  .container {
    width: min(100% - 20px, 1220px);
  }

  .app-header {
    padding: 18px 0 10px;
  }

  .header-grid {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .app-header .eyebrow,
  .subtitle {
    display: none;
  }

  h1 {
    font-size: 1.72rem;
    margin-bottom: 0;
    letter-spacing: -0.035em;
  }

  .header-actions {
    justify-content: flex-start;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }

  .header-actions .season-switcher {
    grid-column: 1 / -1;
  }

  .header-actions .button {
    min-height: 44px;
    padding-inline: 10px;
  }

  .app-nav {
    display: none;
  }

  .app-main {
    padding-top: 12px;
  }

  .page-heading {
    padding: 14px;
    margin-bottom: 12px;
  }

  .page-heading h2 {
    font-size: 1.35rem;
  }

  .page-heading p {
    font-size: 0.92rem;
  }

  .cards-grid,
  .grid-two,
  .dashboard-grid,
  .single-panel-layout {
    grid-template-columns: 1fr !important;
    gap: 12px;
  }

  .metric-card,
  .panel {
    border-radius: 16px;
  }

  .metric-card {
    padding: 14px;
  }

  .metric-card strong {
    font-size: 1.55rem;
  }

  .panel {
    padding: 14px;
    margin-bottom: 12px;
    scroll-margin-top: 78px;
  }

  .panel-header {
    display: grid;
    gap: 10px;
  }

  .panel-header .panel-actions,
  .panel-header .filters-row {
    width: 100%;
    justify-content: stretch;
  }

  .filters-row,
  .form-grid,
  .header-actions {
    width: 100%;
  }

  .filters-row {
    display: grid;
    grid-template-columns: 1fr;
  }

  .search-input,
  .filter-input,
  .input {
    width: 100%;
    min-height: 44px;
    font-size: 16px;
  }

  .form-grid {
    grid-template-columns: 1fr !important;
  }

  .span-2 {
    grid-column: auto !important;
  }

  .mobile-page-subnav:not(.hidden) {
    position: sticky;
    top: 0;
    z-index: 45;
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 10px 0 8px;
    margin: -2px 0 10px;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.98), rgba(15, 23, 42, 0.88));
    backdrop-filter: blur(10px);
    scrollbar-width: none;
  }

  .mobile-page-subnav::-webkit-scrollbar {
    display: none;
  }

  .mobile-subnav-pill {
    white-space: nowrap;
    border: 1px solid var(--border);
    border-radius: 999px;
    color: var(--text);
    background: rgba(31, 41, 55, 0.86);
    padding: 8px 12px;
    font-weight: 800;
    font-size: 0.83rem;
  }

  .mobile-bottom-nav {
    position: fixed;
    left: 10px;
    right: 10px;
    bottom: 10px;
    z-index: 80;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 6px;
    padding: 8px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 24px;
    background: rgba(15, 23, 42, 0.94);
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.42);
    backdrop-filter: blur(16px);
  }

  .mobile-bottom-link {
    display: grid;
    place-items: center;
    gap: 3px;
    min-width: 0;
    padding: 7px 3px;
    border: 0;
    border-radius: 16px;
    color: var(--muted);
    background: transparent;
    text-decoration: none;
    font: inherit;
    font-weight: 800;
    font-size: 0.68rem;
  }

  .mobile-bottom-link.active {
    color: #052e16;
    background: var(--primary);
  }

  .mobile-nav-icon {
    font-size: 1.05rem;
    line-height: 1;
  }

  .mobile-more-backdrop:not(.hidden) {
    position: fixed;
    inset: 0;
    z-index: 88;
    display: block;
    background: rgba(2, 6, 23, 0.56);
  }

  .mobile-more-sheet:not(.hidden) {
    position: fixed;
    left: 10px;
    right: 10px;
    bottom: 90px;
    z-index: 90;
    display: grid;
    gap: 8px;
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 24px;
    background: rgba(17, 24, 39, 0.98);
    box-shadow: 0 20px 70px rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(16px);
  }

  .mobile-more-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 4px;
  }

  .mobile-more-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 46px;
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: 16px;
    color: var(--text);
    text-decoration: none;
    font-weight: 850;
    background: rgba(31, 41, 55, 0.72);
  }

  .mobile-more-link.active {
    color: #052e16;
    background: var(--primary);
  }

  .table-wrap {
    overflow: visible;
  }

  .table-wrap table,
  .table-wrap thead,
  .table-wrap tbody,
  .table-wrap tr,
  .table-wrap th,
  .table-wrap td {
    display: block;
    width: 100%;
  }

  .table-wrap thead {
    display: none;
  }

  .table-wrap tbody {
    display: grid;
    gap: 10px;
  }

  .table-wrap tr {
    padding: 10px;
    border: 1px solid var(--border);
    border-radius: 16px;
    background: rgba(31, 41, 55, 0.46);
  }

  .table-wrap td {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
    padding: 9px 2px;
    text-align: right;
  }

  .table-wrap td:last-child {
    border-bottom: 0;
  }

  .table-wrap td::before {
    content: attr(data-label);
    flex: 0 0 42%;
    text-align: left;
    color: var(--muted);
    font-size: 0.76rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.05em;
  }

  .table-wrap td.center {
    justify-content: center;
    text-align: center;
  }

  .table-wrap td.center::before {
    display: none;
  }

  .number {
    text-align: right;
  }

  .club-name-with-logo,
  .roster-card-title .club-name-with-logo {
    justify-content: flex-end;
  }

  .stack-item,
  .admin-list-item,
  .movement-item,
  .stadium-item {
    display: grid;
    align-items: stretch;
  }

  .login-dialog .login-card,
  .player-dialog .player-card,
  .roster-dialog .roster-card {
    width: 100vw !important;
    height: 100dvh;
    max-height: none;
    max-width: none;
    border-radius: 0;
    overflow: auto;
  }

  .login-dialog {
    padding: 0;
  }

  .dialog-close {
    position: sticky;
    top: 0;
    z-index: 2;
    margin-left: auto;
  }

  .app-footer {
    padding-bottom: 94px;
    text-align: center;
  }
}

/* v28 - Scheda Fantacalcio.it integrata */
.button-small {
  padding: 7px 10px;
  font-size: 0.82rem;
  border-radius: 10px;
}

.player-external-action {
  grid-column: 1 / -1;
}

.fantacalcio-dialog .fantacalcio-card {
  width: min(1120px, calc(100vw - 32px));
  height: min(820px, calc(100dvh - 32px));
  max-width: none;
  max-height: none;
  grid-template-rows: auto auto auto 1fr;
}

.fantacalcio-frame-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
}

.fantacalcio-frame {
  width: 100%;
  height: 100%;
  min-height: 560px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: #0f172a;
}

@media (max-width: 900px), (pointer: coarse) {
  .fantacalcio-dialog .fantacalcio-card {
    width: 100vw !important;
    height: 100dvh;
    max-width: none;
    max-height: none;
    border-radius: 0;
  }

  .fantacalcio-frame {
    min-height: 68dvh;
    border-radius: 12px;
  }

  .fantacalcio-frame-actions {
    align-items: stretch;
    flex-direction: column;
  }
}


/* V30 - Mobile-only compact layout and roster dialog overlap fix.
   Desktop layout is intentionally untouched. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* The roster table inside the full-screen mobile dialog must grow naturally.
     Previous mobile table-card rules overrode overflow while max-height stayed active,
     causing Palmarès/Movimenti sections to overlap after a few players. */
  .roster-dialog .roster-dialog-table,
  .roster-dialog .compact-table,
  .roster-dialog .table-wrap {
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
  }

  .roster-dialog .roster-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 12px !important;
  }

  .roster-dialog .roster-detail-body {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding-bottom: 108px;
  }

  .roster-dialog .detail-section {
    position: relative;
    clear: both;
    margin-top: 10px;
    padding-top: 10px;
  }

  /* More compact mobile sections. */
  .app-main {
    padding-top: 8px;
  }

  .page-heading {
    padding: 10px 12px;
    margin-bottom: 8px;
    border-radius: 14px;
  }

  .page-heading h2 {
    font-size: 1.22rem;
    margin-bottom: 2px;
  }

  .page-heading p,
  .panel-header p,
  .season-control-panel p {
    font-size: 0.84rem;
    line-height: 1.35;
  }

  .panel {
    padding: 10px;
    margin-bottom: 8px;
    border-radius: 14px;
  }

  .panel-header {
    gap: 6px;
    margin-bottom: 8px;
  }

  .panel-header h2,
  .season-control-panel h3,
  .detail-section h3 {
    font-size: 1rem;
    margin-bottom: 2px;
  }

  .metric-card {
    padding: 10px 12px;
    border-radius: 14px;
  }

  .metric-card strong {
    font-size: 1.35rem;
  }

  .cards-grid,
  .grid-two,
  .dashboard-grid,
  .stack-list,
  .news-list,
  .competition-list,
  .admin-list {
    gap: 8px;
  }

  .season-control-panel {
    padding: 10px 12px;
    margin-bottom: 8px;
    border-radius: 14px;
  }

  .roster-club-card,
  .stack-item,
  .admin-list-item,
  .movement-item,
  .stadium-item,
  .collapse-card,
  .podium-mini-item,
  .competition-card,
  .news-card {
    padding: 10px !important;
    border-radius: 14px;
  }

  .roster-club-card {
    min-height: 0;
    gap: 5px;
  }

  .roster-card-title {
    font-size: 0.95rem;
  }

  .roster-card-stats,
  .muted,
  .small {
    font-size: 0.8rem;
  }

  .player-summary-grid,
  .roster-summary-grid,
  .import-summary-grid {
    gap: 7px;
  }

  .player-summary-grid div,
  .import-summary-grid div {
    padding: 9px;
    border-radius: 10px;
  }

  .player-summary-grid span,
  .import-summary-grid span {
    font-size: 0.7rem;
    margin-bottom: 2px;
  }

  .player-summary-grid strong,
  .import-summary-grid strong {
    font-size: 0.94rem;
  }

  .table-wrap tbody {
    gap: 7px;
  }

  .table-wrap tr {
    padding: 8px;
    border-radius: 14px;
  }

  .table-wrap td {
    padding: 6px 2px;
    gap: 8px;
  }

  .table-wrap td::before {
    flex-basis: 39%;
    font-size: 0.68rem;
  }

  .button,
  .button-small,
  .mobile-subnav-pill {
    min-height: 38px;
  }

  .input,
  .search-input,
  .filter-input {
    min-height: 40px;
  }

  .form-grid {
    gap: 9px;
  }

  .mobile-page-subnav:not(.hidden) {
    padding: 7px 0 6px;
    margin-bottom: 8px;
  }

  .mobile-subnav-pill {
    padding: 7px 10px;
    font-size: 0.76rem;
  }
}

/* Same mobile fixes for JS fallback class used by Samsung Internet/Brave. */
body.is-mobile-ux .roster-dialog .roster-dialog-table,
body.is-mobile-ux .roster-dialog .compact-table,
body.is-mobile-ux .roster-dialog .table-wrap {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}

body.is-mobile-ux .roster-dialog .roster-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px !important;
}

body.is-mobile-ux .roster-dialog .roster-detail-body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-bottom: 108px;
}

body.is-mobile-ux .roster-dialog .detail-section {
  position: relative;
  clear: both;
  margin-top: 10px;
  padding-top: 10px;
}

body.is-mobile-ux .page-heading,
body.is-mobile-ux .panel,
body.is-mobile-ux .metric-card,
body.is-mobile-ux .season-control-panel {
  padding: 10px 12px;
  margin-bottom: 8px;
  border-radius: 14px;
}

body.is-mobile-ux .panel-header {
  gap: 6px;
  margin-bottom: 8px;
}

body.is-mobile-ux .page-heading h2 {
  font-size: 1.22rem;
}

body.is-mobile-ux .panel-header h2,
body.is-mobile-ux .season-control-panel h3,
body.is-mobile-ux .detail-section h3 {
  font-size: 1rem;
}

body.is-mobile-ux .table-wrap tbody,
body.is-mobile-ux .cards-grid,
body.is-mobile-ux .grid-two,
body.is-mobile-ux .dashboard-grid,
body.is-mobile-ux .stack-list,
body.is-mobile-ux .news-list,
body.is-mobile-ux .competition-list,
body.is-mobile-ux .admin-list {
  gap: 8px;
}

body.is-mobile-ux .table-wrap tr,
body.is-mobile-ux .roster-club-card,
body.is-mobile-ux .stack-item,
body.is-mobile-ux .admin-list-item,
body.is-mobile-ux .movement-item,
body.is-mobile-ux .stadium-item,
body.is-mobile-ux .collapse-card,
body.is-mobile-ux .podium-mini-item,
body.is-mobile-ux .competition-card,
body.is-mobile-ux .news-card {
  padding: 10px !important;
  border-radius: 14px;
}

body.is-mobile-ux .table-wrap td {
  padding: 6px 2px;
}


/* V31 - Mobile overlap fix across all pages and compact standings.
   Desktop remains unchanged. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* In mobile mode tables are rendered as stacked cards. Any max-height/overflow
     on wrappers can make the following sections overlap the card list, so disable
     scroll boxes globally on mobile. */
  .compact-table,
  .table-wrap,
  .mini-table-wrap,
  .honor-table-wrap,
  .honor-cup-content,
  .collapse-card .table-wrap,
  .player-dialog .table-wrap,
  .roster-dialog .table-wrap {
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
  }

  .app-page,
  .panel,
  .collapse-card,
  .detail-section,
  .stack-section,
  .competition-card,
  .news-card,
  .stack-item,
  .admin-list-item,
  .movement-item,
  .stadium-item {
    position: relative;
    clear: both;
    overflow: visible;
  }

  .app-page > section,
  .app-page > article,
  .panel + .panel,
  .detail-section + .detail-section,
  .stack-section + .stack-section {
    margin-top: 8px;
  }

  /* Mobile standings: keep only position, team, points, played and fantapoints. */
  .standing-table .standing-optional {
    display: none !important;
  }

  .standing-table-wrap .standing-table tr {
    padding: 7px 8px !important;
  }

  .standing-table-wrap .standing-table td {
    padding: 5px 2px !important;
    min-height: 28px;
  }

  .standing-table-wrap .standing-table td::before {
    flex: 0 0 32%;
  }

  .standing-source-note {
    display: block;
    margin-bottom: 6px;
    font-size: 0.72rem;
  }
}

/* Same V31 fixes for the JS fallback class used by Samsung Internet/Brave. */
body.is-mobile-ux .compact-table,
body.is-mobile-ux .table-wrap,
body.is-mobile-ux .mini-table-wrap,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .honor-cup-content,
body.is-mobile-ux .collapse-card .table-wrap,
body.is-mobile-ux .player-dialog .table-wrap,
body.is-mobile-ux .roster-dialog .table-wrap {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
}

body.is-mobile-ux .app-page,
body.is-mobile-ux .panel,
body.is-mobile-ux .collapse-card,
body.is-mobile-ux .detail-section,
body.is-mobile-ux .stack-section,
body.is-mobile-ux .competition-card,
body.is-mobile-ux .news-card,
body.is-mobile-ux .stack-item,
body.is-mobile-ux .admin-list-item,
body.is-mobile-ux .movement-item,
body.is-mobile-ux .stadium-item {
  position: relative;
  clear: both;
  overflow: visible;
}

body.is-mobile-ux .standing-table .standing-optional {
  display: none !important;
}

body.is-mobile-ux .standing-table-wrap .standing-table tr {
  padding: 7px 8px !important;
}

body.is-mobile-ux .standing-table-wrap .standing-table td {
  padding: 5px 2px !important;
  min-height: 28px;
}

body.is-mobile-ux .standing-table-wrap .standing-table td::before {
  flex: 0 0 32%;
}

body.is-mobile-ux .standing-source-note {
  display: block;
  margin-bottom: 6px;
  font-size: 0.72rem;
}

/* V32 - Mobile tabular views for standings, rosters and listone.
   Desktop remains unchanged. */
.mobile-only-col,
.mobile-only-cell,
.mobile-inline {
  display: none;
}

.desktop-inline {
  display: inline;
}

.status-dot {
  display: inline-block;
  width: 0.72rem;
  height: 0.72rem;
  border-radius: 999px;
  vertical-align: middle;
  box-shadow: 0 0 0 2px rgba(255,255,255,0.08);
}

.status-dot-ok {
  background: #22c55e;
}

.status-dot-warning {
  background: #facc15;
}

.status-dot-muted {
  background: #94a3b8;
}

.team-code {
  font-weight: 900;
  letter-spacing: 0.04em;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Undo the mobile card/table transformation only for the tables that must stay tabular. */
  .mobile-tabular-wrap,
  .standing-table-wrap,
  .roster-dialog-table {
    max-height: min(68vh, 560px) !important;
    height: auto !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
    border-radius: 14px;
    border: 1px solid rgba(148, 163, 184, 0.22);
  }

  .mobile-tabular-wrap table.mobile-tabular,
  .standing-table-wrap table.standing-table,
  .roster-dialog-table table.mobile-tabular,
  .mobile-tabular-wrap table.mobile-tabular thead,
  .standing-table-wrap table.standing-table thead,
  .roster-dialog-table table.mobile-tabular thead,
  .mobile-tabular-wrap table.mobile-tabular tbody,
  .standing-table-wrap table.standing-table tbody,
  .roster-dialog-table table.mobile-tabular tbody,
  .mobile-tabular-wrap table.mobile-tabular tr,
  .standing-table-wrap table.standing-table tr,
  .roster-dialog-table table.mobile-tabular tr,
  .mobile-tabular-wrap table.mobile-tabular th,
  .standing-table-wrap table.standing-table th,
  .roster-dialog-table table.mobile-tabular th,
  .mobile-tabular-wrap table.mobile-tabular td,
  .standing-table-wrap table.standing-table td,
  .roster-dialog-table table.mobile-tabular td {
    width: auto !important;
  }

  .mobile-tabular-wrap table.mobile-tabular,
  .standing-table-wrap table.standing-table,
  .roster-dialog-table table.mobile-tabular {
    display: table !important;
    width: 100% !important;
    min-width: 0 !important;
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
    font-size: 0.72rem;
  }

  .mobile-tabular-wrap table.mobile-tabular thead,
  .standing-table-wrap table.standing-table thead,
  .roster-dialog-table table.mobile-tabular thead {
    display: table-header-group !important;
  }

  .mobile-tabular-wrap table.mobile-tabular tbody,
  .standing-table-wrap table.standing-table tbody,
  .roster-dialog-table table.mobile-tabular tbody {
    display: table-row-group !important;
  }

  .mobile-tabular-wrap table.mobile-tabular tr,
  .standing-table-wrap table.standing-table tr,
  .roster-dialog-table table.mobile-tabular tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th,
  .standing-table-wrap table.standing-table th,
  .roster-dialog-table table.mobile-tabular th,
  .mobile-tabular-wrap table.mobile-tabular td,
  .standing-table-wrap table.standing-table td,
  .roster-dialog-table table.mobile-tabular td {
    display: table-cell !important;
    padding: 7px 5px !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important;
    text-align: left;
    vertical-align: middle;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-height: 0 !important;
  }

  .mobile-tabular-wrap table.mobile-tabular td::before,
  .standing-table-wrap table.standing-table td::before,
  .roster-dialog-table table.mobile-tabular td::before {
    content: none !important;
    display: none !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th,
  .standing-table-wrap table.standing-table th,
  .roster-dialog-table table.mobile-tabular th {
    position: sticky;
    top: 0;
    z-index: 3;
    background: rgba(15, 23, 42, 0.98);
    color: #e5e7eb;
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  .mobile-tabular-wrap table.mobile-tabular .number,
  .standing-table-wrap table.standing-table .number,
  .roster-dialog-table table.mobile-tabular .number {
    text-align: right !important;
  }

  .desktop-only-col,
  .desktop-only-cell,
  .desktop-inline {
    display: none !important;
  }

  .mobile-only-col,
  .mobile-only-cell {
    display: table-cell !important;
  }

  .mobile-inline {
    display: inline !important;
  }

  .mobile-hide-line {
    display: none !important;
  }

  .status-dot + .desktop-inline {
    display: none !important;
  }

  /* Mobile standings: tabular and compact. */
  .standing-table-wrap table.standing-table th:nth-child(1),
  .standing-table-wrap table.standing-table td:nth-child(1) { width: 32px !important; text-align: center !important; }
  .standing-table-wrap table.standing-table th:nth-child(2),
  .standing-table-wrap table.standing-table td:nth-child(2) { width: auto !important; min-width: 118px; }
  .standing-table-wrap table.standing-table th:nth-child(3),
  .standing-table-wrap table.standing-table td:nth-child(3) { width: 42px !important; }
  .standing-table-wrap table.standing-table th:nth-child(4),
  .standing-table-wrap table.standing-table td:nth-child(4) { width: 34px !important; }
  .standing-table-wrap table.standing-table th:last-child,
  .standing-table-wrap table.standing-table td:last-child { width: 54px !important; }

  /* Roster tables: Nome, R, RM, squadra abbreviata, costo, stato. */
  .roster-main-table th:nth-child(1),
  .roster-main-table td:nth-child(1),
  .roster-dialog-players-table th:nth-child(1),
  .roster-dialog-players-table td:nth-child(1) {
    width: 39% !important;
    min-width: 104px;
  }

  .roster-main-table th.mobile-only-col:nth-child(6),
  .roster-main-table td.mobile-only-cell:nth-child(6),
  .roster-dialog-players-table th:nth-child(2),
  .roster-dialog-players-table td:nth-child(2) {
    width: 28px !important;
    text-align: center !important;
  }

  .roster-main-table th.mobile-only-col:nth-child(7),
  .roster-main-table td.mobile-only-cell:nth-child(7),
  .roster-dialog-players-table th:nth-child(4),
  .roster-dialog-players-table td:nth-child(4) {
    width: 52px !important;
  }

  .roster-main-table th.mobile-only-col:nth-child(8),
  .roster-main-table td.mobile-only-cell:nth-child(8),
  .roster-dialog-players-table th:nth-child(3),
  .roster-dialog-players-table td:nth-child(3) {
    width: 38px !important;
    text-align: center !important;
  }

  .roster-main-table th:nth-child(9),
  .roster-main-table td:nth-child(9),
  .roster-dialog-players-table th:nth-child(5),
  .roster-dialog-players-table td:nth-child(5) {
    width: 52px !important;
  }

  .roster-main-table th:last-child,
  .roster-main-table td:last-child,
  .roster-dialog-players-table th:last-child,
  .roster-dialog-players-table td:last-child {
    width: 34px !important;
    text-align: center !important;
  }

  /* Listone/free agents: compact tabular layout with sticky header. */
  .listone-table th:nth-child(1),
  .listone-table td:nth-child(1) { width: 33% !important; min-width: 104px; }
  .listone-table th:nth-child(2),
  .listone-table td:nth-child(2) { width: 34px !important; text-align: center !important; }
  .listone-table th:nth-child(3),
  .listone-table td:nth-child(3) { width: 50px !important; }
  .listone-table th:nth-child(4),
  .listone-table td:nth-child(4) { width: 28px !important; text-align: center !important; }
  .listone-table th:nth-child(5),
  .listone-table td:nth-child(5) { width: 54px !important; }
  .listone-table th:nth-child(6),
  .listone-table td:nth-child(6),
  .listone-table th:nth-child(7),
  .listone-table td:nth-child(7) { width: 44px !important; }
  .listone-table th:nth-child(8),
  .listone-table td:nth-child(8) { width: 30px !important; text-align: center !important; }
  .listone-table th:nth-child(9),
  .listone-table td:nth-child(9) { width: 52px !important; }

  .free-agents-table th:nth-child(5),
  .free-agents-table td:nth-child(5),
  .free-agents-table th:nth-child(6),
  .free-agents-table td:nth-child(6) { width: 44px !important; }
  .free-agents-table th:nth-child(7),
  .free-agents-table td:nth-child(7) { width: 30px !important; text-align: center !important; }
  .free-agents-table th:nth-child(8),
  .free-agents-table td:nth-child(8) { width: 52px !important; }

  .roster-player-cell .link-button,
  .listone-player-cell .link-button,
  .mobile-roster-cell .link-button,
  .standing-table .link-button {
    display: inline-block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: middle;
  }

  .status-dot {
    width: 0.62rem;
    height: 0.62rem;
  }
}

body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .standing-table-wrap,
body.is-mobile-ux .roster-dialog-table {
  max-height: min(68vh, 560px) !important;
  height: auto !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, 0.22);
}

body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular,
body.is-mobile-ux .standing-table-wrap table.standing-table,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular {
  display: table !important;
  width: 100% !important;
  table-layout: fixed;
  font-size: 0.72rem;
}

body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular thead,
body.is-mobile-ux .standing-table-wrap table.standing-table thead,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular thead { display: table-header-group !important; }
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular tbody,
body.is-mobile-ux .standing-table-wrap table.standing-table tbody,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular tbody { display: table-row-group !important; }
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular tr,
body.is-mobile-ux .standing-table-wrap table.standing-table tr,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular tr { display: table-row !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; }
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular th,
body.is-mobile-ux .standing-table-wrap table.standing-table th,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular th,
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular td,
body.is-mobile-ux .standing-table-wrap table.standing-table td,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular td { display: table-cell !important; padding: 7px 5px !important; border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-height: 0 !important; }
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular td::before,
body.is-mobile-ux .standing-table-wrap table.standing-table td::before,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular td::before { content: none !important; display: none !important; }
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular th,
body.is-mobile-ux .standing-table-wrap table.standing-table th,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular th { position: sticky; top: 0; z-index: 3; background: rgba(15, 23, 42, 0.98); color: #e5e7eb; font-size: 0.66rem; text-transform: uppercase; letter-spacing: 0.04em; }
body.is-mobile-ux .desktop-only-col,
body.is-mobile-ux .desktop-only-cell,
body.is-mobile-ux .desktop-inline { display: none !important; }
body.is-mobile-ux .mobile-only-col,
body.is-mobile-ux .mobile-only-cell { display: table-cell !important; }
body.is-mobile-ux .mobile-inline { display: inline !important; }
body.is-mobile-ux .mobile-hide-line { display: none !important; }
body.is-mobile-ux .status-dot + .desktop-inline { display: none !important; }

body.is-mobile-ux .standing-table-wrap table.standing-table th:nth-child(1),
body.is-mobile-ux .standing-table-wrap table.standing-table td:nth-child(1) { width: 32px !important; text-align: center !important; }
body.is-mobile-ux .standing-table-wrap table.standing-table th:nth-child(2),
body.is-mobile-ux .standing-table-wrap table.standing-table td:nth-child(2) { width: auto !important; min-width: 118px; }
body.is-mobile-ux .standing-table-wrap table.standing-table th:nth-child(3),
body.is-mobile-ux .standing-table-wrap table.standing-table td:nth-child(3) { width: 42px !important; }
body.is-mobile-ux .standing-table-wrap table.standing-table th:nth-child(4),
body.is-mobile-ux .standing-table-wrap table.standing-table td:nth-child(4) { width: 34px !important; }
body.is-mobile-ux .standing-table-wrap table.standing-table th:last-child,
body.is-mobile-ux .standing-table-wrap table.standing-table td:last-child { width: 54px !important; }

body.is-mobile-ux .roster-main-table th:nth-child(1),
body.is-mobile-ux .roster-main-table td:nth-child(1),
body.is-mobile-ux .roster-dialog-players-table th:nth-child(1),
body.is-mobile-ux .roster-dialog-players-table td:nth-child(1) { width: 39% !important; min-width: 104px; }
body.is-mobile-ux .roster-main-table th.mobile-only-col:nth-child(6),
body.is-mobile-ux .roster-main-table td.mobile-only-cell:nth-child(6),
body.is-mobile-ux .roster-dialog-players-table th:nth-child(2),
body.is-mobile-ux .roster-dialog-players-table td:nth-child(2) { width: 28px !important; text-align: center !important; }
body.is-mobile-ux .roster-main-table th.mobile-only-col:nth-child(7),
body.is-mobile-ux .roster-main-table td.mobile-only-cell:nth-child(7),
body.is-mobile-ux .roster-dialog-players-table th:nth-child(4),
body.is-mobile-ux .roster-dialog-players-table td:nth-child(4) { width: 52px !important; }
body.is-mobile-ux .roster-main-table th.mobile-only-col:nth-child(8),
body.is-mobile-ux .roster-main-table td.mobile-only-cell:nth-child(8),
body.is-mobile-ux .roster-dialog-players-table th:nth-child(3),
body.is-mobile-ux .roster-dialog-players-table td:nth-child(3) { width: 38px !important; text-align: center !important; }
body.is-mobile-ux .roster-main-table th:nth-child(9),
body.is-mobile-ux .roster-main-table td:nth-child(9),
body.is-mobile-ux .roster-dialog-players-table th:nth-child(5),
body.is-mobile-ux .roster-dialog-players-table td:nth-child(5) { width: 52px !important; }
body.is-mobile-ux .roster-main-table th:last-child,
body.is-mobile-ux .roster-main-table td:last-child,
body.is-mobile-ux .roster-dialog-players-table th:last-child,
body.is-mobile-ux .roster-dialog-players-table td:last-child { width: 34px !important; text-align: center !important; }

body.is-mobile-ux .listone-table th:nth-child(1),
body.is-mobile-ux .listone-table td:nth-child(1) { width: 33% !important; min-width: 104px; }
body.is-mobile-ux .listone-table th:nth-child(2),
body.is-mobile-ux .listone-table td:nth-child(2) { width: 34px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(3),
body.is-mobile-ux .listone-table td:nth-child(3) { width: 50px !important; }
body.is-mobile-ux .listone-table th:nth-child(4),
body.is-mobile-ux .listone-table td:nth-child(4) { width: 28px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(5),
body.is-mobile-ux .listone-table td:nth-child(5) { width: 54px !important; }
body.is-mobile-ux .listone-table th:nth-child(6),
body.is-mobile-ux .listone-table td:nth-child(6),
body.is-mobile-ux .listone-table th:nth-child(7),
body.is-mobile-ux .listone-table td:nth-child(7) { width: 44px !important; }
body.is-mobile-ux .listone-table th:nth-child(8),
body.is-mobile-ux .listone-table td:nth-child(8) { width: 30px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(9),
body.is-mobile-ux .listone-table td:nth-child(9) { width: 52px !important; }
body.is-mobile-ux .free-agents-table th:nth-child(5),
body.is-mobile-ux .free-agents-table td:nth-child(5),
body.is-mobile-ux .free-agents-table th:nth-child(6),
body.is-mobile-ux .free-agents-table td:nth-child(6) { width: 44px !important; }
body.is-mobile-ux .free-agents-table th:nth-child(7),
body.is-mobile-ux .free-agents-table td:nth-child(7) { width: 30px !important; text-align: center !important; }
body.is-mobile-ux .free-agents-table th:nth-child(8),
body.is-mobile-ux .free-agents-table td:nth-child(8) { width: 52px !important; }
body.is-mobile-ux .roster-player-cell .link-button,
body.is-mobile-ux .listone-player-cell .link-button,
body.is-mobile-ux .mobile-roster-cell .link-button,
body.is-mobile-ux .standing-table .link-button { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
body.is-mobile-ux .status-dot { width: 0.62rem; height: 0.62rem; }

/* V33 - Mobile-only compact tables for standings and listone.
   Desktop layout is intentionally unchanged. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .standing-table .standing-desktop-col {
    display: none !important;
  }

  .standing-table .mobile-only-col,
  .standing-table .mobile-only-cell {
    display: table-cell !important;
  }

  .mobile-standing-table {
    table-layout: fixed !important;
  }

  .mobile-standing-table .mobile-standing-logo-head,
  .mobile-standing-table .mobile-standing-logo-cell {
    width: 52px !important;
    text-align: center !important;
  }

  .mobile-standing-table .mobile-standing-logo-cell .club-logo {
    width: 28px;
    height: 28px;
    margin: 0 auto;
  }

  .mobile-standing-table th:nth-last-child(3),
  .mobile-standing-table td:nth-last-child(3),
  .mobile-standing-table th:nth-last-child(2),
  .mobile-standing-table td:nth-last-child(2) {
    width: 44px !important;
    text-align: right !important;
  }

  .mobile-standing-table th:last-child,
  .mobile-standing-table td:last-child {
    width: 58px !important;
    text-align: right !important;
  }

  .listone-table .listone-mantra-col,
  .listone-table .listone-fvm-col {
    display: none !important;
  }

  .listone-table .mobile-role-combo {
    display: inline-flex !important;
    flex-direction: column;
    gap: 1px;
    line-height: 1.05;
    max-width: 100%;
  }

  .listone-table .mobile-role-combo small {
    font-size: 0.58rem;
    color: #94a3b8;
    max-width: 54px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .listone-table .mobile-roster-logo-only .club-logo,
  .mobile-roster-logo-only .club-logo {
    width: 24px;
    height: 24px;
    margin: 0 auto;
  }

  .mobile-sv-label {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 22px;
    border-radius: 999px;
    background: rgba(148, 163, 184, 0.14);
    border: 1px solid rgba(148, 163, 184, 0.28);
    color: #cbd5e1;
    font-weight: 800;
    font-size: 0.64rem;
  }

  .listone-table th:nth-child(1),
  .listone-table td:nth-child(1) {
    width: 34% !important;
    min-width: 98px !important;
  }

  .listone-table th:nth-child(2),
  .listone-table td:nth-child(2) {
    width: 34px !important;
    text-align: center !important;
  }

  .listone-table th:nth-child(4),
  .listone-table td:nth-child(4) {
    width: 58px !important;
    text-align: center !important;
  }

  .listone-table th:nth-child(5),
  .listone-table td:nth-child(5) {
    width: 42px !important;
    text-align: center !important;
  }

  .listone-table th:nth-child(6),
  .listone-table td:nth-child(6) {
    width: 44px !important;
    text-align: right !important;
  }

  .listone-table th:nth-child(8),
  .listone-table td:nth-child(8) {
    width: 32px !important;
    text-align: center !important;
  }

  .listone-table th:nth-child(9),
  .listone-table td:nth-child(9) {
    width: 40px !important;
    text-align: center !important;
  }

  .listone-table .mobile-history-cell .link-button {
    font-weight: 900;
    font-size: 0.9rem;
    min-width: 28px;
  }

  .listone-table .mobile-status-cell .status-dot {
    width: 0.72rem;
    height: 0.72rem;
  }
}

body.is-mobile-ux .standing-table .standing-desktop-col {
  display: none !important;
}
body.is-mobile-ux .standing-table .mobile-only-col,
body.is-mobile-ux .standing-table .mobile-only-cell {
  display: table-cell !important;
}
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-cell {
  width: 52px !important;
  text-align: center !important;
}
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-cell .club-logo {
  width: 28px;
  height: 28px;
  margin: 0 auto;
}
body.is-mobile-ux .listone-table .listone-mantra-col,
body.is-mobile-ux .listone-table .listone-fvm-col {
  display: none !important;
}
body.is-mobile-ux .listone-table .mobile-role-combo {
  display: inline-flex !important;
  flex-direction: column;
  gap: 1px;
  line-height: 1.05;
  max-width: 100%;
}
body.is-mobile-ux .listone-table .mobile-role-combo small {
  font-size: 0.58rem;
  color: #94a3b8;
  max-width: 54px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.is-mobile-ux .mobile-sv-label {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 22px;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.14);
  border: 1px solid rgba(148, 163, 184, 0.28);
  color: #cbd5e1;
  font-weight: 800;
  font-size: 0.64rem;
}
body.is-mobile-ux .listone-table th:nth-child(1),
body.is-mobile-ux .listone-table td:nth-child(1) { width: 34% !important; min-width: 98px !important; }
body.is-mobile-ux .listone-table th:nth-child(2),
body.is-mobile-ux .listone-table td:nth-child(2) { width: 34px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(4),
body.is-mobile-ux .listone-table td:nth-child(4) { width: 58px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(5),
body.is-mobile-ux .listone-table td:nth-child(5) { width: 42px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(6),
body.is-mobile-ux .listone-table td:nth-child(6) { width: 44px !important; text-align: right !important; }
body.is-mobile-ux .listone-table th:nth-child(8),
body.is-mobile-ux .listone-table td:nth-child(8) { width: 32px !important; text-align: center !important; }
body.is-mobile-ux .listone-table th:nth-child(9),
body.is-mobile-ux .listone-table td:nth-child(9) { width: 40px !important; text-align: center !important; }
body.is-mobile-ux .mobile-standing-table th:nth-last-child(3),
body.is-mobile-ux .mobile-standing-table td:nth-last-child(3),
body.is-mobile-ux .mobile-standing-table th:nth-last-child(2),
body.is-mobile-ux .mobile-standing-table td:nth-last-child(2) { width: 44px !important; text-align: right !important; }
body.is-mobile-ux .mobile-standing-table th:last-child,
body.is-mobile-ux .mobile-standing-table td:last-child { width: 58px !important; text-align: right !important; }

/* V35: admin separators and refined mobile standings */
.soft-separator {
  border: 0;
  border-top: 1px solid rgba(148, 163, 184, 0.18);
  margin: 1.4rem 0;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-standing-table th.mobile-standing-position-head,
  .mobile-standing-table td.mobile-standing-position {
    width: 34px !important;
    text-align: center !important;
  }
}

body.is-mobile-ux .mobile-standing-table th.mobile-standing-position-head,
body.is-mobile-ux .mobile-standing-table td.mobile-standing-position {
  width: 34px !important;
  text-align: center !important;
}

body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-cell {
  width: 42px !important;
  text-align: center !important;
}

body.is-mobile-ux .mobile-standing-table th:nth-last-child(3),
body.is-mobile-ux .mobile-standing-table td:nth-last-child(3),
body.is-mobile-ux .mobile-standing-table th:nth-last-child(2),
body.is-mobile-ux .mobile-standing-table td:nth-last-child(2) {
  width: 42px !important;
  text-align: right !important;
}

body.is-mobile-ux .mobile-standing-table th:last-child,
body.is-mobile-ux .mobile-standing-table td:last-child {
  width: 52px !important;
  text-align: right !important;
}

/* V37 - Presidenti multipli e separatore presidente/squadra */
.president-team-separator {
  display: inline-block;
  margin: 0 0.35rem;
  opacity: 0.75;
}
.president-team-name {
  opacity: 0.9;
}
select[multiple].input {
  min-height: 7rem;
  padding-top: 0.45rem;
  padding-bottom: 0.45rem;
}
select[multiple].input option {
  padding: 0.2rem 0.35rem;
}


/* V1.1 - mobile standings fix and honor roll competition sections */
.honor-overall-section,
.honor-competition-sections {
  display: grid;
  gap: 0.75rem;
}

.honor-competition-sections {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--border);
}

.honor-overall-section h3,
.honor-competition-sections h3 {
  margin: 0;
  font-size: 1rem;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-standing-table .mobile-standing-position-head,
  .mobile-standing-table .mobile-standing-position {
    width: 30px !important;
    text-align: center !important;
  }

  .mobile-standing-table .mobile-standing-logo-head,
  .mobile-standing-table .mobile-standing-logo-cell {
    width: 48px !important;
    text-align: center !important;
  }

  .mobile-standing-table th:nth-last-child(2),
  .mobile-standing-table td:nth-last-child(2),
  .mobile-standing-table th:last-child,
  .mobile-standing-table td:last-child {
    width: 54px !important;
    text-align: right !important;
  }
}

body.is-mobile-ux .mobile-standing-table .mobile-standing-position-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-position {
  width: 30px !important;
  text-align: center !important;
}

body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-cell {
  width: 48px !important;
  text-align: center !important;
}

body.is-mobile-ux .mobile-standing-table th:nth-last-child(2),
body.is-mobile-ux .mobile-standing-table td:nth-last-child(2),
body.is-mobile-ux .mobile-standing-table th:last-child,
body.is-mobile-ux .mobile-standing-table td:last-child {
  width: 54px !important;
  text-align: right !important;
}

/* V1.2 - Mobile-only refinements requested after V1 complete.
   Desktop remains unchanged. */
.mobile-honor-only,
.mobile-competition-heading,
.competition-mobile-summary {
  display: none;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Standings mobile: exactly # | SQ | G | PT | FPT */
  .standing-table .standing-desktop-col {
    display: none !important;
  }
  .standing-table .mobile-only-col,
  .standing-table .mobile-only-cell {
    display: table-cell !important;
  }
  .mobile-standing-table th,
  .mobile-standing-table td {
    font-size: 0.68rem !important;
    padding: 6px 4px !important;
  }
  .mobile-standing-table .mobile-standing-position-head,
  .mobile-standing-table .mobile-standing-position {
    width: 28px !important;
    text-align: center !important;
  }
  .mobile-standing-table .mobile-standing-logo-head,
  .mobile-standing-table .mobile-standing-logo-cell {
    width: 42px !important;
    text-align: center !important;
  }
  .mobile-standing-table .mobile-standing-logo-cell .club-logo {
    width: 26px !important;
    height: 26px !important;
  }
  .mobile-standing-table .mobile-standing-played-head,
  .mobile-standing-table .mobile-standing-played,
  .mobile-standing-table .mobile-standing-points-head,
  .mobile-standing-table .mobile-standing-points {
    width: 38px !important;
    text-align: right !important;
  }
  .mobile-standing-table .mobile-standing-fpt-head,
  .mobile-standing-table .mobile-standing-fpt {
    width: 48px !important;
    text-align: right !important;
  }

  /* Mobile Honor Roll summary tables. */
  .desktop-honor-summary,
  .desktop-honor-table {
    display: none !important;
  }
  .mobile-honor-only {
    display: block !important;
  }
  .mobile-honor-table-wrap {
    max-height: min(62vh, 520px);
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 14px;
  }
  .mobile-honor-table {
    display: table !important;
    width: 100% !important;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.72rem;
  }
  .mobile-honor-table thead { display: table-header-group !important; }
  .mobile-honor-table tbody { display: table-row-group !important; }
  .mobile-honor-table tr { display: table-row !important; padding: 0 !important; border: 0 !important; background: transparent !important; }
  .mobile-honor-table th,
  .mobile-honor-table td {
    display: table-cell !important;
    padding: 7px 5px !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
  }
  .mobile-honor-table th {
    position: sticky;
    top: 0;
    z-index: 3;
    background: rgba(15, 23, 42, 0.98);
    color: #e5e7eb;
    font-size: 0.62rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }
  .mobile-honor-table td::before,
  .mobile-honor-table th::before {
    content: none !important;
    display: none !important;
  }
  .mobile-honor-table th:first-child,
  .mobile-honor-table td:first-child { width: auto !important; min-width: 104px; }
  .mobile-honor-table th:not(:first-child),
  .mobile-honor-table td:not(:first-child) { width: 34px !important; text-align: right !important; }
  .honor-competition-mobile-table th:not(:first-child),
  .honor-competition-mobile-table td:not(:first-child) { width: 42px !important; }

  /* Mobile competitions page: list competitions directly as collapsible cards. */
  .app-page[data-page="competitions"] > .panel > .panel-header {
    display: none !important;
  }
  .app-page[data-page="competitions"] > .panel {
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
  }
  .competition-detail-card {
    padding: 0 !important;
    overflow: hidden;
  }
  .competition-mobile-summary {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 11px 12px;
    cursor: pointer;
    color: var(--text);
  }
  .competition-mobile-summary span {
    color: var(--muted);
    font-size: 0.7rem;
    text-transform: lowercase;
  }
  .competition-desktop-header,
  .desktop-competition-heading {
    display: none !important;
  }
  .mobile-competition-heading {
    display: block !important;
    margin: 0 0 6px !important;
    font-size: 0.82rem !important;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
  }
  .competition-card-body {
    padding: 0 10px 10px;
  }

  /* Mobile cup podio: only teams, no extra labels/text. */
  .competition-card .podium-list {
    gap: 6px;
  }
  .competition-card .podium-list .stack-item {
    display: block !important;
    padding: 7px 8px !important;
  }
  .competition-card .podium-list .stack-item small,
  .competition-card .podium-list .stack-item-side {
    display: none !important;
  }

  /* Mobile matches inside a competition: one compact line, no competition name or FP. */
  .mobile-match-line {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    font-size: 0.78rem;
  }
  .mobile-match-line strong {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mobile-match-line > span:last-child {
    flex: 0 0 auto;
    font-weight: 900;
    color: var(--text);
  }
  .match-desktop-content {
    display: none !important;
  }
}

body.is-mobile-ux .standing-table .standing-desktop-col { display: none !important; }
body.is-mobile-ux .standing-table .mobile-only-col,
body.is-mobile-ux .standing-table .mobile-only-cell { display: table-cell !important; }
body.is-mobile-ux .mobile-standing-table .mobile-standing-position-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-position { width: 28px !important; text-align: center !important; }
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-logo-cell { width: 42px !important; text-align: center !important; }
body.is-mobile-ux .mobile-standing-table .mobile-standing-played-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-played,
body.is-mobile-ux .mobile-standing-table .mobile-standing-points-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-points { width: 38px !important; text-align: right !important; }
body.is-mobile-ux .mobile-standing-table .mobile-standing-fpt-head,
body.is-mobile-ux .mobile-standing-table .mobile-standing-fpt { width: 48px !important; text-align: right !important; }
body.is-mobile-ux .desktop-honor-summary,
body.is-mobile-ux .desktop-honor-table { display: none !important; }
body.is-mobile-ux .mobile-honor-only { display: block !important; }
body.is-mobile-ux .app-page[data-page="competitions"] > .panel > .panel-header { display: none !important; }
body.is-mobile-ux .competition-mobile-summary { display: flex !important; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 12px; cursor: pointer; }
body.is-mobile-ux .competition-desktop-header,
body.is-mobile-ux .desktop-competition-heading { display: none !important; }
body.is-mobile-ux .mobile-competition-heading { display: block !important; }
body.is-mobile-ux .competition-card-body { padding: 0 10px 10px; }
body.is-mobile-ux .competition-card .podium-list .stack-item small,
body.is-mobile-ux .competition-card .podium-list .stack-item-side { display: none !important; }
body.is-mobile-ux .mobile-match-line { display: flex !important; align-items: center; justify-content: space-between; gap: 8px; width: 100%; font-size: 0.78rem; }
body.is-mobile-ux .match-desktop-content { display: none !important; }
.mobile-match-line {
  display: none;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-match-line { display: flex !important; }
}
body.is-mobile-ux .mobile-match-line { display: flex !important; }

/* V1.3 mobile fixes: standings duplicate columns, bottom navigation visibility, match cards with logos. */
.mobile-match-card,
.mobile-match-card-list {
  display: none;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Force the mobile bottom navigation to be visible on Samsung Internet/Brave. */
  body {
    padding-bottom: 96px !important;
  }

  .mobile-bottom-nav {
    position: fixed !important;
    left: 10px !important;
    right: 10px !important;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
    z-index: 99999 !important;
    display: grid !important;
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
    gap: 6px !important;
    padding: 8px !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 24px !important;
    background: rgba(15, 23, 42, 0.98) !important;
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.48) !important;
    backdrop-filter: blur(16px);
  }

  /* Standings: hide desktop cells hard, keep only # | SQ | G | PT | FPT. */
  .standing-table.mobile-standing-table th.standing-desktop-col,
  .standing-table.mobile-standing-table td.standing-desktop-col,
  .standing-table.mobile-standing-table th.standing-optional,
  .standing-table.mobile-standing-table td.standing-optional {
    display: none !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
  }

  .standing-table.mobile-standing-table th.mobile-only-col,
  .standing-table.mobile-standing-table td.mobile-only-cell {
    display: table-cell !important;
  }

  .standing-table-wrap table.mobile-standing-table {
    table-layout: fixed !important;
    width: 100% !important;
    min-width: 0 !important;
  }

  .standing-table-wrap .mobile-standing-position-head,
  .standing-table-wrap .mobile-standing-position {
    width: 30px !important;
    text-align: center !important;
  }

  .standing-table-wrap .mobile-standing-logo-head,
  .standing-table-wrap .mobile-standing-logo-cell {
    width: auto !important;
    text-align: center !important;
  }

  .standing-table-wrap .mobile-standing-logo-cell .club-logo {
    width: 30px !important;
    height: 30px !important;
    margin: 0 auto !important;
  }

  .standing-table-wrap .mobile-standing-played-head,
  .standing-table-wrap .mobile-standing-played,
  .standing-table-wrap .mobile-standing-points-head,
  .standing-table-wrap .mobile-standing-points {
    width: 42px !important;
    text-align: right !important;
  }

  .standing-table-wrap .mobile-standing-fpt-head,
  .standing-table-wrap .mobile-standing-fpt {
    width: 58px !important;
    text-align: right !important;
  }

  /* Mobile match rendering: logos + result + names below logos. */
  .match-stack-item {
    padding: 8px !important;
  }

  .match-stack-item .match-desktop-content {
    display: none !important;
  }

  .mobile-match-line {
    display: none !important;
  }

  .mobile-match-card {
    display: grid !important;
    gap: 6px;
    width: 100%;
  }

  .mobile-match-card-list {
    display: grid !important;
    gap: 8px;
  }

  .match-table-desktop {
    display: none !important;
  }

  .mobile-match-meta {
    color: var(--muted);
    font-size: 0.68rem;
    font-weight: 800;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }

  .mobile-match-scoreboard {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: start;
    gap: 10px;
    width: 100%;
  }

  .mobile-match-team {
    display: grid;
    justify-items: center;
    gap: 4px;
    min-width: 0;
  }

  .mobile-match-team .club-logo {
    width: 36px;
    height: 36px;
  }

  .mobile-match-team span {
    display: block;
    max-width: 100%;
    color: var(--text);
    font-size: 0.68rem;
    font-weight: 800;
    line-height: 1.1;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .mobile-match-score {
    align-self: center;
    min-width: 46px;
    padding: 5px 7px;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.72);
    color: var(--text);
    font-size: 0.9rem;
    line-height: 1;
    text-align: center;
  }

  .mobile-match-note {
    display: block;
    color: var(--muted);
    font-size: 0.68rem;
    text-align: center;
  }
}

body.is-mobile-ux {
  padding-bottom: 96px !important;
}
body.is-mobile-ux .mobile-bottom-nav {
  position: fixed !important;
  left: 10px !important;
  right: 10px !important;
  bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 99999 !important;
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 6px !important;
  padding: 8px !important;
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
  border-radius: 24px !important;
  background: rgba(15, 23, 42, 0.98) !important;
  box-shadow: 0 18px 60px rgba(0, 0, 0, 0.48) !important;
}
body.is-mobile-ux .standing-table.mobile-standing-table th.standing-desktop-col,
body.is-mobile-ux .standing-table.mobile-standing-table td.standing-desktop-col,
body.is-mobile-ux .standing-table.mobile-standing-table th.standing-optional,
body.is-mobile-ux .standing-table.mobile-standing-table td.standing-optional {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
}
body.is-mobile-ux .standing-table.mobile-standing-table th.mobile-only-col,
body.is-mobile-ux .standing-table.mobile-standing-table td.mobile-only-cell {
  display: table-cell !important;
}
body.is-mobile-ux .standing-table-wrap .mobile-standing-position-head,
body.is-mobile-ux .standing-table-wrap .mobile-standing-position { width: 30px !important; text-align: center !important; }
body.is-mobile-ux .standing-table-wrap .mobile-standing-logo-head,
body.is-mobile-ux .standing-table-wrap .mobile-standing-logo-cell { width: auto !important; text-align: center !important; }
body.is-mobile-ux .standing-table-wrap .mobile-standing-played-head,
body.is-mobile-ux .standing-table-wrap .mobile-standing-played,
body.is-mobile-ux .standing-table-wrap .mobile-standing-points-head,
body.is-mobile-ux .standing-table-wrap .mobile-standing-points { width: 42px !important; text-align: right !important; }
body.is-mobile-ux .standing-table-wrap .mobile-standing-fpt-head,
body.is-mobile-ux .standing-table-wrap .mobile-standing-fpt { width: 58px !important; text-align: right !important; }
body.is-mobile-ux .match-stack-item .match-desktop-content,
body.is-mobile-ux .mobile-match-line,
body.is-mobile-ux .match-table-desktop { display: none !important; }
body.is-mobile-ux .mobile-match-card { display: grid !important; gap: 6px; width: 100%; }
body.is-mobile-ux .mobile-match-card-list { display: grid !important; gap: 8px; }
body.is-mobile-ux .mobile-match-scoreboard { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: start; gap: 10px; width: 100%; }
body.is-mobile-ux .mobile-match-team { display: grid; justify-items: center; gap: 4px; min-width: 0; }
body.is-mobile-ux .mobile-match-team .club-logo { width: 36px; height: 36px; }
body.is-mobile-ux .mobile-match-team span { display: block; max-width: 100%; color: var(--text); font-size: 0.68rem; font-weight: 800; line-height: 1.1; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.is-mobile-ux .mobile-match-score { align-self: center; min-width: 46px; padding: 5px 7px; border: 1px solid rgba(148, 163, 184, 0.24); border-radius: 999px; background: rgba(15, 23, 42, 0.72); color: var(--text); font-size: 0.9rem; line-height: 1; text-align: center; }
body.is-mobile-ux .mobile-match-meta,
body.is-mobile-ux .mobile-match-note { color: var(--muted); font-size: 0.68rem; font-weight: 800; text-align: center; }


/* v1.4 - mobile navigation restore, hard standing cleanup and honor logo/name cell. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  body {
    padding-bottom: calc(104px + env(safe-area-inset-bottom, 0px)) !important;
  }

  .mobile-bottom-nav {
    position: fixed !important;
    left: 10px !important;
    right: 10px !important;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
    z-index: 2147483000 !important;
    display: grid !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
    gap: 6px !important;
    padding: 8px !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 24px !important;
    background: rgba(15, 23, 42, 0.98) !important;
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.48) !important;
    backdrop-filter: blur(16px);
  }

  .mobile-bottom-link {
    display: grid !important;
  }

  /* Most robust fix: remove every desktop standing column by position, then show only # | SQ | G | PT | FPT. */
  .standing-table.mobile-standing-table th:nth-child(-n+11),
  .standing-table.mobile-standing-table td:nth-child(-n+11) {
    display: none !important;
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    overflow: hidden !important;
  }

  .standing-table.mobile-standing-table th:nth-child(n+12),
  .standing-table.mobile-standing-table td:nth-child(n+12) {
    display: table-cell !important;
    padding: 7px 4px !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important;
  }

  .standing-table.mobile-standing-table th:nth-child(12),
  .standing-table.mobile-standing-table td:nth-child(12) {
    width: 30px !important;
    text-align: center !important;
  }

  .standing-table.mobile-standing-table th:nth-child(13),
  .standing-table.mobile-standing-table td:nth-child(13) {
    width: auto !important;
    text-align: center !important;
  }

  .standing-table.mobile-standing-table th:nth-child(14),
  .standing-table.mobile-standing-table td:nth-child(14),
  .standing-table.mobile-standing-table th:nth-child(15),
  .standing-table.mobile-standing-table td:nth-child(15) {
    width: 42px !important;
    text-align: right !important;
  }

  .standing-table.mobile-standing-table th:nth-child(16),
  .standing-table.mobile-standing-table td:nth-child(16) {
    width: 58px !important;
    text-align: right !important;
  }

  .mobile-honor-president-cell {
    display: grid !important;
    justify-items: center;
    gap: 3px;
    width: 100%;
    color: var(--text);
    text-align: center;
    text-decoration: none;
  }

  .mobile-honor-president-cell .club-logo {
    width: 30px;
    height: 30px;
  }

  .mobile-honor-president-cell span {
    display: block;
    max-width: 100%;
    font-size: 0.66rem;
    font-weight: 900;
    line-height: 1.1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .mobile-honor-president-cell small {
    display: none;
  }
}

body.is-mobile-ux {
  padding-bottom: calc(104px + env(safe-area-inset-bottom, 0px)) !important;
}

body.is-mobile-ux .mobile-bottom-nav {
  position: fixed !important;
  left: 10px !important;
  right: 10px !important;
  bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 2147483000 !important;
  display: grid !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 6px !important;
  padding: 8px !important;
  border: 1px solid rgba(255, 255, 255, 0.14) !important;
  border-radius: 24px !important;
  background: rgba(15, 23, 42, 0.98) !important;
  box-shadow: 0 18px 60px rgba(0, 0, 0, 0.48) !important;
}

body.is-mobile-ux .mobile-bottom-link {
  display: grid !important;
}

body.is-mobile-ux .standing-table.mobile-standing-table th:nth-child(-n+11),
body.is-mobile-ux .standing-table.mobile-standing-table td:nth-child(-n+11) {
  display: none !important;
  width: 0 !important;
  min-width: 0 !important;
  max-width: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
}

body.is-mobile-ux .standing-table.mobile-standing-table th:nth-child(n+12),
body.is-mobile-ux .standing-table.mobile-standing-table td:nth-child(n+12) {
  display: table-cell !important;
}

body.is-mobile-ux .mobile-honor-president-cell {
  display: grid !important;
  justify-items: center;
  gap: 3px;
  width: 100%;
  color: var(--text);
  text-align: center;
}

body.is-mobile-ux .mobile-honor-president-cell .club-logo {
  width: 30px;
  height: 30px;
}

body.is-mobile-ux .mobile-honor-president-cell span {
  display: block;
  max-width: 100%;
  font-size: 0.66rem;
  font-weight: 900;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.is-mobile-ux .mobile-honor-president-cell small {
  display: none;
}

/* Firebase admin additions */
.admin-collapsible-panel .panel-actions {
  align-self: flex-start;
}

.logo-admin-preview {
  min-height: 76px;
  align-items: center;
}

.logo-admin-preview .club-logo-lg {
  width: 64px;
  height: 64px;
  font-size: 1rem;
}

.admin-list-item .club-name-with-logo {
  gap: 0.5rem;
}

/* Firebase admin V3: season teams, results and palmares */
.result-editor-card {
  display: grid;
  gap: 0.75rem;
}

.result-admin-table-wrap table {
  min-width: 720px;
}

.result-admin-table-wrap select.input,
.result-admin-table-wrap input.input {
  min-width: 0;
  padding: 8px 9px;
}

.result-table-wrap table {
  min-width: 560px;
}

.palmares-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.palmares-grid .compact-card {
  display: grid;
  gap: 8px;
}

.palmares-grid .compact-card h3 {
  margin: 0;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .palmares-grid {
    grid-template-columns: 1fr;
  }

  .result-admin-table-wrap,
  .result-table-wrap {
    overflow-x: auto !important;
  }
}

/* Firebase admin V5: matches, stadiums and FIFA ranking */
.match-table-wrap table,
.fifa-ranking-table-wrap table {
  min-width: 680px;
}

.admin-collapsible-panel.is-collapsed .panel-header {
  margin-bottom: 0;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .match-table-wrap,
  .fifa-ranking-table-wrap {
    overflow-x: auto !important;
  }
}


/* Firebase admin V7: compact mobile layout and working bottom navigation. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-header {
    padding: 14px 0 8px !important;
  }

  .header-grid {
    gap: 10px !important;
  }

  .header-actions {
    grid-template-columns: 1fr 1fr !important;
    gap: 7px !important;
  }

  .header-actions .season-switcher {
    grid-column: 1 / -1;
  }

  .app-main {
    padding-top: 8px !important;
  }

  .page-heading,
  .season-control-panel,
  .metric-card,
  .panel,
  .compact-card,
  .news-card,
  .competition-card,
  .stack-item,
  .movement-item,
  .stadium-item,
  .admin-list-item {
    padding: 10px !important;
    border-radius: 14px !important;
    margin-bottom: 8px !important;
  }

  .page-heading h2,
  .panel-header h2,
  .season-control-panel h3 {
    font-size: 1.05rem !important;
    line-height: 1.15 !important;
    margin-bottom: 2px !important;
  }

  .page-heading p,
  .panel-header p,
  .season-control-panel p,
  .muted,
  .small,
  .field-hint {
    font-size: 0.78rem !important;
    line-height: 1.3 !important;
  }

  .cards-grid,
  .grid-two,
  .dashboard-grid,
  .palmares-grid,
  .stack-list,
  .news-list,
  .competition-list,
  .admin-list {
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  .panel-header,
  .admin-list-item,
  .stack-item,
  .movement-item,
  .stadium-item {
    display: grid !important;
    gap: 8px !important;
    align-items: stretch !important;
  }

  .panel-actions,
  .form-actions,
  .admin-list-item > span:last-child {
    display: flex !important;
    gap: 7px !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
  }

  .form-grid {
    grid-template-columns: 1fr !important;
    gap: 9px !important;
  }

  .span-2 {
    grid-column: auto !important;
  }

  .input,
  .button,
  .button-small,
  .filter-input,
  .search-input {
    min-height: 38px !important;
    font-size: 15px !important;
  }

  .admin-collapsible-panel.is-collapsed {
    padding-bottom: 10px !important;
  }

  .admin-collapsible-panel.is-collapsed > :not(.panel-header) {
    display: none !important;
  }

  .admin-edit-section summary {
    display: grid !important;
    grid-template-columns: 1fr auto;
    gap: 8px;
  }

  .logo-admin-preview {
    min-height: 58px !important;
  }

  .logo-admin-preview .club-logo-lg {
    width: 52px !important;
    height: 52px !important;
  }

  .table-wrap,
  .result-admin-table-wrap,
  .result-table-wrap,
  .match-table-wrap,
  .fifa-ranking-table-wrap,
  .honor-table-wrap {
    max-height: min(64vh, 520px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
    border-radius: 14px;
  }

  .table-wrap table,
  .result-admin-table-wrap table,
  .result-table-wrap table,
  .match-table-wrap table,
  .fifa-ranking-table-wrap table,
  .honor-table-wrap table {
    font-size: 0.72rem !important;
  }

  .mobile-bottom-nav {
    position: fixed !important;
    display: grid !important;
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
    left: 10px !important;
    right: 10px !important;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
    z-index: 2147483000 !important;
  }

  .mobile-bottom-link {
    display: grid !important;
    place-items: center !important;
    gap: 2px !important;
    min-height: 44px !important;
    font-size: 0.64rem !important;
  }

  .mobile-nav-icon {
    font-size: 1rem !important;
  }

  .mobile-more-sheet:not(.hidden),
  .mobile-more-backdrop:not(.hidden) {
    display: grid !important;
  }
}

body.is-mobile-ux .app-header {
  padding: 14px 0 8px !important;
}

body.is-mobile-ux .page-heading,
body.is-mobile-ux .season-control-panel,
body.is-mobile-ux .metric-card,
body.is-mobile-ux .panel,
body.is-mobile-ux .compact-card,
body.is-mobile-ux .news-card,
body.is-mobile-ux .competition-card,
body.is-mobile-ux .stack-item,
body.is-mobile-ux .movement-item,
body.is-mobile-ux .stadium-item,
body.is-mobile-ux .admin-list-item {
  padding: 10px !important;
  border-radius: 14px !important;
  margin-bottom: 8px !important;
}

body.is-mobile-ux .cards-grid,
body.is-mobile-ux .grid-two,
body.is-mobile-ux .dashboard-grid,
body.is-mobile-ux .palmares-grid,
body.is-mobile-ux .stack-list,
body.is-mobile-ux .news-list,
body.is-mobile-ux .competition-list,
body.is-mobile-ux .admin-list {
  grid-template-columns: 1fr !important;
  gap: 8px !important;
}

body.is-mobile-ux .mobile-bottom-nav {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
}

body.is-mobile-ux .mobile-more-sheet:not(.hidden),
body.is-mobile-ux .mobile-more-backdrop:not(.hidden) {
  display: grid !important;
}

/* V8 - Mobile compact real tables and collapsible public sections. */
.content-collapsible-panel > .panel-header,
.content-collapsible-panel > .news-card-header,
.content-collapsible-panel > .competition-card-header,
.content-collapsible-panel > .compact-card-header {
  align-items: flex-start;
}

.content-collapsible-panel.section-is-collapsed > :not(.panel-header):not(.news-card-header):not(.competition-card-header):not(.compact-card-header) {
  display: none !important;
}

.section-toggle-button {
  white-space: nowrap;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .panel-header,
  .news-card-header,
  .competition-card-header,
  .compact-card-header {
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 8px !important;
  }

  .panel-header > div:first-child,
  .news-card-header > div:first-child,
  .competition-card-header > div:first-child,
  .compact-card-header > div:first-child {
    min-width: 0;
  }

  .panel-actions {
    width: auto !important;
    flex: 0 0 auto;
    display: flex !important;
    justify-content: flex-end !important;
    gap: 6px !important;
  }

  .section-toggle-button,
  [data-admin-toggle-panel] {
    min-height: 30px !important;
    padding: 5px 8px !important;
    font-size: 0.68rem !important;
    border-radius: 999px !important;
  }

  /* Keep every mobile table as an actual table, not as stacked cards. */
  .table-wrap,
  .compact-table,
  .mini-table-wrap,
  .honor-table-wrap,
  .honor-cup-content,
  .mobile-tabular-wrap,
  .standing-table-wrap,
  .roster-dialog-table {
    max-height: min(58vh, 500px) !important;
    height: auto !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 12px;
  }

  .table-wrap table,
  .compact-table table,
  .mini-table-wrap table,
  .honor-table-wrap table,
  .honor-cup-content table,
  .mobile-tabular-wrap table,
  .standing-table-wrap table,
  .roster-dialog-table table {
    display: table !important;
    width: 100% !important;
    min-width: max-content !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    table-layout: auto !important;
    font-size: 0.62rem !important;
  }

  .table-wrap thead,
  .compact-table thead,
  .mini-table-wrap thead,
  .honor-table-wrap thead,
  .honor-cup-content thead,
  .mobile-tabular-wrap thead,
  .standing-table-wrap thead,
  .roster-dialog-table thead {
    display: table-header-group !important;
  }

  .table-wrap tbody,
  .compact-table tbody,
  .mini-table-wrap tbody,
  .honor-table-wrap tbody,
  .honor-cup-content tbody,
  .mobile-tabular-wrap tbody,
  .standing-table-wrap tbody,
  .roster-dialog-table tbody {
    display: table-row-group !important;
    gap: 0 !important;
  }

  .table-wrap tr,
  .compact-table tr,
  .mini-table-wrap tr,
  .honor-table-wrap tr,
  .honor-cup-content tr,
  .mobile-tabular-wrap tr,
  .standing-table-wrap tr,
  .roster-dialog-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  .table-wrap th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  .honor-cup-content th,
  .mobile-tabular-wrap th,
  .standing-table-wrap th,
  .roster-dialog-table th,
  .table-wrap td,
  .compact-table td,
  .mini-table-wrap td,
  .honor-table-wrap td,
  .honor-cup-content td,
  .mobile-tabular-wrap td,
  .standing-table-wrap td,
  .roster-dialog-table td {
    display: table-cell !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 140px;
    min-height: 0 !important;
    padding: 4px 5px !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.16) !important;
    text-align: left;
    vertical-align: middle !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    font-size: 0.62rem !important;
    line-height: 1.15 !important;
  }

  .table-wrap th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  .honor-cup-content th,
  .mobile-tabular-wrap th,
  .standing-table-wrap th,
  .roster-dialog-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 5 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    color: #e5e7eb !important;
    font-size: 0.58rem !important;
    font-weight: 900 !important;
    letter-spacing: 0.035em !important;
    text-transform: uppercase !important;
  }

  .table-wrap td::before,
  .compact-table td::before,
  .mini-table-wrap td::before,
  .honor-table-wrap td::before,
  .honor-cup-content td::before,
  .mobile-tabular-wrap td::before,
  .standing-table-wrap td::before,
  .roster-dialog-table td::before {
    content: none !important;
    display: none !important;
  }

  .table-wrap .number,
  .compact-table .number,
  .mini-table-wrap .number,
  .honor-table-wrap .number,
  .honor-cup-content .number,
  .mobile-tabular-wrap .number,
  .standing-table-wrap .number,
  .roster-dialog-table .number {
    text-align: right !important;
  }

  .table-wrap .button-small,
  .compact-table .button-small,
  .mini-table-wrap .button-small,
  .honor-table-wrap .button-small,
  .honor-cup-content .button-small,
  .mobile-tabular-wrap .button-small,
  .standing-table-wrap .button-small,
  .roster-dialog-table .button-small {
    min-height: 24px !important;
    padding: 3px 6px !important;
    font-size: 0.58rem !important;
    border-radius: 8px !important;
  }

  .club-logo {
    width: 20px !important;
    height: 20px !important;
    font-size: 0.58rem !important;
  }

  .status,
  .mini-badge {
    padding: 2px 5px !important;
    font-size: 0.56rem !important;
  }
}

/* Same V8 mobile table behavior for JS fallback mobile class. */
body.is-mobile-ux .table-wrap,
body.is-mobile-ux .compact-table,
body.is-mobile-ux .mini-table-wrap,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .honor-cup-content,
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .standing-table-wrap,
body.is-mobile-ux .roster-dialog-table {
  max-height: min(58vh, 500px) !important;
  height: auto !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 12px;
}

body.is-mobile-ux .table-wrap table,
body.is-mobile-ux .compact-table table,
body.is-mobile-ux .mini-table-wrap table,
body.is-mobile-ux .honor-table-wrap table,
body.is-mobile-ux .honor-cup-content table,
body.is-mobile-ux .mobile-tabular-wrap table,
body.is-mobile-ux .standing-table-wrap table,
body.is-mobile-ux .roster-dialog-table table {
  display: table !important;
  width: 100% !important;
  min-width: max-content !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  table-layout: auto !important;
  font-size: 0.62rem !important;
}

body.is-mobile-ux .table-wrap thead,
body.is-mobile-ux .compact-table thead,
body.is-mobile-ux .mini-table-wrap thead,
body.is-mobile-ux .honor-table-wrap thead,
body.is-mobile-ux .honor-cup-content thead,
body.is-mobile-ux .mobile-tabular-wrap thead,
body.is-mobile-ux .standing-table-wrap thead,
body.is-mobile-ux .roster-dialog-table thead { display: table-header-group !important; }
body.is-mobile-ux .table-wrap tbody,
body.is-mobile-ux .compact-table tbody,
body.is-mobile-ux .mini-table-wrap tbody,
body.is-mobile-ux .honor-table-wrap tbody,
body.is-mobile-ux .honor-cup-content tbody,
body.is-mobile-ux .mobile-tabular-wrap tbody,
body.is-mobile-ux .standing-table-wrap tbody,
body.is-mobile-ux .roster-dialog-table tbody { display: table-row-group !important; gap: 0 !important; }
body.is-mobile-ux .table-wrap tr,
body.is-mobile-ux .compact-table tr,
body.is-mobile-ux .mini-table-wrap tr,
body.is-mobile-ux .honor-table-wrap tr,
body.is-mobile-ux .honor-cup-content tr,
body.is-mobile-ux .mobile-tabular-wrap tr,
body.is-mobile-ux .standing-table-wrap tr,
body.is-mobile-ux .roster-dialog-table tr { display: table-row !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; }
body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux .honor-cup-content th,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .standing-table-wrap th,
body.is-mobile-ux .roster-dialog-table th,
body.is-mobile-ux .table-wrap td,
body.is-mobile-ux .compact-table td,
body.is-mobile-ux .mini-table-wrap td,
body.is-mobile-ux .honor-table-wrap td,
body.is-mobile-ux .honor-cup-content td,
body.is-mobile-ux .mobile-tabular-wrap td,
body.is-mobile-ux .standing-table-wrap td,
body.is-mobile-ux .roster-dialog-table td { display: table-cell !important; width: auto !important; min-width: 0 !important; max-width: 140px; min-height: 0 !important; padding: 4px 5px !important; border-bottom: 1px solid rgba(148, 163, 184, 0.16) !important; text-align: left; vertical-align: middle !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; font-size: 0.62rem !important; line-height: 1.15 !important; }
body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux .honor-cup-content th,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .standing-table-wrap th,
body.is-mobile-ux .roster-dialog-table th { position: sticky !important; top: 0 !important; z-index: 5 !important; background: rgba(15, 23, 42, 0.98) !important; color: #e5e7eb !important; font-size: 0.58rem !important; font-weight: 900 !important; letter-spacing: 0.035em !important; text-transform: uppercase !important; }
body.is-mobile-ux .table-wrap td::before,
body.is-mobile-ux .compact-table td::before,
body.is-mobile-ux .mini-table-wrap td::before,
body.is-mobile-ux .honor-table-wrap td::before,
body.is-mobile-ux .honor-cup-content td::before,
body.is-mobile-ux .mobile-tabular-wrap td::before,
body.is-mobile-ux .standing-table-wrap td::before,
body.is-mobile-ux .roster-dialog-table td::before { content: none !important; display: none !important; }
body.is-mobile-ux .table-wrap .number,
body.is-mobile-ux .compact-table .number,
body.is-mobile-ux .mini-table-wrap .number,
body.is-mobile-ux .honor-table-wrap .number,
body.is-mobile-ux .honor-cup-content .number,
body.is-mobile-ux .mobile-tabular-wrap .number,
body.is-mobile-ux .standing-table-wrap .number,
body.is-mobile-ux .roster-dialog-table .number { text-align: right !important; }

/* V9 - Palmarès by competition as compact tables; Playoff palmarès hidden in app rendering. */
.palmares-competition-card {
  display: grid;
  gap: 10px;
}

.palmares-competition-card .compact-card-header h3 {
  margin: 0 0 3px;
}

.palmares-competition-card .compact-card-header p {
  margin: 0;
}

.palmares-table-wrap table {
  min-width: 320px;
}

.palmares-table th:first-child,
.palmares-table td:first-child {
  width: 48px;
}

.palmares-table th:last-child,
.palmares-table td:last-child {
  width: 78px;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .palmares-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 8px !important;
  }

  .palmares-competition-card {
    gap: 7px !important;
  }

  .palmares-competition-card .compact-card-header h3 {
    font-size: 0.92rem !important;
  }

  .palmares-competition-card .compact-card-header p {
    display: none !important;
  }

  .palmares-table-wrap {
    max-height: min(42vh, 360px) !important;
  }

  .palmares-table-wrap table {
    min-width: 270px !important;
    font-size: 0.58rem !important;
  }

  .palmares-table th,
  .palmares-table td {
    padding: 3px 4px !important;
    font-size: 0.58rem !important;
    line-height: 1.1 !important;
  }

  .palmares-table th:first-child,
  .palmares-table td:first-child {
    width: 30px !important;
  }

  .palmares-table th:last-child,
  .palmares-table td:last-child {
    width: 46px !important;
  }
}

body.is-mobile-ux .palmares-grid {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 8px !important;
}

body.is-mobile-ux .palmares-table-wrap {
  max-height: min(42vh, 360px) !important;
}

body.is-mobile-ux .palmares-table-wrap table {
  min-width: 270px !important;
  font-size: 0.58rem !important;
}

body.is-mobile-ux .palmares-table th,
body.is-mobile-ux .palmares-table td {
  padding: 3px 4px !important;
  font-size: 0.58rem !important;
  line-height: 1.1 !important;
}

body.is-mobile-ux .palmares-table th:first-child,
body.is-mobile-ux .palmares-table td:first-child {
  width: 30px !important;
}

body.is-mobile-ux .palmares-table th:last-child,
body.is-mobile-ux .palmares-table td:last-child {
  width: 46px !important;
}

/* V11 - Competition detail polish */
.match-teams-line {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
}

.match-separator {
  color: var(--muted);
  font-weight: 800;
}

.competition-matches-public {
  display: grid;
  gap: 0.75rem;
  margin-top: 0.75rem;
}

.compact-detail-section {
  margin-top: 0.75rem;
  padding-top: 0.75rem;
}

.compact-detail-section h4 {
  margin: 0 0 0.5rem;
  font-size: 0.95rem;
}

.competition-card .result-table-wrap,
.competition-card .match-table-wrap {
  margin-top: 0.5rem;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .match-teams-line {
    gap: 0.2rem;
  }

  .match-teams-line .club-logo,
  .palmares-table .club-logo,
  .result-table-wrap .club-logo,
  .honor-table-wrap .club-logo {
    width: 20px;
    height: 20px;
  }

  .competition-matches-public {
    gap: 0.5rem;
    margin-top: 0.5rem;
  }

  .compact-detail-section {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
  }

  .compact-detail-section h4 {
    font-size: 0.82rem;
  }
}


/* V12 - Dashboard calendar, Serie A matchday and compact mobile metrics */
.dashboard-calendar-group {
  display: grid;
  gap: 0.45rem;
  margin-bottom: 0.85rem;
}

.dashboard-calendar-group h4 {
  margin: 0;
  font-size: 0.92rem;
  color: var(--text);
}

.dashboard-competition-summary {
  display: grid;
  gap: 0.35rem;
  color: var(--muted);
  font-size: 0.82rem;
}

.compact-match-lines {
  display: grid;
  gap: 0.25rem;
  margin-top: 0.25rem;
}

.compact-match-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.35rem 0.45rem;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 0.7rem;
  background: rgba(15, 23, 42, 0.28);
}

.compact-match-line > span {
  min-width: 0;
}

.compact-match-line > strong {
  white-space: nowrap;
  color: var(--text);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="dashboard"] .cards-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 6px !important;
    margin-bottom: 8px !important;
  }

  .app-page[data-page="dashboard"] .metric-card {
    padding: 7px 6px !important;
    min-height: 58px;
    border-radius: 12px !important;
  }

  .app-page[data-page="dashboard"] .metric-label {
    font-size: 0.62rem !important;
    margin-bottom: 3px !important;
    line-height: 1.05 !important;
  }

  .app-page[data-page="dashboard"] .metric-card strong {
    font-size: 0.98rem !important;
    line-height: 1.05 !important;
    letter-spacing: -0.04em;
  }

  .match-status-col {
    display: none !important;
  }

  .dashboard-calendar-group {
    gap: 0.3rem;
    margin-bottom: 0.55rem;
  }

  .dashboard-calendar-group h4 {
    font-size: 0.78rem;
  }

  .dashboard-competition-summary {
    font-size: 0.7rem;
    gap: 0.25rem;
  }

  .compact-match-lines {
    gap: 0.18rem;
  }

  .compact-match-line {
    padding: 0.25rem 0.35rem;
    gap: 0.35rem;
    border-radius: 0.55rem;
  }

  .compact-match-line .club-logo {
    width: 18px;
    height: 18px;
  }
}

body.is-mobile-ux .app-page[data-page="dashboard"] .cards-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 6px !important;
  margin-bottom: 8px !important;
}

body.is-mobile-ux .app-page[data-page="dashboard"] .metric-card {
  padding: 7px 6px !important;
  min-height: 58px;
  border-radius: 12px !important;
}

body.is-mobile-ux .app-page[data-page="dashboard"] .metric-label {
  font-size: 0.62rem !important;
  margin-bottom: 3px !important;
  line-height: 1.05 !important;
}

body.is-mobile-ux .app-page[data-page="dashboard"] .metric-card strong {
  font-size: 0.98rem !important;
  line-height: 1.05 !important;
  letter-spacing: -0.04em;
}

body.is-mobile-ux .match-status-col {
  display: none !important;
}

/* V14 - Dashboard subsections and clearer admin match rows */
.dashboard-subsection {
  display: block;
}

.dashboard-subsection summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  cursor: pointer;
  list-style: none;
}

.dashboard-subsection summary::-webkit-details-marker {
  display: none;
}

.dashboard-subsection summary > span:first-child {
  display: grid;
  gap: 0.18rem;
  min-width: 0;
}

.dashboard-subsection summary small {
  color: var(--muted);
  font-size: 0.78rem;
}

.dashboard-competition-subsection .dashboard-competition-summary,
.dashboard-calendar-group .table-wrap {
  margin-top: 0.55rem;
}

.details-toggle-label {
  white-space: nowrap;
  pointer-events: none;
}

.admin-list-item small strong {
  color: var(--text);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .dashboard-subsection summary {
    gap: 0.45rem;
  }

  .dashboard-subsection summary small {
    font-size: 0.66rem;
  }

  .dashboard-subsection .details-toggle-label {
    min-height: 28px;
    padding: 4px 7px;
    font-size: 0.64rem;
  }

  .dashboard-competition-subsection .dashboard-competition-summary,
  .dashboard-calendar-group .table-wrap {
    margin-top: 0.35rem;
  }
}

/* V16 - Static listone snapshots */
.listone-table-wrap {
  max-height: 68vh;
  overflow: auto;
}

.listone-table {
  min-width: 1120px;
  font-size: 0.82rem;
}

.listone-table th,
.listone-table td {
  padding: 8px 7px;
  white-space: nowrap;
}

.listone-table thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: rgba(15, 23, 42, 0.98);
}

.listone-table th:nth-child(1),
.listone-table td:nth-child(1) { width: 62px !important; }
.listone-table th:nth-child(2),
.listone-table td:nth-child(2) { width: 36px !important; text-align: center !important; }
.listone-table th:nth-child(3),
.listone-table td:nth-child(3) { width: 70px !important; }
.listone-table th:nth-child(4),
.listone-table td:nth-child(4) { width: 180px !important; }
.listone-table th:nth-child(5),
.listone-table td:nth-child(5) { width: 42px !important; text-align: center !important; }
.listone-table th:nth-child(6),
.listone-table td:nth-child(6),
.listone-table th:nth-child(7),
.listone-table td:nth-child(7),
.listone-table th:nth-child(8),
.listone-table td:nth-child(8),
.listone-table th:nth-child(9),
.listone-table td:nth-child(9),
.listone-table th:nth-child(10),
.listone-table td:nth-child(10),
.listone-table th:nth-child(11),
.listone-table td:nth-child(11),
.listone-table th:nth-child(12),
.listone-table td:nth-child(12),
.listone-table th:nth-child(13),
.listone-table td:nth-child(13) { width: 58px !important; }
.listone-table th:nth-child(14),
.listone-table td:nth-child(14) { width: 104px !important; }

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .listone-table-wrap {
    max-height: 70vh !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .listone-table {
    min-width: 940px !important;
    font-size: 0.62rem !important;
  }

  .listone-table th,
  .listone-table td {
    padding: 5px 4px !important;
  }

  .listone-table .status {
    padding: 2px 5px;
    font-size: 0.58rem;
  }
}

body.is-mobile-ux .listone-table-wrap {
  max-height: 70vh !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

body.is-mobile-ux .listone-table {
  min-width: 940px !important;
  font-size: 0.62rem !important;
}

body.is-mobile-ux .listone-table th,
body.is-mobile-ux .listone-table td {
  padding: 5px 4px !important;
}

body.is-mobile-ux .listone-table .status {
  padding: 2px 5px;
  font-size: 0.58rem;
}

/* V17 - Listone controls, static roster snapshots and admin backup. */
.column-controls {
  width: 100%;
  margin-top: 0.8rem;
}

.column-visibility-control {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.38);
  padding: 0.75rem;
}

.column-visibility-control summary {
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  gap: 0.75rem;
  align-items: center;
}

.column-visibility-control summary span {
  color: var(--muted);
  font-size: 0.82rem;
}

.column-toggle-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(145px, 1fr));
  gap: 0.45rem 0.8rem;
  margin-top: 0.75rem;
}

.column-toggle-item {
  min-height: 34px;
  font-size: 0.82rem !important;
}

.text-warning {
  color: #fbbf24;
}

.import-report pre {
  max-height: 260px;
  overflow: auto;
  padding: 0.75rem;
  border-radius: 12px;
  background: rgba(2, 6, 23, 0.62);
  color: var(--text);
}

.listone-table th .table-sort {
  white-space: nowrap;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .column-visibility-control {
    padding: 0.6rem;
  }

  .column-toggle-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.3rem 0.45rem;
  }

  .column-toggle-item {
    min-height: 30px;
    font-size: 0.72rem !important;
  }

  .listone-table-wrap table.listone-table {
    font-size: 0.66rem !important;
  }

  .listone-table-wrap table.listone-table th,
  .listone-table-wrap table.listone-table td {
    padding: 5px 4px !important;
  }
}


/* V18 - Dynamic rosters and FM movements */
.roster-accordion-grid {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.roster-accordion-card {
  padding: 0;
  overflow: hidden;
}

.roster-card-toggle {
  width: 100%;
  border: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 14px;
  color: var(--text);
  background: transparent;
  cursor: pointer;
  text-align: left;
}

.roster-card-main,
.roster-card-side {
  display: grid;
  gap: 0.35rem;
}

.roster-card-side {
  justify-items: end;
  text-align: right;
  color: var(--muted);
  min-width: 120px;
}

.roster-card-side strong {
  color: var(--text);
}

.roster-inline-detail {
  padding: 0 14px 14px;
}

.roster-inline-table-wrap {
  max-height: 380px;
  overflow: auto;
}

.match-teams-line .club-name-with-logo,
.compact-match-line .club-name-with-logo {
  display: inline-flex;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .roster-accordion-grid {
    grid-template-columns: 1fr !important;
    gap: 8px;
  }

  .roster-card-toggle {
    padding: 9px 10px;
    gap: 0.5rem;
  }

  .roster-card-title {
    font-size: 0.86rem;
  }

  .roster-card-stats,
  .roster-card-side small {
    font-size: 0.68rem;
  }

  .roster-card-side {
    min-width: 92px;
  }

  .roster-card-side .button-small {
    min-height: 28px;
    padding: 4px 7px;
    font-size: 0.66rem;
  }

  .roster-inline-detail {
    padding: 0 8px 8px;
  }

  .roster-inline-table-wrap {
    max-height: 56vh !important;
    overflow: auto !important;
  }
}

/* V21 - Mobile readability fixes for Rose/Listone. Desktop remains unchanged. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Hide section descriptions on mobile, keep titles and useful controls visible. */
  .page-heading > div > p:not(.eyebrow),
  .panel-header > div > p {
    display: none !important;
  }

  /* Keep listone as a true compact table without an oversized first column. */
  .listone-table-wrap {
    max-height: min(72vh, 620px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .listone-table-wrap table.listone-table {
    table-layout: fixed !important;
    min-width: 620px !important;
    width: 620px !important;
    font-size: 0.58rem !important;
  }

  .listone-table-wrap table.listone-table th,
  .listone-table-wrap table.listone-table td {
    padding: 4px 3px !important;
    font-size: 0.58rem !important;
    line-height: 1.1 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  .listone-table-wrap table.listone-table th:nth-child(1),
  .listone-table-wrap table.listone-table td:nth-child(1) {
    width: 30px !important;
    min-width: 30px !important;
    max-width: 30px !important;
    text-align: center !important;
  }

  .listone-table-wrap table.listone-table th:nth-child(2),
  .listone-table-wrap table.listone-table td:nth-child(2) {
    width: 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
  }

  .listone-table-wrap table.listone-table th:nth-child(3),
  .listone-table-wrap table.listone-table td:nth-child(3) {
    width: 112px !important;
    min-width: 112px !important;
    max-width: 112px !important;
  }

  .listone-table-wrap table.listone-table th:nth-child(4),
  .listone-table-wrap table.listone-table td:nth-child(4) {
    width: 32px !important;
    min-width: 32px !important;
    max-width: 32px !important;
    text-align: center !important;
  }

  .listone-table-wrap table.listone-table th:nth-child(5),
  .listone-table-wrap table.listone-table td:nth-child(5) {
    width: 88px !important;
    min-width: 88px !important;
    max-width: 88px !important;
  }

  .listone-table-wrap table.listone-table th:nth-child(n+6),
  .listone-table-wrap table.listone-table td:nth-child(n+6) {
    width: 44px !important;
    min-width: 44px !important;
    max-width: 44px !important;
    text-align: right !important;
  }

  .listone-table-wrap table.listone-table th:last-child,
  .listone-table-wrap table.listone-table td:last-child {
    width: 62px !important;
    min-width: 62px !important;
    max-width: 62px !important;
    text-align: center !important;
  }

  .listone-table .status {
    padding: 2px 5px !important;
    font-size: 0.54rem !important;
  }

  .column-toggle-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
  }

  .column-toggle-item {
    min-height: 30px;
    font-size: 0.72rem !important;
  }

  .roster-accordion-grid {
    gap: 8px !important;
  }

  .roster-card-toggle {
    padding: 0 !important;
  }

  .roster-inline-table-wrap table {
    min-width: 520px !important;
  }
}

body.is-mobile-ux .page-heading > div > p:not(.eyebrow),
body.is-mobile-ux .panel-header > div > p {
  display: none !important;
}

body.is-mobile-ux .listone-table-wrap {
  max-height: min(72vh, 620px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

body.is-mobile-ux .listone-table-wrap table.listone-table {
  table-layout: fixed !important;
  min-width: 620px !important;
  width: 620px !important;
  font-size: 0.58rem !important;
}

body.is-mobile-ux .listone-table-wrap table.listone-table th,
body.is-mobile-ux .listone-table-wrap table.listone-table td {
  padding: 4px 3px !important;
  font-size: 0.58rem !important;
  line-height: 1.1 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

body.is-mobile-ux .listone-table-wrap table.listone-table th:nth-child(1),
body.is-mobile-ux .listone-table-wrap table.listone-table td:nth-child(1) { width: 30px !important; min-width: 30px !important; max-width: 30px !important; text-align: center !important; }
body.is-mobile-ux .listone-table-wrap table.listone-table th:nth-child(2),
body.is-mobile-ux .listone-table-wrap table.listone-table td:nth-child(2) { width: 46px !important; min-width: 46px !important; max-width: 46px !important; }
body.is-mobile-ux .listone-table-wrap table.listone-table th:nth-child(3),
body.is-mobile-ux .listone-table-wrap table.listone-table td:nth-child(3) { width: 112px !important; min-width: 112px !important; max-width: 112px !important; }
body.is-mobile-ux .listone-table-wrap table.listone-table th:nth-child(4),
body.is-mobile-ux .listone-table-wrap table.listone-table td:nth-child(4) { width: 32px !important; min-width: 32px !important; max-width: 32px !important; text-align: center !important; }
body.is-mobile-ux .listone-table-wrap table.listone-table th:nth-child(5),
body.is-mobile-ux .listone-table-wrap table.listone-table td:nth-child(5) { width: 88px !important; min-width: 88px !important; max-width: 88px !important; }
body.is-mobile-ux .listone-table-wrap table.listone-table th:nth-child(n+6),
body.is-mobile-ux .listone-table-wrap table.listone-table td:nth-child(n+6) { width: 44px !important; min-width: 44px !important; max-width: 44px !important; text-align: right !important; }
body.is-mobile-ux .listone-table-wrap table.listone-table th:last-child,
body.is-mobile-ux .listone-table-wrap table.listone-table td:last-child { width: 62px !important; min-width: 62px !important; max-width: 62px !important; text-align: center !important; }


/* V22 - Mobile section cleanup and roster alignment. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .page-heading p,
  .panel-header p,
  .news-card-header p,
  .competition-card-header p,
  .compact-card-header p {
    display: none !important;
  }

  .roster-card-main {
    justify-items: start !important;
    text-align: left !important;
    min-width: 0;
  }

  .roster-card-title.club-name-with-logo,
  .roster-card-title .club-name-with-logo {
    justify-content: flex-start !important;
    text-align: left !important;
  }

  .roster-card-toggle {
    text-align: left !important;
  }
}

body.is-mobile-ux .page-heading p,
body.is-mobile-ux .panel-header p,
body.is-mobile-ux .news-card-header p,
body.is-mobile-ux .competition-card-header p,
body.is-mobile-ux .compact-card-header p {
  display: none !important;
}

body.is-mobile-ux .roster-card-main {
  justify-items: start !important;
  text-align: left !important;
  min-width: 0;
}

body.is-mobile-ux .roster-card-title.club-name-with-logo,
body.is-mobile-ux .roster-card-title .club-name-with-logo {
  justify-content: flex-start !important;
  text-align: left !important;
}

body.is-mobile-ux .roster-card-toggle {
  text-align: left !important;
}

/* V23 - sortable compact tables, roster table view and display mode switch */
.roster-table-container {
  display: block;
}

.roster-season-table-wrap {
  width: 100%;
}

.roster-season-table .roster-team-name {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  text-align: left !important;
}

.roster-season-table .roster-detail-row > td {
  padding: 0.75rem 0.5rem 1rem;
  background: rgba(15, 23, 42, 0.28);
}

.roster-player-table .roster-col-player { width: 42%; }
.roster-player-table .roster-col-role { width: 24%; }
.roster-player-table .roster-col-team { width: 14%; }
.roster-player-table .roster-col-cost { width: 20%; }

.table-sort {
  display: inline-flex;
  width: 100%;
  align-items: center;
  justify-content: inherit;
  min-height: 24px;
  position: relative;
  z-index: 5;
  touch-action: manipulation;
}

.role-extra {
  font-size: 0.82em;
  white-space: nowrap;
}

.display-mode-floating {
  display: none;
}

.mobile-more-link.display-mode-toggle {
  width: 100%;
  text-align: left;
  font: inherit;
}

body.is-desktop-forced {
  padding-bottom: 0 !important;
}

body.is-desktop-forced .mobile-bottom-nav,
body.is-desktop-forced .mobile-more-sheet,
body.is-desktop-forced .mobile-more-backdrop,
body.is-desktop-forced .mobile-page-subnav {
  display: none !important;
}

body.is-desktop-forced .app-nav {
  display: flex !important;
  flex-wrap: wrap !important;
  overflow: visible !important;
}

body.is-desktop-forced .header-grid,
body.is-desktop-forced .grid-two,
body.is-desktop-forced .dashboard-grid {
  grid-template-columns: 1fr auto;
}

body.is-desktop-forced .cards-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

body.is-desktop-forced .display-mode-floating {
  position: fixed;
  right: 12px;
  bottom: 12px;
  z-index: 1100;
  display: inline-flex;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 10px 14px;
  color: #052e16;
  background: var(--primary);
  font-weight: 900;
  box-shadow: var(--shadow);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .table-sort {
    min-height: 28px;
    padding: 0;
    font-size: inherit;
  }

  .mobile-tabular-wrap,
  .standing-table-wrap,
  .roster-dialog-table,
  .roster-season-table-wrap,
  .roster-inline-table-wrap,
  .listone-table-wrap {
    max-height: min(66vh, 520px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .mobile-tabular-wrap table.mobile-tabular,
  .roster-season-table,
  .roster-player-table,
  .listone-table {
    table-layout: fixed !important;
    width: 100% !important;
    min-width: 560px !important;
    font-size: 0.62rem !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th,
  .mobile-tabular-wrap table.mobile-tabular td,
  .roster-season-table th,
  .roster-season-table td,
  .roster-player-table th,
  .roster-player-table td,
  .listone-table th,
  .listone-table td {
    padding: 4px 3px !important;
    line-height: 1.12 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th,
  .roster-season-table th,
  .roster-player-table th,
  .listone-table th {
    position: sticky !important;
    top: 0;
    z-index: 8;
  }

  .listone-table {
    min-width: 620px !important;
  }

  .listone-table .listone-col-playerName,
  .listone-table th.listone-col-playerName,
  .listone-table td.listone-col-playerName {
    width: 132px !important;
    min-width: 132px !important;
    max-width: 132px !important;
  }

  .listone-table .listone-col-classicRole,
  .listone-table th.listone-col-classicRole,
  .listone-table td.listone-col-classicRole {
    width: 58px !important;
    min-width: 58px !important;
    max-width: 58px !important;
  }

  .listone-table .listone-col-realTeam,
  .listone-table th.listone-col-realTeam,
  .listone-table td.listone-col-realTeam {
    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    text-align: center !important;
  }

  .listone-table .listone-col-fantasyRoster,
  .listone-table th.listone-col-fantasyRoster,
  .listone-table td.listone-col-fantasyRoster {
    width: 78px !important;
    min-width: 78px !important;
    max-width: 78px !important;
  }

  .listone-table .listone-col-status,
  .listone-table th.listone-col-status,
  .listone-table td.listone-col-status {
    width: 72px !important;
    min-width: 72px !important;
    max-width: 72px !important;
  }

  .listone-table th[class*="listone-col-quotation"],
  .listone-table td[class*="listone-col-quotation"],
  .listone-table .listone-col-fvm,
  .listone-table .listone-col-rosterCost {
    width: 44px !important;
    min-width: 44px !important;
    max-width: 44px !important;
  }

  .status,
  .mini-badge {
    padding: 2px 5px !important;
    font-size: 0.58rem !important;
  }

  .club-logo {
    width: 20px !important;
    height: 20px !important;
  }

  .roster-season-table .roster-team-name {
    gap: 0.25rem;
  }

  .roster-season-table th:nth-child(1),
  .roster-season-table td:nth-child(1) { width: 34% !important; }
  .roster-season-table th:nth-child(2),
  .roster-season-table td:nth-child(2) { width: 22% !important; }
  .roster-season-table th:nth-child(3),
  .roster-season-table td:nth-child(3) { width: 14% !important; }
  .roster-season-table th:nth-child(4),
  .roster-season-table td:nth-child(4) { width: 9% !important; }
  .roster-season-table th:nth-child(5),
  .roster-season-table td:nth-child(5) { width: 11% !important; }
  .roster-season-table th:nth-child(6),
  .roster-season-table td:nth-child(6) { width: 10% !important; }

  .roster-player-table .roster-col-player { width: 43% !important; }
  .roster-player-table .roster-col-role { width: 25% !important; }
  .roster-player-table .roster-col-team { width: 12% !important; }
  .roster-player-table .roster-col-cost { width: 20% !important; }

  .role-extra {
    display: inline;
    font-size: 0.72em;
  }
}

body.is-mobile-ux .table-sort {
  min-height: 28px;
  padding: 0;
  font-size: inherit;
}

body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular,
body.is-mobile-ux .roster-season-table,
body.is-mobile-ux .roster-player-table,
body.is-mobile-ux .listone-table {
  table-layout: fixed !important;
  min-width: 560px !important;
  font-size: 0.62rem !important;
}

body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular th,
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular td,
body.is-mobile-ux .roster-season-table th,
body.is-mobile-ux .roster-season-table td,
body.is-mobile-ux .roster-player-table th,
body.is-mobile-ux .roster-player-table td,
body.is-mobile-ux .listone-table th,
body.is-mobile-ux .listone-table td {
  padding: 4px 3px !important;
  line-height: 1.12 !important;
}
.roster-card-grid.roster-table-container {
  display: block !important;
  grid-template-columns: none !important;
}
.roster-card-grid.roster-table-container .table-wrap {
  width: 100%;
}

/* V24 - Svincolati sortable like listone and compact mobile rosters */
.roster-detail-row.hidden,
.roster-detail-row.hidden > td {
  display: none !important;
}

.free-agents-table .listone-col-fantasyRoster {
  display: none !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .roster-detail-row.hidden,
  .roster-detail-row.hidden > td {
    display: none !important;
  }

  .roster-season-table-wrap {
    max-height: min(60vh, 460px) !important;
  }

  .roster-season-table {
    min-width: 420px !important;
    font-size: 0.56rem !important;
  }

  .roster-season-table th,
  .roster-season-table td {
    padding: 3px 2px !important;
    line-height: 1.05 !important;
  }

  .roster-season-table th:nth-child(1),
  .roster-season-table td:nth-child(1) { width: 32% !important; }
  .roster-season-table th:nth-child(2),
  .roster-season-table td:nth-child(2) { width: 18% !important; }
  .roster-season-table th:nth-child(3),
  .roster-season-table td:nth-child(3) { width: 12% !important; }
  .roster-season-table th:nth-child(4),
  .roster-season-table td:nth-child(4) { width: 8% !important; }
  .roster-season-table th:nth-child(5),
  .roster-season-table td:nth-child(5) { width: 12% !important; }
  .roster-season-table th:nth-child(6),
  .roster-season-table td:nth-child(6) { width: 18% !important; }

  .roster-season-table .roster-detail-row > td {
    padding: 3px !important;
  }

  .roster-inline-table-wrap,
  .roster-inline-table-wrap.table-wrap,
  .roster-inline-table-wrap.mobile-tabular-wrap {
    max-height: min(46vh, 360px) !important;
    width: 100% !important;
    overflow: auto !important;
  }

  .roster-inline-table-wrap table.roster-player-table,
  .roster-player-table {
    min-width: 330px !important;
    width: 100% !important;
    table-layout: fixed !important;
    font-size: 0.54rem !important;
  }

  .roster-player-table th,
  .roster-player-table td {
    padding: 2px 2px !important;
    line-height: 1.02 !important;
  }

  .roster-player-table .roster-col-player { width: 46% !important; }
  .roster-player-table .roster-col-role { width: 24% !important; }
  .roster-player-table .roster-col-team { width: 12% !important; text-align: center !important; }
  .roster-player-table .roster-col-cost { width: 18% !important; }

  .roster-player-table .table-sort,
  .free-agents-table .table-sort {
    min-height: 20px !important;
    font-size: inherit !important;
  }

  .free-agents-table {
    min-width: 520px !important;
  }
}

body.is-mobile-ux .roster-detail-row.hidden,
body.is-mobile-ux .roster-detail-row.hidden > td {
  display: none !important;
}

body.is-mobile-ux .roster-season-table {
  min-width: 420px !important;
  font-size: 0.56rem !important;
}

body.is-mobile-ux .roster-season-table th,
body.is-mobile-ux .roster-season-table td {
  padding: 3px 2px !important;
  line-height: 1.05 !important;
}

body.is-mobile-ux .roster-inline-table-wrap table.roster-player-table,
body.is-mobile-ux .roster-player-table {
  min-width: 330px !important;
  width: 100% !important;
  table-layout: fixed !important;
  font-size: 0.54rem !important;
}

body.is-mobile-ux .roster-player-table th,
body.is-mobile-ux .roster-player-table td {
  padding: 2px 2px !important;
  line-height: 1.02 !important;
}

body.is-mobile-ux .roster-player-table .roster-col-player { width: 46% !important; }
body.is-mobile-ux .roster-player-table .roster-col-role { width: 24% !important; }
body.is-mobile-ux .roster-player-table .roster-col-team { width: 12% !important; text-align: center !important; }
body.is-mobile-ux .roster-player-table .roster-col-cost { width: 18% !important; }

/* V25 - Compact column separators and mobile intrinsic table widths. */
.listone-table,
.free-agents-table,
.roster-season-table,
.roster-player-table {
  border-collapse: separate;
  border-spacing: 0;
}

.listone-table th,
.listone-table td,
.free-agents-table th,
.free-agents-table td,
.roster-season-table th,
.roster-season-table td,
.roster-player-table th,
.roster-player-table td {
  border-right: 1px solid rgba(148, 163, 184, 0.22) !important;
  text-align: center !important;
  vertical-align: middle !important;
}

.listone-table th:last-child,
.listone-table td:last-child,
.free-agents-table th:last-child,
.free-agents-table td:last-child,
.roster-season-table th:last-child,
.roster-season-table td:last-child,
.roster-player-table th:last-child,
.roster-player-table td:last-child {
  border-right: 0 !important;
}

.listone-table .number,
.free-agents-table .number,
.roster-season-table .number,
.roster-player-table .number {
  text-align: center !important;
}

.roster-season-table .roster-team-name,
.roster-player-table .roster-col-player,
.listone-table .listone-col-playerName,
.free-agents-table .listone-col-playerName {
  text-align: center !important;
}

.roster-season-table .roster-team-name {
  justify-content: center !important;
}

/* Make collapsed roster details stay collapsed even when mobile table rules force rows visible. */
.roster-season-table tr.roster-detail-row.hidden,
.roster-season-table tr.roster-detail-row.hidden > td,
.mobile-tabular-wrap table.mobile-tabular tr.roster-detail-row.hidden,
.mobile-tabular-wrap table.mobile-tabular tr.roster-detail-row.hidden > td,
body.is-mobile-ux .roster-season-table tr.roster-detail-row.hidden,
body.is-mobile-ux .roster-season-table tr.roster-detail-row.hidden > td {
  display: none !important;
  visibility: collapse !important;
  height: 0 !important;
  max-height: 0 !important;
  padding: 0 !important;
  border: 0 !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .listone-table-wrap,
  .roster-season-table-wrap,
  .roster-inline-table-wrap {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: auto !important;
  }

  .listone-table,
  .free-agents-table,
  .roster-player-table {
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
    font-size: 0.5rem !important;
  }

  .roster-season-table {
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
    font-size: 0.52rem !important;
  }

  .listone-table th,
  .listone-table td,
  .free-agents-table th,
  .free-agents-table td,
  .roster-season-table th,
  .roster-season-table td,
  .roster-player-table th,
  .roster-player-table td {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 2px 4px !important;
    line-height: 1.02 !important;
    white-space: nowrap !important;
  }

  .listone-table .listone-col-playerName,
  .free-agents-table .listone-col-playerName,
  .roster-player-table .roster-col-player {
    max-width: 9.5rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  .listone-table .listone-col-classicRole,
  .free-agents-table .listone-col-classicRole,
  .listone-table .listone-col-realTeam,
  .free-agents-table .listone-col-realTeam,
  .roster-player-table .roster-col-role,
  .roster-player-table .roster-col-team,
  .roster-player-table .roster-col-cost {
    max-width: 4.8rem !important;
  }

  .listone-table .listone-col-fantasyRoster,
  .listone-table .listone-col-status,
  .free-agents-table .listone-col-status {
    max-width: 6.6rem !important;
  }

  .listone-table th[class*="listone-col-quotation"],
  .listone-table td[class*="listone-col-quotation"],
  .free-agents-table th[class*="listone-col-quotation"],
  .free-agents-table td[class*="listone-col-quotation"],
  .listone-table .listone-col-fvm,
  .free-agents-table .listone-col-fvm,
  .listone-table .listone-col-rosterCost,
  .free-agents-table .listone-col-rosterCost {
    max-width: 3.5rem !important;
  }

  .roster-season-table .club-logo,
  .listone-table .club-logo,
  .free-agents-table .club-logo,
  .roster-player-table .club-logo {
    width: 16px !important;
    height: 16px !important;
  }

  .roster-season-table .button-small {
    min-height: 24px !important;
    padding: 3px 6px !important;
    font-size: 0.58rem !important;
  }

  .listone-table .status,
  .free-agents-table .status {
    padding: 1px 4px !important;
    font-size: 0.5rem !important;
  }
}

body.is-mobile-ux .listone-table,
body.is-mobile-ux .free-agents-table,
body.is-mobile-ux .roster-player-table,
body.is-mobile-ux .roster-season-table {
  table-layout: auto !important;
  width: max-content !important;
  min-width: 100% !important;
  max-width: none !important;
}

body.is-mobile-ux .listone-table th,
body.is-mobile-ux .listone-table td,
body.is-mobile-ux .free-agents-table th,
body.is-mobile-ux .free-agents-table td,
body.is-mobile-ux .roster-season-table th,
body.is-mobile-ux .roster-season-table td,
body.is-mobile-ux .roster-player-table th,
body.is-mobile-ux .roster-player-table td {
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  padding: 2px 4px !important;
  line-height: 1.02 !important;
  text-align: center !important;
}

body.is-mobile-ux .listone-table .listone-col-playerName,
body.is-mobile-ux .free-agents-table .listone-col-playerName,
body.is-mobile-ux .roster-player-table .roster-col-player {
  max-width: 9.5rem !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}


/* V26 - Mobile intrinsic column sizing and centered table headers. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Listone page: remove descriptive copy under headings on mobile. */
  .app-page[data-page="listone"] .page-heading p,
  .app-page[data-page="listone"] .panel-header p,
  .app-page[data-page="listone"] .panel-header small,
  .app-page[data-page="listone"] #listoneMetaText,
  .app-page[data-page="listone"] #freeAgentsMetaText {
    display: none !important;
  }

  /* Every table stays a real table and sizes columns from content, not percentages. */
  .table-wrap,
  .mobile-tabular-wrap,
  .compact-table,
  .mini-table-wrap,
  .honor-table-wrap,
  .roster-inline-table-wrap,
  .roster-season-table-wrap,
  .listone-table-wrap {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .table-wrap table,
  .mobile-tabular-wrap table,
  .compact-table table,
  .mini-table-wrap table,
  .honor-table-wrap table,
  .roster-inline-table-wrap table,
  .roster-season-table-wrap table,
  table.mobile-tabular,
  table.standing-table,
  table.listone-table,
  table.free-agents-table,
  table.roster-season-table,
  table.roster-player-table {
    display: table !important;
    table-layout: auto !important;
    width: max-content !important;
    min-width: 0 !important;
    max-width: none !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.54rem !important;
  }

  .table-wrap thead,
  .mobile-tabular-wrap thead,
  .compact-table thead,
  .mini-table-wrap thead,
  .honor-table-wrap thead,
  table.mobile-tabular thead,
  table.standing-table thead {
    display: table-header-group !important;
  }

  .table-wrap tbody,
  .mobile-tabular-wrap tbody,
  .compact-table tbody,
  .mini-table-wrap tbody,
  .honor-table-wrap tbody,
  table.mobile-tabular tbody,
  table.standing-table tbody {
    display: table-row-group !important;
  }

  .table-wrap tr,
  .mobile-tabular-wrap tr,
  .compact-table tr,
  .mini-table-wrap tr,
  .honor-table-wrap tr,
  table.mobile-tabular tr,
  table.standing-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  .table-wrap th,
  .table-wrap td,
  .mobile-tabular-wrap th,
  .mobile-tabular-wrap td,
  .compact-table th,
  .compact-table td,
  .mini-table-wrap th,
  .mini-table-wrap td,
  .honor-table-wrap th,
  .honor-table-wrap td,
  table.mobile-tabular th,
  table.mobile-tabular td,
  table.standing-table th,
  table.standing-table td,
  table.listone-table th,
  table.listone-table td,
  table.free-agents-table th,
  table.free-agents-table td,
  table.roster-season-table th,
  table.roster-season-table td,
  table.roster-player-table th,
  table.roster-player-table td {
    display: table-cell !important;
    width: 1% !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 2px 3px !important;
    line-height: 1.05 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    text-align: center !important;
    vertical-align: middle !important;
  }

  .table-wrap td::before,
  .mobile-tabular-wrap td::before,
  .compact-table td::before,
  .mini-table-wrap td::before,
  .honor-table-wrap td::before,
  table.mobile-tabular td::before,
  table.standing-table td::before {
    content: none !important;
    display: none !important;
  }

  .table-wrap th,
  .mobile-tabular-wrap th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  table.mobile-tabular th,
  table.standing-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 3 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    text-align: center !important;
  }

  .table-wrap th .table-sort,
  .mobile-tabular-wrap th .table-sort,
  .compact-table th .table-sort,
  .mini-table-wrap th .table-sort,
  .honor-table-wrap th .table-sort,
  table.mobile-tabular th .table-sort,
  table.standing-table th .table-sort {
    width: 100% !important;
    min-height: 18px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    line-height: 1.05 !important;
  }

  .table-wrap .number,
  .mobile-tabular-wrap .number,
  .compact-table .number,
  .mini-table-wrap .number,
  .honor-table-wrap .number,
  table.mobile-tabular .number,
  table.standing-table .number {
    text-align: center !important;
  }

  .listone-table .listone-col-playerName,
  .free-agents-table .listone-col-playerName,
  .roster-player-table .roster-col-player,
  .roster-season-table .roster-team-name,
  .roster-player-cell .link-button,
  .listone-player-cell .link-button,
  .mobile-roster-cell .link-button,
  .standing-table .link-button {
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
    text-align: center !important;
  }

  .roster-season-table .club-name-with-logo,
  .roster-player-table .club-name-with-logo,
  .listone-table .club-name-with-logo,
  .free-agents-table .club-name-with-logo {
    justify-content: center !important;
  }
}

/* Same V26 behavior for the JS-forced mobile UX class. */
body.is-mobile-ux .app-page[data-page="listone"] .page-heading p,
body.is-mobile-ux .app-page[data-page="listone"] .panel-header p,
body.is-mobile-ux .app-page[data-page="listone"] .panel-header small,
body.is-mobile-ux .app-page[data-page="listone"] #listoneMetaText,
body.is-mobile-ux .app-page[data-page="listone"] #freeAgentsMetaText {
  display: none !important;
}

body.is-mobile-ux .table-wrap,
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .compact-table,
body.is-mobile-ux .mini-table-wrap,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .roster-inline-table-wrap,
body.is-mobile-ux .roster-season-table-wrap,
body.is-mobile-ux .listone-table-wrap {
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
}

body.is-mobile-ux .table-wrap table,
body.is-mobile-ux .mobile-tabular-wrap table,
body.is-mobile-ux .compact-table table,
body.is-mobile-ux .mini-table-wrap table,
body.is-mobile-ux .honor-table-wrap table,
body.is-mobile-ux .roster-inline-table-wrap table,
body.is-mobile-ux .roster-season-table-wrap table,
body.is-mobile-ux table.mobile-tabular,
body.is-mobile-ux table.standing-table,
body.is-mobile-ux table.listone-table,
body.is-mobile-ux table.free-agents-table,
body.is-mobile-ux table.roster-season-table,
body.is-mobile-ux table.roster-player-table {
  display: table !important;
  table-layout: auto !important;
  width: max-content !important;
  min-width: 0 !important;
  max-width: none !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.54rem !important;
}

body.is-mobile-ux .table-wrap thead,
body.is-mobile-ux .mobile-tabular-wrap thead,
body.is-mobile-ux .compact-table thead,
body.is-mobile-ux .mini-table-wrap thead,
body.is-mobile-ux .honor-table-wrap thead,
body.is-mobile-ux table.mobile-tabular thead,
body.is-mobile-ux table.standing-table thead { display: table-header-group !important; }
body.is-mobile-ux .table-wrap tbody,
body.is-mobile-ux .mobile-tabular-wrap tbody,
body.is-mobile-ux .compact-table tbody,
body.is-mobile-ux .mini-table-wrap tbody,
body.is-mobile-ux .honor-table-wrap tbody,
body.is-mobile-ux table.mobile-tabular tbody,
body.is-mobile-ux table.standing-table tbody { display: table-row-group !important; }
body.is-mobile-ux .table-wrap tr,
body.is-mobile-ux .mobile-tabular-wrap tr,
body.is-mobile-ux .compact-table tr,
body.is-mobile-ux .mini-table-wrap tr,
body.is-mobile-ux .honor-table-wrap tr,
body.is-mobile-ux table.mobile-tabular tr,
body.is-mobile-ux table.standing-table tr { display: table-row !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; }

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .table-wrap td,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .mobile-tabular-wrap td,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .compact-table td,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .mini-table-wrap td,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux .honor-table-wrap td,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.mobile-tabular td,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.standing-table td,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.listone-table td,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.free-agents-table td,
body.is-mobile-ux table.roster-season-table th,
body.is-mobile-ux table.roster-season-table td,
body.is-mobile-ux table.roster-player-table th,
body.is-mobile-ux table.roster-player-table td {
  display: table-cell !important;
  width: 1% !important;
  min-width: 0 !important;
  max-width: none !important;
  padding: 2px 3px !important;
  line-height: 1.05 !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  text-align: center !important;
  vertical-align: middle !important;
}

body.is-mobile-ux .table-wrap td::before,
body.is-mobile-ux .mobile-tabular-wrap td::before,
body.is-mobile-ux .compact-table td::before,
body.is-mobile-ux .mini-table-wrap td::before,
body.is-mobile-ux .honor-table-wrap td::before,
body.is-mobile-ux table.mobile-tabular td::before,
body.is-mobile-ux table.standing-table td::before { content: none !important; display: none !important; }

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.standing-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 3 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  text-align: center !important;
}

body.is-mobile-ux .table-wrap th .table-sort,
body.is-mobile-ux .mobile-tabular-wrap th .table-sort,
body.is-mobile-ux .compact-table th .table-sort,
body.is-mobile-ux .mini-table-wrap th .table-sort,
body.is-mobile-ux .honor-table-wrap th .table-sort,
body.is-mobile-ux table.mobile-tabular th .table-sort,
body.is-mobile-ux table.standing-table th .table-sort {
  width: 100% !important;
  min-height: 18px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.05 !important;
}

body.is-mobile-ux .table-wrap .number,
body.is-mobile-ux .mobile-tabular-wrap .number,
body.is-mobile-ux .compact-table .number,
body.is-mobile-ux .mini-table-wrap .number,
body.is-mobile-ux .honor-table-wrap .number,
body.is-mobile-ux table.mobile-tabular .number,
body.is-mobile-ux table.standing-table .number { text-align: center !important; }

body.is-mobile-ux .listone-table .listone-col-playerName,
body.is-mobile-ux .free-agents-table .listone-col-playerName,
body.is-mobile-ux .roster-player-table .roster-col-player,
body.is-mobile-ux .roster-season-table .roster-team-name,
body.is-mobile-ux .roster-player-cell .link-button,
body.is-mobile-ux .listone-player-cell .link-button,
body.is-mobile-ux .mobile-roster-cell .link-button,
body.is-mobile-ux .standing-table .link-button {
  max-width: none !important;
  overflow: visible !important;
  text-overflow: clip !important;
  white-space: nowrap !important;
  text-align: center !important;
}

body.is-mobile-ux .roster-season-table .club-name-with-logo,
body.is-mobile-ux .roster-player-table .club-name-with-logo,
body.is-mobile-ux .listone-table .club-name-with-logo,
body.is-mobile-ux .free-agents-table .club-name-with-logo {
  justify-content: center !important;
}

/* V27 - Mobile readable tables: controlled widths, wrapping and no cell overflow.
   The previous intrinsic-width experiment made text spill into neighbouring cells on
   small screens. Mobile tables now keep real table layout, sticky headers and
   horizontal scroll when needed, but cell content wraps safely instead of overflowing. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .table-wrap,
  .mobile-tabular-wrap,
  .compact-table,
  .mini-table-wrap,
  .honor-table-wrap,
  .roster-inline-table-wrap,
  .roster-season-table-wrap,
  .listone-table-wrap {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior-x: contain;
  }

  .table-wrap table,
  .mobile-tabular-wrap table,
  .compact-table table,
  .mini-table-wrap table,
  .honor-table-wrap table,
  .roster-inline-table-wrap table,
  .roster-season-table-wrap table,
  table.mobile-tabular,
  table.standing-table {
    display: table !important;
    width: 100% !important;
    min-width: 100% !important;
    table-layout: auto !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.62rem !important;
  }

  table.listone-table,
  table.free-agents-table {
    display: table !important;
    width: 100% !important;
    min-width: 640px !important;
    table-layout: fixed !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.58rem !important;
  }

  table.roster-player-table {
    display: table !important;
    width: 100% !important;
    min-width: 360px !important;
    table-layout: fixed !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.6rem !important;
  }

  table.roster-season-table {
    display: table !important;
    width: 100% !important;
    min-width: 520px !important;
    table-layout: fixed !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.58rem !important;
  }

  .table-wrap thead,
  .mobile-tabular-wrap thead,
  .compact-table thead,
  .mini-table-wrap thead,
  .honor-table-wrap thead,
  table.mobile-tabular thead,
  table.standing-table thead,
  table.listone-table thead,
  table.free-agents-table thead,
  table.roster-season-table thead,
  table.roster-player-table thead {
    display: table-header-group !important;
  }

  .table-wrap tbody,
  .mobile-tabular-wrap tbody,
  .compact-table tbody,
  .mini-table-wrap tbody,
  .honor-table-wrap tbody,
  table.mobile-tabular tbody,
  table.standing-table tbody,
  table.listone-table tbody,
  table.free-agents-table tbody,
  table.roster-season-table tbody,
  table.roster-player-table tbody {
    display: table-row-group !important;
  }

  .table-wrap tr,
  .mobile-tabular-wrap tr,
  .compact-table tr,
  .mini-table-wrap tr,
  .honor-table-wrap tr,
  table.mobile-tabular tr,
  table.standing-table tr,
  table.listone-table tr,
  table.free-agents-table tr,
  table.roster-season-table tr,
  table.roster-player-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  .table-wrap th,
  .table-wrap td,
  .mobile-tabular-wrap th,
  .mobile-tabular-wrap td,
  .compact-table th,
  .compact-table td,
  .mini-table-wrap th,
  .mini-table-wrap td,
  .honor-table-wrap th,
  .honor-table-wrap td,
  table.mobile-tabular th,
  table.mobile-tabular td,
  table.standing-table th,
  table.standing-table td,
  table.listone-table th,
  table.listone-table td,
  table.free-agents-table th,
  table.free-agents-table td,
  table.roster-season-table th,
  table.roster-season-table td,
  table.roster-player-table th,
  table.roster-player-table td {
    display: table-cell !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    padding: 3px 4px !important;
    line-height: 1.12 !important;
    white-space: normal !important;
    overflow: hidden !important;
    text-overflow: clip !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    hyphens: auto !important;
    text-align: center !important;
    vertical-align: middle !important;
    border-right: 1px solid rgba(148, 163, 184, 0.18) !important;
  }

  .table-wrap th:last-child,
  .table-wrap td:last-child,
  .mobile-tabular-wrap th:last-child,
  .mobile-tabular-wrap td:last-child,
  table.mobile-tabular th:last-child,
  table.mobile-tabular td:last-child,
  table.listone-table th:last-child,
  table.listone-table td:last-child,
  table.free-agents-table th:last-child,
  table.free-agents-table td:last-child,
  table.roster-season-table th:last-child,
  table.roster-season-table td:last-child,
  table.roster-player-table th:last-child,
  table.roster-player-table td:last-child {
    border-right: 0 !important;
  }

  .table-wrap td::before,
  .mobile-tabular-wrap td::before,
  .compact-table td::before,
  .mini-table-wrap td::before,
  .honor-table-wrap td::before,
  table.mobile-tabular td::before,
  table.standing-table td::before {
    content: none !important;
    display: none !important;
  }

  .table-wrap th,
  .mobile-tabular-wrap th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  table.mobile-tabular th,
  table.standing-table th,
  table.listone-table th,
  table.free-agents-table th,
  table.roster-season-table th,
  table.roster-player-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 4 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    text-align: center !important;
  }

  .table-wrap th .table-sort,
  .mobile-tabular-wrap th .table-sort,
  .compact-table th .table-sort,
  .mini-table-wrap th .table-sort,
  .honor-table-wrap th .table-sort,
  table.mobile-tabular th .table-sort,
  table.standing-table th .table-sort,
  table.listone-table th .table-sort,
  table.free-agents-table th .table-sort,
  table.roster-player-table th .table-sort {
    width: 100% !important;
    min-height: 20px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    line-height: 1.08 !important;
  }

  .table-wrap .number,
  .mobile-tabular-wrap .number,
  .compact-table .number,
  .mini-table-wrap .number,
  .honor-table-wrap .number,
  table.mobile-tabular .number,
  table.standing-table .number,
  table.listone-table .number,
  table.free-agents-table .number,
  table.roster-player-table .number {
    text-align: center !important;
    font-variant-numeric: tabular-nums !important;
  }

  /* Specific mobile column proportions: enough room for long names, no overflow. */
  table.listone-table .listone-col-classicRole { width: 14% !important; }
  table.listone-table .listone-col-playerName { width: 22% !important; }
  table.listone-table .listone-col-realTeam { width: 7% !important; }
  table.listone-table .listone-col-fantasyRoster { width: 15% !important; }
  table.listone-table .listone-col-quotationCurrent,
  table.listone-table .listone-col-quotationInitial,
  table.listone-table .listone-col-quotationDiff,
  table.listone-table .listone-col-fvm { width: 7% !important; }
  table.listone-table .listone-col-status { width: 14% !important; }

  table.free-agents-table .listone-col-classicRole { width: 17% !important; }
  table.free-agents-table .listone-col-playerName { width: 30% !important; }
  table.free-agents-table .listone-col-realTeam { width: 9% !important; }
  table.free-agents-table .listone-col-quotationCurrent,
  table.free-agents-table .listone-col-quotationInitial,
  table.free-agents-table .listone-col-quotationDiff,
  table.free-agents-table .listone-col-fvm { width: 10% !important; }
  table.free-agents-table .listone-col-status { width: 14% !important; }

  table.roster-player-table .roster-col-player { width: 44% !important; }
  table.roster-player-table .roster-col-role { width: 25% !important; }
  table.roster-player-table .roster-col-team { width: 15% !important; }
  table.roster-player-table .roster-col-cost { width: 16% !important; }

  table.roster-season-table .roster-team-name { width: 28% !important; }
  table.roster-season-table th:nth-child(2),
  table.roster-season-table td:nth-child(2) { width: 20% !important; }
  table.roster-season-table th:nth-child(3),
  table.roster-season-table td:nth-child(3) { width: 12% !important; }
  table.roster-season-table th:nth-child(4),
  table.roster-season-table td:nth-child(4) { width: 9% !important; }
  table.roster-season-table th:nth-child(5),
  table.roster-season-table td:nth-child(5) { width: 17% !important; }
  table.roster-season-table th:nth-child(6),
  table.roster-season-table td:nth-child(6) { width: 14% !important; }

  .listone-table .status,
  .free-agents-table .status,
  .roster-season-table .status,
  .mobile-tabular .status {
    white-space: normal !important;
    padding: 2px 4px !important;
    font-size: 0.52rem !important;
    line-height: 1.05 !important;
  }

  .role-extra {
    display: inline !important;
    white-space: normal !important;
  }

  .club-name-with-logo,
  .roster-season-table .club-name-with-logo,
  .roster-player-table .club-name-with-logo,
  .listone-table .club-name-with-logo,
  .free-agents-table .club-name-with-logo {
    display: inline-flex !important;
    justify-content: center !important;
    align-items: center !important;
    flex-wrap: wrap !important;
    gap: 2px !important;
    max-width: 100% !important;
    white-space: normal !important;
  }

  .roster-season-table .club-logo,
  .listone-table .club-logo,
  .free-agents-table .club-logo,
  .roster-player-table .club-logo {
    width: 14px !important;
    height: 14px !important;
    flex: 0 0 auto !important;
  }

  .roster-season-table .button-small {
    min-height: 24px !important;
    padding: 3px 5px !important;
    font-size: 0.55rem !important;
    white-space: normal !important;
    line-height: 1.05 !important;
  }
}

/* Same V27 behavior for the JS-forced mobile UX class. */
body.is-mobile-ux .table-wrap,
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .compact-table,
body.is-mobile-ux .mini-table-wrap,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .roster-inline-table-wrap,
body.is-mobile-ux .roster-season-table-wrap,
body.is-mobile-ux .listone-table-wrap {
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior-x: contain;
}

body.is-mobile-ux .table-wrap table,
body.is-mobile-ux .mobile-tabular-wrap table,
body.is-mobile-ux .compact-table table,
body.is-mobile-ux .mini-table-wrap table,
body.is-mobile-ux .honor-table-wrap table,
body.is-mobile-ux .roster-inline-table-wrap table,
body.is-mobile-ux .roster-season-table-wrap table,
body.is-mobile-ux table.mobile-tabular,
body.is-mobile-ux table.standing-table {
  display: table !important;
  width: 100% !important;
  min-width: 100% !important;
  table-layout: auto !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.62rem !important;
}

body.is-mobile-ux table.listone-table,
body.is-mobile-ux table.free-agents-table {
  display: table !important;
  width: 100% !important;
  min-width: 640px !important;
  table-layout: fixed !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.58rem !important;
}

body.is-mobile-ux table.roster-player-table {
  display: table !important;
  width: 100% !important;
  min-width: 360px !important;
  table-layout: fixed !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.6rem !important;
}

body.is-mobile-ux table.roster-season-table {
  display: table !important;
  width: 100% !important;
  min-width: 520px !important;
  table-layout: fixed !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.58rem !important;
}

body.is-mobile-ux .table-wrap thead,
body.is-mobile-ux .mobile-tabular-wrap thead,
body.is-mobile-ux .compact-table thead,
body.is-mobile-ux .mini-table-wrap thead,
body.is-mobile-ux .honor-table-wrap thead,
body.is-mobile-ux table.mobile-tabular thead,
body.is-mobile-ux table.standing-table thead,
body.is-mobile-ux table.listone-table thead,
body.is-mobile-ux table.free-agents-table thead,
body.is-mobile-ux table.roster-season-table thead,
body.is-mobile-ux table.roster-player-table thead { display: table-header-group !important; }
body.is-mobile-ux .table-wrap tbody,
body.is-mobile-ux .mobile-tabular-wrap tbody,
body.is-mobile-ux .compact-table tbody,
body.is-mobile-ux .mini-table-wrap tbody,
body.is-mobile-ux .honor-table-wrap tbody,
body.is-mobile-ux table.mobile-tabular tbody,
body.is-mobile-ux table.standing-table tbody,
body.is-mobile-ux table.listone-table tbody,
body.is-mobile-ux table.free-agents-table tbody,
body.is-mobile-ux table.roster-season-table tbody,
body.is-mobile-ux table.roster-player-table tbody { display: table-row-group !important; }
body.is-mobile-ux .table-wrap tr,
body.is-mobile-ux .mobile-tabular-wrap tr,
body.is-mobile-ux .compact-table tr,
body.is-mobile-ux .mini-table-wrap tr,
body.is-mobile-ux .honor-table-wrap tr,
body.is-mobile-ux table.mobile-tabular tr,
body.is-mobile-ux table.standing-table tr,
body.is-mobile-ux table.listone-table tr,
body.is-mobile-ux table.free-agents-table tr,
body.is-mobile-ux table.roster-season-table tr,
body.is-mobile-ux table.roster-player-table tr { display: table-row !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; }

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .table-wrap td,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .mobile-tabular-wrap td,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .compact-table td,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .mini-table-wrap td,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux .honor-table-wrap td,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.mobile-tabular td,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.standing-table td,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.listone-table td,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.free-agents-table td,
body.is-mobile-ux table.roster-season-table th,
body.is-mobile-ux table.roster-season-table td,
body.is-mobile-ux table.roster-player-table th,
body.is-mobile-ux table.roster-player-table td {
  display: table-cell !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  padding: 3px 4px !important;
  line-height: 1.12 !important;
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  hyphens: auto !important;
  text-align: center !important;
  vertical-align: middle !important;
  border-right: 1px solid rgba(148, 163, 184, 0.18) !important;
}

body.is-mobile-ux .table-wrap th:last-child,
body.is-mobile-ux .table-wrap td:last-child,
body.is-mobile-ux .mobile-tabular-wrap th:last-child,
body.is-mobile-ux .mobile-tabular-wrap td:last-child,
body.is-mobile-ux table.mobile-tabular th:last-child,
body.is-mobile-ux table.mobile-tabular td:last-child,
body.is-mobile-ux table.listone-table th:last-child,
body.is-mobile-ux table.listone-table td:last-child,
body.is-mobile-ux table.free-agents-table th:last-child,
body.is-mobile-ux table.free-agents-table td:last-child,
body.is-mobile-ux table.roster-season-table th:last-child,
body.is-mobile-ux table.roster-season-table td:last-child,
body.is-mobile-ux table.roster-player-table th:last-child,
body.is-mobile-ux table.roster-player-table td:last-child { border-right: 0 !important; }

body.is-mobile-ux .table-wrap td::before,
body.is-mobile-ux .mobile-tabular-wrap td::before,
body.is-mobile-ux .compact-table td::before,
body.is-mobile-ux .mini-table-wrap td::before,
body.is-mobile-ux .honor-table-wrap td::before,
body.is-mobile-ux table.mobile-tabular td::before,
body.is-mobile-ux table.standing-table td::before { content: none !important; display: none !important; }

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.roster-season-table th,
body.is-mobile-ux table.roster-player-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 4 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  text-align: center !important;
}

body.is-mobile-ux .table-wrap th .table-sort,
body.is-mobile-ux .mobile-tabular-wrap th .table-sort,
body.is-mobile-ux .compact-table th .table-sort,
body.is-mobile-ux .mini-table-wrap th .table-sort,
body.is-mobile-ux .honor-table-wrap th .table-sort,
body.is-mobile-ux table.mobile-tabular th .table-sort,
body.is-mobile-ux table.standing-table th .table-sort,
body.is-mobile-ux table.listone-table th .table-sort,
body.is-mobile-ux table.free-agents-table th .table-sort,
body.is-mobile-ux table.roster-player-table th .table-sort {
  width: 100% !important;
  min-height: 20px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  line-height: 1.08 !important;
}

body.is-mobile-ux .table-wrap .number,
body.is-mobile-ux .mobile-tabular-wrap .number,
body.is-mobile-ux .compact-table .number,
body.is-mobile-ux .mini-table-wrap .number,
body.is-mobile-ux .honor-table-wrap .number,
body.is-mobile-ux table.mobile-tabular .number,
body.is-mobile-ux table.standing-table .number,
body.is-mobile-ux table.listone-table .number,
body.is-mobile-ux table.free-agents-table .number,
body.is-mobile-ux table.roster-player-table .number { text-align: center !important; font-variant-numeric: tabular-nums !important; }

body.is-mobile-ux table.listone-table .listone-col-classicRole { width: 14% !important; }
body.is-mobile-ux table.listone-table .listone-col-playerName { width: 22% !important; }
body.is-mobile-ux table.listone-table .listone-col-realTeam { width: 7% !important; }
body.is-mobile-ux table.listone-table .listone-col-fantasyRoster { width: 15% !important; }
body.is-mobile-ux table.listone-table .listone-col-quotationCurrent,
body.is-mobile-ux table.listone-table .listone-col-quotationInitial,
body.is-mobile-ux table.listone-table .listone-col-quotationDiff,
body.is-mobile-ux table.listone-table .listone-col-fvm { width: 7% !important; }
body.is-mobile-ux table.listone-table .listone-col-status { width: 14% !important; }
body.is-mobile-ux table.free-agents-table .listone-col-classicRole { width: 17% !important; }
body.is-mobile-ux table.free-agents-table .listone-col-playerName { width: 30% !important; }
body.is-mobile-ux table.free-agents-table .listone-col-realTeam { width: 9% !important; }
body.is-mobile-ux table.free-agents-table .listone-col-quotationCurrent,
body.is-mobile-ux table.free-agents-table .listone-col-quotationInitial,
body.is-mobile-ux table.free-agents-table .listone-col-quotationDiff,
body.is-mobile-ux table.free-agents-table .listone-col-fvm { width: 10% !important; }
body.is-mobile-ux table.free-agents-table .listone-col-status { width: 14% !important; }
body.is-mobile-ux table.roster-player-table .roster-col-player { width: 44% !important; }
body.is-mobile-ux table.roster-player-table .roster-col-role { width: 25% !important; }
body.is-mobile-ux table.roster-player-table .roster-col-team { width: 15% !important; }
body.is-mobile-ux table.roster-player-table .roster-col-cost { width: 16% !important; }
body.is-mobile-ux table.roster-season-table .roster-team-name { width: 28% !important; }
body.is-mobile-ux table.roster-season-table th:nth-child(2),
body.is-mobile-ux table.roster-season-table td:nth-child(2) { width: 20% !important; }
body.is-mobile-ux table.roster-season-table th:nth-child(3),
body.is-mobile-ux table.roster-season-table td:nth-child(3) { width: 12% !important; }
body.is-mobile-ux table.roster-season-table th:nth-child(4),
body.is-mobile-ux table.roster-season-table td:nth-child(4) { width: 9% !important; }
body.is-mobile-ux table.roster-season-table th:nth-child(5),
body.is-mobile-ux table.roster-season-table td:nth-child(5) { width: 17% !important; }
body.is-mobile-ux table.roster-season-table th:nth-child(6),
body.is-mobile-ux table.roster-season-table td:nth-child(6) { width: 14% !important; }

body.is-mobile-ux .listone-table .status,
body.is-mobile-ux .free-agents-table .status,
body.is-mobile-ux .roster-season-table .status,
body.is-mobile-ux .mobile-tabular .status { white-space: normal !important; padding: 2px 4px !important; font-size: 0.52rem !important; line-height: 1.05 !important; }
body.is-mobile-ux .role-extra { display: inline !important; white-space: normal !important; }
body.is-mobile-ux .club-name-with-logo,
body.is-mobile-ux .roster-season-table .club-name-with-logo,
body.is-mobile-ux .roster-player-table .club-name-with-logo,
body.is-mobile-ux .listone-table .club-name-with-logo,
body.is-mobile-ux .free-agents-table .club-name-with-logo { display: inline-flex !important; justify-content: center !important; align-items: center !important; flex-wrap: wrap !important; gap: 2px !important; max-width: 100% !important; white-space: normal !important; }
body.is-mobile-ux .roster-season-table .club-logo,
body.is-mobile-ux .listone-table .club-logo,
body.is-mobile-ux .free-agents-table .club-logo,
body.is-mobile-ux .roster-player-table .club-logo { width: 14px !important; height: 14px !important; flex: 0 0 auto !important; }
body.is-mobile-ux .roster-season-table .button-small { min-height: 24px !important; padding: 3px 5px !important; font-size: 0.55rem !important; white-space: normal !important; line-height: 1.05 !important; }


/* V28 - Readable table overhaul.
   - No vertical column separators on desktop or mobile.
   - Mobile tables keep one value per cell on one line.
   - Mobile table header and first column are sticky while scrolling.
   - Listone first column is player name via app.js column order. */
.table-wrap th,
.table-wrap td,
.mobile-tabular-wrap th,
.mobile-tabular-wrap td,
.compact-table th,
.compact-table td,
.mini-table-wrap th,
.mini-table-wrap td,
.honor-table-wrap th,
.honor-table-wrap td,
table th,
table td {
  border-right: 0 !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .table-wrap,
  .mobile-tabular-wrap,
  .compact-table,
  .mini-table-wrap,
  .honor-table-wrap,
  .roster-inline-table-wrap,
  .roster-season-table-wrap,
  .listone-table-wrap {
    max-width: 100% !important;
    max-height: min(68vh, 560px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
  }

  .table-wrap table,
  .mobile-tabular-wrap table,
  .compact-table table,
  .mini-table-wrap table,
  .honor-table-wrap table,
  .roster-inline-table-wrap table,
  .roster-season-table-wrap table,
  .listone-table-wrap table,
  table.mobile-tabular,
  table.standing-table,
  table.listone-table,
  table.free-agents-table,
  table.roster-season-table,
  table.roster-player-table,
  table.mobile-standing-table,
  table.mobile-honor-table {
    display: table !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
    table-layout: auto !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.62rem !important;
  }

  .table-wrap thead,
  .mobile-tabular-wrap thead,
  .compact-table thead,
  .mini-table-wrap thead,
  .honor-table-wrap thead,
  table.mobile-tabular thead,
  table.standing-table thead,
  table.listone-table thead,
  table.free-agents-table thead,
  table.roster-season-table thead,
  table.roster-player-table thead,
  table.mobile-standing-table thead,
  table.mobile-honor-table thead {
    display: table-header-group !important;
  }

  .table-wrap tbody,
  .mobile-tabular-wrap tbody,
  .compact-table tbody,
  .mini-table-wrap tbody,
  .honor-table-wrap tbody,
  table.mobile-tabular tbody,
  table.standing-table tbody,
  table.listone-table tbody,
  table.free-agents-table tbody,
  table.roster-season-table tbody,
  table.roster-player-table tbody,
  table.mobile-standing-table tbody,
  table.mobile-honor-table tbody {
    display: table-row-group !important;
  }

  .table-wrap tr,
  .mobile-tabular-wrap tr,
  .compact-table tr,
  .mini-table-wrap tr,
  .honor-table-wrap tr,
  table.mobile-tabular tr,
  table.standing-table tr,
  table.listone-table tr,
  table.free-agents-table tr,
  table.roster-season-table tr,
  table.roster-player-table tr,
  table.mobile-standing-table tr,
  table.mobile-honor-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  .table-wrap th,
  .table-wrap td,
  .mobile-tabular-wrap th,
  .mobile-tabular-wrap td,
  .compact-table th,
  .compact-table td,
  .mini-table-wrap th,
  .mini-table-wrap td,
  .honor-table-wrap th,
  .honor-table-wrap td,
  table.mobile-tabular th,
  table.mobile-tabular td,
  table.standing-table th,
  table.standing-table td,
  table.listone-table th,
  table.listone-table td,
  table.free-agents-table th,
  table.free-agents-table td,
  table.roster-season-table th,
  table.roster-season-table td,
  table.roster-player-table th,
  table.roster-player-table td,
  table.mobile-standing-table th,
  table.mobile-standing-table td,
  table.mobile-honor-table th,
  table.mobile-honor-table td {
    display: table-cell !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    padding: 5px 7px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
    text-align: center !important;
    vertical-align: middle !important;
    border-right: 0 !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important;
    background-clip: padding-box !important;
  }

  .table-wrap td::before,
  .mobile-tabular-wrap td::before,
  .compact-table td::before,
  .mini-table-wrap td::before,
  .honor-table-wrap td::before,
  table.mobile-tabular td::before,
  table.standing-table td::before,
  table.listone-table td::before,
  table.free-agents-table td::before,
  table.roster-season-table td::before,
  table.roster-player-table td::before,
  table.mobile-standing-table td::before,
  table.mobile-honor-table td::before {
    content: none !important;
    display: none !important;
  }

  .table-wrap th,
  .mobile-tabular-wrap th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  table.mobile-tabular th,
  table.standing-table th,
  table.listone-table th,
  table.free-agents-table th,
  table.roster-season-table th,
  table.roster-player-table th,
  table.mobile-standing-table th,
  table.mobile-honor-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 30 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    color: #e5e7eb !important;
    text-align: center !important;
  }

  .table-wrap th:first-child,
  .table-wrap td:first-child,
  .mobile-tabular-wrap th:first-child,
  .mobile-tabular-wrap td:first-child,
  .compact-table th:first-child,
  .compact-table td:first-child,
  .mini-table-wrap th:first-child,
  .mini-table-wrap td:first-child,
  .honor-table-wrap th:first-child,
  .honor-table-wrap td:first-child,
  table.mobile-tabular th:first-child,
  table.mobile-tabular td:first-child,
  table.standing-table th:first-child,
  table.standing-table td:first-child,
  table.listone-table th:first-child,
  table.listone-table td:first-child,
  table.free-agents-table th:first-child,
  table.free-agents-table td:first-child,
  table.roster-season-table th:first-child,
  table.roster-season-table td:first-child,
  table.roster-player-table th:first-child,
  table.roster-player-table td:first-child,
  table.mobile-standing-table th:first-child,
  table.mobile-standing-table td:first-child,
  table.mobile-honor-table th:first-child,
  table.mobile-honor-table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 28 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    box-shadow: 8px 0 14px rgba(2, 6, 23, 0.25) !important;
  }

  .table-wrap th:first-child,
  .mobile-tabular-wrap th:first-child,
  .compact-table th:first-child,
  .mini-table-wrap th:first-child,
  .honor-table-wrap th:first-child,
  table.mobile-tabular th:first-child,
  table.standing-table th:first-child,
  table.listone-table th:first-child,
  table.free-agents-table th:first-child,
  table.roster-season-table th:first-child,
  table.roster-player-table th:first-child,
  table.mobile-standing-table th:first-child,
  table.mobile-honor-table th:first-child {
    z-index: 45 !important;
  }

  .table-wrap th .table-sort,
  .mobile-tabular-wrap th .table-sort,
  .compact-table th .table-sort,
  .mini-table-wrap th .table-sort,
  .honor-table-wrap th .table-sort,
  table.mobile-tabular th .table-sort,
  table.standing-table th .table-sort,
  table.listone-table th .table-sort,
  table.free-agents-table th .table-sort,
  table.roster-player-table th .table-sort {
    width: 100% !important;
    min-height: 24px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    white-space: nowrap !important;
    overflow: visible !important;
    line-height: 1.05 !important;
  }

  .listone-table .status,
  .free-agents-table .status,
  .roster-season-table .status,
  .mobile-tabular .status {
    white-space: nowrap !important;
    padding: 2px 6px !important;
    font-size: 0.56rem !important;
    line-height: 1.05 !important;
  }

  .role-extra,
  .club-name-with-logo,
  .roster-season-table .club-name-with-logo,
  .roster-player-table .club-name-with-logo,
  .listone-table .club-name-with-logo,
  .free-agents-table .club-name-with-logo {
    white-space: nowrap !important;
    flex-wrap: nowrap !important;
  }

  /* Let the browser size columns from their content. Remove all old fixed widths. */
  table.listone-table th,
  table.listone-table td,
  table.free-agents-table th,
  table.free-agents-table td,
  table.roster-player-table th,
  table.roster-player-table td,
  table.roster-season-table th,
  table.roster-season-table td,
  table.mobile-honor-table th,
  table.mobile-honor-table td,
  body.is-mobile-ux table.listone-table th,
  body.is-mobile-ux table.listone-table td,
  body.is-mobile-ux table.free-agents-table th,
  body.is-mobile-ux table.free-agents-table td,
  body.is-mobile-ux table.roster-player-table th,
  body.is-mobile-ux table.roster-player-table td,
  body.is-mobile-ux table.roster-season-table th,
  body.is-mobile-ux table.roster-season-table td {
    width: auto !important;
  }
}

/* V28 fallback rules for the JS-forced mobile UX class. */
body.is-mobile-ux .table-wrap,
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .compact-table,
body.is-mobile-ux .mini-table-wrap,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .roster-inline-table-wrap,
body.is-mobile-ux .roster-season-table-wrap,
body.is-mobile-ux .listone-table-wrap {
  max-width: 100% !important;
  max-height: min(68vh, 560px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior: contain !important;
}

body.is-mobile-ux .table-wrap table,
body.is-mobile-ux .mobile-tabular-wrap table,
body.is-mobile-ux .compact-table table,
body.is-mobile-ux .mini-table-wrap table,
body.is-mobile-ux .honor-table-wrap table,
body.is-mobile-ux .roster-inline-table-wrap table,
body.is-mobile-ux .roster-season-table-wrap table,
body.is-mobile-ux .listone-table-wrap table,
body.is-mobile-ux table.mobile-tabular,
body.is-mobile-ux table.standing-table,
body.is-mobile-ux table.listone-table,
body.is-mobile-ux table.free-agents-table,
body.is-mobile-ux table.roster-season-table,
body.is-mobile-ux table.roster-player-table,
body.is-mobile-ux table.mobile-standing-table,
body.is-mobile-ux table.mobile-honor-table {
  display: table !important;
  width: max-content !important;
  min-width: 100% !important;
  max-width: none !important;
  table-layout: auto !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.62rem !important;
}

body.is-mobile-ux .table-wrap thead,
body.is-mobile-ux .mobile-tabular-wrap thead,
body.is-mobile-ux .compact-table thead,
body.is-mobile-ux .mini-table-wrap thead,
body.is-mobile-ux .honor-table-wrap thead,
body.is-mobile-ux table.mobile-tabular thead,
body.is-mobile-ux table.standing-table thead,
body.is-mobile-ux table.listone-table thead,
body.is-mobile-ux table.free-agents-table thead,
body.is-mobile-ux table.roster-season-table thead,
body.is-mobile-ux table.roster-player-table thead,
body.is-mobile-ux table.mobile-standing-table thead,
body.is-mobile-ux table.mobile-honor-table thead { display: table-header-group !important; }

body.is-mobile-ux .table-wrap tbody,
body.is-mobile-ux .mobile-tabular-wrap tbody,
body.is-mobile-ux .compact-table tbody,
body.is-mobile-ux .mini-table-wrap tbody,
body.is-mobile-ux .honor-table-wrap tbody,
body.is-mobile-ux table.mobile-tabular tbody,
body.is-mobile-ux table.standing-table tbody,
body.is-mobile-ux table.listone-table tbody,
body.is-mobile-ux table.free-agents-table tbody,
body.is-mobile-ux table.roster-season-table tbody,
body.is-mobile-ux table.roster-player-table tbody,
body.is-mobile-ux table.mobile-standing-table tbody,
body.is-mobile-ux table.mobile-honor-table tbody { display: table-row-group !important; }

body.is-mobile-ux .table-wrap tr,
body.is-mobile-ux .mobile-tabular-wrap tr,
body.is-mobile-ux .compact-table tr,
body.is-mobile-ux .mini-table-wrap tr,
body.is-mobile-ux .honor-table-wrap tr,
body.is-mobile-ux table.mobile-tabular tr,
body.is-mobile-ux table.standing-table tr,
body.is-mobile-ux table.listone-table tr,
body.is-mobile-ux table.free-agents-table tr,
body.is-mobile-ux table.roster-season-table tr,
body.is-mobile-ux table.roster-player-table tr,
body.is-mobile-ux table.mobile-standing-table tr,
body.is-mobile-ux table.mobile-honor-table tr { display: table-row !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; }

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .table-wrap td,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .mobile-tabular-wrap td,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .compact-table td,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .mini-table-wrap td,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux .honor-table-wrap td,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.mobile-tabular td,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.standing-table td,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.listone-table td,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.free-agents-table td,
body.is-mobile-ux table.roster-season-table th,
body.is-mobile-ux table.roster-season-table td,
body.is-mobile-ux table.roster-player-table th,
body.is-mobile-ux table.roster-player-table td,
body.is-mobile-ux table.mobile-standing-table th,
body.is-mobile-ux table.mobile-standing-table td,
body.is-mobile-ux table.mobile-honor-table th,
body.is-mobile-ux table.mobile-honor-table td {
  display: table-cell !important;
  width: auto !important;
  min-width: max-content !important;
  max-width: none !important;
  padding: 5px 7px !important;
  line-height: 1.15 !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;
  text-align: center !important;
  vertical-align: middle !important;
  border-right: 0 !important;
  border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important;
  background-clip: padding-box !important;
}

body.is-mobile-ux .table-wrap td::before,
body.is-mobile-ux .mobile-tabular-wrap td::before,
body.is-mobile-ux .compact-table td::before,
body.is-mobile-ux .mini-table-wrap td::before,
body.is-mobile-ux .honor-table-wrap td::before,
body.is-mobile-ux table.mobile-tabular td::before,
body.is-mobile-ux table.standing-table td::before,
body.is-mobile-ux table.listone-table td::before,
body.is-mobile-ux table.free-agents-table td::before,
body.is-mobile-ux table.roster-season-table td::before,
body.is-mobile-ux table.roster-player-table td::before,
body.is-mobile-ux table.mobile-standing-table td::before,
body.is-mobile-ux table.mobile-honor-table td::before { content: none !important; display: none !important; }

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.roster-season-table th,
body.is-mobile-ux table.roster-player-table th,
body.is-mobile-ux table.mobile-standing-table th,
body.is-mobile-ux table.mobile-honor-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 30 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  color: #e5e7eb !important;
  text-align: center !important;
}

body.is-mobile-ux .table-wrap th:first-child,
body.is-mobile-ux .table-wrap td:first-child,
body.is-mobile-ux .mobile-tabular-wrap th:first-child,
body.is-mobile-ux .mobile-tabular-wrap td:first-child,
body.is-mobile-ux .compact-table th:first-child,
body.is-mobile-ux .compact-table td:first-child,
body.is-mobile-ux .mini-table-wrap th:first-child,
body.is-mobile-ux .mini-table-wrap td:first-child,
body.is-mobile-ux .honor-table-wrap th:first-child,
body.is-mobile-ux .honor-table-wrap td:first-child,
body.is-mobile-ux table.mobile-tabular th:first-child,
body.is-mobile-ux table.mobile-tabular td:first-child,
body.is-mobile-ux table.standing-table th:first-child,
body.is-mobile-ux table.standing-table td:first-child,
body.is-mobile-ux table.listone-table th:first-child,
body.is-mobile-ux table.listone-table td:first-child,
body.is-mobile-ux table.free-agents-table th:first-child,
body.is-mobile-ux table.free-agents-table td:first-child,
body.is-mobile-ux table.roster-season-table th:first-child,
body.is-mobile-ux table.roster-season-table td:first-child,
body.is-mobile-ux table.roster-player-table th:first-child,
body.is-mobile-ux table.roster-player-table td:first-child,
body.is-mobile-ux table.mobile-standing-table th:first-child,
body.is-mobile-ux table.mobile-standing-table td:first-child,
body.is-mobile-ux table.mobile-honor-table th:first-child,
body.is-mobile-ux table.mobile-honor-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 28 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  box-shadow: 8px 0 14px rgba(2, 6, 23, 0.25) !important;
}

body.is-mobile-ux .table-wrap th:first-child,
body.is-mobile-ux .mobile-tabular-wrap th:first-child,
body.is-mobile-ux .compact-table th:first-child,
body.is-mobile-ux .mini-table-wrap th:first-child,
body.is-mobile-ux .honor-table-wrap th:first-child,
body.is-mobile-ux table.mobile-tabular th:first-child,
body.is-mobile-ux table.standing-table th:first-child,
body.is-mobile-ux table.listone-table th:first-child,
body.is-mobile-ux table.free-agents-table th:first-child,
body.is-mobile-ux table.roster-season-table th:first-child,
body.is-mobile-ux table.roster-player-table th:first-child,
body.is-mobile-ux table.mobile-standing-table th:first-child,
body.is-mobile-ux table.mobile-honor-table th:first-child { z-index: 45 !important; }

body.is-mobile-ux .table-wrap th .table-sort,
body.is-mobile-ux .mobile-tabular-wrap th .table-sort,
body.is-mobile-ux .compact-table th .table-sort,
body.is-mobile-ux .mini-table-wrap th .table-sort,
body.is-mobile-ux .honor-table-wrap th .table-sort,
body.is-mobile-ux table.mobile-tabular th .table-sort,
body.is-mobile-ux table.standing-table th .table-sort,
body.is-mobile-ux table.listone-table th .table-sort,
body.is-mobile-ux table.free-agents-table th .table-sort,
body.is-mobile-ux table.roster-player-table th .table-sort {
  width: 100% !important;
  min-height: 24px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  white-space: nowrap !important;
  overflow: visible !important;
  line-height: 1.05 !important;
}

body.is-mobile-ux .listone-table .status,
body.is-mobile-ux .free-agents-table .status,
body.is-mobile-ux .roster-season-table .status,
body.is-mobile-ux .mobile-tabular .status { white-space: nowrap !important; padding: 2px 6px !important; font-size: 0.56rem !important; line-height: 1.05 !important; }
body.is-mobile-ux .role-extra,
body.is-mobile-ux .club-name-with-logo,
body.is-mobile-ux .roster-season-table .club-name-with-logo,
body.is-mobile-ux .roster-player-table .club-name-with-logo,
body.is-mobile-ux .listone-table .club-name-with-logo,
body.is-mobile-ux .free-agents-table .club-name-with-logo { white-space: nowrap !important; flex-wrap: nowrap !important; }

/* V29 - Mobile table overlap and roster/movement refinements.
   Keep sticky first columns readable without covering the second column. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  table.listone-table th:first-child,
  table.listone-table td:first-child,
  table.free-agents-table th:first-child,
  table.free-agents-table td:first-child,
  body.is-mobile-ux table.listone-table th:first-child,
  body.is-mobile-ux table.listone-table td:first-child,
  body.is-mobile-ux table.free-agents-table th:first-child,
  body.is-mobile-ux table.free-agents-table td:first-child {
    width: 9.8rem !important;
    min-width: 9.8rem !important;
    max-width: 9.8rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    text-align: left !important;
    padding-left: 7px !important;
    padding-right: 8px !important;
    background-color: rgba(15, 23, 42, 1) !important;
    box-shadow: 7px 0 10px rgba(2, 6, 23, 0.44) !important;
  }

  table.listone-table td:first-child strong,
  table.free-agents-table td:first-child strong,
  body.is-mobile-ux table.listone-table td:first-child strong,
  body.is-mobile-ux table.free-agents-table td:first-child strong {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  table.listone-table th:first-child .table-sort,
  table.free-agents-table th:first-child .table-sort,
  body.is-mobile-ux table.listone-table th:first-child .table-sort,
  body.is-mobile-ux table.free-agents-table th:first-child .table-sort {
    justify-content: flex-start !important;
    text-align: left !important;
  }

  table.listone-table th:not(:first-child),
  table.listone-table td:not(:first-child),
  table.free-agents-table th:not(:first-child),
  table.free-agents-table td:not(:first-child),
  body.is-mobile-ux table.listone-table th:not(:first-child),
  body.is-mobile-ux table.listone-table td:not(:first-child),
  body.is-mobile-ux table.free-agents-table th:not(:first-child),
  body.is-mobile-ux table.free-agents-table td:not(:first-child) {
    position: relative !important;
    z-index: 1 !important;
    min-width: max-content !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  table.listone-table th:first-child,
  table.free-agents-table th:first-child,
  body.is-mobile-ux table.listone-table th:first-child,
  body.is-mobile-ux table.free-agents-table th:first-child {
    z-index: 70 !important;
  }

  table.listone-table td:first-child,
  table.free-agents-table td:first-child,
  body.is-mobile-ux table.listone-table td:first-child,
  body.is-mobile-ux table.free-agents-table td:first-child {
    z-index: 60 !important;
  }

  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .panel-header,
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .panel-header {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
  }

  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .panel-header > div:first-child,
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .panel-header > div:first-child {
    order: 1 !important;
  }

  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .panel-header .filters-row,
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .panel-header .filters-row {
    order: 2 !important;
    width: 100% !important;
  }

  table.roster-season-table .roster-team-name,
  body.is-mobile-ux table.roster-season-table .roster-team-name {
    text-align: left !important;
    justify-content: flex-start !important;
    white-space: nowrap !important;
    min-width: 8rem !important;
  }

  table.roster-season-table .roster-team-name .club-logo,
  body.is-mobile-ux table.roster-season-table .roster-team-name .club-logo {
    margin-right: 4px !important;
  }

  table.roster-season-table .roster-team-name strong,
  body.is-mobile-ux table.roster-season-table .roster-team-name strong {
    display: inline-block !important;
    max-width: 7.2rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
  }

  .dashboard-podium-lines,
  body.is-mobile-ux .dashboard-podium-lines {
    display: grid !important;
    gap: 3px !important;
    text-align: left !important;
  }
}

/* V30 - Mobile table readability reset.
   Use real table sizing, sticky header/first column, and prevent listone/free agents overlap. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="listone"] .panel-header,
  body.is-mobile-ux .app-page[data-page="listone"] .panel-header {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
  }

  .app-page[data-page="listone"] .panel-header > div:first-child,
  body.is-mobile-ux .app-page[data-page="listone"] .panel-header > div:first-child {
    order: 1 !important;
    width: 100% !important;
  }

  .app-page[data-page="listone"] .panel-header .filters-row,
  body.is-mobile-ux .app-page[data-page="listone"] .panel-header .filters-row {
    order: 2 !important;
    width: 100% !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
  }

  .app-page[data-page="listone"] .panel-header .column-controls,
  body.is-mobile-ux .app-page[data-page="listone"] .panel-header .column-controls {
    order: 3 !important;
    width: 100% !important;
  }

  .table-wrap,
  .mobile-tabular-wrap,
  .compact-table,
  .mini-table-wrap,
  .honor-table-wrap,
  .standing-table-wrap,
  .roster-dialog-table,
  body.is-mobile-ux .table-wrap,
  body.is-mobile-ux .mobile-tabular-wrap,
  body.is-mobile-ux .compact-table,
  body.is-mobile-ux .mini-table-wrap,
  body.is-mobile-ux .honor-table-wrap,
  body.is-mobile-ux .standing-table-wrap,
  body.is-mobile-ux .roster-dialog-table {
    overflow: auto !important;
    -webkit-overflow-scrolling: touch !important;
    max-width: 100% !important;
  }

  .table-wrap table,
  .mobile-tabular-wrap table,
  .compact-table table,
  .mini-table-wrap table,
  .honor-table-wrap table,
  .standing-table-wrap table,
  .roster-dialog-table table,
  body.is-mobile-ux .table-wrap table,
  body.is-mobile-ux .mobile-tabular-wrap table,
  body.is-mobile-ux .compact-table table,
  body.is-mobile-ux .mini-table-wrap table,
  body.is-mobile-ux .honor-table-wrap table,
  body.is-mobile-ux .standing-table-wrap table,
  body.is-mobile-ux .roster-dialog-table table {
    display: table !important;
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
  }

  .table-wrap thead,
  .mobile-tabular-wrap thead,
  .compact-table thead,
  .mini-table-wrap thead,
  .honor-table-wrap thead,
  .standing-table-wrap thead,
  .roster-dialog-table thead,
  body.is-mobile-ux .table-wrap thead,
  body.is-mobile-ux .mobile-tabular-wrap thead,
  body.is-mobile-ux .compact-table thead,
  body.is-mobile-ux .mini-table-wrap thead,
  body.is-mobile-ux .honor-table-wrap thead,
  body.is-mobile-ux .standing-table-wrap thead,
  body.is-mobile-ux .roster-dialog-table thead {
    display: table-header-group !important;
  }

  .table-wrap tbody,
  .mobile-tabular-wrap tbody,
  .compact-table tbody,
  .mini-table-wrap tbody,
  .honor-table-wrap tbody,
  .standing-table-wrap tbody,
  .roster-dialog-table tbody,
  body.is-mobile-ux .table-wrap tbody,
  body.is-mobile-ux .mobile-tabular-wrap tbody,
  body.is-mobile-ux .compact-table tbody,
  body.is-mobile-ux .mini-table-wrap tbody,
  body.is-mobile-ux .honor-table-wrap tbody,
  body.is-mobile-ux .standing-table-wrap tbody,
  body.is-mobile-ux .roster-dialog-table tbody {
    display: table-row-group !important;
  }

  .table-wrap tr,
  .mobile-tabular-wrap tr,
  .compact-table tr,
  .mini-table-wrap tr,
  .honor-table-wrap tr,
  .standing-table-wrap tr,
  .roster-dialog-table tr,
  body.is-mobile-ux .table-wrap tr,
  body.is-mobile-ux .mobile-tabular-wrap tr,
  body.is-mobile-ux .compact-table tr,
  body.is-mobile-ux .mini-table-wrap tr,
  body.is-mobile-ux .honor-table-wrap tr,
  body.is-mobile-ux .standing-table-wrap tr,
  body.is-mobile-ux .roster-dialog-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
  }

  .table-wrap th,
  .table-wrap td,
  .mobile-tabular-wrap th,
  .mobile-tabular-wrap td,
  .compact-table th,
  .compact-table td,
  .mini-table-wrap th,
  .mini-table-wrap td,
  .honor-table-wrap th,
  .honor-table-wrap td,
  .standing-table-wrap th,
  .standing-table-wrap td,
  .roster-dialog-table th,
  .roster-dialog-table td,
  body.is-mobile-ux .table-wrap th,
  body.is-mobile-ux .table-wrap td,
  body.is-mobile-ux .mobile-tabular-wrap th,
  body.is-mobile-ux .mobile-tabular-wrap td,
  body.is-mobile-ux .compact-table th,
  body.is-mobile-ux .compact-table td,
  body.is-mobile-ux .mini-table-wrap th,
  body.is-mobile-ux .mini-table-wrap td,
  body.is-mobile-ux .honor-table-wrap th,
  body.is-mobile-ux .honor-table-wrap td,
  body.is-mobile-ux .standing-table-wrap th,
  body.is-mobile-ux .standing-table-wrap td,
  body.is-mobile-ux .roster-dialog-table th,
  body.is-mobile-ux .roster-dialog-table td {
    display: table-cell !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    padding: 6px 8px !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    text-align: center !important;
    vertical-align: middle !important;
  }

  .table-wrap td::before,
  .mobile-tabular-wrap td::before,
  .compact-table td::before,
  .mini-table-wrap td::before,
  .honor-table-wrap td::before,
  .standing-table-wrap td::before,
  .roster-dialog-table td::before,
  body.is-mobile-ux .table-wrap td::before,
  body.is-mobile-ux .mobile-tabular-wrap td::before,
  body.is-mobile-ux .compact-table td::before,
  body.is-mobile-ux .mini-table-wrap td::before,
  body.is-mobile-ux .honor-table-wrap td::before,
  body.is-mobile-ux .standing-table-wrap td::before,
  body.is-mobile-ux .roster-dialog-table td::before {
    content: none !important;
    display: none !important;
  }

  .table-wrap th,
  .mobile-tabular-wrap th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  .standing-table-wrap th,
  .roster-dialog-table th,
  body.is-mobile-ux .table-wrap th,
  body.is-mobile-ux .mobile-tabular-wrap th,
  body.is-mobile-ux .compact-table th,
  body.is-mobile-ux .mini-table-wrap th,
  body.is-mobile-ux .honor-table-wrap th,
  body.is-mobile-ux .standing-table-wrap th,
  body.is-mobile-ux .roster-dialog-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 80 !important;
    background: rgba(15, 23, 42, 1) !important;
    text-align: center !important;
  }

  .table-wrap th:first-child,
  .table-wrap td:first-child,
  .mobile-tabular-wrap th:first-child,
  .mobile-tabular-wrap td:first-child,
  .compact-table th:first-child,
  .compact-table td:first-child,
  .mini-table-wrap th:first-child,
  .mini-table-wrap td:first-child,
  .honor-table-wrap th:first-child,
  .honor-table-wrap td:first-child,
  .standing-table-wrap th:first-child,
  .standing-table-wrap td:first-child,
  .roster-dialog-table th:first-child,
  .roster-dialog-table td:first-child,
  body.is-mobile-ux .table-wrap th:first-child,
  body.is-mobile-ux .table-wrap td:first-child,
  body.is-mobile-ux .mobile-tabular-wrap th:first-child,
  body.is-mobile-ux .mobile-tabular-wrap td:first-child,
  body.is-mobile-ux .compact-table th:first-child,
  body.is-mobile-ux .compact-table td:first-child,
  body.is-mobile-ux .mini-table-wrap th:first-child,
  body.is-mobile-ux .mini-table-wrap td:first-child,
  body.is-mobile-ux .honor-table-wrap th:first-child,
  body.is-mobile-ux .honor-table-wrap td:first-child,
  body.is-mobile-ux .standing-table-wrap th:first-child,
  body.is-mobile-ux .standing-table-wrap td:first-child,
  body.is-mobile-ux .roster-dialog-table th:first-child,
  body.is-mobile-ux .roster-dialog-table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 90 !important;
    background: rgba(15, 23, 42, 1) !important;
    box-shadow: 8px 0 12px rgba(2, 6, 23, 0.36) !important;
  }

  .table-wrap th:first-child,
  .mobile-tabular-wrap th:first-child,
  .compact-table th:first-child,
  .mini-table-wrap th:first-child,
  .honor-table-wrap th:first-child,
  .standing-table-wrap th:first-child,
  .roster-dialog-table th:first-child,
  body.is-mobile-ux .table-wrap th:first-child,
  body.is-mobile-ux .mobile-tabular-wrap th:first-child,
  body.is-mobile-ux .compact-table th:first-child,
  body.is-mobile-ux .mini-table-wrap th:first-child,
  body.is-mobile-ux .honor-table-wrap th:first-child,
  body.is-mobile-ux .standing-table-wrap th:first-child,
  body.is-mobile-ux .roster-dialog-table th:first-child {
    z-index: 110 !important;
  }

  table.listone-table,
  table.free-agents-table,
  body.is-mobile-ux table.listone-table,
  body.is-mobile-ux table.free-agents-table {
    width: max-content !important;
    min-width: 100% !important;
    table-layout: auto !important;
  }

  table.listone-table th,
  table.listone-table td,
  table.free-agents-table th,
  table.free-agents-table td,
  body.is-mobile-ux table.listone-table th,
  body.is-mobile-ux table.listone-table td,
  body.is-mobile-ux table.free-agents-table th,
  body.is-mobile-ux table.free-agents-table td {
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
  }

  table.listone-table th:first-child,
  table.listone-table td:first-child,
  table.free-agents-table th:first-child,
  table.free-agents-table td:first-child,
  body.is-mobile-ux table.listone-table th:first-child,
  body.is-mobile-ux table.listone-table td:first-child,
  body.is-mobile-ux table.free-agents-table th:first-child,
  body.is-mobile-ux table.free-agents-table td:first-child {
    width: auto !important;
    min-width: 11rem !important;
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
    text-align: left !important;
  }

  table.listone-table td:first-child strong,
  table.free-agents-table td:first-child strong,
  body.is-mobile-ux table.listone-table td:first-child strong,
  body.is-mobile-ux table.free-agents-table td:first-child strong {
    display: inline !important;
    width: auto !important;
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
  }

  table.listone-table th:first-child .table-sort,
  table.free-agents-table th:first-child .table-sort,
  body.is-mobile-ux table.listone-table th:first-child .table-sort,
  body.is-mobile-ux table.free-agents-table th:first-child .table-sort {
    justify-content: flex-start !important;
    text-align: left !important;
  }
}

body.is-mobile-ux .app-page[data-page="listone"] .panel-header {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 8px !important;
}

/* V34 - president accounts, team pages and snapshot-first public views */
.team-profile-link {
  display: inline-flex;
  max-width: 100%;
  border: 0;
  padding: 0;
  margin: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.team-profile-link:hover strong,
.team-profile-link:hover span:not(.club-logo) {
  text-decoration: underline;
}

.team-profile-dialog .team-profile-card {
  width: min(1180px, calc(100vw - 32px));
  max-width: none;
}

.team-profile-body {
  display: grid;
  gap: 14px;
}

.team-profile-header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: rgba(15, 23, 42, 0.45);
}

.team-profile-header h3 {
  margin: 0 0 4px;
}

.user-request-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.user-actions-grid {
  align-items: start;
}

.admin-approval-controls {
  display: grid !important;
  grid-template-columns: minmax(150px, 1fr) minmax(150px, 1fr) minmax(190px, 1.2fr) auto auto;
  width: min(860px, 100%);
  gap: 8px !important;
}

.snapshot-actions-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}

#loginForm .button + .button {
  margin-top: 8px;
}

/* Keep mobile tabular views readable: sticky header and sticky first column. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .team-profile-dialog .team-profile-card {
    width: 100vw !important;
    height: 100dvh;
    border-radius: 0;
    overflow: auto;
  }

  .team-profile-header {
    align-items: flex-start;
    padding: 10px;
  }

  .user-request-grid,
  .user-actions-grid {
    grid-template-columns: 1fr !important;
  }

  .admin-approval-controls {
    grid-template-columns: 1fr;
    width: 100%;
  }

  .mobile-tabular-wrap,
  .table-wrap {
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .mobile-tabular-wrap table.mobile-tabular,
  .table-wrap table {
    border-collapse: separate !important;
    border-spacing: 0 !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th,
  .table-wrap table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 6 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    text-align: center !important;
    white-space: nowrap !important;
  }

  .mobile-tabular-wrap table.mobile-tabular td,
  .table-wrap table td {
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    text-align: center !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th:first-child,
  .mobile-tabular-wrap table.mobile-tabular td:first-child,
  .listone-table-wrap table th:first-child,
  .listone-table-wrap table td:first-child,
  .honor-table-wrap table th:first-child,
  .honor-table-wrap table td:first-child,
  .fifa-ranking-table-wrap table th:first-child,
  .fifa-ranking-table-wrap table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 7 !important;
    background: rgba(15, 23, 42, 0.99) !important;
    text-align: left !important;
    min-width: 128px !important;
    max-width: 168px !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th:first-child,
  .listone-table-wrap table th:first-child,
  .honor-table-wrap table th:first-child,
  .fifa-ranking-table-wrap table th:first-child {
    z-index: 9 !important;
    text-align: center !important;
  }

  .listone-table-wrap table th:first-child,
  .listone-table-wrap table td:first-child {
    min-width: 145px !important;
    max-width: 185px !important;
  }

  .mobile-tabular-wrap table.mobile-tabular th,
  .mobile-tabular-wrap table.mobile-tabular td {
    padding: 6px 7px !important;
    font-size: 0.68rem !important;
  }

  .table-sort {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    white-space: nowrap;
    text-align: center;
  }
}

/* V38 - Team profile mobile tables refinements */
.movement-type-badge {
  white-space: nowrap;
}

.team-profile-palmares-table th:first-child,
.team-profile-palmares-table td:first-child {
  width: 5.8rem;
  min-width: 5.8rem;
  max-width: 5.8rem;
}

.team-profile-matches-table th:first-child,
.team-profile-matches-table td:first-child {
  width: 3.4rem;
  min-width: 3.4rem;
  max-width: 3.4rem;
  text-align: center !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .team-profile-table-wrap {
    max-height: min(44vh, 360px) !important;
    overflow: auto !important;
  }

  .team-profile-roster-table {
    min-width: 440px !important;
  }

  .team-profile-roster-table th:first-child,
  .team-profile-roster-table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 8 !important;
    min-width: 142px !important;
    max-width: 170px !important;
    background: rgba(15, 23, 42, 0.99) !important;
    text-align: left !important;
  }

  .team-profile-roster-table th:first-child {
    z-index: 10 !important;
    text-align: center !important;
  }

  .team-profile-roster-table th,
  .team-profile-roster-table td,
  .team-profile-palmares-table th,
  .team-profile-palmares-table td,
  .team-profile-movements-table th,
  .team-profile-movements-table td,
  .team-profile-matches-table th,
  .team-profile-matches-table td {
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    padding: 5px 6px !important;
  }

  .team-profile-palmares-table th:first-child,
  .team-profile-palmares-table td:first-child {
    min-width: 56px !important;
    max-width: 64px !important;
    width: 64px !important;
    text-align: center !important;
  }

  .team-profile-palmares-table th:nth-child(2),
  .team-profile-palmares-table td:nth-child(2) {
    min-width: 138px !important;
  }

  .team-profile-matches-table th:first-child,
  .team-profile-matches-table td:first-child {
    min-width: 34px !important;
    max-width: 38px !important;
    width: 38px !important;
    text-align: center !important;
  }

  .team-profile-matches-table th:nth-child(2),
  .team-profile-matches-table td:nth-child(2) {
    min-width: 76px !important;
    max-width: 96px !important;
  }

  .team-profile-matches-table th:nth-child(3),
  .team-profile-matches-table td:nth-child(3) {
    min-width: 178px !important;
    max-width: 240px !important;
    text-align: left !important;
  }

  .team-profile-matches-table th:nth-child(4),
  .team-profile-matches-table td:nth-child(4) {
    min-width: 58px !important;
    max-width: 82px !important;
  }
}

body.is-mobile-ux .team-profile-table-wrap {
  max-height: min(44vh, 360px) !important;
  overflow: auto !important;
}

body.is-mobile-ux .team-profile-roster-table {
  min-width: 440px !important;
}

body.is-mobile-ux .team-profile-roster-table th:first-child,
body.is-mobile-ux .team-profile-roster-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 8 !important;
  min-width: 142px !important;
  max-width: 170px !important;
  background: rgba(15, 23, 42, 0.99) !important;
  text-align: left !important;
}

body.is-mobile-ux .team-profile-roster-table th:first-child {
  z-index: 10 !important;
  text-align: center !important;
}

body.is-mobile-ux .team-profile-palmares-table th:first-child,
body.is-mobile-ux .team-profile-palmares-table td:first-child {
  min-width: 56px !important;
  max-width: 64px !important;
  width: 64px !important;
  text-align: center !important;
}

body.is-mobile-ux .team-profile-matches-table th:first-child,
body.is-mobile-ux .team-profile-matches-table td:first-child {
  min-width: 34px !important;
  max-width: 38px !important;
  width: 38px !important;
  text-align: center !important;
}

/* V39 - Roster quotation, compact team profile and stable mobile navigation */
.president-stack {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0;
  align-items: center;
}

.team-profile-header-stacked {
  align-items: center;
}

.team-profile-title-block {
  min-width: 0;
  display: grid;
  gap: 0.18rem;
}

.team-profile-title-block h3,
.team-profile-meta-line {
  margin: 0;
}

.roster-inline-table-wrap,
.team-profile-roster-wrap {
  overflow: auto !important;
}

.roster-player-table th.roster-col-player,
.roster-player-table td.roster-col-player,
.team-profile-roster-table th:first-child,
.team-profile-roster-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 6 !important;
  background: rgba(15, 23, 42, 0.99) !important;
  text-align: left !important;
}

.roster-player-table th.roster-col-player,
.team-profile-roster-table th:first-child {
  z-index: 9 !important;
}

.roster-player-table .roster-col-player { width: 36% !important; min-width: 13rem; }
.roster-player-table .roster-col-role { width: 18% !important; }
.roster-player-table .roster-col-qta { width: 11% !important; }
.roster-player-table .roster-col-team { width: 12% !important; }
.roster-player-table .roster-col-cost { width: 13% !important; }

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-tabular-wrap table.mobile-tabular th,
  .mobile-tabular-wrap table.mobile-tabular td,
  .table-wrap table th,
  .table-wrap table td {
    text-align: left !important;
  }

  .mobile-tabular-wrap table.mobile-tabular .number,
  .table-wrap table .number {
    text-align: left !important;
  }

  .roster-player-table,
  .team-profile-roster-table {
    min-width: 560px !important;
    table-layout: fixed !important;
  }

  .roster-player-table .roster-col-player,
  .team-profile-roster-table th:first-child,
  .team-profile-roster-table td:first-child {
    min-width: 170px !important;
    max-width: 190px !important;
    width: 170px !important;
  }

  .roster-player-table .roster-col-role,
  .team-profile-roster-table th:nth-child(2),
  .team-profile-roster-table td:nth-child(2) {
    min-width: 82px !important;
    width: 82px !important;
  }

  .roster-player-table .roster-col-qta,
  .team-profile-roster-table th:nth-child(3),
  .team-profile-roster-table td:nth-child(3) {
    min-width: 58px !important;
    width: 58px !important;
  }

  .roster-player-table .roster-col-team,
  .team-profile-roster-table th:nth-child(4),
  .team-profile-roster-table td:nth-child(4) {
    min-width: 48px !important;
    width: 48px !important;
  }

  .roster-player-table .roster-col-cost,
  .team-profile-roster-table th:nth-child(5),
  .team-profile-roster-table td:nth-child(5) {
    min-width: 62px !important;
    width: 62px !important;
  }

  .roster-player-table th,
  .roster-player-table td,
  .team-profile-roster-table th,
  .team-profile-roster-table td {
    padding: 5px 6px !important;
    font-size: 0.66rem !important;
  }

  .roster-season-table .president-stack {
    display: grid !important;
    gap: 0.12rem !important;
    line-height: 1.12 !important;
  }

  .roster-season-table .president-comma {
    display: none !important;
  }

  .roster-team-name,
  .roster-season-table .roster-team-name,
  .roster-season-table .team-profile-link,
  .roster-season-table .club-name-with-logo {
    text-align: left !important;
    justify-content: flex-start !important;
  }

  .team-profile-header-stacked {
    grid-template-columns: auto 1fr !important;
    align-items: center !important;
  }

  .team-profile-meta-line {
    font-size: 0.78rem !important;
    line-height: 1.2 !important;
  }

  .mobile-bottom-nav {
    position: fixed !important;
    left: 10px !important;
    right: 10px !important;
    bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
    z-index: 3000 !important;
    transform: translateZ(0) !important;
    will-change: transform !important;
    contain: layout paint !important;
  }

  body {
    padding-bottom: calc(92px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular th,
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular td,
body.is-mobile-ux .table-wrap table th,
body.is-mobile-ux .table-wrap table td,
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular .number,
body.is-mobile-ux .table-wrap table .number {
  text-align: left !important;
}

body.is-mobile-ux .roster-player-table,
body.is-mobile-ux .team-profile-roster-table {
  min-width: 560px !important;
  table-layout: fixed !important;
}

body.is-mobile-ux .roster-player-table .roster-col-player,
body.is-mobile-ux .team-profile-roster-table th:first-child,
body.is-mobile-ux .team-profile-roster-table td:first-child {
  min-width: 170px !important;
  max-width: 190px !important;
  width: 170px !important;
}

body.is-mobile-ux .roster-player-table .roster-col-role,
body.is-mobile-ux .team-profile-roster-table th:nth-child(2),
body.is-mobile-ux .team-profile-roster-table td:nth-child(2) { min-width: 82px !important; width: 82px !important; }
body.is-mobile-ux .roster-player-table .roster-col-qta,
body.is-mobile-ux .team-profile-roster-table th:nth-child(3),
body.is-mobile-ux .team-profile-roster-table td:nth-child(3) { min-width: 58px !important; width: 58px !important; }
body.is-mobile-ux .roster-player-table .roster-col-team,
body.is-mobile-ux .team-profile-roster-table th:nth-child(4),
body.is-mobile-ux .team-profile-roster-table td:nth-child(4) { min-width: 48px !important; width: 48px !important; }
body.is-mobile-ux .roster-player-table .roster-col-cost,
body.is-mobile-ux .team-profile-roster-table th:nth-child(5),
body.is-mobile-ux .team-profile-roster-table td:nth-child(5) { min-width: 62px !important; width: 62px !important; }

body.is-mobile-ux .roster-season-table .president-stack {
  display: grid !important;
  gap: 0.12rem !important;
  line-height: 1.12 !important;
}

body.is-mobile-ux .roster-season-table .president-comma { display: none !important; }
body.is-mobile-ux .mobile-bottom-nav {
  position: fixed !important;
  left: 10px !important;
  right: 10px !important;
  bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
  z-index: 3000 !important;
  transform: translateZ(0) !important;
  will-change: transform !important;
  contain: layout paint !important;
}

/* V40 - Roster table order, sticky first column and centered action buttons */
.button,
.button-small {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  line-height: 1.1;
}

.roster-inline-table-wrap,
.team-profile-roster-wrap {
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

.roster-player-table,
.team-profile-roster-table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
}

.roster-player-table th,
.roster-player-table td,
.team-profile-roster-table th,
.team-profile-roster-table td {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.roster-player-table th.roster-col-player,
.roster-player-table td.roster-col-player,
.team-profile-roster-table th:first-child,
.team-profile-roster-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 7 !important;
  background: rgba(15, 23, 42, 0.99) !important;
  text-align: left !important;
  box-shadow: 10px 0 14px rgba(15, 23, 42, 0.78);
}

.roster-player-table th.roster-col-player,
.team-profile-roster-table th:first-child {
  z-index: 12 !important;
}

.roster-player-table .roster-col-player { width: 34% !important; min-width: 11.5rem; }
.roster-player-table .roster-col-role { width: 18% !important; }
.roster-player-table .roster-col-team { width: 10% !important; }
.roster-player-table .roster-col-cost { width: 12% !important; }
.roster-player-table .roster-col-qta { width: 12% !important; }

.table-sort {
  display: inline-flex;
  align-items: center;
  justify-content: inherit;
  max-width: 100%;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .roster-player-table,
  .team-profile-roster-table {
    min-width: 470px !important;
    table-layout: fixed !important;
  }

  .roster-player-table .roster-col-player,
  .team-profile-roster-table th:first-child,
  .team-profile-roster-table td:first-child {
    min-width: 128px !important;
    max-width: 142px !important;
    width: 132px !important;
  }

  .roster-player-table .roster-col-role,
  .team-profile-roster-table th:nth-child(2),
  .team-profile-roster-table td:nth-child(2) {
    min-width: 76px !important;
    width: 76px !important;
  }

  .roster-player-table .roster-col-team,
  .team-profile-roster-table th:nth-child(3),
  .team-profile-roster-table td:nth-child(3) {
    min-width: 44px !important;
    width: 44px !important;
  }

  .roster-player-table .roster-col-cost,
  .team-profile-roster-table th:nth-child(4),
  .team-profile-roster-table td:nth-child(4) {
    min-width: 52px !important;
    width: 52px !important;
  }

  .roster-player-table .roster-col-qta,
  .team-profile-roster-table th:nth-child(5),
  .team-profile-roster-table td:nth-child(5) {
    min-width: 52px !important;
    width: 52px !important;
  }

  .roster-player-table th,
  .roster-player-table td,
  .team-profile-roster-table th,
  .team-profile-roster-table td {
    padding: 5px 5px !important;
    font-size: 0.64rem !important;
  }

  .roster-player-table .role-extra,
  .team-profile-roster-table .role-extra {
    font-size: 0.58rem !important;
  }

  .team-profile-roster-wrap {
    max-width: 100% !important;
    overflow-x: auto !important;
  }
}

body.is-mobile-ux .roster-player-table,
body.is-mobile-ux .team-profile-roster-table {
  min-width: 470px !important;
  table-layout: fixed !important;
}

body.is-mobile-ux .roster-player-table .roster-col-player,
body.is-mobile-ux .team-profile-roster-table th:first-child,
body.is-mobile-ux .team-profile-roster-table td:first-child {
  min-width: 128px !important;
  max-width: 142px !important;
  width: 132px !important;
}

body.is-mobile-ux .roster-player-table .roster-col-role,
body.is-mobile-ux .team-profile-roster-table th:nth-child(2),
body.is-mobile-ux .team-profile-roster-table td:nth-child(2) { min-width: 76px !important; width: 76px !important; }
body.is-mobile-ux .roster-player-table .roster-col-team,
body.is-mobile-ux .team-profile-roster-table th:nth-child(3),
body.is-mobile-ux .team-profile-roster-table td:nth-child(3) { min-width: 44px !important; width: 44px !important; }
body.is-mobile-ux .roster-player-table .roster-col-cost,
body.is-mobile-ux .team-profile-roster-table th:nth-child(4),
body.is-mobile-ux .team-profile-roster-table td:nth-child(4) { min-width: 52px !important; width: 52px !important; }
body.is-mobile-ux .roster-player-table .roster-col-qta,
body.is-mobile-ux .team-profile-roster-table th:nth-child(5),
body.is-mobile-ux .team-profile-roster-table td:nth-child(5) { min-width: 52px !important; width: 52px !important; }

/* V41 - Mobile table readability and dashboard layout refinements. */
/* Dashboard: keep competition standings and calendar stacked on desktop too. */
.dashboard-grid {
  grid-template-columns: 1fr !important;
}

/* Listone/Svincolati: left aligned columns and first column labelled Giocatore in JS. */
.listone-table th,
.listone-table td,
.free-agents-table th,
.free-agents-table td {
  text-align: left !important;
}
.listone-table .number,
.free-agents-table .number {
  text-align: left !important;
}
.listone-table th .table-sort,
.free-agents-table th .table-sort {
  justify-content: flex-start !important;
  text-align: left !important;
}

/* Rose -> Movimenti: keep Rosa aligned left and let Giocatore wrap when needed. */
#marketActivityTableBody td:nth-child(2),
.app-page[data-page="clubs"] table th:nth-child(2) {
  text-align: left !important;
}
#marketActivityTableBody td:nth-child(4) {
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
}

/* Team profile tables. */
.team-profile-roster-wrap {
  position: relative;
  overflow: auto !important;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
}
.team-profile-roster-table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
}
.team-profile-roster-table th,
.team-profile-roster-table td {
  text-align: left !important;
}
.team-profile-roster-table .number {
  text-align: left !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Generic mobile table behavior: real tables, horizontal scroll, sticky headers. */
  .mobile-tabular-wrap,
  .table-wrap,
  .team-profile-table-wrap,
  .team-profile-roster-wrap,
  .listone-table-wrap,
  .roster-inline-table-wrap,
  .roster-season-table-wrap {
    overflow: auto !important;
    max-width: 100% !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .mobile-tabular-wrap table,
  .table-wrap table,
  .team-profile-table-wrap table,
  .team-profile-roster-wrap table,
  table.mobile-tabular,
  table.listone-table,
  table.free-agents-table,
  table.roster-player-table,
  table.team-profile-roster-table {
    display: table !important;
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.62rem !important;
  }

  .mobile-tabular-wrap thead,
  .table-wrap thead,
  .team-profile-table-wrap thead,
  .team-profile-roster-wrap thead,
  table.mobile-tabular thead,
  table.listone-table thead,
  table.free-agents-table thead,
  table.roster-player-table thead,
  table.team-profile-roster-table thead {
    display: table-header-group !important;
  }

  .mobile-tabular-wrap tbody,
  .table-wrap tbody,
  .team-profile-table-wrap tbody,
  .team-profile-roster-wrap tbody,
  table.mobile-tabular tbody,
  table.listone-table tbody,
  table.free-agents-table tbody,
  table.roster-player-table tbody,
  table.team-profile-roster-table tbody {
    display: table-row-group !important;
  }

  .mobile-tabular-wrap tr,
  .table-wrap tr,
  .team-profile-table-wrap tr,
  .team-profile-roster-wrap tr,
  table.mobile-tabular tr,
  table.listone-table tr,
  table.free-agents-table tr,
  table.roster-player-table tr,
  table.team-profile-roster-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
  }

  .mobile-tabular-wrap th,
  .mobile-tabular-wrap td,
  .table-wrap th,
  .table-wrap td,
  .team-profile-table-wrap th,
  .team-profile-table-wrap td,
  .team-profile-roster-wrap th,
  .team-profile-roster-wrap td,
  table.mobile-tabular th,
  table.mobile-tabular td,
  table.listone-table th,
  table.listone-table td,
  table.free-agents-table th,
  table.free-agents-table td,
  table.roster-player-table th,
  table.roster-player-table td,
  table.team-profile-roster-table th,
  table.team-profile-roster-table td {
    display: table-cell !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    padding: 4px 7px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    text-align: left !important;
    vertical-align: middle !important;
    border-right: 0 !important;
  }

  .mobile-tabular-wrap td::before,
  .table-wrap td::before,
  .team-profile-table-wrap td::before,
  .team-profile-roster-wrap td::before,
  table.mobile-tabular td::before {
    content: none !important;
    display: none !important;
  }

  .mobile-tabular-wrap th,
  .table-wrap th,
  .team-profile-table-wrap th,
  .team-profile-roster-wrap th,
  table.mobile-tabular th,
  table.listone-table th,
  table.free-agents-table th,
  table.roster-player-table th,
  table.team-profile-roster-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 20 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    text-align: left !important;
  }

  .mobile-tabular-wrap th .table-sort,
  .table-wrap th .table-sort,
  table.listone-table th .table-sort,
  table.free-agents-table th .table-sort,
  table.roster-player-table th .table-sort {
    justify-content: flex-start !important;
    text-align: left !important;
    white-space: nowrap !important;
  }

  /* Sticky first column for roster tables inside team profile and roster section. */
  table.team-profile-roster-table th:first-child,
  table.team-profile-roster-table td:first-child,
  table.roster-player-table th.roster-col-player,
  table.roster-player-table td.roster-col-player {
    position: sticky !important;
    left: 0 !important;
    z-index: 21 !important;
    background: rgba(15, 23, 42, 0.99) !important;
    min-width: 9.5rem !important;
    max-width: 9.5rem !important;
    width: 9.5rem !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }

  table.team-profile-roster-table th:first-child,
  table.roster-player-table th.roster-col-player {
    z-index: 31 !important;
  }

  /* Listone and Svincolati: player name first, sticky and readable. */
  table.listone-table th.listone-col-playerName,
  table.listone-table td.listone-col-playerName,
  table.free-agents-table th.listone-col-playerName,
  table.free-agents-table td.listone-col-playerName {
    position: sticky !important;
    left: 0 !important;
    z-index: 21 !important;
    background: rgba(15, 23, 42, 0.99) !important;
    min-width: 9.8rem !important;
    max-width: 9.8rem !important;
    width: 9.8rem !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    text-align: left !important;
  }

  table.listone-table th.listone-col-playerName,
  table.free-agents-table th.listone-col-playerName {
    z-index: 31 !important;
  }

  /* Keep compact numeric/short columns. */
  table.team-profile-roster-table th:nth-child(n+2),
  table.team-profile-roster-table td:nth-child(n+2),
  table.roster-player-table th:not(.roster-col-player),
  table.roster-player-table td:not(.roster-col-player),
  table.listone-table th:not(.listone-col-playerName),
  table.listone-table td:not(.listone-col-playerName),
  table.free-agents-table th:not(.listone-col-playerName),
  table.free-agents-table td:not(.listone-col-playerName) {
    min-width: 3.3rem !important;
  }

  /* Movimenti: Rosa left; Giocatore can wrap rather than overlap. */
  #marketActivityTableBody td:nth-child(2) {
    text-align: left !important;
  }
  #marketActivityTableBody td:nth-child(4) {
    min-width: 7rem !important;
    max-width: 9rem !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }
}

/* Same rules for JS forced mobile UX class used by Samsung Internet/Brave. */
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .table-wrap,
body.is-mobile-ux .team-profile-table-wrap,
body.is-mobile-ux .team-profile-roster-wrap,
body.is-mobile-ux .listone-table-wrap,
body.is-mobile-ux .roster-inline-table-wrap,
body.is-mobile-ux .roster-season-table-wrap {
  overflow: auto !important;
  max-width: 100% !important;
  -webkit-overflow-scrolling: touch !important;
}
body.is-mobile-ux .mobile-tabular-wrap table,
body.is-mobile-ux .table-wrap table,
body.is-mobile-ux .team-profile-table-wrap table,
body.is-mobile-ux .team-profile-roster-wrap table,
body.is-mobile-ux table.mobile-tabular,
body.is-mobile-ux table.listone-table,
body.is-mobile-ux table.free-agents-table,
body.is-mobile-ux table.roster-player-table,
body.is-mobile-ux table.team-profile-roster-table {
  display: table !important;
  table-layout: auto !important;
  width: max-content !important;
  min-width: 100% !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.62rem !important;
}
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .mobile-tabular-wrap td,
body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .table-wrap td,
body.is-mobile-ux .team-profile-table-wrap th,
body.is-mobile-ux .team-profile-table-wrap td,
body.is-mobile-ux .team-profile-roster-wrap th,
body.is-mobile-ux .team-profile-roster-wrap td,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.mobile-tabular td,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.listone-table td,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.free-agents-table td,
body.is-mobile-ux table.roster-player-table th,
body.is-mobile-ux table.roster-player-table td,
body.is-mobile-ux table.team-profile-roster-table th,
body.is-mobile-ux table.team-profile-roster-table td {
  display: table-cell !important;
  width: auto !important;
  min-width: max-content !important;
  max-width: none !important;
  padding: 4px 7px !important;
  line-height: 1.15 !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  text-align: left !important;
  vertical-align: middle !important;
  border-right: 0 !important;
}
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .team-profile-table-wrap th,
body.is-mobile-ux .team-profile-roster-wrap th,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.listone-table th,
body.is-mobile-ux table.free-agents-table th,
body.is-mobile-ux table.roster-player-table th,
body.is-mobile-ux table.team-profile-roster-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 20 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  text-align: left !important;
}
body.is-mobile-ux table.team-profile-roster-table th:first-child,
body.is-mobile-ux table.team-profile-roster-table td:first-child,
body.is-mobile-ux table.roster-player-table th.roster-col-player,
body.is-mobile-ux table.roster-player-table td.roster-col-player,
body.is-mobile-ux table.listone-table th.listone-col-playerName,
body.is-mobile-ux table.listone-table td.listone-col-playerName,
body.is-mobile-ux table.free-agents-table th.listone-col-playerName,
body.is-mobile-ux table.free-agents-table td.listone-col-playerName {
  position: sticky !important;
  left: 0 !important;
  z-index: 21 !important;
  background: rgba(15, 23, 42, 0.99) !important;
  min-width: 9.8rem !important;
  max-width: 9.8rem !important;
  width: 9.8rem !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  text-align: left !important;
}
body.is-mobile-ux table.team-profile-roster-table th:first-child,
body.is-mobile-ux table.roster-player-table th.roster-col-player,
body.is-mobile-ux table.listone-table th.listone-col-playerName,
body.is-mobile-ux table.free-agents-table th.listone-col-playerName {
  z-index: 31 !important;
}
body.is-mobile-ux table.team-profile-roster-table th:nth-child(n+2),
body.is-mobile-ux table.team-profile-roster-table td:nth-child(n+2),
body.is-mobile-ux table.roster-player-table th:not(.roster-col-player),
body.is-mobile-ux table.roster-player-table td:not(.roster-col-player),
body.is-mobile-ux table.listone-table th:not(.listone-col-playerName),
body.is-mobile-ux table.listone-table td:not(.listone-col-playerName),
body.is-mobile-ux table.free-agents-table th:not(.listone-col-playerName),
body.is-mobile-ux table.free-agents-table td:not(.listone-col-playerName) {
  min-width: 3.3rem !important;
}
body.is-mobile-ux #marketActivityTableBody td:nth-child(2) {
  text-align: left !important;
}
body.is-mobile-ux #marketActivityTableBody td:nth-child(4) {
  min-width: 7rem !important;
  max-width: 9rem !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
}

/* V42 - Team profile page and dashboard news links. */
.team-profile-page .page-heading {
  margin-bottom: 14px;
}

.team-profile-page-body {
  display: grid;
  gap: 14px;
}

.team-profile-page-body .detail-section {
  margin-top: 0;
}

.team-profile-hero-panel {
  margin-bottom: 0;
}

.team-profile-page-hero {
  display: flex;
  align-items: center;
  gap: 14px;
}

.team-profile-page-hero .button {
  margin-left: auto;
}

.team-profile-news-list {
  display: grid;
  gap: 10px;
}

.team-area-profile-action {
  margin-top: 12px;
}

.dashboard-news-panel {
  margin-bottom: 18px;
}

.dashboard-news-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.dashboard-news-card {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.42);
}

.dashboard-news-card h3 {
  margin: 3px 0 6px;
  font-size: 0.98rem;
}

.dashboard-news-side {
  display: grid;
  justify-items: end;
  align-content: space-between;
  gap: 8px;
  min-width: 96px;
  text-align: right;
}

.dashboard-news-team-link {
  color: var(--text);
}

.team-profile-link {
  color: inherit;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .dashboard-news-list {
    grid-template-columns: 1fr;
  }

  .dashboard-news-card {
    padding: 10px;
  }

  .dashboard-news-side {
    min-width: 76px;
  }

  .team-profile-page-hero {
    align-items: flex-start;
  }

  .team-profile-page-hero .button {
    margin-left: 0;
    width: 100%;
  }

  .team-profile-page-body .team-profile-roster-wrap {
    max-height: min(62vh, 520px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .team-profile-page-body .team-profile-roster-table th:first-child,
  .team-profile-page-body .team-profile-roster-table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 4;
    background: rgba(15, 23, 42, 0.98) !important;
    min-width: 132px !important;
    max-width: 132px !important;
  }

  .team-profile-page-body .team-profile-roster-table th:first-child {
    z-index: 6;
  }
}

body.is-mobile-ux .dashboard-news-list {
  grid-template-columns: 1fr;
}

body.is-mobile-ux .team-profile-page-body .team-profile-roster-wrap {
  max-height: min(62vh, 520px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

body.is-mobile-ux .team-profile-page-body .team-profile-roster-table th:first-child,
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 4;
  background: rgba(15, 23, 42, 0.98) !important;
  min-width: 132px !important;
  max-width: 132px !important;
}


/* V44 - Team links in Rose, role/mantra display support and mobile sticky roster profile table. */
.roster-team-name .team-profile-link,
.roster-team-name .club-name-with-logo {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  max-width: 100%;
  text-align: left;
}
.roster-team-name .team-profile-link {
  color: inherit;
  text-decoration: none;
}
.roster-team-name .team-profile-link:hover {
  text-decoration: underline;
}
.role-extra {
  white-space: nowrap;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .team-profile-page-body .team-profile-roster-wrap,
  .team-profile-roster-wrap {
    max-height: min(62vh, 520px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch !important;
    position: relative !important;
    border-radius: 14px;
  }
  .team-profile-page-body .team-profile-roster-table,
  table.team-profile-roster-table.roster-sticky-table,
  table.team-profile-roster-table {
    display: table !important;
    width: max-content !important;
    min-width: 100% !important;
    table-layout: auto !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
  }
  .team-profile-page-body .team-profile-roster-table thead,
  table.team-profile-roster-table thead {
    display: table-header-group !important;
  }
  .team-profile-page-body .team-profile-roster-table tbody,
  table.team-profile-roster-table tbody {
    display: table-row-group !important;
  }
  .team-profile-page-body .team-profile-roster-table tr,
  table.team-profile-roster-table tr {
    display: table-row !important;
  }
  .team-profile-page-body .team-profile-roster-table th,
  .team-profile-page-body .team-profile-roster-table td,
  table.team-profile-roster-table th,
  table.team-profile-roster-table td {
    display: table-cell !important;
    white-space: nowrap !important;
    text-align: left !important;
    vertical-align: middle !important;
    width: auto !important;
    max-width: none !important;
    min-width: 3.5rem !important;
    padding: 5px 7px !important;
  }
  .team-profile-page-body .team-profile-roster-table th,
  table.team-profile-roster-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 40 !important;
    background: rgba(15, 23, 42, 0.99) !important;
  }
  .team-profile-page-body .team-profile-roster-table th:first-child,
  .team-profile-page-body .team-profile-roster-table td:first-child,
  table.team-profile-roster-table th:first-child,
  table.team-profile-roster-table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 45 !important;
    background: rgba(15, 23, 42, 1) !important;
    min-width: 9.8rem !important;
    width: 9.8rem !important;
    max-width: 9.8rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  .team-profile-page-body .team-profile-roster-table th:first-child,
  table.team-profile-roster-table th:first-child {
    z-index: 55 !important;
  }
  .team-profile-page-body .team-profile-roster-table td::before,
  table.team-profile-roster-table td::before {
    display: none !important;
    content: none !important;
  }
}

body.is-mobile-ux .team-profile-page-body .team-profile-roster-wrap,
body.is-mobile-ux .team-profile-roster-wrap {
  max-height: min(62vh, 520px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch !important;
  position: relative !important;
}
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table,
body.is-mobile-ux table.team-profile-roster-table.roster-sticky-table,
body.is-mobile-ux table.team-profile-roster-table {
  display: table !important;
  width: max-content !important;
  min-width: 100% !important;
  table-layout: auto !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
}
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table th,
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table td,
body.is-mobile-ux table.team-profile-roster-table th,
body.is-mobile-ux table.team-profile-roster-table td {
  display: table-cell !important;
  white-space: nowrap !important;
  text-align: left !important;
  vertical-align: middle !important;
  width: auto !important;
  max-width: none !important;
  min-width: 3.5rem !important;
  padding: 5px 7px !important;
}
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table th,
body.is-mobile-ux table.team-profile-roster-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 40 !important;
  background: rgba(15, 23, 42, 0.99) !important;
}
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table th:first-child,
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table td:first-child,
body.is-mobile-ux table.team-profile-roster-table th:first-child,
body.is-mobile-ux table.team-profile-roster-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 45 !important;
  background: rgba(15, 23, 42, 1) !important;
  min-width: 9.8rem !important;
  width: 9.8rem !important;
  max-width: 9.8rem !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table th:first-child,
body.is-mobile-ux table.team-profile-roster-table th:first-child {
  z-index: 55 !important;
}
body.is-mobile-ux .team-profile-page-body .team-profile-roster-table td::before,
body.is-mobile-ux table.team-profile-roster-table td::before {
  display: none !important;
  content: none !important;
}

/* V45 - Mobile-only readable tables: sticky headers/first columns, 10-row scroll, no truncation. */
.mobile-table-actions {
  display: none;
}

.mobile-table-toggle {
  justify-content: center;
  text-align: center;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-table-actions {
    display: flex !important;
    justify-content: flex-end;
    align-items: center;
    margin: 6px 0 8px;
  }

  .mobile-table-toggle {
    min-width: 96px;
    min-height: 36px;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    line-height: 1 !important;
    padding: 8px 12px !important;
  }

  .v45-mobile-table-wrap,
  .mobile-tabular-wrap.v45-mobile-table-wrap,
  .table-wrap.v45-mobile-table-wrap,
  .compact-table.v45-mobile-table-wrap,
  .standing-table-wrap.v45-mobile-table-wrap,
  .roster-dialog-table.v45-mobile-table-wrap,
  .honor-table-wrap.v45-mobile-table-wrap {
    max-height: 392px !important;
    height: auto !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch !important;
    position: relative !important;
    border-radius: 14px !important;
    border: 1px solid rgba(148, 163, 184, 0.22) !important;
    background: rgba(15, 23, 42, 0.25) !important;
  }

  .v45-mobile-table-wrap.mobile-table-is-collapsed {
    max-height: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    border-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .v45-mobile-table,
  .v45-mobile-table thead,
  .v45-mobile-table tbody,
  .v45-mobile-table tr,
  .v45-mobile-table th,
  .v45-mobile-table td {
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  table.v45-mobile-table {
    display: table !important;
    width: max-content !important;
    min-width: 100% !important;
    table-layout: auto !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.72rem !important;
  }

  table.v45-mobile-table thead {
    display: table-header-group !important;
  }

  table.v45-mobile-table tbody {
    display: table-row-group !important;
  }

  table.v45-mobile-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  table.v45-mobile-table th,
  table.v45-mobile-table td {
    display: table-cell !important;
    padding: 6px 8px !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.14) !important;
    vertical-align: middle !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    min-height: 0 !important;
    line-height: 1.18 !important;
  }

  table.v45-mobile-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 30 !important;
    background: rgba(15, 23, 42, 0.99) !important;
    color: #e5e7eb !important;
    font-size: 0.64rem !important;
    font-weight: 900 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.035em !important;
  }

  table.v45-mobile-table td::before,
  table.v45-mobile-table th::before {
    content: none !important;
    display: none !important;
  }

  table.v45-mobile-table .number,
  table.v45-mobile-table th.number,
  table.v45-mobile-table td.number {
    text-align: right !important;
    font-variant-numeric: tabular-nums !important;
  }

  /* Sticky first column for every mobile table. The content must remain readable, never ellipsized. */
  table.v45-mobile-table th:first-child,
  table.v45-mobile-table td:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 35 !important;
    background: rgba(15, 23, 42, 1) !important;
    min-width: max-content !important;
    width: auto !important;
    max-width: none !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    box-shadow: 1px 0 0 rgba(148, 163, 184, 0.18) !important;
  }

  table.v45-mobile-table th:first-child {
    z-index: 50 !important;
  }

  table.v45-mobile-table td:first-child *,
  table.v45-mobile-table th:first-child *,
  table.v45-mobile-table .listone-player-cell .link-button,
  table.v45-mobile-table .roster-player-cell .link-button,
  table.v45-mobile-table .team-profile-player-cell,
  table.v45-mobile-table .team-profile-player-cell strong {
    max-width: none !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }

  /* Listone, Svincolati and team profile roster behave as wide tables inside their own scrollbox. */
  .listone-table-wrap.v45-mobile-table-wrap,
  .team-profile-roster-wrap.v45-mobile-table-wrap,
  .roster-inline-table-wrap.v45-mobile-table-wrap {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: auto !important;
  }

  table.listone-table.v45-mobile-table th:first-child,
  table.listone-table.v45-mobile-table td:first-child,
  table.team-profile-roster-table.v45-mobile-table th:first-child,
  table.team-profile-roster-table.v45-mobile-table td:first-child,
  table.roster-player-table.v45-mobile-table th:first-child,
  table.roster-player-table.v45-mobile-table td:first-child {
    min-width: max-content !important;
    padding-right: 12px !important;
  }

  table.team-profile-roster-table.v45-mobile-table th:nth-child(n+2),
  table.team-profile-roster-table.v45-mobile-table td:nth-child(n+2),
  table.roster-player-table.v45-mobile-table th:nth-child(n+2),
  table.roster-player-table.v45-mobile-table td:nth-child(n+2),
  table.listone-table.v45-mobile-table th:nth-child(n+2),
  table.listone-table.v45-mobile-table td:nth-child(n+2) {
    min-width: 3.2rem !important;
  }

  table.team-profile-roster-table.v45-mobile-table th:nth-child(2),
  table.team-profile-roster-table.v45-mobile-table td:nth-child(2),
  table.roster-player-table.v45-mobile-table th:nth-child(2),
  table.roster-player-table.v45-mobile-table td:nth-child(2),
  table.listone-table.v45-mobile-table th:nth-child(2),
  table.listone-table.v45-mobile-table td:nth-child(2) {
    min-width: 4.6rem !important;
  }

  .team-profile-page-body .team-profile-roster-table th:first-child,
  .team-profile-page-body .team-profile-roster-table td:first-child,
  table.team-profile-roster-table.roster-sticky-table th:first-child,
  table.team-profile-roster-table.roster-sticky-table td:first-child {
    min-width: max-content !important;
    width: auto !important;
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
  }
}

body.is-mobile-ux .mobile-table-actions {
  display: flex !important;
  justify-content: flex-end;
  align-items: center;
  margin: 6px 0 8px;
}

body.is-mobile-ux .mobile-table-toggle {
  min-width: 96px;
  min-height: 36px;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1 !important;
  padding: 8px 12px !important;
}

body.is-mobile-ux .v45-mobile-table-wrap {
  max-height: 392px !important;
  height: auto !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch !important;
  position: relative !important;
  border-radius: 14px !important;
  border: 1px solid rgba(148, 163, 184, 0.22) !important;
  background: rgba(15, 23, 42, 0.25) !important;
}

body.is-mobile-ux .v45-mobile-table-wrap.mobile-table-is-collapsed {
  max-height: 0 !important;
  height: 0 !important;
  min-height: 0 !important;
  overflow: hidden !important;
  border-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

body.is-mobile-ux table.v45-mobile-table {
  display: table !important;
  width: max-content !important;
  min-width: 100% !important;
  table-layout: auto !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.72rem !important;
}

body.is-mobile-ux table.v45-mobile-table thead { display: table-header-group !important; }
body.is-mobile-ux table.v45-mobile-table tbody { display: table-row-group !important; }
body.is-mobile-ux table.v45-mobile-table tr { display: table-row !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; }

body.is-mobile-ux table.v45-mobile-table th,
body.is-mobile-ux table.v45-mobile-table td {
  display: table-cell !important;
  width: auto !important;
  max-width: none !important;
  padding: 6px 8px !important;
  border-bottom: 1px solid rgba(148, 163, 184, 0.14) !important;
  vertical-align: middle !important;
  text-align: left !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  min-height: 0 !important;
  line-height: 1.18 !important;
}

body.is-mobile-ux table.v45-mobile-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 30 !important;
  background: rgba(15, 23, 42, 0.99) !important;
  color: #e5e7eb !important;
  font-size: 0.64rem !important;
  font-weight: 900 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.035em !important;
}

body.is-mobile-ux table.v45-mobile-table td::before,
body.is-mobile-ux table.v45-mobile-table th::before { content: none !important; display: none !important; }

body.is-mobile-ux table.v45-mobile-table th:first-child,
body.is-mobile-ux table.v45-mobile-table td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 35 !important;
  background: rgba(15, 23, 42, 1) !important;
  min-width: max-content !important;
  width: auto !important;
  max-width: none !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  box-shadow: 1px 0 0 rgba(148, 163, 184, 0.18) !important;
}

body.is-mobile-ux table.v45-mobile-table th:first-child { z-index: 50 !important; }

body.is-mobile-ux table.v45-mobile-table td:first-child *,
body.is-mobile-ux table.v45-mobile-table th:first-child *,
body.is-mobile-ux table.v45-mobile-table .listone-player-cell .link-button,
body.is-mobile-ux table.v45-mobile-table .roster-player-cell .link-button,
body.is-mobile-ux table.v45-mobile-table .team-profile-player-cell,
body.is-mobile-ux table.v45-mobile-table .team-profile-player-cell strong {
  max-width: none !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
}

/* V46 - Adaptive mobile sizing based on real viewport dimensions.
   Only affects mobile UX classes generated from window.visualViewport/innerWidth. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  body.is-mobile-ux {
    padding-bottom: calc(var(--mobile-nav-height, 78px) + var(--mobile-nav-inset, 10px) + env(safe-area-inset-bottom, 0px)) !important;
  }

  body.is-mobile-ux .mobile-bottom-nav {
    left: var(--mobile-nav-inset, 10px) !important;
    right: var(--mobile-nav-inset, 10px) !important;
    bottom: calc(var(--mobile-nav-inset, 10px) + env(safe-area-inset-bottom, 0px)) !important;
    gap: var(--mobile-nav-gap, 6px) !important;
    padding: var(--mobile-nav-padding, 8px) !important;
    border-radius: var(--mobile-nav-radius, 24px) !important;
    min-height: var(--mobile-nav-height, 78px) !important;
  }

  body.is-mobile-ux .mobile-bottom-link {
    min-height: calc(var(--mobile-nav-height, 78px) - 18px) !important;
    padding: 6px 2px !important;
    font-size: var(--mobile-nav-font-size, 0.68rem) !important;
    line-height: 1.05 !important;
  }

  body.is-mobile-ux .mobile-nav-icon {
    font-size: var(--mobile-nav-icon-size, 1.05rem) !important;
  }

  body.is-mobile-ux .mobile-more-sheet:not(.hidden) {
    left: var(--mobile-nav-inset, 10px) !important;
    right: var(--mobile-nav-inset, 10px) !important;
    bottom: calc(var(--mobile-nav-height, 78px) + var(--mobile-nav-inset, 10px) + 10px + env(safe-area-inset-bottom, 0px)) !important;
  }

  body.is-mobile-ux .v45-mobile-table-wrap,
  body.is-mobile-ux .mobile-tabular-wrap,
  body.is-mobile-ux .standing-table-wrap,
  body.is-mobile-ux .roster-dialog-table,
  body.is-mobile-ux .compact-table {
    max-height: var(--mobile-table-max-height, 392px) !important;
  }

  body.is-mobile-ux table.v45-mobile-table th,
  body.is-mobile-ux table.v45-mobile-table td {
    height: var(--mobile-table-row-height, 34px) !important;
  }

  body.screen-xs .container {
    width: calc(100% - 14px) !important;
  }

  body.screen-xs .app-header {
    padding-top: 12px !important;
  }

  body.screen-xs h1 {
    font-size: 1.36rem !important;
  }

  body.screen-xs .page-heading,
  body.screen-xs .panel,
  body.screen-xs .metric-card,
  body.screen-xs .season-control-panel {
    padding: 8px !important;
    border-radius: 12px !important;
  }

  body.screen-xs .page-heading h2 {
    font-size: 1.08rem !important;
  }

  body.screen-xs .panel-header h2,
  body.screen-xs .detail-section h3 {
    font-size: 0.94rem !important;
  }

  body.screen-xs .metric-card strong {
    font-size: 1.14rem !important;
  }

  body.screen-xs .button,
  body.screen-xs .button-small,
  body.screen-xs .input,
  body.screen-xs .search-input,
  body.screen-xs .filter-input {
    min-height: 36px !important;
    font-size: 0.88rem !important;
  }

  body.screen-xs table.v45-mobile-table th,
  body.screen-xs table.v45-mobile-table td {
    padding: 5px 6px !important;
    font-size: 0.66rem !important;
  }

  body.screen-sm table.v45-mobile-table th,
  body.screen-sm table.v45-mobile-table td {
    padding: 6px 7px !important;
    font-size: 0.7rem !important;
  }

  body.screen-md-mobile .cards-grid {
    gap: 10px !important;
  }

  body.screen-landscape .app-header {
    padding-top: 10px !important;
    padding-bottom: 8px !important;
  }

  body.screen-landscape .header-grid {
    grid-template-columns: 1fr auto !important;
    align-items: center !important;
  }

  body.screen-landscape .header-actions {
    grid-template-columns: minmax(170px, 1fr) auto auto auto !important;
    align-items: end !important;
  }

  body.screen-landscape .header-actions .season-switcher {
    grid-column: auto !important;
  }

  body.screen-landscape .page-heading {
    padding: 8px 10px !important;
  }

  body.screen-short .page-heading p,
  body.screen-short .panel-header p,
  body.screen-short .field-hint {
    display: none !important;
  }

  body.screen-short .metric-card {
    padding: 7px 8px !important;
  }

  body.screen-tall .v45-mobile-table-wrap {
    max-height: min(var(--mobile-table-max-height, 410px), 62vh) !important;
  }
}

body.is-mobile-ux .v45-mobile-table-wrap,
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .standing-table-wrap,
body.is-mobile-ux .roster-dialog-table,
body.is-mobile-ux .compact-table {
  max-height: var(--mobile-table-max-height, 392px) !important;
}

body.screen-xs .mobile-table-toggle {
  min-width: 82px !important;
  min-height: 32px !important;
  padding: 6px 9px !important;
  font-size: 0.74rem !important;
}

/* V47 - Mobile fixed viewport tables and stable navigation/header.
   Mobile only: tables fit the screen, scroll internally, and first columns are not sticky. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  html,
  body.is-mobile-ux {
    width: 100% !important;
    max-width: 100vw !important;
    overflow-x: hidden !important;
  }

  body.is-mobile-ux .app-header {
    width: 100% !important;
    max-width: 100vw !important;
    min-width: 0 !important;
    overflow: hidden !important;
    position: relative !important;
    transform: none !important;
  }

  body.is-mobile-ux .container,
  body.is-mobile-ux .app-main,
  body.is-mobile-ux .app-footer {
    width: min(100% - 16px, 1220px) !important;
    max-width: calc(100vw - 16px) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    min-width: 0 !important;
  }

  body.is-mobile-ux h1,
  body.is-mobile-ux.screen-xs h1 {
    font-size: clamp(1.5rem, 7vw, 1.8rem) !important;
    line-height: 1.02 !important;
  }

  body.is-mobile-ux .header-grid,
  body.is-mobile-ux .header-actions {
    width: 100% !important;
    min-width: 0 !important;
  }

  body.is-mobile-ux .mobile-bottom-nav {
    position: fixed !important;
    display: grid !important;
    left: var(--mobile-nav-inset, 8px) !important;
    right: var(--mobile-nav-inset, 8px) !important;
    bottom: calc(var(--mobile-nav-inset, 8px) + env(safe-area-inset-bottom, 0px)) !important;
    width: auto !important;
    max-width: calc(100vw - (var(--mobile-nav-inset, 8px) * 2)) !important;
    min-width: 0 !important;
    z-index: 2147483000 !important;
    transform: translateZ(0) !important;
    will-change: transform !important;
    contain: layout paint !important;
  }

  body.is-mobile-ux .mobile-more-sheet:not(.hidden) {
    position: fixed !important;
    z-index: 2147483001 !important;
    max-width: calc(100vw - (var(--mobile-nav-inset, 8px) * 2)) !important;
    overflow: auto !important;
  }

  /* Every mobile table stays within the screen. Data scrolls inside the table wrapper. */
  body.is-mobile-ux .table-wrap,
  body.is-mobile-ux .mobile-tabular-wrap,
  body.is-mobile-ux .standing-table-wrap,
  body.is-mobile-ux .roster-dialog-table,
  body.is-mobile-ux .compact-table,
  body.is-mobile-ux .mini-table-wrap,
  body.is-mobile-ux .honor-table-wrap,
  body.is-mobile-ux .mobile-honor-table-wrap,
  body.is-mobile-ux .v45-mobile-table-wrap {
    display: block !important;
    width: 100% !important;
    max-width: calc(100vw - 16px) !important;
    min-width: 0 !important;
    max-height: var(--mobile-table-max-height, 392px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
    border-radius: 14px !important;
  }

  body.is-mobile-ux table,
  body.is-mobile-ux table.mobile-tabular,
  body.is-mobile-ux table.v45-mobile-table,
  body.is-mobile-ux table.standing-table,
  body.is-mobile-ux table.mobile-honor-table {
    display: table !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
    table-layout: auto !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
  }

  body.is-mobile-ux table thead,
  body.is-mobile-ux table.mobile-tabular thead,
  body.is-mobile-ux table.v45-mobile-table thead,
  body.is-mobile-ux table.standing-table thead,
  body.is-mobile-ux table.mobile-honor-table thead {
    display: table-header-group !important;
  }

  body.is-mobile-ux table tbody,
  body.is-mobile-ux table.mobile-tabular tbody,
  body.is-mobile-ux table.v45-mobile-table tbody,
  body.is-mobile-ux table.standing-table tbody,
  body.is-mobile-ux table.mobile-honor-table tbody {
    display: table-row-group !important;
  }

  body.is-mobile-ux table tr,
  body.is-mobile-ux table.mobile-tabular tr,
  body.is-mobile-ux table.v45-mobile-table tr,
  body.is-mobile-ux table.standing-table tr,
  body.is-mobile-ux table.mobile-honor-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  body.is-mobile-ux table th,
  body.is-mobile-ux table td,
  body.is-mobile-ux table.mobile-tabular th,
  body.is-mobile-ux table.mobile-tabular td,
  body.is-mobile-ux table.v45-mobile-table th,
  body.is-mobile-ux table.v45-mobile-table td,
  body.is-mobile-ux table.standing-table th,
  body.is-mobile-ux table.standing-table td,
  body.is-mobile-ux table.mobile-honor-table th,
  body.is-mobile-ux table.mobile-honor-table td {
    display: table-cell !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    padding: 7px 8px !important;
    white-space: nowrap !important;
    overflow: visible !important;
    text-overflow: clip !important;
    vertical-align: middle !important;
    text-align: left !important;
    height: var(--mobile-table-row-height, 34px) !important;
  }

  body.is-mobile-ux table td::before,
  body.is-mobile-ux table th::before {
    content: none !important;
    display: none !important;
  }

  /* Header remains sticky. */
  body.is-mobile-ux table th,
  body.is-mobile-ux table.mobile-tabular th,
  body.is-mobile-ux table.v45-mobile-table th,
  body.is-mobile-ux table.standing-table th,
  body.is-mobile-ux table.mobile-honor-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 20 !important;
    background: rgba(15, 23, 42, 0.99) !important;
  }

  /* V47: once tables have fixed screen-sized wrappers, first columns must not be sticky. */
  body.is-mobile-ux table th:first-child,
  body.is-mobile-ux table td:first-child,
  body.is-mobile-ux table.v45-mobile-table th:first-child,
  body.is-mobile-ux table.v45-mobile-table td:first-child,
  body.is-mobile-ux table.mobile-tabular th:first-child,
  body.is-mobile-ux table.mobile-tabular td:first-child,
  body.is-mobile-ux table.standing-table th:first-child,
  body.is-mobile-ux table.standing-table td:first-child,
  body.is-mobile-ux table.mobile-honor-table th:first-child,
  body.is-mobile-ux table.mobile-honor-table td:first-child {
    position: static !important;
    left: auto !important;
    z-index: auto !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  body.is-mobile-ux table th:first-child {
    background: rgba(15, 23, 42, 0.99) !important;
    z-index: 20 !important;
  }

  body.is-mobile-ux .number,
  body.is-mobile-ux table .number {
    text-align: right !important;
  }

  body.is-mobile-ux .mobile-table-actions {
    width: 100% !important;
    max-width: calc(100vw - 16px) !important;
  }
}

body.is-mobile-ux .mobile-bottom-nav {
  position: fixed !important;
  display: grid !important;
  z-index: 2147483000 !important;
}


/* V49 - Mobile table readability and preserved news formatting. */
.news-body-preserve,
.admin-news-preview {
  white-space: pre-wrap;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  /* Keep every table inside the screen: horizontal/vertical data scroll happens inside the table box. */
  .table-wrap,
  .mobile-tabular-wrap,
  .standing-table-wrap,
  .roster-dialog-table,
  .compact-table,
  .mini-table-wrap,
  .honor-table-wrap,
  .mobile-honor-table-wrap,
  .v45-mobile-table-wrap {
    width: 100% !important;
    max-width: calc(100vw - 20px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
    max-height: min(calc(var(--viewport-height, 640px) * 0.58), 460px) !important;
  }

  /* All mobile tables stay tabular and readable: no clipped text into the next cell. */
  .table-wrap table,
  .mobile-tabular-wrap table,
  .standing-table-wrap table,
  .roster-dialog-table table,
  .compact-table table,
  .mini-table-wrap table,
  .honor-table-wrap table,
  .mobile-honor-table-wrap table,
  table.mobile-tabular,
  table.v45-mobile-table,
  table.standing-table,
  table.mobile-honor-table {
    display: table !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
    table-layout: fixed !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
  }

  .table-wrap thead,
  .mobile-tabular-wrap thead,
  .standing-table-wrap thead,
  .roster-dialog-table thead,
  .compact-table thead,
  .mini-table-wrap thead,
  .honor-table-wrap thead,
  .mobile-honor-table-wrap thead {
    display: table-header-group !important;
  }

  .table-wrap tbody,
  .mobile-tabular-wrap tbody,
  .standing-table-wrap tbody,
  .roster-dialog-table tbody,
  .compact-table tbody,
  .mini-table-wrap tbody,
  .honor-table-wrap tbody,
  .mobile-honor-table-wrap tbody {
    display: table-row-group !important;
  }

  .table-wrap tr,
  .mobile-tabular-wrap tr,
  .standing-table-wrap tr,
  .roster-dialog-table tr,
  .compact-table tr,
  .mini-table-wrap tr,
  .honor-table-wrap tr,
  .mobile-honor-table-wrap tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  .table-wrap th,
  .table-wrap td,
  .mobile-tabular-wrap th,
  .mobile-tabular-wrap td,
  .standing-table-wrap th,
  .standing-table-wrap td,
  .roster-dialog-table th,
  .roster-dialog-table td,
  .compact-table th,
  .compact-table td,
  .mini-table-wrap th,
  .mini-table-wrap td,
  .honor-table-wrap th,
  .honor-table-wrap td,
  .mobile-honor-table-wrap th,
  .mobile-honor-table-wrap td,
  table.mobile-tabular th,
  table.mobile-tabular td,
  table.v45-mobile-table th,
  table.v45-mobile-table td,
  table.standing-table th,
  table.standing-table td,
  table.mobile-honor-table th,
  table.mobile-honor-table td {
    display: table-cell !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 6px 7px !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    text-overflow: clip !important;
    line-height: 1.16 !important;
    vertical-align: middle !important;
    text-align: left !important;
    border-bottom: 1px solid rgba(148, 163, 184, 0.15) !important;
  }

  .table-wrap td::before,
  .table-wrap th::before,
  .mobile-tabular-wrap td::before,
  .mobile-tabular-wrap th::before,
  .standing-table-wrap td::before,
  .standing-table-wrap th::before,
  .roster-dialog-table td::before,
  .roster-dialog-table th::before,
  .compact-table td::before,
  .compact-table th::before,
  .mini-table-wrap td::before,
  .mini-table-wrap th::before,
  .honor-table-wrap td::before,
  .honor-table-wrap th::before,
  .mobile-honor-table-wrap td::before,
  .mobile-honor-table-wrap th::before {
    content: none !important;
    display: none !important;
  }

  /* Sticky headers for every mobile table. */
  .table-wrap th,
  .mobile-tabular-wrap th,
  .standing-table-wrap th,
  .roster-dialog-table th,
  .compact-table th,
  .mini-table-wrap th,
  .honor-table-wrap th,
  .mobile-honor-table-wrap th,
  table.mobile-tabular th,
  table.v45-mobile-table th,
  table.standing-table th,
  table.mobile-honor-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 20 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    color: #e5e7eb !important;
    text-align: left !important;
  }

  /* Keep first columns unlocked; table boxes handle scrolling. */
  .table-wrap th:first-child,
  .table-wrap td:first-child,
  .mobile-tabular-wrap th:first-child,
  .mobile-tabular-wrap td:first-child,
  .standing-table-wrap th:first-child,
  .standing-table-wrap td:first-child,
  .roster-dialog-table th:first-child,
  .roster-dialog-table td:first-child,
  table.mobile-tabular th:first-child,
  table.mobile-tabular td:first-child,
  table.v45-mobile-table th:first-child,
  table.v45-mobile-table td:first-child,
  table.standing-table th:first-child,
  table.standing-table td:first-child,
  table.mobile-honor-table th:first-child,
  table.mobile-honor-table td:first-child {
    position: static !important;
    left: auto !important;
    z-index: auto !important;
    background: transparent !important;
  }

  .table-wrap th:first-child,
  .mobile-tabular-wrap th:first-child,
  .standing-table-wrap th:first-child,
  .roster-dialog-table th:first-child,
  table.mobile-tabular th:first-child,
  table.v45-mobile-table th:first-child,
  table.standing-table th:first-child,
  table.mobile-honor-table th:first-child {
    position: sticky !important;
    top: 0 !important;
    z-index: 20 !important;
    background: rgba(15, 23, 42, 0.98) !important;
  }

  .table-wrap .number,
  .mobile-tabular-wrap .number,
  .standing-table-wrap .number,
  .roster-dialog-table .number,
  table.mobile-tabular .number,
  table.v45-mobile-table .number,
  table.standing-table .number {
    text-align: left !important;
  }

  /* Wider player column on Listone and Svincolati, with wrapping instead of truncation. */
  .listone-table th:first-child,
  .listone-table td:first-child,
  .free-agents-table th:first-child,
  .free-agents-table td:first-child {
    width: 168px !important;
    min-width: 168px !important;
    max-width: 168px !important;
  }

  .listone-player-cell .link-button,
  .roster-player-cell .link-button,
  .mobile-roster-cell .link-button,
  .team-profile-player-cell,
  .team-profile-player-cell strong,
  table.v45-mobile-table .listone-player-cell .link-button,
  table.v45-mobile-table .roster-player-cell .link-button {
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    line-height: 1.12 !important;
    max-width: none !important;
  }
}

body.is-mobile-ux .table-wrap,
body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .standing-table-wrap,
body.is-mobile-ux .roster-dialog-table,
body.is-mobile-ux .compact-table,
body.is-mobile-ux .mini-table-wrap,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .mobile-honor-table-wrap,
body.is-mobile-ux .v45-mobile-table-wrap {
  width: 100% !important;
  max-width: calc(100vw - 20px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
  max-height: min(calc(var(--viewport-height, 640px) * 0.58), 460px) !important;
}

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .table-wrap td,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .mobile-tabular-wrap td,
body.is-mobile-ux .standing-table-wrap th,
body.is-mobile-ux .standing-table-wrap td,
body.is-mobile-ux .roster-dialog-table th,
body.is-mobile-ux .roster-dialog-table td,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .compact-table td,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .mini-table-wrap td,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux .honor-table-wrap td,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.mobile-tabular td,
body.is-mobile-ux table.v45-mobile-table th,
body.is-mobile-ux table.v45-mobile-table td,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.standing-table td,
body.is-mobile-ux table.mobile-honor-table th,
body.is-mobile-ux table.mobile-honor-table td {
  height: auto !important;
  white-space: normal !important;
  overflow: hidden !important;
  overflow-wrap: break-word !important;
  word-break: normal !important;
  text-overflow: clip !important;
  line-height: 1.16 !important;
  text-align: left !important;
}

body.is-mobile-ux .table-wrap th,
body.is-mobile-ux .mobile-tabular-wrap th,
body.is-mobile-ux .standing-table-wrap th,
body.is-mobile-ux .roster-dialog-table th,
body.is-mobile-ux .compact-table th,
body.is-mobile-ux .mini-table-wrap th,
body.is-mobile-ux .honor-table-wrap th,
body.is-mobile-ux table.mobile-tabular th,
body.is-mobile-ux table.v45-mobile-table th,
body.is-mobile-ux table.standing-table th,
body.is-mobile-ux table.mobile-honor-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 20 !important;
  background: rgba(15, 23, 42, 0.98) !important;
}

body.is-mobile-ux .listone-table th:first-child,
body.is-mobile-ux .listone-table td:first-child,
body.is-mobile-ux .free-agents-table th:first-child,
body.is-mobile-ux .free-agents-table td:first-child {
  width: 168px !important;
  min-width: 168px !important;
  max-width: 168px !important;
}

body.is-mobile-ux .listone-player-cell .link-button,
body.is-mobile-ux .roster-player-cell .link-button,
body.is-mobile-ux .mobile-roster-cell .link-button,
body.is-mobile-ux .team-profile-player-cell,
body.is-mobile-ux .team-profile-player-cell strong {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  max-width: none !important;
}

/* V52 hotfix - dashboard news previews and mobile roster expansion stability. */
.dashboard-news-panel {
  margin-bottom: 18px;
}

.dashboard-news-list {
  display: grid;
  gap: 10px;
}

.dashboard-news-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.42);
}

.dashboard-news-card h3 {
  margin: 4px 0 4px;
  font-size: 1rem;
}

.dashboard-news-main {
  min-width: 0;
}

.dashboard-news-preview {
  margin: 7px 0 0;
  color: var(--text);
  line-height: 1.45;
}

.dashboard-news-side {
  display: grid;
  gap: 8px;
  justify-items: end;
  white-space: nowrap;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .dashboard-news-card {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .dashboard-news-side {
    justify-items: start;
    white-space: normal;
  }

  .roster-season-table-wrap {
    max-height: none !important;
    overflow: visible !important;
  }

  table.roster-season-table .roster-detail-row,
  table.roster-season-table .roster-detail-row > td {
    position: relative !important;
    height: auto !important;
    min-height: 0 !important;
    white-space: normal !important;
    overflow: visible !important;
    vertical-align: top !important;
  }

  table.roster-season-table .roster-detail-row > td {
    padding: 8px 0 12px !important;
  }

  table.roster-season-table .roster-detail-row .roster-inline-table-wrap,
  table.roster-season-table .roster-detail-row .table-wrap,
  table.roster-season-table .roster-detail-row .mobile-tabular-wrap {
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
    margin: 0 !important;
  }

  table.roster-season-table .roster-detail-row table.roster-player-table {
    width: 100% !important;
    min-width: 100% !important;
  }
}

body.is-mobile-ux .roster-season-table-wrap {
  max-height: none !important;
  overflow: visible !important;
}

body.is-mobile-ux table.roster-season-table .roster-detail-row,
body.is-mobile-ux table.roster-season-table .roster-detail-row > td {
  position: relative !important;
  height: auto !important;
  min-height: 0 !important;
  white-space: normal !important;
  overflow: visible !important;
  vertical-align: top !important;
}

body.is-mobile-ux table.roster-season-table .roster-detail-row > td {
  padding: 8px 0 12px !important;
}

body.is-mobile-ux table.roster-season-table .roster-detail-row .roster-inline-table-wrap,
body.is-mobile-ux table.roster-season-table .roster-detail-row .table-wrap,
body.is-mobile-ux table.roster-season-table .roster-detail-row .mobile-tabular-wrap {
  max-height: none !important;
  height: auto !important;
  overflow: visible !important;
  margin: 0 !important;
}


/* V53 - Ripristina lo scroll orizzontale nella sezione Rose.
   Il fix precedente anti-sovrapposizione aveva lasciato overflow: visible sui wrapper
   delle rose mobile, quindi la tabella non poteva piu' scorrere verso destra. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="clubs"] .roster-season-table-wrap,
  .app-page[data-page="clubs"] .roster-inline-table-wrap,
  .app-page[data-page="clubs"] .roster-detail-row .table-wrap,
  .app-page[data-page="clubs"] .roster-detail-row .mobile-tabular-wrap {
    width: 100% !important;
    max-width: 100% !important;
    max-height: none !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior-x: contain !important;
  }

  .app-page[data-page="clubs"] table.roster-season-table {
    width: max-content !important;
    min-width: 760px !important;
    max-width: none !important;
    table-layout: auto !important;
  }

  .app-page[data-page="clubs"] table.roster-player-table {
    width: max-content !important;
    min-width: 520px !important;
    max-width: none !important;
    table-layout: auto !important;
  }

  .app-page[data-page="clubs"] .roster-detail-row > td {
    overflow: visible !important;
  }
}

body.is-mobile-ux .app-page[data-page="clubs"] .roster-season-table-wrap,
body.is-mobile-ux .app-page[data-page="clubs"] .roster-inline-table-wrap,
body.is-mobile-ux .app-page[data-page="clubs"] .roster-detail-row .table-wrap,
body.is-mobile-ux .app-page[data-page="clubs"] .roster-detail-row .mobile-tabular-wrap {
  width: 100% !important;
  max-width: 100% !important;
  max-height: none !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch !important;
  overscroll-behavior-x: contain !important;
}

body.is-mobile-ux .app-page[data-page="clubs"] table.roster-season-table {
  width: max-content !important;
  min-width: 760px !important;
  max-width: none !important;
  table-layout: auto !important;
}

body.is-mobile-ux .app-page[data-page="clubs"] table.roster-player-table {
  width: max-content !important;
  min-width: 520px !important;
  max-width: none !important;
  table-layout: auto !important;
}

body.is-mobile-ux .app-page[data-page="clubs"] .roster-detail-row > td {
  overflow: visible !important;
}


/* V58 - Mobile roster accordion polish and draggable page scroll handle. */
.mobile-page-scroll-rail {
  display: none;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-page-scroll-enabled .mobile-page-scroll-rail {
    position: fixed;
    top: 72px;
    right: 3px;
    bottom: 104px;
    z-index: 79;
    display: block;
    width: 18px;
    touch-action: none;
    cursor: grab;
  }

  .mobile-page-scroll-enabled .mobile-page-scroll-rail::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 8px;
    width: 3px;
    border-radius: 999px;
    background: rgba(148, 163, 184, 0.18);
  }

  .mobile-page-scroll-thumb {
    position: absolute;
    top: 0;
    right: 3px;
    width: 11px;
    min-height: 38px;
    border: 1px solid rgba(255, 255, 255, 0.26);
    border-radius: 999px;
    background: rgba(34, 197, 94, 0.88);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.36);
  }

  .mobile-page-scroll-rail.is-dragging {
    cursor: grabbing;
  }

  .mobile-page-scroll-rail.is-dragging .mobile-page-scroll-thumb {
    background: rgba(34, 197, 94, 1);
  }

  .roster-team-row.is-expanded + .roster-detail-row > td {
    padding-top: 8px !important;
  }
}

body.is-mobile-ux.mobile-page-scroll-enabled .mobile-page-scroll-rail {
  position: fixed;
  top: 72px;
  right: 3px;
  bottom: 104px;
  z-index: 79;
  display: block;
  width: 18px;
  touch-action: none;
  cursor: grab;
}

body.is-mobile-ux.mobile-page-scroll-enabled .mobile-page-scroll-rail::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 8px;
  width: 3px;
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.18);
}

body.is-mobile-ux .mobile-page-scroll-thumb {
  position: absolute;
  top: 0;
  right: 3px;
  width: 11px;
  min-height: 38px;
  border: 1px solid rgba(255, 255, 255, 0.26);
  border-radius: 999px;
  background: rgba(34, 197, 94, 0.88);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.36);
}


/* V79 - admin scroll lists, news collapse cards and mobile regulation scroll. */
.admin-edit-section > .admin-list {
  max-height: 370px;
  overflow-y: auto;
  padding-right: 6px;
  overscroll-behavior: contain;
}

.admin-edit-section > .admin-list::-webkit-scrollbar,
.regulation-document::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.admin-edit-section > .admin-list::-webkit-scrollbar-thumb,
.regulation-document::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.45);
  border-radius: 999px;
}

.news-card-details {
  border: 1px solid var(--border);
  background: rgba(15, 23, 42, 0.5);
  border-radius: 18px;
  padding: 0;
  overflow: hidden;
}

.news-card-summary {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  padding: 16px;
  cursor: pointer;
  list-style: none;
}

.news-card-summary::-webkit-details-marker {
  display: none;
}

.news-card-summary::after {
  content: "Ingrandisci";
  flex: 0 0 auto;
  align-self: flex-start;
  border-radius: 999px;
  padding: 6px 10px;
  color: var(--text);
  background: rgba(31, 41, 55, 0.92);
  font-size: 0.78rem;
  font-weight: 800;
}

.news-card-details[open] .news-card-summary::after {
  content: "Riduci";
}

.news-card-summary h3 {
  margin: 8px 0;
}

.news-card-summary small {
  color: var(--muted);
}

.news-card-detail-body {
  padding: 0 16px 16px;
}

.news-card-detail-body p {
  margin: 0;
  line-height: 1.55;
}

.regulation-document {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.regulation-pre {
  min-width: 760px;
  white-space: pre;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .admin-edit-section > .admin-list {
    max-height: 340px;
  }

  .news-card-summary {
    padding: 10px !important;
    flex-direction: column;
  }

  .news-card-summary::after {
    align-self: flex-start;
  }

  .news-card-detail-body {
    padding: 0 10px 10px;
  }

  .regulation-panel,
  .regulation-document {
    overflow-x: auto !important;
  }

  .regulation-pre {
    min-width: 760px;
    font-size: 0.78rem;
  }
}


/* V80 - Listone/Svincolati mobile compact columns.
   Keeps the player column readable and separated from R (RM). */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="listone"] .listone-table-wrap {
    overflow-x: auto !important;
    overflow-y: auto !important;
    max-width: 100% !important;
    -webkit-overflow-scrolling: touch !important;
  }

  .app-page[data-page="listone"] table.listone-table,
  .app-page[data-page="listone"] table.free-agents-table {
    table-layout: fixed !important;
    width: max-content !important;
    min-width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.68rem !important;
  }

  .app-page[data-page="listone"] table.listone-table th,
  .app-page[data-page="listone"] table.listone-table td,
  .app-page[data-page="listone"] table.free-agents-table th,
  .app-page[data-page="listone"] table.free-agents-table td {
    padding: 6px 8px !important;
    line-height: 1.18 !important;
    vertical-align: middle !important;
    text-align: left !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.listone-table td.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-playerName {
    position: sticky !important;
    left: 0 !important;
    z-index: 35 !important;
    width: 190px !important;
    min-width: 190px !important;
    max-width: 190px !important;
    padding-right: 12px !important;
    background: rgba(15, 23, 42, 0.99) !important;
    box-shadow: 8px 0 14px rgba(2, 6, 23, 0.42) !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    text-overflow: clip !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName {
    z-index: 45 !important;
    top: 0 !important;
  }

  .app-page[data-page="listone"] .listone-col-playerName strong,
  .app-page[data-page="listone"] .listone-col-playerName .link-button {
    display: inline !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    line-height: 1.16 !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-classicRole,
  .app-page[data-page="listone"] table.listone-table td.listone-col-classicRole,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-classicRole,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-classicRole {
    width: 58px !important;
    min-width: 58px !important;
    max-width: 58px !important;
    padding-left: 10px !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-realTeam,
  .app-page[data-page="listone"] table.listone-table td.listone-col-realTeam,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-realTeam,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-realTeam {
    width: 50px !important;
    min-width: 50px !important;
    max-width: 50px !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-fantasyRoster,
  .app-page[data-page="listone"] table.listone-table td.listone-col-fantasyRoster {
    width: 74px !important;
    min-width: 74px !important;
    max-width: 74px !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.listone-table td.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-fvm,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-fvm {
    width: 54px !important;
    min-width: 54px !important;
    max-width: 54px !important;
    text-align: right !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-status,
  .app-page[data-page="listone"] table.listone-table td.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-status {
    width: 74px !important;
    min-width: 74px !important;
    max-width: 74px !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-status .status,
  .app-page[data-page="listone"] table.listone-table td.listone-col-status .status,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-status .status,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-status .status {
    padding: 3px 6px !important;
    font-size: 0.62rem !important;
    white-space: nowrap !important;
  }
}

body.is-mobile-ux .app-page[data-page="listone"] .listone-table-wrap {
  overflow-x: auto !important;
  overflow-y: auto !important;
  max-width: 100% !important;
  -webkit-overflow-scrolling: touch !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table {
  table-layout: fixed !important;
  width: max-content !important;
  min-width: 100% !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  font-size: 0.68rem !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td {
  padding: 6px 8px !important;
  line-height: 1.18 !important;
  vertical-align: middle !important;
  text-align: left !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-playerName {
  position: sticky !important;
  left: 0 !important;
  z-index: 35 !important;
  width: 190px !important;
  min-width: 190px !important;
  max-width: 190px !important;
  padding-right: 12px !important;
  background: rgba(15, 23, 42, 0.99) !important;
  box-shadow: 8px 0 14px rgba(2, 6, 23, 0.42) !important;
  white-space: normal !important;
  overflow: hidden !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  text-overflow: clip !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName {
  z-index: 45 !important;
  top: 0 !important;
}

body.is-mobile-ux .app-page[data-page="listone"] .listone-col-playerName strong,
body.is-mobile-ux .app-page[data-page="listone"] .listone-col-playerName .link-button {
  display: inline !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  line-height: 1.16 !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-classicRole,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-classicRole,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-classicRole,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-classicRole {
  width: 58px !important;
  min-width: 58px !important;
  max-width: 58px !important;
  padding-left: 10px !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-realTeam,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-realTeam,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-realTeam,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-realTeam {
  width: 50px !important;
  min-width: 50px !important;
  max-width: 50px !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-fantasyRoster,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-fantasyRoster {
  width: 74px !important;
  min-width: 74px !important;
  max-width: 74px !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-quotationCurrent,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-quotationCurrent,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-quotationCurrent,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-quotationCurrent,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-fvm,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-fvm {
  width: 54px !important;
  min-width: 54px !important;
  max-width: 54px !important;
  text-align: right !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-status {
  width: 74px !important;
  min-width: 74px !important;
  max-width: 74px !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-status .status,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-status .status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-status .status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-status .status {
  padding: 3px 6px !important;
  font-size: 0.62rem !important;
  white-space: nowrap !important;
}

/* V81 - Listone/Svincolati mobile column refinement and sticky headers.
   Fixes player column width, role width, default compact view and header stickiness. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="listone"] .listone-table-wrap {
    max-width: 100% !important;
    max-height: min(66vh, 620px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior: contain !important;
    border-radius: 14px;
  }

  .app-page[data-page="listone"] table.listone-table,
  .app-page[data-page="listone"] table.free-agents-table {
    table-layout: fixed !important;
    width: max-content !important;
    min-width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 0.68rem !important;
  }

  .app-page[data-page="listone"] table.listone-table th,
  .app-page[data-page="listone"] table.free-agents-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 60 !important;
    background: rgba(15, 23, 42, 0.99) !important;
    box-shadow: 0 1px 0 rgba(148, 163, 184, 0.2) !important;
  }

  .app-page[data-page="listone"] table.listone-table th,
  .app-page[data-page="listone"] table.listone-table td,
  .app-page[data-page="listone"] table.free-agents-table th,
  .app-page[data-page="listone"] table.free-agents-table td {
    padding: 6px 7px !important;
    line-height: 1.18 !important;
    vertical-align: middle !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.listone-table td.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-playerName {
    position: sticky !important;
    left: 0 !important;
    width: 164px !important;
    min-width: 164px !important;
    max-width: 164px !important;
    padding-left: 8px !important;
    padding-right: 10px !important;
    background: rgba(15, 23, 42, 0.99) !important;
    box-shadow: 7px 0 12px rgba(2, 6, 23, 0.38) !important;
    white-space: normal !important;
    overflow: hidden !important;
    overflow-wrap: anywhere !important;
    text-overflow: clip !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName {
    top: 0 !important;
    z-index: 80 !important;
  }

  .app-page[data-page="listone"] .listone-col-playerName strong,
  .app-page[data-page="listone"] .listone-col-playerName .link-button {
    display: inline !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    line-height: 1.15 !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-classicRole,
  .app-page[data-page="listone"] table.listone-table td.listone-col-classicRole,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-classicRole,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-classicRole {
    width: 86px !important;
    min-width: 86px !important;
    max-width: 86px !important;
    padding-left: 11px !important;
    white-space: normal !important;
    overflow: hidden !important;
    text-overflow: clip !important;
  }

  .app-page[data-page="listone"] .listone-col-classicRole .role-extra {
    display: inline !important;
    font-size: 0.58rem !important;
    white-space: normal !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-realTeam,
  .app-page[data-page="listone"] table.listone-table td.listone-col-realTeam,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-realTeam,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-realTeam {
    width: 44px !important;
    min-width: 44px !important;
    max-width: 44px !important;
    text-align: center !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-fantasyRoster,
  .app-page[data-page="listone"] table.listone-table td.listone-col-fantasyRoster {
    width: 62px !important;
    min-width: 62px !important;
    max-width: 62px !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.listone-table td.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-quotationCurrent,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-fvm,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-fvm {
    width: 48px !important;
    min-width: 48px !important;
    max-width: 48px !important;
    text-align: right !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-status,
  .app-page[data-page="listone"] table.listone-table td.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-status {
    width: 68px !important;
    min-width: 68px !important;
    max-width: 68px !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-status .status,
  .app-page[data-page="listone"] table.listone-table td.listone-col-status .status,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-status .status,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-status .status {
    padding: 3px 6px !important;
    font-size: 0.6rem !important;
    white-space: nowrap !important;
  }
}

body.is-mobile-ux .app-page[data-page="listone"] .listone-table-wrap {
  max-height: min(66vh, 620px) !important;
  overflow: auto !important;
  overscroll-behavior: contain !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 60 !important;
  background: rgba(15, 23, 42, 0.99) !important;
  box-shadow: 0 1px 0 rgba(148, 163, 184, 0.2) !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-playerName {
  position: sticky !important;
  left: 0 !important;
  width: 164px !important;
  min-width: 164px !important;
  max-width: 164px !important;
  padding-left: 8px !important;
  padding-right: 10px !important;
  background: rgba(15, 23, 42, 0.99) !important;
  box-shadow: 7px 0 12px rgba(2, 6, 23, 0.38) !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName {
  top: 0 !important;
  z-index: 80 !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-classicRole,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-classicRole,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-classicRole,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-classicRole {
  width: 86px !important;
  min-width: 86px !important;
  max-width: 86px !important;
  padding-left: 11px !important;
  white-space: normal !important;
}


/* V82 - Hotfix Listone/Svincolati mobile: ripristina caricamento JS e rifinisce colonne. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .listone-table-wrap {
    max-height: min(70vh, 620px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .listone-table th,
  .listone-table td {
    padding-left: 6px !important;
    padding-right: 6px !important;
  }

  .listone-table th {
    position: sticky !important;
    top: 0 !important;
    z-index: 9 !important;
    background: rgba(15, 23, 42, 0.99) !important;
  }

  .listone-table .listone-col-playerName {
    width: 160px !important;
    min-width: 160px !important;
    max-width: 160px !important;
    position: sticky !important;
    left: 0 !important;
    z-index: 8 !important;
    background: rgba(15, 23, 42, 0.99) !important;
    box-shadow: 8px 0 12px rgba(2, 6, 23, 0.28);
  }

  .listone-table th.listone-col-playerName {
    z-index: 12 !important;
  }

  .listone-table .listone-col-classicRole {
    width: 88px !important;
    min-width: 88px !important;
    max-width: 88px !important;
    white-space: normal !important;
  }

  .listone-table .role-extra {
    display: inline !important;
    white-space: normal !important;
  }

  .listone-table .listone-col-realTeam {
    width: 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
  }

  .listone-table .listone-col-fantasyRoster {
    width: 62px !important;
    min-width: 62px !important;
    max-width: 62px !important;
  }

  .listone-table .listone-col-quotationCurrent,
  .listone-table .listone-col-fvm {
    width: 50px !important;
    min-width: 50px !important;
    max-width: 50px !important;
  }

  .listone-table .listone-col-status {
    width: 70px !important;
    min-width: 70px !important;
    max-width: 70px !important;
  }
}

body.is-mobile-ux .listone-table-wrap {
  max-height: min(70vh, 620px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}
body.is-mobile-ux .listone-table th {
  position: sticky !important;
  top: 0 !important;
  z-index: 9 !important;
  background: rgba(15, 23, 42, 0.99) !important;
}
body.is-mobile-ux .listone-table .listone-col-playerName {
  width: 160px !important;
  min-width: 160px !important;
  max-width: 160px !important;
  position: sticky !important;
  left: 0 !important;
  z-index: 8 !important;
  background: rgba(15, 23, 42, 0.99) !important;
  box-shadow: 8px 0 12px rgba(2, 6, 23, 0.28);
}
body.is-mobile-ux .listone-table th.listone-col-playerName { z-index: 12 !important; }
body.is-mobile-ux .listone-table .listone-col-classicRole {
  width: 88px !important;
  min-width: 88px !important;
  max-width: 88px !important;
  white-space: normal !important;
}

/* V83 - Listone/Svincolati mobile: colonna Stato leggermente piu larga. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="listone"] table.listone-table th.listone-col-status,
  .app-page[data-page="listone"] table.listone-table td.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-status,
  .listone-table .listone-col-status {
    width: 84px !important;
    min-width: 84px !important;
    max-width: 84px !important;
  }

  .app-page[data-page="listone"] table.listone-table .listone-col-status .status,
  .app-page[data-page="listone"] table.free-agents-table .listone-col-status .status {
    padding: 3px 7px !important;
    font-size: 0.62rem !important;
  }
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-status,
body.is-mobile-ux .listone-table .listone-col-status {
  width: 84px !important;
  min-width: 84px !important;
  max-width: 84px !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table .listone-col-status .status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table .listone-col-status .status {
  padding: 3px 7px !important;
  font-size: 0.62rem !important;
}

/* V84 - Listone/Svincolati mobile: colonna Giocatore piu compatta e Stato piu largo. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.listone-table td.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-playerName,
  .listone-table .listone-col-playerName,
  .free-agents-table .listone-col-playerName {
    width: 120px !important;
    min-width: 120px !important;
    max-width: 120px !important;
  }

  .app-page[data-page="listone"] table.listone-table th.listone-col-status,
  .app-page[data-page="listone"] table.listone-table td.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
  .app-page[data-page="listone"] table.free-agents-table td.listone-col-status,
  .listone-table .listone-col-status,
  .free-agents-table .listone-col-status {
    width: 96px !important;
    min-width: 96px !important;
    max-width: 96px !important;
  }

  .app-page[data-page="listone"] table.listone-table .listone-col-status .status,
  .app-page[data-page="listone"] table.free-agents-table .listone-col-status .status {
    padding: 3px 8px !important;
    font-size: 0.62rem !important;
  }
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-playerName,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-playerName,
body.is-mobile-ux .listone-table .listone-col-playerName,
body.is-mobile-ux .free-agents-table .listone-col-playerName {
  width: 120px !important;
  min-width: 120px !important;
  max-width: 120px !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table th.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.listone-table td.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table th.listone-col-status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table td.listone-col-status,
body.is-mobile-ux .listone-table .listone-col-status,
body.is-mobile-ux .free-agents-table .listone-col-status {
  width: 96px !important;
  min-width: 96px !important;
  max-width: 96px !important;
}

body.is-mobile-ux .app-page[data-page="listone"] table.listone-table .listone-col-status .status,
body.is-mobile-ux .app-page[data-page="listone"] table.free-agents-table .listone-col-status .status {
  padding: 3px 8px !important;
  font-size: 0.62rem !important;
}

/* V85 - Mobile section toggles and table controls cleanup.
   Mobile tables no longer get their own Riduci/Espandi button: the parent
   section toggle is the only collapse control. */
.mobile-table-actions,
body.is-mobile-ux .mobile-table-actions {
  display: none !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .content-collapsible-panel > .panel-header {
    position: relative !important;
    align-items: flex-start !important;
  }

  .content-collapsible-panel > .panel-header > div:first-child {
    min-width: 0 !important;
    padding-right: 92px !important;
  }

  .content-collapsible-panel > .panel-header > .panel-actions {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    width: auto !important;
    flex: 0 0 auto !important;
    display: flex !important;
    justify-content: flex-end !important;
    align-items: flex-start !important;
    z-index: 4 !important;
  }

  .content-collapsible-panel > .panel-header .section-toggle-button {
    min-width: 76px !important;
    white-space: nowrap !important;
  }
}

body.is-mobile-ux .content-collapsible-panel > .panel-header {
  position: relative !important;
  align-items: flex-start !important;
}

body.is-mobile-ux .content-collapsible-panel > .panel-header > div:first-child {
  min-width: 0 !important;
  padding-right: 92px !important;
}

body.is-mobile-ux .content-collapsible-panel > .panel-header > .panel-actions {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  width: auto !important;
  flex: 0 0 auto !important;
  display: flex !important;
  justify-content: flex-end !important;
  align-items: flex-start !important;
  z-index: 4 !important;
}

body.is-mobile-ux .content-collapsible-panel > .panel-header .section-toggle-button {
  min-width: 76px !important;
  white-space: nowrap !important;
}

/* V86 - Mobile refinements for dashboard news actions and Rose movements table. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .dashboard-news-panel.content-collapsible-panel > .panel-header,
  body.is-mobile-ux .dashboard-news-panel.content-collapsible-panel > .panel-header {
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 8px !important;
  }

  .dashboard-news-panel.content-collapsible-panel > .panel-header > div:first-child,
  body.is-mobile-ux .dashboard-news-panel.content-collapsible-panel > .panel-header > div:first-child {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    padding-right: 0 !important;
  }

  .dashboard-news-panel.content-collapsible-panel > .panel-header > .panel-actions,
  body.is-mobile-ux .dashboard-news-panel.content-collapsible-panel > .panel-header > .panel-actions {
    position: static !important;
    flex: 0 0 auto !important;
    width: auto !important;
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    justify-content: flex-end !important;
    gap: 6px !important;
    z-index: auto !important;
  }

  .dashboard-news-header-actions .button-small,
  .dashboard-news-panel .section-toggle-button,
  body.is-mobile-ux .dashboard-news-header-actions .button-small,
  body.is-mobile-ux .dashboard-news-panel .section-toggle-button {
    min-width: 0 !important;
    min-height: 30px !important;
    padding: 5px 8px !important;
    font-size: 0.66rem !important;
    line-height: 1.05 !important;
    white-space: nowrap !important;
  }

  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular th:nth-child(2),
  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2),
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular th:nth-child(2),
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) {
    width: 112px !important;
    min-width: 112px !important;
    max-width: 112px !important;
    text-align: left !important;
  }

  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) .club-name-with-logo,
  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) .link-button,
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) .club-name-with-logo,
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) .link-button {
    justify-content: flex-start !important;
    text-align: left !important;
  }
}

/* V87 - Mobile dashboard, toggles, Rose movement columns and round logos. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .content-collapsible-panel > .panel-header .section-toggle-button,
  .dashboard-subsection .details-toggle-label,
  body.is-mobile-ux .content-collapsible-panel > .panel-header .section-toggle-button,
  body.is-mobile-ux .dashboard-subsection .details-toggle-label {
    min-width: 52px !important;
    min-height: 24px !important;
    padding: 3px 6px !important;
    font-size: 0.56rem !important;
    line-height: 1 !important;
    border-radius: 999px !important;
    white-space: nowrap !important;
  }

  .content-collapsible-panel > .panel-header,
  body.is-mobile-ux .content-collapsible-panel > .panel-header {
    align-items: flex-start !important;
  }

  .dashboard-news-panel.content-collapsible-panel > .panel-header > .panel-actions,
  body.is-mobile-ux .dashboard-news-panel.content-collapsible-panel > .panel-header > .panel-actions {
    gap: 5px !important;
    align-items: flex-start !important;
  }

  .dashboard-news-list {
    display: grid;
    gap: 8px;
  }

  .dashboard-news-card.dashboard-news-details {
    padding: 0 !important;
    overflow: hidden;
  }

  .dashboard-news-summary {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    padding: 10px;
    cursor: pointer;
    list-style: none;
  }

  .dashboard-news-summary::-webkit-details-marker {
    display: none;
  }

  .dashboard-news-summary > span:first-child {
    display: grid;
    gap: 3px;
    min-width: 0;
  }

  .dashboard-news-summary strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .dashboard-news-side {
    flex: 0 0 auto;
    text-align: right;
  }

  .dashboard-news-detail-body {
    display: grid;
    gap: 8px;
    padding: 0 10px 10px;
  }

  .dashboard-news-detail-body .button-small {
    justify-self: start;
    min-height: 28px !important;
    padding: 5px 8px !important;
    font-size: 0.64rem !important;
  }

  .dashboard-winner-line {
    display: flex !important;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
  }

  .dashboard-next-match-line {
    margin-top: 4px;
  }

  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular th:nth-child(2),
  .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2),
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular th:nth-child(2),
  body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) {
    width: 140px !important;
    min-width: 140px !important;
    max-width: 140px !important;
    text-align: left !important;
  }

  table.roster-season-table .roster-team-name .club-logo,
  table.roster-season-table .roster-team-name .club-logo-placeholder,
  body.is-mobile-ux table.roster-season-table .roster-team-name .club-logo,
  body.is-mobile-ux table.roster-season-table .roster-team-name .club-logo-placeholder {
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    max-width: 22px !important;
    flex: 0 0 22px !important;
    border-radius: 999px !important;
    aspect-ratio: 1 / 1 !important;
    object-fit: cover !important;
    overflow: hidden !important;
  }
}

body.is-mobile-ux .content-collapsible-panel > .panel-header .section-toggle-button,
body.is-mobile-ux .dashboard-subsection .details-toggle-label {
  min-width: 52px !important;
  min-height: 24px !important;
  padding: 3px 6px !important;
  font-size: 0.56rem !important;
  line-height: 1 !important;
  border-radius: 999px !important;
}

body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular th:nth-child(2),
body.is-mobile-ux .app-page[data-page="clubs"] section[aria-labelledby="marketActivityTitle"] .mobile-tabular-wrap table.mobile-tabular td:nth-child(2) {
  width: 140px !important;
  min-width: 140px !important;
  max-width: 140px !important;
  text-align: left !important;
}

body.is-mobile-ux table.roster-season-table .roster-team-name .club-logo,
body.is-mobile-ux table.roster-season-table .roster-team-name .club-logo-placeholder {
  width: 22px !important;
  height: 22px !important;
  min-width: 22px !important;
  max-width: 22px !important;
  flex: 0 0 22px !important;
  border-radius: 999px !important;
  aspect-ratio: 1 / 1 !important;
  object-fit: cover !important;
  overflow: hidden !important;
}

/* V88 - Listone: filtri integrati e layout compatto. */
.listone-filter-row {
  width: min(860px, 100%);
  align-items: stretch;
}

.inline-checkbox-group {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.54);
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 800;
}

.inline-checkbox-group legend {
  padding: 0 4px;
  color: var(--muted);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.inline-checkbox-group label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--text);
  white-space: nowrap;
}

.inline-checkbox-group input {
  width: 15px;
  height: 15px;
  accent-color: var(--primary);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .listone-main-panel > .panel-header {
    gap: 8px;
  }

  .listone-filter-row {
    display: grid !important;
    grid-template-columns: 1fr;
    gap: 8px;
    width: 100%;
  }

  .inline-checkbox-group {
    display: flex;
    flex-wrap: wrap;
    gap: 7px 10px;
    padding: 7px 9px;
    border-radius: 12px;
    font-size: 0.72rem;
  }
}

body.is-mobile-ux .listone-filter-row {
  display: grid !important;
  grid-template-columns: 1fr;
  gap: 8px;
  width: 100%;
}

body.is-mobile-ux .inline-checkbox-group {
  display: flex;
  flex-wrap: wrap;
  gap: 7px 10px;
  padding: 7px 9px;
  border-radius: 12px;
  font-size: 0.72rem;
}


/* V89 - Light/Dark switch and embedded player page */
html[data-theme="light"] {
  --bg: #f4f7fb;
  --panel: #ffffff;
  --panel-soft: #e5e7eb;
  --text: #0f172a;
  --muted: #64748b;
  --border: rgba(15, 23, 42, 0.12);
  --primary: #15803d;
  --primary-dark: #166534;
  --danger: #dc2626;
  --warning: #d97706;
  --shadow: 0 18px 44px rgba(15, 23, 42, 0.11);
}

html[data-theme="light"] body {
  background:
    radial-gradient(circle at top left, rgba(21, 128, 61, 0.16), transparent 34rem),
    radial-gradient(circle at 80% 10%, rgba(37, 99, 235, 0.10), transparent 28rem),
    var(--bg);
}

html[data-theme="light"] .metric-card,
html[data-theme="light"] .panel,
html[data-theme="light"] .page-heading,
html[data-theme="light"] .news-card,
html[data-theme="light"] .competition-card,
html[data-theme="light"] .compact-card,
html[data-theme="light"] .stack-item,
html[data-theme="light"] .collapse-card,
html[data-theme="light"] .login-card {
  background: rgba(255, 255, 255, 0.88);
}

html[data-theme="light"] .input,
html[data-theme="light"] code {
  background: rgba(248, 250, 252, 0.95);
  color: var(--text);
}

html[data-theme="light"] .nav-link,
html[data-theme="light"] .button-secondary,
html[data-theme="light"] .mobile-bottom-nav,
html[data-theme="light"] .mobile-more-sheet:not(.hidden) {
  background: rgba(226, 232, 240, 0.94);
  color: var(--text);
}

html[data-theme="light"] .nav-link.active,
html[data-theme="light"] .mobile-bottom-link.active,
html[data-theme="light"] .mobile-more-link.active,
html[data-theme="light"] .button-primary {
  color: #ecfdf5;
  background: var(--primary);
}

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.38rem;
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 999px;
  color: var(--text);
  background: rgba(31, 41, 55, 0.72);
  font: inherit;
  font-weight: 850;
  cursor: pointer;
  transition: transform 0.14s ease, background 0.14s ease, border-color 0.14s ease;
}

.theme-toggle:hover {
  transform: translateY(-1px);
}

html[data-theme="light"] .theme-toggle {
  background: rgba(226, 232, 240, 0.94);
}

.theme-toggle-icon {
  line-height: 1;
}

.listone-player-link {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}

.player-embed-page .panel {
  min-height: min(74dvh, 820px);
}

.external-player-frame {
  width: 100%;
  height: min(76dvh, 860px);
  min-height: 620px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--panel-soft);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .theme-toggle {
    min-height: 38px;
    padding: 7px 10px;
    font-size: 0.82rem;
  }

  .header-actions {
    grid-template-columns: 1fr 1fr !important;
  }

  .header-actions .theme-toggle {
    width: 100%;
  }

  .external-player-frame {
    min-height: 68dvh;
    height: 68dvh;
    border-radius: 12px;
  }
}


/* V90 - Table headers stay dark in light mode, roster player links and honor clicks. */
html[data-theme="light"] table thead th,
html[data-theme="light"] .mobile-tabular-wrap table.mobile-tabular th,
html[data-theme="light"] .standing-table-wrap table.standing-table th,
html[data-theme="light"] .roster-dialog-table table.mobile-tabular th,
html[data-theme="light"] .mobile-honor-table th {
  background: #0f172a !important;
  color: #e5e7eb !important;
  border-bottom-color: rgba(226, 232, 240, 0.18) !important;
}

html[data-theme="light"] table thead th .table-sort,
html[data-theme="light"] .mobile-tabular-wrap table.mobile-tabular th .table-sort {
  color: #e5e7eb !important;
}

.roster-player-link,
.team-profile-player-link {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}

.honor-team-profile-link {
  max-width: 100%;
  text-align: left;
}


/* V91 - Desktop dashboard news details layout hotfix.
   Fixes preview/title overlap after details-based dashboard news cards. */
.dashboard-news-card.dashboard-news-details {
  display: block !important;
  padding: 0 !important;
  overflow: hidden;
}

.dashboard-news-card.dashboard-news-details > .dashboard-news-summary {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 14px !important;
  padding: 12px !important;
  cursor: pointer;
  list-style: none;
}

.dashboard-news-card.dashboard-news-details > .dashboard-news-summary::-webkit-details-marker {
  display: none;
}

.dashboard-news-card.dashboard-news-details > .dashboard-news-summary > span:first-child {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.dashboard-news-card.dashboard-news-details > .dashboard-news-summary strong {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.18;
}

.dashboard-news-card.dashboard-news-details > .dashboard-news-summary .dashboard-news-side {
  flex: 0 0 auto;
  display: block;
  min-width: max-content;
  text-align: right;
  white-space: nowrap;
}

.dashboard-news-card.dashboard-news-details > .dashboard-news-detail-body {
  display: grid;
  gap: 10px;
  padding: 0 12px 12px;
}

.dashboard-news-card.dashboard-news-details .dashboard-news-preview {
  margin: 0;
  position: static;
  clear: both;
}

.dashboard-news-card.dashboard-news-details .dashboard-news-detail-body .button-small {
  justify-self: start;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .dashboard-news-card.dashboard-news-details > .dashboard-news-summary {
    gap: 10px !important;
    padding: 10px !important;
  }

  .dashboard-news-card.dashboard-news-details > .dashboard-news-detail-body {
    padding: 0 10px 10px;
  }
}


/* V92 - Regolamento ordinato e pagina rules.html */
.regulation-panel-header {
  align-items: center;
}

.rules-frame-wrap {
  width: 100%;
  min-height: min(74vh, 760px);
  border: 1px solid rgba(148, 163, 184, 0.24);
  border-radius: 18px;
  overflow: hidden;
  background: rgba(15, 23, 42, 0.32);
}

.rules-frame {
  display: block;
  width: 100%;
  height: min(74vh, 760px);
  min-height: 620px;
  border: 0;
  background: transparent;
}

.rules-standalone-page {
  min-height: 100vh;
}

.rules-page-shell {
  padding-top: 24px;
  padding-bottom: 42px;
}

.rules-hero {
  padding: 24px;
}

.rules-hero h1 {
  margin-bottom: 10px;
  font-size: clamp(2rem, 6vw, 4.4rem);
}

.rules-top-actions,
.regulation-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
}

.rules-top-actions {
  justify-content: flex-start;
  margin-top: 18px;
}

.rules-toc {
  padding: 18px;
}

.rules-toc h2 {
  margin-bottom: 12px;
}

.rules-toc ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 18px;
  margin: 0;
  padding-left: 1.35rem;
}

.rules-toc a {
  color: var(--text);
  text-decoration: none;
  font-weight: 800;
}

.rules-toc a:hover {
  color: var(--primary);
  text-decoration: underline;
}

.rules-section {
  scroll-margin-top: 18px;
}

.rules-section h2 {
  margin-bottom: 12px;
  font-size: 1.55rem;
  letter-spacing: -0.03em;
}

.rules-section h3 {
  margin: 1.15rem 0 0.45rem;
  font-size: 1rem;
  color: var(--text);
}

.rules-section p {
  line-height: 1.65;
  color: var(--text);
}

.rules-note-list {
  display: grid;
  gap: 8px;
  margin: 12px 0;
}

.rules-note-list p {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 12px;
  background: rgba(15, 23, 42, 0.24);
}

.rules-list {
  margin: 0.4rem 0 0.8rem;
  padding-left: 1.2rem;
  color: var(--text);
  line-height: 1.65;
}

.rules-list li + li {
  margin-top: 0.35rem;
}

.rules-table-wrap {
  width: 100%;
  margin: 12px 0 18px;
  overflow-x: auto;
  border: 1px solid rgba(148, 163, 184, 0.24);
  border-radius: 16px;
  background: rgba(15, 23, 42, 0.26);
}

.rules-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
}

.rules-compact-table {
  min-width: 420px;
}

.rules-table th,
.rules-table td {
  padding: 11px 12px;
  vertical-align: top;
}

.rules-table th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: rgba(15, 23, 42, 0.98);
  color: #e5e7eb;
}

.rules-table td:first-child,
.rules-table th:first-child {
  font-weight: 850;
}

.rules-footer {
  padding-bottom: 0;
}

html[data-theme="light"] .rules-note-list p,
html[data-theme="light"] .rules-table-wrap,
html[data-theme="light"] .rules-frame-wrap {
  background: rgba(255, 255, 255, 0.72);
}

html[data-theme="light"] .rules-toc a,
html[data-theme="light"] .rules-section p,
html[data-theme="light"] .rules-list,
html[data-theme="light"] .rules-section h3 {
  color: var(--text);
}

html[data-theme="light"] .rules-table th {
  background: #111827;
  color: #e5e7eb;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .regulation-panel-header {
    align-items: stretch;
  }

  .regulation-actions,
  .regulation-actions .button {
    width: 100%;
  }

  .rules-frame-wrap {
    min-height: 72vh;
    border-radius: 14px;
  }

  .rules-frame {
    height: 72vh;
    min-height: 540px;
  }

  .rules-page-shell {
    width: min(100% - 20px, 1220px);
    padding-top: 12px;
    padding-bottom: 94px;
  }

  .rules-hero,
  .rules-toc,
  .rules-section {
    padding: 12px;
    border-radius: 14px;
  }

  .rules-top-actions,
  .rules-top-actions .button {
    width: 100%;
  }

  .rules-toc ol {
    grid-template-columns: 1fr;
    gap: 6px;
    font-size: 0.92rem;
  }

  .rules-section h2 {
    font-size: 1.22rem;
  }

  .rules-section h3 {
    font-size: 0.96rem;
  }

  .rules-section p,
  .rules-list {
    font-size: 0.9rem;
    line-height: 1.55;
  }

  .rules-table-wrap {
    border-radius: 12px;
    -webkit-overflow-scrolling: touch;
  }

  .rules-table {
    min-width: 560px;
    font-size: 0.82rem;
  }

  .rules-compact-table {
    min-width: 360px;
  }

  .rules-table th,
  .rules-table td {
    padding: 8px 9px;
  }
}


/* V93 - Regolamento incorporato senza iframe.
   Alcuni hosting impostano X-Frame-Options/CSP che impediscono l'embedding anche di pagine statiche.
   La sezione pubblica ora renderizza il contenuto direttamente, mentre rules.html resta apribile a parte. */
.rules-inline-wrap {
  width: 100%;
  display: grid;
  gap: 14px;
}

.rules-inline-note {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  padding: 12px 14px;
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.28);
  color: var(--text);
}

.rules-inline-note span {
  color: var(--muted);
}

.rules-inline-content {
  display: grid;
  gap: 14px;
}

.regulation-panel .rules-section {
  margin: 0;
  box-shadow: none;
}

.regulation-panel .rules-section:first-child {
  margin-top: 0;
}

html[data-theme="light"] .rules-inline-note {
  background: rgba(255, 255, 255, 0.74);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .rules-inline-wrap {
    gap: 10px;
  }

  .rules-inline-note {
    align-items: flex-start;
    flex-direction: column;
    padding: 10px 12px;
    border-radius: 12px;
    font-size: 0.88rem;
  }

  .regulation-panel .rules-section {
    padding: 12px !important;
    border-radius: 14px;
  }
}


/* V94 - Regolamento mobile: testo sempre a capo.
   Le tabelle restano scrollabili in orizzontale, ma paragrafi, note e liste non devono sforare lo schermo. */
.rules-inline-wrap,
.rules-inline-content,
.regulation-panel,
.rules-section {
  min-width: 0;
  max-width: 100%;
}

.rules-section p,
.rules-section li,
.rules-note-list p,
.rules-inline-note,
.rules-toc a {
  overflow-wrap: break-word;
  word-wrap: break-word;
  word-break: normal;
  hyphens: auto;
}

.rules-table td,
.rules-table th {
  overflow-wrap: break-word;
  word-break: normal;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .regulation-panel,
  .rules-inline-wrap,
  .rules-inline-content,
  .rules-section {
    overflow-x: hidden;
  }

  .rules-section p,
  .rules-section li,
  .rules-note-list p,
  .rules-inline-note,
  .rules-toc a {
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .rules-table-wrap {
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
  }
}

/* V95 - Regolamento nel tab piu compatto. */
.regulation-panel {
  margin-top: 0;
}

.regulation-open-button {
  min-height: 28px;
  padding: 5px 9px;
  font-size: 0.72rem;
  line-height: 1.1;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .regulation-panel-header {
    grid-template-columns: 1fr auto;
    align-items: start;
  }

  .regulation-actions {
    width: auto !important;
    justify-content: flex-end;
  }

  .regulation-actions .regulation-open-button {
    width: auto !important;
    min-height: 28px;
    padding: 5px 8px;
    font-size: 0.68rem;
    white-space: nowrap;
  }
}

body.is-mobile-ux .regulation-actions {
  width: auto !important;
  justify-content: flex-end;
}

body.is-mobile-ux .regulation-actions .regulation-open-button {
  width: auto !important;
  min-height: 28px;
  padding: 5px 8px;
  font-size: 0.68rem;
  white-space: nowrap;
}

/* V96 - Regolamento: niente pagina dedicata, indice rapido interno. */
.rules-index {
  padding: 14px;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 16px;
  background: rgba(15, 23, 42, 0.28);
}

.rules-index h3 {
  margin: 0 0 10px;
  font-size: 0.98rem;
  color: var(--text);
}

.rules-index-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.rules-index-grid a {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 8px 10px;
  border: 1px solid rgba(148, 163, 184, 0.2);
  border-radius: 999px;
  color: var(--text);
  background: rgba(31, 41, 55, 0.58);
  font-size: 0.82rem;
  font-weight: 800;
  text-decoration: none;
}

.rules-index-grid a:hover {
  color: #052e16;
  background: var(--primary);
  border-color: rgba(34, 197, 94, 0.9);
}

html[data-theme="light"] .rules-index {
  background: rgba(255, 255, 255, 0.74);
}

html[data-theme="light"] .rules-index-grid a {
  background: rgba(15, 23, 42, 0.06);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .rules-index {
    padding: 10px;
    border-radius: 14px;
  }

  .rules-index h3 {
    font-size: 0.9rem;
    margin-bottom: 8px;
  }

  .rules-index-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
  }

  .rules-index-grid a {
    min-height: 32px;
    padding: 6px 8px;
    border-radius: 12px;
    font-size: 0.72rem;
    line-height: 1.15;
  }
}

body.is-mobile-ux .rules-index-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* V97 - Light theme refinements and mobile sticky table headers. */
html[data-theme="light"] .inline-checkbox-group {
  background: rgba(255, 255, 255, 0.9) !important;
  border-color: rgba(15, 23, 42, 0.18) !important;
  color: #111827 !important;
}

html[data-theme="light"] .inline-checkbox-group legend,
html[data-theme="light"] .inline-checkbox-group label {
  color: #111827 !important;
}

html[data-theme="light"] .status-ok {
  color: #4b5563 !important;
  background: rgba(34, 197, 94, 0.22) !important;
}

html[data-theme="light"] .status-warning {
  color: #4b5563 !important;
  background: rgba(245, 158, 11, 0.26) !important;
  border-color: rgba(245, 158, 11, 0.32) !important;
}

html[data-theme="light"] .status-muted {
  color: #111827 !important;
  background: rgba(156, 163, 175, 0.34) !important;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .mobile-tabular-wrap,
  .standing-table-wrap,
  .roster-dialog-table,
  .honor-table-wrap,
  .mobile-honor-table-wrap,
  .rules-table-wrap {
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .table-wrap table thead th,
  .mobile-tabular-wrap table.mobile-tabular thead th,
  .standing-table-wrap table.standing-table thead th,
  .roster-dialog-table table.mobile-tabular thead th,
  .honor-table-wrap table thead th,
  .mobile-honor-table-wrap table thead th,
  .rules-table-wrap table thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 12 !important;
    background: rgba(15, 23, 42, 0.98) !important;
    color: #e5e7eb !important;
  }

  .listone-table th:first-child,
  .listone-table .listone-col-playerName,
  .roster-main-table th:first-child,
  .roster-dialog-players-table th:first-child {
    z-index: 14 !important;
  }
}

body.is-mobile-ux .mobile-tabular-wrap,
body.is-mobile-ux .standing-table-wrap,
body.is-mobile-ux .roster-dialog-table,
body.is-mobile-ux .honor-table-wrap,
body.is-mobile-ux .mobile-honor-table-wrap,
body.is-mobile-ux .rules-table-wrap {
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

body.is-mobile-ux .table-wrap table thead th,
body.is-mobile-ux .mobile-tabular-wrap table.mobile-tabular thead th,
body.is-mobile-ux .standing-table-wrap table.standing-table thead th,
body.is-mobile-ux .roster-dialog-table table.mobile-tabular thead th,
body.is-mobile-ux .honor-table-wrap table thead th,
body.is-mobile-ux .mobile-honor-table-wrap table thead th,
body.is-mobile-ux .rules-table-wrap table thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 12 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  color: #e5e7eb !important;
}

body.is-mobile-ux .listone-table th:first-child,
body.is-mobile-ux .listone-table .listone-col-playerName,
body.is-mobile-ux .roster-main-table th:first-child,
body.is-mobile-ux .roster-dialog-players-table th:first-child {
  z-index: 14 !important;
}


/* V98 - Light theme: dark and sticky headers for every mobile table. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  html[data-theme="light"] .table-wrap,
  html[data-theme="light"] .mobile-tabular-wrap,
  html[data-theme="light"] .standing-table-wrap,
  html[data-theme="light"] .roster-dialog-table,
  html[data-theme="light"] .honor-table-wrap,
  html[data-theme="light"] .mobile-honor-table-wrap,
  html[data-theme="light"] .rules-table-wrap,
  html[data-theme="light"] .compact-table {
    max-height: min(68vh, 560px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  html[data-theme="light"] .table-wrap table,
  html[data-theme="light"] .mobile-tabular-wrap table,
  html[data-theme="light"] .standing-table-wrap table,
  html[data-theme="light"] .roster-dialog-table table,
  html[data-theme="light"] .honor-table-wrap table,
  html[data-theme="light"] .mobile-honor-table-wrap table,
  html[data-theme="light"] .rules-table-wrap table,
  html[data-theme="light"] .compact-table table {
    display: table !important;
    width: max-content !important;
    min-width: 100% !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
  }

  html[data-theme="light"] .table-wrap thead,
  html[data-theme="light"] .mobile-tabular-wrap thead,
  html[data-theme="light"] .standing-table-wrap thead,
  html[data-theme="light"] .roster-dialog-table thead,
  html[data-theme="light"] .honor-table-wrap thead,
  html[data-theme="light"] .mobile-honor-table-wrap thead,
  html[data-theme="light"] .rules-table-wrap thead,
  html[data-theme="light"] .compact-table thead {
    display: table-header-group !important;
  }

  html[data-theme="light"] .table-wrap tbody,
  html[data-theme="light"] .mobile-tabular-wrap tbody,
  html[data-theme="light"] .standing-table-wrap tbody,
  html[data-theme="light"] .roster-dialog-table tbody,
  html[data-theme="light"] .honor-table-wrap tbody,
  html[data-theme="light"] .mobile-honor-table-wrap tbody,
  html[data-theme="light"] .rules-table-wrap tbody,
  html[data-theme="light"] .compact-table tbody {
    display: table-row-group !important;
  }

  html[data-theme="light"] .table-wrap tr,
  html[data-theme="light"] .mobile-tabular-wrap tr,
  html[data-theme="light"] .standing-table-wrap tr,
  html[data-theme="light"] .roster-dialog-table tr,
  html[data-theme="light"] .honor-table-wrap tr,
  html[data-theme="light"] .mobile-honor-table-wrap tr,
  html[data-theme="light"] .rules-table-wrap tr,
  html[data-theme="light"] .compact-table tr {
    display: table-row !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
  }

  html[data-theme="light"] .table-wrap th,
  html[data-theme="light"] .table-wrap td,
  html[data-theme="light"] .mobile-tabular-wrap th,
  html[data-theme="light"] .mobile-tabular-wrap td,
  html[data-theme="light"] .standing-table-wrap th,
  html[data-theme="light"] .standing-table-wrap td,
  html[data-theme="light"] .roster-dialog-table th,
  html[data-theme="light"] .roster-dialog-table td,
  html[data-theme="light"] .honor-table-wrap th,
  html[data-theme="light"] .honor-table-wrap td,
  html[data-theme="light"] .mobile-honor-table-wrap th,
  html[data-theme="light"] .mobile-honor-table-wrap td,
  html[data-theme="light"] .rules-table-wrap th,
  html[data-theme="light"] .rules-table-wrap td,
  html[data-theme="light"] .compact-table th,
  html[data-theme="light"] .compact-table td {
    display: table-cell !important;
    width: auto !important;
    min-height: 0 !important;
    padding: 7px 6px !important;
    vertical-align: middle !important;
    text-align: left;
    white-space: nowrap;
    border-bottom: 1px solid rgba(148, 163, 184, 0.22) !important;
  }

  html[data-theme="light"] .table-wrap td::before,
  html[data-theme="light"] .mobile-tabular-wrap td::before,
  html[data-theme="light"] .standing-table-wrap td::before,
  html[data-theme="light"] .roster-dialog-table td::before,
  html[data-theme="light"] .honor-table-wrap td::before,
  html[data-theme="light"] .mobile-honor-table-wrap td::before,
  html[data-theme="light"] .rules-table-wrap td::before,
  html[data-theme="light"] .compact-table td::before {
    content: none !important;
    display: none !important;
  }

  html[data-theme="light"] .table-wrap thead th,
  html[data-theme="light"] .mobile-tabular-wrap thead th,
  html[data-theme="light"] .standing-table-wrap thead th,
  html[data-theme="light"] .roster-dialog-table thead th,
  html[data-theme="light"] .honor-table-wrap thead th,
  html[data-theme="light"] .mobile-honor-table-wrap thead th,
  html[data-theme="light"] .rules-table-wrap thead th,
  html[data-theme="light"] .compact-table thead th {
    position: sticky !important;
    top: 0 !important;
    z-index: 30 !important;
    background: #0f172a !important;
    color: #e5e7eb !important;
    border-bottom-color: rgba(226, 232, 240, 0.18) !important;
  }

  html[data-theme="light"] .table-wrap thead th .table-sort,
  html[data-theme="light"] .mobile-tabular-wrap thead th .table-sort,
  html[data-theme="light"] .standing-table-wrap thead th .table-sort,
  html[data-theme="light"] .roster-dialog-table thead th .table-sort,
  html[data-theme="light"] .honor-table-wrap thead th .table-sort,
  html[data-theme="light"] .mobile-honor-table-wrap thead th .table-sort,
  html[data-theme="light"] .rules-table-wrap thead th .table-sort,
  html[data-theme="light"] .compact-table thead th .table-sort {
    color: #e5e7eb !important;
  }
}

body.is-mobile-ux[data-theme="light"] .table-wrap,
body.is-mobile-ux[data-theme="light"] .mobile-tabular-wrap,
body.is-mobile-ux[data-theme="light"] .standing-table-wrap,
body.is-mobile-ux[data-theme="light"] .roster-dialog-table,
body.is-mobile-ux[data-theme="light"] .honor-table-wrap,
body.is-mobile-ux[data-theme="light"] .mobile-honor-table-wrap,
body.is-mobile-ux[data-theme="light"] .rules-table-wrap,
body.is-mobile-ux[data-theme="light"] .compact-table {
  max-height: min(68vh, 560px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap thead,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap thead,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap thead,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table thead,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap thead,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap thead,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap thead,
html[data-theme="light"] body.is-mobile-ux .compact-table thead {
  display: table-header-group !important;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap thead th,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap thead th,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap thead th,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table thead th,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap thead th,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap thead th,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap thead th,
html[data-theme="light"] body.is-mobile-ux .compact-table thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 30 !important;
  background: #0f172a !important;
  color: #e5e7eb !important;
}


/* V98 fallback for browsers using the JS mobile class with wide reported viewport. */
html[data-theme="light"] body.is-mobile-ux .table-wrap,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap,
html[data-theme="light"] body.is-mobile-ux .compact-table {
  max-height: min(68vh, 560px) !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap table,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap table,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap table,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table table,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap table,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap table,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap table,
html[data-theme="light"] body.is-mobile-ux .compact-table table {
  display: table !important;
  width: max-content !important;
  min-width: 100% !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap tbody,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap tbody,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap tbody,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table tbody,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap tbody,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap tbody,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap tbody,
html[data-theme="light"] body.is-mobile-ux .compact-table tbody {
  display: table-row-group !important;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap tr,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap tr,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap tr,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table tr,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap tr,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap tr,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap tr,
html[data-theme="light"] body.is-mobile-ux .compact-table tr {
  display: table-row !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap th,
html[data-theme="light"] body.is-mobile-ux .table-wrap td,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap th,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap td,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap th,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap td,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table th,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table td,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap th,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap td,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap th,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap td,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap th,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap td,
html[data-theme="light"] body.is-mobile-ux .compact-table th,
html[data-theme="light"] body.is-mobile-ux .compact-table td {
  display: table-cell !important;
  width: auto !important;
  min-height: 0 !important;
  padding: 7px 6px !important;
  vertical-align: middle !important;
  text-align: left;
  white-space: nowrap;
  border-bottom: 1px solid rgba(148, 163, 184, 0.22) !important;
}

html[data-theme="light"] body.is-mobile-ux .table-wrap td::before,
html[data-theme="light"] body.is-mobile-ux .mobile-tabular-wrap td::before,
html[data-theme="light"] body.is-mobile-ux .standing-table-wrap td::before,
html[data-theme="light"] body.is-mobile-ux .roster-dialog-table td::before,
html[data-theme="light"] body.is-mobile-ux .honor-table-wrap td::before,
html[data-theme="light"] body.is-mobile-ux .mobile-honor-table-wrap td::before,
html[data-theme="light"] body.is-mobile-ux .rules-table-wrap td::before,
html[data-theme="light"] body.is-mobile-ux .compact-table td::before {
  content: none !important;
  display: none !important;
}

/* V102 - Indicatori competizioni da JSON statico. */
.static-source-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  margin-left: 0.4rem;
  padding: 0.18rem 0.48rem;
  border: 1px solid rgba(34, 197, 94, 0.34);
  border-radius: 999px;
  background: rgba(34, 197, 94, 0.13);
  color: #bbf7d0;
  font-size: 0.68rem;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  vertical-align: middle;
  white-space: nowrap;
}

.static-source-line {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  margin: 0.2rem 0 0.85rem;
  color: var(--muted);
  font-size: 0.84rem;
}

.static-source-line .static-source-badge {
  margin-left: 0;
}

.competition-card-static-source {
  border-color: rgba(34, 197, 94, 0.28);
}

.dashboard-competition-subsection .static-source-badge {
  margin-left: 0.35rem;
  font-size: 0.6rem;
  padding: 0.14rem 0.38rem;
}

html[data-theme="light"] .static-source-badge {
  background: rgba(34, 197, 94, 0.16);
  border-color: rgba(22, 163, 74, 0.32);
  color: #4b5563;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .static-source-badge {
    margin-left: 0.25rem;
    font-size: 0.58rem;
    padding: 0.13rem 0.34rem;
  }

  .static-source-line {
    align-items: flex-start;
    flex-direction: column;
    gap: 0.25rem;
    font-size: 0.76rem;
  }
}


/* V103 - Badge fonte competizione e partite raggruppate per turno. */
.firebase-source-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  margin-left: 0.4rem;
  padding: 0.18rem 0.48rem;
  border: 1px solid rgba(148, 163, 184, 0.34);
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.14);
  color: #d1d5db;
  font-size: 0.68rem;
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  vertical-align: middle;
  white-space: nowrap;
}

.competition-card-firebase-source {
  border-color: rgba(148, 163, 184, 0.18);
}

.dashboard-competition-subsection .firebase-source-badge {
  margin-left: 0.35rem;
  font-size: 0.6rem;
  padding: 0.14rem 0.38rem;
}

.competition-match-groups {
  display: grid;
  gap: 0.75rem;
}

.competition-match-stage-group h4 {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.45rem;
  padding: 0.25rem 0.6rem;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.34);
  color: var(--text);
  font-size: 0.82rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

html[data-theme="light"] .firebase-source-badge {
  background: rgba(148, 163, 184, 0.18);
  border-color: rgba(100, 116, 139, 0.34);
  color: #111827;
}

html[data-theme="light"] .competition-match-stage-group h4 {
  background: rgba(15, 23, 42, 0.08);
  color: #111827;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .firebase-source-badge {
    margin-left: 0.25rem;
    font-size: 0.58rem;
    padding: 0.13rem 0.34rem;
  }

  .competition-match-stage-group h4 {
    font-size: 0.72rem;
    padding: 0.2rem 0.5rem;
  }
}


/* V104 - Fasi competizione riducibili e ordinate. */
.competition-match-stage-details {
  padding-top: 0.75rem;
}

.competition-match-stage-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  cursor: pointer;
  list-style: none;
  margin-bottom: 0.45rem;
}

.competition-match-stage-summary::-webkit-details-marker {
  display: none;
}

.competition-match-stage-summary h4 {
  margin: 0;
}

.competition-stage-toggle-label {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 4px 8px;
  font-size: 0.68rem;
  line-height: 1;
}

.competition-match-stage-details:not([open]) .competition-match-stage-summary {
  margin-bottom: 0;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .competition-match-stage-summary {
    gap: 0.5rem;
  }

  .competition-stage-toggle-label {
    min-height: 24px;
    padding: 3px 6px;
    font-size: 0.6rem;
  }
}


/* V105 - Importatore competizioni statiche. */
.static-competition-import-actions {
  flex-wrap: wrap;
}

.static-competition-preview-wrap {
  max-height: min(62vh, 560px);
  overflow: auto;
  border: 1px solid rgba(148, 163, 184, 0.22);
  border-radius: 14px;
}

.static-competition-preview-table {
  min-width: 1180px;
}

.static-competition-preview-table th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: rgba(15, 23, 42, 0.98);
  color: #e5e7eb;
}

.static-competition-preview-table .input {
  min-width: 82px;
  padding: 7px 8px;
  border-radius: 10px;
  font-size: 0.82rem;
}

.static-competition-preview-table td:nth-child(6) .input,
.static-competition-preview-table td:nth-child(9) .input {
  min-width: 180px;
}

.static-competition-preview-table td:nth-child(1) .input,
.static-competition-preview-table td:nth-child(2) .input {
  min-width: 105px;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .static-competition-preview-wrap {
    max-height: min(66vh, 560px) !important;
    overflow: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  .static-competition-preview-table,
  .static-competition-preview-table thead,
  .static-competition-preview-table tbody,
  .static-competition-preview-table tr,
  .static-competition-preview-table th,
  .static-competition-preview-table td {
    display: table !important;
  }

  .static-competition-preview-table {
    display: table !important;
    width: max-content !important;
    min-width: 1180px !important;
    table-layout: auto !important;
  }

  .static-competition-preview-table thead {
    display: table-header-group !important;
  }

  .static-competition-preview-table tbody {
    display: table-row-group !important;
  }

  .static-competition-preview-table tr {
    display: table-row !important;
    padding: 0 !important;
    border-radius: 0 !important;
  }

  .static-competition-preview-table th,
  .static-competition-preview-table td {
    display: table-cell !important;
    width: auto !important;
    white-space: nowrap;
  }

  .static-competition-preview-table td::before {
    content: none !important;
    display: none !important;
  }
}

/* V106 - Scorciatoia Admin per import calendario competizione */
.admin-import-shortcut {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  margin: -6px 0 14px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: rgba(34, 197, 94, 0.08);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .admin-import-shortcut {
    align-items: stretch;
    flex-direction: column;
  }

  .admin-import-shortcut .button {
    width: 100%;
  }
}


/* V108 - Import competizioni statiche: associazione squadre stagionali. */
.static-competition-preview-table .static-team-select {
  min-width: 180px;
}
.static-competition-preview-table input[data-field="homeTeamName"],
.static-competition-preview-table input[data-field="awayTeamName"] {
  min-width: 170px;
}
.static-competition-preview-table th:nth-child(7),
.static-competition-preview-table th:nth-child(11) {
  min-width: 180px;
}

/* V111 - Competizioni: pulsante pagina dedicata e gruppi fase. */
.competition-card-header-with-actions {
  align-items: flex-start;
}

.competition-card-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
  flex: 0 0 auto;
}

.competition-open-button {
  text-decoration: none;
  white-space: nowrap;
}

.competition-match-stage-summary {
  align-items: center;
}

.competition-page-main {
  padding-top: 28px;
}

.competition-page-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.competition-page-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin: 8px 0 0;
}

.competition-page-grid {
  display: grid;
  gap: 18px;
}

.competition-page-stage-group summary {
  cursor: pointer;
}

.competition-page-empty {
  padding: 18px;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .competition-card-header-with-actions,
  .competition-card-actions {
    align-items: stretch;
  }

  .competition-card-actions {
    display: grid;
    grid-template-columns: 1fr auto;
    width: 100%;
  }

  .competition-open-button {
    justify-content: center;
    min-height: 34px;
    padding: 7px 10px;
    font-size: 0.74rem;
  }

  .competition-page-main {
    padding-top: 12px;
  }

  .competition-page-actions {
    justify-content: stretch;
  }

  .competition-page-actions .button {
    width: 100%;
    text-align: center;
  }
}


/* V112 - Flag JSON in Admin partite e righe pubbliche senza colonna fase duplicata. */
.admin-static-match-flag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 0.72rem;
  font-weight: 900;
  letter-spacing: 0.04em;
  color: #052e16;
  background: #22c55e;
  border: 1px solid rgba(34, 197, 94, 0.35);
}
.admin-list-item-static-covered {
  border-color: rgba(34, 197, 94, 0.22);
  background: rgba(34, 197, 94, 0.06);
}
.competition-match-stage-group .match-table-wrap table th:first-child,
.competition-match-stage-group .match-table-wrap table td:first-child {
  width: 52%;
}
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .admin-static-match-flag { width: fit-content; }
}


/* V114 - Admin categorie, fonti competizioni mobile e risultati. */
.admin-category {
  display: grid;
  gap: 12px;
  margin-bottom: 18px;
}

.admin-category-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: rgba(15, 23, 42, 0.42);
}

.admin-category-heading h2 {
  margin: 0;
}

.admin-category-heading p {
  margin: 3px 0 0;
  color: var(--muted);
}

.admin-category-body {
  display: grid;
  gap: 12px;
}

.match-result-goals {
  font-weight: 900;
}

.match-result-separator,
.match-result-fp {
  color: var(--muted);
  font-weight: 700;
}

.admin-static-match-flag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(34, 197, 94, 0.18);
  color: #bbf7d0;
  font-size: 0.72rem;
  font-weight: 900;
  letter-spacing: 0.04em;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .static-source-badge,
  .firebase-source-badge,
  .static-source-line,
  .competition-source-line,
  .competition-card-source-line,
  .competition-card .static-source-line,
  .competition-card .competition-source-line {
    display: none !important;
  }

  .admin-category-heading {
    display: block;
    padding: 10px 12px;
  }
}

body.is-mobile-ux .static-source-badge,
body.is-mobile-ux .firebase-source-badge,
body.is-mobile-ux .static-source-line,
body.is-mobile-ux .competition-source-line,
body.is-mobile-ux .competition-card-source-line,
body.is-mobile-ux .competition-card .static-source-line,
body.is-mobile-ux .competition-card .competition-source-line {
  display: none !important;
}


/* V115 - Admin: le categorie sono sottosezioni vere e distinte dai pannelli funzionali. */
.admin-category-section {
  position: relative;
  display: grid;
  gap: 14px;
  margin: 0 0 24px;
  padding: 18px;
  border: 1px solid rgba(34, 197, 94, 0.28);
  border-radius: 26px;
  background:
    linear-gradient(135deg, rgba(34, 197, 94, 0.08), rgba(59, 130, 246, 0.035)),
    rgba(15, 23, 42, 0.30);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
}

.admin-category-section::before {
  content: "";
  position: absolute;
  left: 18px;
  top: 18px;
  bottom: 18px;
  width: 4px;
  border-radius: 999px;
  background: linear-gradient(180deg, var(--primary), rgba(34, 197, 94, 0.15));
}

.admin-category-section > .admin-category-heading {
  display: block;
  padding: 0 0 0 18px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.admin-category-heading-main {
  display: grid;
  gap: 4px;
}

.admin-category-kicker {
  color: var(--primary);
  font-size: 0.7rem;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.admin-category-section > .admin-category-heading h2 {
  margin: 0;
  font-size: 1.35rem;
  letter-spacing: -0.025em;
}

.admin-category-section > .admin-category-heading p {
  margin: 0;
  color: var(--muted);
  max-width: 920px;
}

.admin-category-section > .admin-category-body {
  display: grid;
  gap: 14px;
  padding-left: 18px;
}

.admin-category-section > .admin-category-body > .panel,
.admin-category-section > .admin-category-body > article.panel {
  margin-bottom: 0;
  background: rgba(17, 24, 39, 0.82);
}

html[data-theme="light"] .admin-category-section {
  background:
    linear-gradient(135deg, rgba(34, 197, 94, 0.10), rgba(59, 130, 246, 0.045)),
    rgba(255, 255, 255, 0.82);
  border-color: rgba(22, 163, 74, 0.25);
}

html[data-theme="light"] .admin-category-section > .admin-category-body > .panel,
html[data-theme="light"] .admin-category-section > .admin-category-body > article.panel {
  background: rgba(255, 255, 255, 0.96);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .admin-category-section {
    padding: 14px;
    border-radius: 20px;
    gap: 10px;
  }

  .admin-category-section::before {
    left: 14px;
    top: 14px;
    bottom: 14px;
  }

  .admin-category-section > .admin-category-heading,
  .admin-category-section > .admin-category-body {
    padding-left: 14px;
  }

  .admin-category-section > .admin-category-heading h2 {
    font-size: 1.12rem;
  }
}

/* V116 - Admin source/deleted badges and safer collapsed defaults. */
.admin-match-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.admin-match-source-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 900;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  border: 1px solid transparent;
}

.admin-match-source-badge-json {
  color: #bbf7d0;
  background: rgba(34, 197, 94, 0.18);
  border-color: rgba(34, 197, 94, 0.28);
}

.admin-match-source-badge-firebase {
  color: #bfdbfe;
  background: rgba(59, 130, 246, 0.18);
  border-color: rgba(59, 130, 246, 0.28);
}

.admin-match-source-badge-deleted {
  color: #fecaca;
  background: rgba(239, 68, 68, 0.18);
  border-color: rgba(239, 68, 68, 0.32);
}

.admin-list-item-deleted {
  opacity: 0.78;
  border-color: rgba(239, 68, 68, 0.26);
  background: rgba(239, 68, 68, 0.06);
}

.snapshot-last-updates {
  display: grid;
  gap: 4px;
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .admin-match-actions {
    justify-content: flex-start;
  }

  .admin-match-source-badge {
    width: fit-content;
    min-width: 0;
  }
}

/* V135 - Mobile dashboard competition standings horizontal scroll.
   In Classifiche competizioni the compact match line can be wider than the
   phone viewport because team names include logos and long club names.
   Keep the rest of the mobile dashboard unchanged, but allow this specific
   block to scroll horizontally. */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="dashboard"] #dashboardStandings .dashboard-competition-summary,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .dashboard-competition-summary {
    display: block !important;
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    padding-bottom: 4px;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .compact-match-lines,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .compact-match-lines {
    display: grid !important;
    width: max-content !important;
    min-width: 100% !important;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .compact-match-line,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .compact-match-line {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: max-content !important;
    min-width: 560px !important;
    gap: 10px !important;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .compact-match-line > span,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .compact-match-line > span {
    flex: 0 0 auto !important;
    min-width: 390px !important;
    white-space: nowrap !important;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .compact-match-line > strong,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .compact-match-line > strong {
    flex: 0 0 auto !important;
    margin-left: auto !important;
    white-space: nowrap !important;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .club-name-with-logo,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .club-name-with-logo {
    white-space: nowrap !important;
  }
}

/* V136 - Dashboard upcoming matches: date and Serie A matchday. */
.app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136 {
  align-items: center;
  gap: 10px;
}

.app-page[data-page="dashboard"] #dashboardStandings .dashboard-match-teams {
  min-width: 0;
}

.app-page[data-page="dashboard"] #dashboardStandings .dashboard-match-meta {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  margin-left: auto;
  flex: 0 0 auto;
  white-space: nowrap;
}

.app-page[data-page="dashboard"] #dashboardStandings .dashboard-match-date,
.app-page[data-page="dashboard"] #dashboardStandings .dashboard-match-serie-a {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 8px;
  border: 1px solid rgba(46, 160, 110, 0.24);
  border-radius: 999px;
  background: rgba(46, 160, 110, 0.08);
  color: var(--text);
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
}

.app-page[data-page="dashboard"] #dashboardStandings .dashboard-match-serie-a {
  border-color: rgba(79, 124, 255, 0.24);
  background: rgba(79, 124, 255, 0.08);
}

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136 {
    min-width: 620px !important;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136 > .dashboard-match-teams,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136 > .dashboard-match-teams {
    min-width: 360px !important;
  }

  .app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136 > .dashboard-match-meta,
  body.is-mobile-ux .app-page[data-page="dashboard"] #dashboardStandings .dashboard-next-match-line-v136 > .dashboard-match-meta {
    min-width: 220px !important;
    justify-content: flex-end !important;
  }
}

/* V173 - Snapshot public admin buttons show latest update dates inside the button. */
.snapshot-actions-grid .snapshot-action-button {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-height: 58px;
  white-space: normal;
  line-height: 1.18;
  text-align: center;
}

.snapshot-button-title {
  display: block;
  font-weight: 800;
}

.snapshot-button-date {
  display: block;
  font-size: 0.76rem;
  font-weight: 700;
  opacity: 0.78;
}

/* V182 - Keep generated deploy/preflight report values inside cells. */
.public-preflight-report-v179 table.admin-table,
.deploy-checklist-report-v180 table.admin-table {
  table-layout: fixed;
  max-width: 100%;
}

.public-preflight-report-v179 table.admin-table th,
.public-preflight-report-v179 table.admin-table td,
.deploy-checklist-report-v180 table.admin-table th,
.deploy-checklist-report-v180 table.admin-table td {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.public-preflight-report-v179 table.admin-table small,
.public-preflight-report-v179 table.admin-table code,
.deploy-checklist-report-v180 table.admin-table small,
.deploy-checklist-report-v180 table.admin-table code {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* V183 - Hard containment for deploy/preflight report columns.
   The first column has its own width and every inline value wraps inside its cell. */
.public-preflight-report-v179 .table-scroll,
.deploy-checklist-report-v180 .table-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  box-sizing: border-box;
}

.public-preflight-report-v179 table.admin-table,
.deploy-checklist-report-v180 table.admin-table {
  width: 100% !important;
  max-width: 100% !important;
  table-layout: fixed !important;
  border-collapse: collapse;
}

.public-preflight-report-v179 table.admin-table th,
.public-preflight-report-v179 table.admin-table td,
.deploy-checklist-report-v180 table.admin-table th,
.deploy-checklist-report-v180 table.admin-table td {
  box-sizing: border-box;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  line-break: anywhere;
  text-overflow: clip !important;
}

.public-preflight-report-v179 table.admin-table th:nth-child(1),
.public-preflight-report-v179 table.admin-table td:nth-child(1) {
  width: 30% !important;
}

.public-preflight-report-v179 table.admin-table th:nth-child(2),
.public-preflight-report-v179 table.admin-table td:nth-child(2) {
  width: 18% !important;
}

.public-preflight-report-v179 table.admin-table th:nth-child(3),
.public-preflight-report-v179 table.admin-table td:nth-child(3) {
  width: 36% !important;
}

.public-preflight-report-v179 table.admin-table th:nth-child(4),
.public-preflight-report-v179 table.admin-table td:nth-child(4) {
  width: 16% !important;
}

.deploy-checklist-report-v180 table.admin-table th:nth-child(1),
.deploy-checklist-report-v180 table.admin-table td:nth-child(1) {
  width: 31% !important;
}

.deploy-checklist-report-v180 table.admin-table th:nth-child(2),
.deploy-checklist-report-v180 table.admin-table td:nth-child(2) {
  width: 20% !important;
}

.deploy-checklist-report-v180 table.admin-table th:nth-child(3),
.deploy-checklist-report-v180 table.admin-table td:nth-child(3) {
  width: 49% !important;
}

.public-preflight-report-v179 table.admin-table strong,
.public-preflight-report-v179 table.admin-table small,
.public-preflight-report-v179 table.admin-table code,
.deploy-checklist-report-v180 table.admin-table strong,
.deploy-checklist-report-v180 table.admin-table small,
.deploy-checklist-report-v180 table.admin-table code {
  display: block;
  max-width: 100%;
  min-width: 0;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  line-break: anywhere;
}

/* V184 - Honor page: FIFA ranking dark section and palmares title spacing. */
[data-page="honor"] .palmares-competitions-section-v167 {
  padding: 1rem;
  border-radius: 18px;
}

[data-page="honor"] .palmares-competitions-section-v167 > h3 {
  margin-left: 0;
}

[data-page="honor"] .fifa-ranking-section-v184 {
  margin-top: 1.25rem;
  padding: 1rem;
  border: 1px solid rgba(34, 197, 94, 0.26);
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(9, 19, 32, 0.98), rgba(11, 33, 22, 0.94));
  color: #f8fafc;
  box-shadow: 0 18px 44px rgba(0, 0, 0, 0.20);
}

[data-page="honor"] .fifa-ranking-section-v184 h3,
[data-page="honor"] .fifa-ranking-section-v184 strong,
[data-page="honor"] .fifa-ranking-section-v184 .club-name-with-logo strong,
[data-page="honor"] .fifa-ranking-section-v184 .club-name-with-logo span {
  color: #ffffff;
}

[data-page="honor"] .fifa-ranking-section-v184 .muted,
[data-page="honor"] .fifa-ranking-section-v184 p,
[data-page="honor"] .fifa-ranking-section-v184 small {
  color: rgba(226, 232, 240, 0.84);
}

[data-page="honor"] .fifa-ranking-section-v184 .fifa-ranking-table-wrap {
  border-color: rgba(34, 197, 94, 0.22);
  background: rgba(7, 17, 29, 0.72);
}

[data-page="honor"] .fifa-ranking-section-v184 table,
[data-page="honor"] .fifa-ranking-section-v184 thead,
[data-page="honor"] .fifa-ranking-section-v184 tbody,
[data-page="honor"] .fifa-ranking-section-v184 tr,
[data-page="honor"] .fifa-ranking-section-v184 th,
[data-page="honor"] .fifa-ranking-section-v184 td {
  background: transparent;
  color: #f8fafc;
  border-color: rgba(148, 163, 184, 0.18);
}

[data-page="honor"] .fifa-ranking-section-v184 th {
  color: #bbf7d0;
  background: rgba(15, 23, 42, 0.96);
}

[data-page="honor"] .fifa-ranking-section-v184 tbody tr:nth-child(even) td {
  background: rgba(15, 23, 42, 0.46);
}

/* V185 - Admin help panel and centered snapshot public buttons. */
.snapshot-actions-grid .button,
.snapshot-actions-grid .snapshot-action-button {
  display: flex;
  flex-direction: column;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  gap: 4px;
  white-space: normal;
  line-height: 1.18;
}

.admin-help-v185 {
  margin-top: 18px;
}

.admin-help-grid-v185 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}

.admin-help-grid-v185 article {
  border: 1px solid var(--border);
  border-radius: 16px;
  background: rgba(15, 23, 42, 0.34);
  padding: 12px;
}

.admin-help-grid-v185 h4 {
  margin: 0 0 6px;
  color: var(--text);
  font-size: 0.96rem;
}

.admin-help-grid-v185 p {
  margin: 0;
  color: var(--muted);
  font-size: 0.86rem;
  line-height: 1.45;
}

/* V216 - Classifica completa competizione di campionato. */
.competition-standing-wrap-v216 {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.competition-standing-table-v216 {
  width: max-content;
  min-width: 920px;
  table-layout: auto;
}

.competition-standing-table-v216 th,
.competition-standing-table-v216 td {
  white-space: nowrap;
}

.competition-standing-table-v216 .standing-position-col-v216 {
  width: 52px;
  min-width: 52px;
  text-align: center;
}

.competition-standing-table-v216 .standing-team-col-v216 {
  width: 260px;
  min-width: 260px;
  text-align: left;
}

.competition-standing-table-v216 .standing-points-col-v216,
.competition-standing-table-v216 .standing-played-col-v216,
.competition-standing-table-v216 .standing-wins-col-v216,
.competition-standing-table-v216 .standing-draws-col-v216,
.competition-standing-table-v216 .standing-losses-col-v216,
.competition-standing-table-v216 .standing-goals-for-col-v216,
.competition-standing-table-v216 .standing-goals-against-col-v216,
.competition-standing-table-v216 .standing-goal-difference-col-v216 {
  width: 58px;
  min-width: 58px;
}

.competition-standing-table-v216 .standing-fantapoints-col-v216 {
  width: 78px;
  min-width: 78px;
}

/* V217 - Robustezza cache/layout classifica completa: non nasconde nessuna colonna campionato. */
.competition-standing-table-v216 .standing-position-col-v216,
.competition-standing-table-v216 .standing-team-col-v216,
.competition-standing-table-v216 .standing-points-col-v216,
.competition-standing-table-v216 .standing-played-col-v216,
.competition-standing-table-v216 .standing-wins-col-v216,
.competition-standing-table-v216 .standing-draws-col-v216,
.competition-standing-table-v216 .standing-losses-col-v216,
.competition-standing-table-v216 .standing-goals-for-col-v216,
.competition-standing-table-v216 .standing-goals-against-col-v216,
.competition-standing-table-v216 .standing-goal-difference-col-v216,
.competition-standing-table-v216 .standing-fantapoints-col-v216 {
  display: table-cell;
}

/* V228 - Comunicati condivisibili WhatsApp */
.news-share-actions {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: .9rem;
}

.news-share-actions .button {
  min-height: 2.15rem;
}

.news-share-path {
  display: block;
  flex-basis: 100%;
  word-break: break-all;
}

.admin-news-actions {
  align-items: flex-end;
  display: flex;
  flex-direction: column;
  gap: .45rem;
}

.admin-news-actions .news-share-actions {
  justify-content: flex-end;
  margin-top: .15rem;
}

.admin-news-share-note {
  margin: .75rem 0 1rem;
}

@media (max-width: 720px) {
  .news-share-actions,
  .admin-news-actions,
  .admin-news-actions .news-share-actions {
    align-items: stretch;
    flex-direction: column;
    width: 100%;
  }

  .news-share-actions .button,
  .admin-news-actions .button {
    justify-content: center;
    width: 100%;
  }
}


/* V229 - Header account presidente */
.president-account-button-v229 {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  white-space: nowrap;
  min-height: 2.5rem;
  padding-inline: .75rem .95rem;
}

.president-account-button-v229 .president-account-logo-v229 {
  width: 1.55rem;
  height: 1.55rem;
  flex: 0 0 auto;
  border-radius: 999px;
  object-fit: cover;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, .35);
}

.president-account-button-v229 .club-logo-placeholder.president-account-logo-v229 {
  display: inline-grid;
  place-items: center;
  font-size: .72rem;
  font-weight: 800;
}

.president-account-label-v229 {
  display: inline-block;
  max-width: 11rem;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}

@media (max-width: 640px) {
  .president-account-button-v229 {
    max-width: 100%;
    justify-content: center;
  }

  .president-account-label-v229 {
    max-width: 9rem;
  }
}


/* V233 - Hotfix listone/mobile dashboard/light mode */
@media (max-width: 420px) {
  .president-dashboard-metrics-v192 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: .5rem !important;
  }

  .president-dashboard-metric-v192 {
    padding: .62rem .55rem !important;
  }

  .president-dashboard-metric-v192 span,
  .president-dashboard-metric-v192 small {
    font-size: .72rem !important;
  }

  .president-dashboard-metric-v192 strong {
    font-size: 1rem !important;
    line-height: 1.15 !important;
  }
}

html[data-theme="light"] .season-archive-page-v196,
html[data-theme="light"] .historical-stats-page-v193,
html[data-theme="light"] .team-compare-page-v195,
html[data-theme="light"] .team-compare-content-v195 {
  color: var(--text) !important;
}

html[data-theme="light"] .season-archive-hero-v196,
html[data-theme="light"] .season-archive-card-v196,
html[data-theme="light"] .historical-stats-hero-v193,
html[data-theme="light"] .historical-stat-card-v193,
html[data-theme="light"] .historical-stat-metric-v193,
html[data-theme="light"] .historical-ranking-row-v193,
html[data-theme="light"] .team-compare-profile-v195,
html[data-theme="light"] .team-compare-direct-v195,
html[data-theme="light"] .team-compare-metric-v195,
html[data-theme="light"] .team-compare-direct-score-v195 div,
html[data-theme="light"] .team-compare-direct-list-v195 article {
  background: rgba(255, 255, 255, .94) !important;
  border-color: rgba(15, 23, 42, .13) !important;
  color: var(--text) !important;
}

html[data-theme="light"] .season-archive-hero-v196 h2,
html[data-theme="light"] .season-archive-card-v196 h3,
html[data-theme="light"] .season-archive-card-v196 strong,
html[data-theme="light"] .historical-stats-hero-v193 h2,
html[data-theme="light"] .historical-stat-card-v193 h3,
html[data-theme="light"] .historical-ranking-row-v193 strong,
html[data-theme="light"] .historical-stat-metric-v193 strong,
html[data-theme="light"] .team-compare-profile-head-v195 h3,
html[data-theme="light"] .team-compare-metric-v195 strong,
html[data-theme="light"] .team-compare-detail-v195 strong,
html[data-theme="light"] .team-compare-section-title-v195 h3,
html[data-theme="light"] .team-compare-direct-list-v195 strong {
  color: #0f172a !important;
}

html[data-theme="light"] .season-archive-hero-v196 p,
html[data-theme="light"] .season-archive-card-v196 p,
html[data-theme="light"] .season-archive-card-v196 span,
html[data-theme="light"] .historical-stats-hero-v193 p,
html[data-theme="light"] .historical-ranking-row-v193 small,
html[data-theme="light"] .historical-ranking-row-v193 div,
html[data-theme="light"] .historical-timeline-v193 span,
html[data-theme="light"] .historical-timeline-v193 small,
html[data-theme="light"] .team-compare-profile-head-v195 p,
html[data-theme="light"] .team-compare-metric-v195 span,
html[data-theme="light"] .team-compare-metric-v195 small,
html[data-theme="light"] .team-compare-detail-v195 p,
html[data-theme="light"] .team-compare-section-title-v195 p,
html[data-theme="light"] .team-compare-direct-list-v195 span,
html[data-theme="light"] .team-compare-direct-list-v195 small,
html[data-theme="light"] .team-compare-direct-score-v195 span {
  color: #475569 !important;
}

html[data-theme="light"] .historical-chip-row-v193 span,
html[data-theme="light"] .team-compare-chip-row-v195 span {
  background: rgba(217, 119, 6, .10) !important;
  border-color: rgba(217, 119, 6, .30) !important;
  color: #78350f !important;
}

html[data-theme="light"] .historical-rank-v193,
html[data-theme="light"] .team-compare-direct-score-v195 strong {
  color: #166534 !important;
}


/* V280 - Semplificazione UI Storico listoni.
 * Il pannello Storico listoni viene nascosto dalla UI pubblica, ma le logiche
 * V269-V278 restano disponibili per Modifica, filtro Modifiche, usciti storici
 * ed export CSV.
 */
.listone-history-panel-v269,
.listone-history-search-toggle-v269,
.listone-history-search-toggle-v270,
.listone-export-note-v278 {
  display: none !important;
}


/* V281 - Contrasto mobile in modalita Light.
 * Intervento mirato: migliora leggibilita' su smartphone senza cambiare layout,
 * dati o logiche Listone/Firebase/Admin.
 */
@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  html[data-theme="light"] body {
    color: #0f172a;
  }

  html[data-theme="light"] .metric-card,
  html[data-theme="light"] .panel,
  html[data-theme="light"] .page-heading,
  html[data-theme="light"] .news-card,
  html[data-theme="light"] .competition-card,
  html[data-theme="light"] .compact-card,
  html[data-theme="light"] .stack-item,
  html[data-theme="light"] .collapse-card,
  html[data-theme="light"] .login-card,
  html[data-theme="light"] .dashboard-subsection,
  html[data-theme="light"] .winner-line {
    background: #ffffff !important;
    border-color: rgba(15, 23, 42, 0.18) !important;
    color: #0f172a !important;
    box-shadow: 0 14px 34px rgba(15, 23, 42, 0.10) !important;
  }

  html[data-theme="light"] .subtitle,
  html[data-theme="light"] .muted,
  html[data-theme="light"] .field-hint,
  html[data-theme="light"] .metric-label,
  html[data-theme="light"] .panel-header p,
  html[data-theme="light"] .dashboard-subsection summary small,
  html[data-theme="light"] .static-source-line,
  html[data-theme="light"] .competition-page-meta,
  html[data-theme="light"] #listoneMetaText,
  html[data-theme="light"] .mobile-match-meta,
  html[data-theme="light"] .mobile-match-note,
  html[data-theme="light"] .small,
  html[data-theme="light"] small {
    color: #334155 !important;
  }

  html[data-theme="light"] h1,
  html[data-theme="light"] h2,
  html[data-theme="light"] h3,
  html[data-theme="light"] h4,
  html[data-theme="light"] strong,
  html[data-theme="light"] label,
  html[data-theme="light"] legend {
    color: #0f172a;
  }

  html[data-theme="light"] .input,
  html[data-theme="light"] .search-input,
  html[data-theme="light"] .filter-input,
  html[data-theme="light"] select.input,
  html[data-theme="light"] textarea.input,
  html[data-theme="light"] code {
    background: #ffffff !important;
    border-color: rgba(15, 23, 42, 0.22) !important;
    color: #0f172a !important;
  }

  html[data-theme="light"] .input::placeholder,
  html[data-theme="light"] .search-input::placeholder,
  html[data-theme="light"] .filter-input::placeholder,
  html[data-theme="light"] textarea.input::placeholder {
    color: #475569 !important;
    opacity: 1 !important;
  }

  html[data-theme="light"] .button-secondary,
  html[data-theme="light"] .nav-link,
  html[data-theme="light"] .mobile-subnav-pill,
  html[data-theme="light"] .theme-toggle,
  html[data-theme="light"] .mobile-more-link,
  html[data-theme="light"] .inline-checkbox-group {
    background: #f1f5f9 !important;
    border-color: rgba(15, 23, 42, 0.20) !important;
    color: #0f172a !important;
  }

  html[data-theme="light"] .button-primary,
  html[data-theme="light"] .nav-link.active,
  html[data-theme="light"] .mobile-subnav-pill.active,
  html[data-theme="light"] .mobile-bottom-link.active,
  html[data-theme="light"] .mobile-more-link.active {
    background: #15803d !important;
    color: #ffffff !important;
  }

  html[data-theme="light"] .mobile-bottom-nav,
  html[data-theme="light"] .mobile-more-sheet:not(.hidden),
  html[data-theme="light"] .mobile-page-subnav:not(.hidden) {
    background: rgba(255, 255, 255, 0.98) !important;
    border-color: rgba(15, 23, 42, 0.18) !important;
    box-shadow: 0 18px 50px rgba(15, 23, 42, 0.18) !important;
  }

  html[data-theme="light"] .mobile-bottom-link {
    color: #334155 !important;
  }

  html[data-theme="light"] .table-wrap,
  html[data-theme="light"] .mobile-tabular-wrap,
  html[data-theme="light"] .standing-table-wrap,
  html[data-theme="light"] .roster-dialog-table,
  html[data-theme="light"] .honor-table-wrap,
  html[data-theme="light"] .mobile-honor-table-wrap,
  html[data-theme="light"] .rules-table-wrap,
  html[data-theme="light"] .compact-table,
  html[data-theme="light"] .listone-table-wrap,
  html[data-theme="light"] .roster-season-table-wrap,
  html[data-theme="light"] .roster-inline-table-wrap {
    background: #ffffff !important;
    border-color: rgba(15, 23, 42, 0.18) !important;
  }

  html[data-theme="light"] .table-wrap td,
  html[data-theme="light"] .mobile-tabular-wrap td,
  html[data-theme="light"] .standing-table-wrap td,
  html[data-theme="light"] .roster-dialog-table td,
  html[data-theme="light"] .honor-table-wrap td,
  html[data-theme="light"] .mobile-honor-table-wrap td,
  html[data-theme="light"] .rules-table-wrap td,
  html[data-theme="light"] .compact-table td,
  html[data-theme="light"] table.mobile-tabular td,
  html[data-theme="light"] table.standing-table td,
  html[data-theme="light"] table.listone-table td,
  html[data-theme="light"] table.free-agents-table td,
  html[data-theme="light"] table.roster-season-table td,
  html[data-theme="light"] table.roster-player-table td,
  html[data-theme="light"] table.mobile-standing-table td,
  html[data-theme="light"] table.mobile-honor-table td {
    background: #ffffff !important;
    border-bottom-color: rgba(100, 116, 139, 0.28) !important;
    color: #0f172a !important;
  }

  html[data-theme="light"] .table-wrap tr:nth-child(even) td,
  html[data-theme="light"] .mobile-tabular-wrap tr:nth-child(even) td,
  html[data-theme="light"] .standing-table-wrap tr:nth-child(even) td,
  html[data-theme="light"] table.listone-table tr:nth-child(even) td,
  html[data-theme="light"] table.free-agents-table tr:nth-child(even) td,
  html[data-theme="light"] table.roster-season-table tr:nth-child(even) td,
  html[data-theme="light"] table.roster-player-table tr:nth-child(even) td {
    background: #f8fafc !important;
  }

  html[data-theme="light"] .table-wrap th,
  html[data-theme="light"] .mobile-tabular-wrap th,
  html[data-theme="light"] .standing-table-wrap th,
  html[data-theme="light"] .roster-dialog-table th,
  html[data-theme="light"] .honor-table-wrap th,
  html[data-theme="light"] .mobile-honor-table-wrap th,
  html[data-theme="light"] .rules-table-wrap th,
  html[data-theme="light"] .compact-table th,
  html[data-theme="light"] table.mobile-tabular th,
  html[data-theme="light"] table.standing-table th,
  html[data-theme="light"] table.listone-table th,
  html[data-theme="light"] table.free-agents-table th,
  html[data-theme="light"] table.roster-season-table th,
  html[data-theme="light"] table.roster-player-table th,
  html[data-theme="light"] table.mobile-standing-table th,
  html[data-theme="light"] table.mobile-honor-table th,
  html[data-theme="light"] .table-wrap th:first-child,
  html[data-theme="light"] .mobile-tabular-wrap th:first-child,
  html[data-theme="light"] .standing-table-wrap th:first-child,
  html[data-theme="light"] table.listone-table th:first-child,
  html[data-theme="light"] table.free-agents-table th:first-child {
    background: #0f172a !important;
    color: #f8fafc !important;
    border-bottom-color: rgba(226, 232, 240, 0.22) !important;
  }

  html[data-theme="light"] .table-wrap th .table-sort,
  html[data-theme="light"] .mobile-tabular-wrap th .table-sort,
  html[data-theme="light"] .standing-table-wrap th .table-sort,
  html[data-theme="light"] table.listone-table th .table-sort,
  html[data-theme="light"] table.free-agents-table th .table-sort,
  html[data-theme="light"] table.roster-player-table th .table-sort {
    color: #f8fafc !important;
  }

  html[data-theme="light"] .table-wrap td:first-child,
  html[data-theme="light"] .mobile-tabular-wrap td:first-child,
  html[data-theme="light"] .standing-table-wrap td:first-child,
  html[data-theme="light"] table.listone-table td:first-child,
  html[data-theme="light"] table.free-agents-table td:first-child,
  html[data-theme="light"] table.roster-season-table td:first-child,
  html[data-theme="light"] table.roster-player-table td:first-child,
  html[data-theme="light"] table.mobile-standing-table td:first-child,
  html[data-theme="light"] table.mobile-honor-table td:first-child {
    background: #0f172a !important;
    color: #f8fafc !important;
    box-shadow: 8px 0 14px rgba(15, 23, 42, 0.25) !important;
  }

  html[data-theme="light"] .table-wrap td:first-child a,
  html[data-theme="light"] .mobile-tabular-wrap td:first-child a,
  html[data-theme="light"] table.listone-table td:first-child a,
  html[data-theme="light"] table.free-agents-table td:first-child a,
  html[data-theme="light"] table.roster-season-table td:first-child a,
  html[data-theme="light"] table.roster-player-table td:first-child a,
  html[data-theme="light"] .table-wrap td:first-child .link-button,
  html[data-theme="light"] .mobile-tabular-wrap td:first-child .link-button,
  html[data-theme="light"] table.listone-table td:first-child .link-button,
  html[data-theme="light"] table.free-agents-table td:first-child .link-button {
    color: #ffffff !important;
  }

  html[data-theme="light"] .table-wrap td::before,
  html[data-theme="light"] .mobile-tabular-wrap td::before,
  html[data-theme="light"] .compact-table td::before {
    color: #334155 !important;
  }

  html[data-theme="light"] .mini-badge,
  html[data-theme="light"] .status-muted {
    background: #e2e8f0 !important;
    border: 1px solid rgba(71, 85, 105, 0.24) !important;
    color: #1e293b !important;
  }

  html[data-theme="light"] .status-ok {
    background: #dcfce7 !important;
    border: 1px solid rgba(22, 101, 52, 0.26) !important;
    color: #14532d !important;
  }

  html[data-theme="light"] .status-warning,
  html[data-theme="light"] .text-warning {
    background: #fef3c7 !important;
    border-color: rgba(146, 64, 14, 0.26) !important;
    color: #78350f !important;
  }

  html[data-theme="light"] .status-danger,
  html[data-theme="light"] .text-danger {
    background: #fee2e2 !important;
    border-color: rgba(153, 27, 27, 0.24) !important;
    color: #991b1b !important;
  }

  html[data-theme="light"] .link-button,
  html[data-theme="light"] a {
    color: #166534;
  }
}

html[data-theme="light"] body.is-mobile-ux .metric-card,
html[data-theme="light"] body.is-mobile-ux .panel,
html[data-theme="light"] body.is-mobile-ux .page-heading,
html[data-theme="light"] body.is-mobile-ux .news-card,
html[data-theme="light"] body.is-mobile-ux .competition-card,
html[data-theme="light"] body.is-mobile-ux .compact-card,
html[data-theme="light"] body.is-mobile-ux .stack-item,
html[data-theme="light"] body.is-mobile-ux .collapse-card,
html[data-theme="light"] body.is-mobile-ux .login-card,
html[data-theme="light"] body.is-mobile-ux .dashboard-subsection,
html[data-theme="light"] body.is-mobile-ux .winner-line {
  background: #ffffff !important;
  border-color: rgba(15, 23, 42, 0.18) !important;
  color: #0f172a !important;
}

html[data-theme="light"] body.is-mobile-ux .muted,
html[data-theme="light"] body.is-mobile-ux .field-hint,
html[data-theme="light"] body.is-mobile-ux .metric-label,
html[data-theme="light"] body.is-mobile-ux .panel-header p,
html[data-theme="light"] body.is-mobile-ux .dashboard-subsection summary small,
html[data-theme="light"] body.is-mobile-ux #listoneMetaText,
html[data-theme="light"] body.is-mobile-ux small {
  color: #334155 !important;
}

/* V291 - Refactor CSS prudente.
 * I blocchi V285-V289 sono stati estratti da styles.css e mantenuti, in ordine equivalente, in:
 * - assets/css/refactor/mobile-controls-v291.css
 * - assets/css/refactor/rosters-tables-v291.css
 * Questo riduce styles.css senza rimuovere le funzionalita mobile/rose/Listone introdotte nelle versioni precedenti.
 */

/* V406 - Evidenziazione ruolo giocatore consolidata in assets/app.js.
 * Non cambia dati, filtri, ordinamenti o navigazione; mantiene compatibilita con classi V404/V405R. */
tbody tr.zo-role-bg-v405-gk > td,
tbody tr.player-role-gk > td {
  background: linear-gradient(90deg, rgba(245, 158, 11, 0.18), rgba(245, 158, 11, 0.07)) !important;
}
tbody tr.zo-role-bg-v405-def > td,
tbody tr.player-role-def > td {
  background: linear-gradient(90deg, rgba(34, 197, 94, 0.16), rgba(34, 197, 94, 0.06)) !important;
}
tbody tr.zo-role-bg-v405-mid > td,
tbody tr.player-role-mid > td {
  background: linear-gradient(90deg, rgba(56, 189, 248, 0.16), rgba(59, 130, 246, 0.06)) !important;
}
tbody tr.zo-role-bg-v405-fwd > td,
tbody tr.player-role-fwd > td {
  background: linear-gradient(90deg, rgba(248, 113, 113, 0.16), rgba(239, 68, 68, 0.06)) !important;
}
tbody tr.zo-role-bg-v405-gk > td:first-child,
tbody tr.player-role-gk > td:first-child { box-shadow: inset 4px 0 rgba(245, 158, 11, 0.62) !important; }
tbody tr.zo-role-bg-v405-def > td:first-child,
tbody tr.player-role-def > td:first-child { box-shadow: inset 4px 0 rgba(34, 197, 94, 0.56) !important; }
tbody tr.zo-role-bg-v405-mid > td:first-child,
tbody tr.player-role-mid > td:first-child { box-shadow: inset 4px 0 rgba(56, 189, 248, 0.56) !important; }
tbody tr.zo-role-bg-v405-fwd > td:first-child,
tbody tr.player-role-fwd > td:first-child { box-shadow: inset 4px 0 rgba(248, 113, 113, 0.56) !important; }
html[data-theme="light"] tbody tr.zo-role-bg-v405-gk > td,
html[data-theme="light"] tbody tr.player-role-gk > td { background: linear-gradient(90deg, rgba(245, 158, 11, 0.22), rgba(255, 247, 237, 0.84)) !important; }
html[data-theme="light"] tbody tr.zo-role-bg-v405-def > td,
html[data-theme="light"] tbody tr.player-role-def > td { background: linear-gradient(90deg, rgba(34, 197, 94, 0.20), rgba(240, 253, 244, 0.84)) !important; }
html[data-theme="light"] tbody tr.zo-role-bg-v405-mid > td,
html[data-theme="light"] tbody tr.player-role-mid > td { background: linear-gradient(90deg, rgba(56, 189, 248, 0.20), rgba(239, 246, 255, 0.84)) !important; }
html[data-theme="light"] tbody tr.zo-role-bg-v405-fwd > td,
html[data-theme="light"] tbody tr.player-role-fwd > td { background: linear-gradient(90deg, rgba(248, 113, 113, 0.20), rgba(254, 242, 242, 0.84)) !important; }
@media (max-width: 820px) {
  .table-wrap tbody tr.zo-role-bg-v405-gk,
  .table-wrap tbody tr.player-role-gk { background: linear-gradient(135deg, rgba(245, 158, 11, 0.18), rgba(31, 41, 55, 0.52)) !important; }
  .table-wrap tbody tr.zo-role-bg-v405-def,
  .table-wrap tbody tr.player-role-def { background: linear-gradient(135deg, rgba(34, 197, 94, 0.16), rgba(31, 41, 55, 0.52)) !important; }
  .table-wrap tbody tr.zo-role-bg-v405-mid,
  .table-wrap tbody tr.player-role-mid { background: linear-gradient(135deg, rgba(56, 189, 248, 0.16), rgba(31, 41, 55, 0.52)) !important; }
  .table-wrap tbody tr.zo-role-bg-v405-fwd,
  .table-wrap tbody tr.player-role-fwd { background: linear-gradient(135deg, rgba(248, 113, 113, 0.16), rgba(31, 41, 55, 0.52)) !important; }
}

/* V408 - Rosa squadra espansa con stile Listone.
 * La tabella interna mantiene le stesse colonne dati, ma eredita ritmo visivo,
 * font, sticky header, padding e densita della tabella Listone. */
.roster-listone-wrap-v408,
.roster-listone-wrap-v408.table-wrap,
.roster-listone-wrap-v408.mobile-tabular-wrap,
.roster-inline-table-wrap.roster-listone-wrap-v408 {
  max-height: 68vh !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

.roster-listone-skin-v408,
table.roster-player-table.roster-listone-skin-v408 {
  table-layout: fixed !important;
  width: 100% !important;
  min-width: 760px !important;
  max-width: none !important;
  font-size: 0.82rem !important;
  border-collapse: collapse;
}

.roster-listone-skin-v408 th,
.roster-listone-skin-v408 td,
table.roster-player-table.roster-listone-skin-v408 th,
table.roster-player-table.roster-listone-skin-v408 td {
  padding: 8px 7px !important;
  line-height: 1.16 !important;
  white-space: nowrap !important;
  vertical-align: middle !important;
}

.roster-listone-skin-v408 thead th,
table.roster-player-table.roster-listone-skin-v408 thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 4 !important;
  background: rgba(15, 23, 42, 0.98) !important;
  color: #e5e7eb !important;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.roster-listone-skin-v408 .table-sort,
table.roster-player-table.roster-listone-skin-v408 .table-sort {
  color: inherit !important;
  font-size: inherit !important;
  letter-spacing: inherit !important;
}

.roster-listone-skin-v408 .roster-col-player { width: 42% !important; min-width: 220px !important; text-align: left !important; }
.roster-listone-skin-v408 .roster-col-role { width: 20% !important; min-width: 112px !important; text-align: center !important; }
.roster-listone-skin-v408 .roster-col-team { width: 12% !important; min-width: 74px !important; text-align: center !important; }
.roster-listone-skin-v408 .roster-col-cost { width: 13% !important; min-width: 78px !important; text-align: right !important; }
.roster-listone-skin-v408 .roster-col-qta { width: 13% !important; min-width: 78px !important; text-align: right !important; }

@media (max-width: 900px), (hover: none) and (pointer: coarse) {
  .roster-listone-wrap-v408,
  .roster-listone-wrap-v408.table-wrap,
  .roster-listone-wrap-v408.mobile-tabular-wrap {
    max-height: 70vh !important;
    overflow: auto !important;
  }

  .roster-listone-skin-v408,
  table.roster-player-table.roster-listone-skin-v408 {
    min-width: 620px !important;
    font-size: 0.62rem !important;
  }

  .roster-listone-skin-v408 th,
  .roster-listone-skin-v408 td,
  table.roster-player-table.roster-listone-skin-v408 th,
  table.roster-player-table.roster-listone-skin-v408 td {
    padding: 5px 4px !important;
    line-height: 1.08 !important;
  }

  .roster-listone-skin-v408 .roster-col-player { width: 42% !important; min-width: 180px !important; }
  .roster-listone-skin-v408 .roster-col-role { width: 20% !important; min-width: 94px !important; }
  .roster-listone-skin-v408 .roster-col-team { width: 12% !important; min-width: 58px !important; }
  .roster-listone-skin-v408 .roster-col-cost,
  .roster-listone-skin-v408 .roster-col-qta { width: 13% !important; min-width: 64px !important; }
}

body.is-mobile-ux .roster-listone-wrap-v408,
body.is-mobile-ux .roster-listone-wrap-v408.table-wrap,
body.is-mobile-ux .roster-listone-wrap-v408.mobile-tabular-wrap {
  max-height: 70vh !important;
  overflow: auto !important;
  -webkit-overflow-scrolling: touch;
}

body.is-mobile-ux .roster-listone-skin-v408,
body.is-mobile-ux table.roster-player-table.roster-listone-skin-v408 {
  min-width: 620px !important;
  font-size: 0.62rem !important;
  width: 100% !important;
}

body.is-mobile-ux .roster-listone-skin-v408 th,
body.is-mobile-ux .roster-listone-skin-v408 td,
body.is-mobile-ux table.roster-player-table.roster-listone-skin-v408 th,
body.is-mobile-ux table.roster-player-table.roster-listone-skin-v408 td {
  padding: 5px 4px !important;
  line-height: 1.08 !important;
  white-space: nowrap !important;
}

body.is-mobile-ux .roster-listone-skin-v408 .roster-col-player { width: 42% !important; min-width: 180px !important; text-align: left !important; }
body.is-mobile-ux .roster-listone-skin-v408 .roster-col-role { width: 20% !important; min-width: 94px !important; text-align: center !important; }
body.is-mobile-ux .roster-listone-skin-v408 .roster-col-team { width: 12% !important; min-width: 58px !important; text-align: center !important; }
body.is-mobile-ux .roster-listone-skin-v408 .roster-col-cost,
body.is-mobile-ux .roster-listone-skin-v408 .roster-col-qta { width: 13% !important; min-width: 64px !important; text-align: right !important; }

html[data-theme="light"] .roster-listone-skin-v408 thead th,
html[data-theme="light"] table.roster-player-table.roster-listone-skin-v408 thead th {
  background: #0f172a !important;
  color: #f8fafc !important;
}


/* V449 - Firebase bootstrap banner alias for FantaPetillo clone. */
.sandbox-banner-v449 {
  position: sticky;
  top: 0;
  z-index: 1100;
  padding: 0.55rem 0.85rem;
  text-align: center;
  font-size: 0.82rem;
  font-weight: 700;
  background: rgba(251, 191, 36, 0.95);
  color: #1f2937;
  border-bottom: 1px solid rgba(146, 64, 14, 0.35);
}


/* V450 - Admin bootstrap banner alias for FantaPetillo clone. */
.sandbox-banner-v450 {
  position: sticky;
  top: 0;
  z-index: 1100;
  padding: 0.55rem 0.85rem;
  text-align: center;
  font-size: 0.82rem;
  font-weight: 700;
  background: rgba(251, 191, 36, 0.95);
  color: #1f2937;
  border-bottom: 1px solid rgba(146, 64, 14, 0.35);
}


/* V451 - Admin onboarding guide for FantaPetillo clone. */
.onboarding-panel-v451 {
  border-color: rgba(59, 130, 246, 0.32);
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.08);
}
.onboarding-grid-v451 {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(260px, 0.65fr);
  gap: 1rem;
  padding: 0 1.25rem 1.25rem;
}
.onboarding-steps-v451 {
  display: grid;
  gap: 0.55rem;
  margin: 0;
  padding-left: 1.15rem;
}
.onboarding-step-v451 {
  padding: 0.65rem 0.7rem;
  border: 1px solid rgba(148, 163, 184, 0.28);
  border-radius: 0.85rem;
  background: rgba(248, 250, 252, 0.72);
}
.onboarding-step-v451 .status {
  margin-right: 0.45rem;
}
.onboarding-step-v451 small {
  display: block;
  margin-top: 0.2rem;
  color: #64748b;
}
.onboarding-actions-v451 {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0.65rem 0;
}
.onboarding-highlight-v451 {
  outline: 3px solid rgba(59, 130, 246, 0.45);
  outline-offset: 4px;
}
@media (max-width: 760px) {
  .onboarding-grid-v451 {
    grid-template-columns: 1fr;
    padding: 0 0.9rem 1rem;
  }
}
