.bm-table{width:100%;border-collapse:collapse;margin:1rem 0}.bm-table th,.bm-table td{border:1px solid #ddd;padding:.55rem;text-align:left}.bm-card,.bm-live-card{border:1px solid #ddd;border-radius:12px;padding:1rem;margin:.75rem 0;background:#fff}.bm-results{display:grid;gap:.75rem}.bm-live-list{display:grid;gap:.75rem}.bm-admin .bm-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.bm-admin .bm-cards div{background:#fff;border:1px solid #ccd0d4;border-radius:8px;padding:16px;font-size:18px}.bm-check{display:block;margin:7px 0}.bm-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.bm-boxscore pre{white-space:pre-wrap;background:#f6f7f7;padding:1rem;border-radius:8px}@media(max-width:700px){.bm-table{font-size:13px}.bm-grid{grid-template-columns:1fr}.bm-table th,.bm-table td{padding:.35rem}}

.bm-bracket{display:flex;gap:16px;overflow-x:auto;padding:10px 0}.bm-bracket-round{min-width:240px}.bm-bracket-match{border:1px solid #ddd;border-radius:8px;padding:10px;margin:0 0 10px;background:#fff}.bm-bracket-match strong{display:block;margin-top:4px}.bm-admin .code{font-family:monospace}.column-bm_shortcodes{width:150px}.column-bm_code{width:180px}
.bm-fip-table{table-layout:fixed;width:100%}
.bm-fip-table td,.bm-fip-table th{overflow:visible;vertical-align:middle}
.bm-fip-table .bm-col-season{width:118px;max-width:118px}
.bm-fip-table .bm-col-season select{width:100%;max-width:110px;font-size:12px;padding:2px 4px}
.bm-fip-table th.bm-col-season{width:118px}
.bm-fip-table .bm-col-team{width:160px;min-width:150px;position:relative;z-index:2}
.bm-fip-table .bm-col-team select.bm-fip-team{width:100%;max-width:100%;min-width:140px;position:relative;z-index:3}
.bm-fip-table .bm-fip-campionato{max-width:100%;box-sizing:border-box}
.bm-fip-table .bm-fip-url{max-width:100%;box-sizing:border-box}
.bm-fip-table .bm-fip-gender,.bm-fip-table .bm-fip-sport{max-width:100%;box-sizing:border-box;font-size:12px}
.bm-fip-table .bm-fip-campionato{min-width:120px}
.bm-fip-table .bm-col-tipo-girone{width:118px;min-width:108px}
.bm-fip-table th.bm-col-tipo-girone{width:118px}
.bm-fip-table .bm-col-girone{width:108px;min-width:98px}
.bm-fip-table th.bm-col-girone{width:108px}
.bm-fip-table .bm-fip-tipo-girone,.bm-fip-table .bm-fip-girone{max-width:100%;box-sizing:border-box;font-size:12px}
.bm-fip-table td small.description{display:block;margin-top:4px;color:#646970;word-break:break-word}
.bm-fip-table .bm-fip-entry .bm-fip-row-head__cell{padding:6px 10px 4px;background:#f6f7f7;border-bottom:none}
.bm-fip-table .bm-fip-row-title{font-size:12px;font-weight:600;color:#1d2327;line-height:1.35;letter-spacing:.01em}
.bm-fip-table .bm-fip-entry .bm-fip-row-head+tr td{border-top:1px solid #c3c4c7}
.bm-fip-table .bm-col-club{width:44px;min-width:40px;text-align:center}
.bm-fip-table th.bm-col-club{width:44px}
.bm-fip-table .bm-fip-club-count{display:inline-block;font-size:14px;font-weight:700;color:#1d2327;min-width:1.5ch}
.bm-fip-table .bm-col-actions{width:72px;text-align:center;vertical-align:middle}
.bm-fip-table .bm-fip-delete-form{margin:0}
.bm-fip-table .bm-col-giornate{width:88px;min-width:88px;text-align:center}
.bm-fip-table th.bm-col-giornate{width:88px}
.bm-fip-giornate-cell{display:flex;align-items:center;justify-content:center;gap:4px}
.bm-fip-giornate{
  width:3.2em;min-width:3.2em;max-width:4em;
  padding:4px 6px;font-size:14px;font-weight:600;text-align:center;
  -moz-appearance:textfield;appearance:textfield;box-sizing:border-box
}
.bm-fip-giornate::-webkit-outer-spin-button,.bm-fip-giornate::-webkit-inner-spin-button{
  -webkit-appearance:none;margin:0
}
.bm-fip-giornate-toggle{padding:0 4px!important;min-height:28px;line-height:1}
.bm-fip-giornate-toggle .dashicons{font-size:16px;width:16px;height:16px;line-height:28px}
.bm-fip-giornate-toggle[aria-expanded="true"] .dashicons{transform:rotate(180deg)}
.bm-fip-giornate-panel__cell{padding:10px 12px!important;background:#f6f7f7;border-top:none!important}
.bm-fip-giornate-panel__inner{max-width:100%}
.bm-fip-giornate-panel__head{margin:0 0 8px;font-size:12px}
.bm-fip-giornate-links{
  display:flex;flex-wrap:wrap;gap:6px 12px;margin:0;padding:0;list-style:none
}
.bm-fip-giornate-links a{
  display:inline-block;padding:4px 10px;border:1px solid #c3c4c7;border-radius:4px;
  background:#fff;font-size:12px;text-decoration:none
}
.bm-fip-giornate-links a:hover{border-color:#2271b1;color:#2271b1}
.bm-fip-toolbar{margin:8px 0 16px}
.bm-fip-sync-panel{margin:12px 0 20px}
.bm-fip-sync-summary{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.bm-fip-sync-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:12px;background:#f0f0f1;color:#1d2327}
.bm-fip-sync-chip.is-ok{background:#edfaef;color:#1e4620}
.bm-fip-sync-chip.is-err{background:#fcf0f1;color:#8a1f2d}
.bm-fip-sync-chip.is-never{background:#f6f7f7;color:#50575e}
.bm-fip-sync-chip.is-pending{background:#f0f6fc;color:#1d4f91}
.bm-fip-sync-table td,.bm-fip-sync-table th{vertical-align:middle}
.bm-fip-sync-row--err td{background:#fff5f5}
.bm-fip-sync-row--never td{color:#646970}
.bm-archive-filter--hidden{display:none!important}
.bm-team-label{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}.bm-team-logo{width:24px;height:24px;object-fit:contain;border-radius:3px;background:#fff}.bm-managed-team{outline:2px solid #111;}

/* v14 final phases */
.bm-final-phases{display:grid;gap:24px;margin:18px 0}.bm-final-phase{border:1px solid #e5e7eb;border-radius:14px;padding:16px;background:#fff}.bm-final-phase h2{margin:0 0 12px}.bm-phase-badge{display:inline-block;border-radius:999px;padding:2px 8px;margin-right:8px;font-size:11px;font-weight:700;text-transform:uppercase;background:#f3f4f6}.bm-badge-playoff{background:#e0f2fe}.bm-badge-playout{background:#fff7ed}.bm-badge-finale_regionale{background:#dcfce7}.bm-badge-coppa{background:#f5f3ff}

.bm-standings .bm-zone-playoff td:first-child{border-left:4px solid #2e7d32}
.bm-standings .bm-zone-playout td:first-child{border-left:4px solid #c62828}
.bm-standings .bm-zone-playoff td:last-child{font-weight:700;color:#2e7d32}
.bm-standings .bm-zone-playout td:last-child{font-weight:700;color:#c62828}

/* v19 palette */
.bm-card,.bm-table,.bm-live-card,.bm-bracket{background:var(--bm-surface,#fff);color:var(--bm-text,#172033);border-radius:var(--bm-radius,12px)}
.bm-table th,.bm-header{background:var(--bm-primary,#0B4EA2);color:#fff}
.bm-zone-playoff{border-left:4px solid var(--bm-success,#1B9A59)}
.bm-zone-playout{border-left:4px solid var(--bm-danger,#D62828)}

/* Pagina campionato configurabile */
.bm-champ-page{margin:1.5rem 0;max-width:1100px}
.bm-champ-header{margin-bottom:1rem;padding-bottom:.75rem;border-bottom:2px solid var(--bm-primary,#0B4EA2)}
.bm-champ-title{margin:0 0 .35rem;font-size:clamp(1.4rem,3vw,2rem)}
.bm-champ-subtitle,.bm-champ-season{margin:.25rem 0;color:#555}
.bm-champ-nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 1rem}
.bm-champ-tab{border:1px solid #ccd0d4;background:#f6f7f7;border-radius:999px;padding:.45rem 1rem;cursor:pointer;font:inherit}
.bm-champ-tab.is-active,.bm-champ-tab:hover{background:var(--bm-primary,#0B4EA2);color:#fff;border-color:var(--bm-primary,#0B4EA2)}
.bm-layout-tabs .bm-champ-section{display:none;margin-bottom:1.5rem}
.bm-layout-tabs .bm-champ-section.bm-active{display:block}
.bm-layout-stack .bm-champ-section{margin-bottom:2rem}
.bm-champ-section-title{margin:0 0 .75rem;font-size:1.25rem}
.bm-match-meta{display:block;margin-top:.35rem;color:#555;line-height:1.4}
.bm-match-date{display:block;margin-bottom:.25rem;color:#666}

/* Visualizzazione dati unificata (colori da palette v19: --bm-primary, --bm-surface, …) */
.bm-data-view{
  --bm-ui-bg:var(--bm-secondary,#0a0a0a);
  --bm-ui-card:var(--bm-surface,#111);
  --bm-ui-border:color-mix(in srgb,var(--bm-primary,#333) 24%,transparent);
  --bm-ui-text:var(--bm-text,#f5f5f5);
  --bm-ui-muted:color-mix(in srgb,var(--bm-text,#aaa) 62%,transparent);
  --bm-ui-accent:var(--bm-primary,#1e90ff);
  --bm-ui-managed:var(--bm-accent,#4da3ff);
  --bm-ui-footer:color-mix(in srgb,var(--bm-secondary,#111) 75%,var(--bm-ui-card));
  --bm-ui-logo-bg:color-mix(in srgb,var(--bm-text,#666) 22%,var(--bm-ui-card));
  background:var(--bm-ui-bg);
  color:var(--bm-ui-text);
  padding:1rem;
  border-radius:var(--bm-radius,4px);
  max-width:720px;
  margin:1rem auto;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
.bm-champ-page.bm-data-view{max-width:1100px}
.bm-ui-empty{color:var(--bm-ui-muted);padding:1rem 0;margin:0}
.bm-ui-nav{margin-bottom:1.25rem}
.bm-ui-leg-row{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.bm-ui-leg-label{min-width:52px;font-size:13px;font-weight:600;color:var(--bm-ui-muted);text-transform:uppercase;letter-spacing:.04em}
.bm-ui-pills{display:flex;flex-wrap:wrap;gap:8px}
.bm-ui-pill{width:36px;height:36px;border:1px solid var(--bm-ui-border);border-radius:50%;background:transparent;color:var(--bm-ui-muted);font:inherit;font-size:14px;font-weight:600;cursor:pointer;padding:0;transition:background .15s,color .15s,border-color .15s}
.bm-ui-pill:hover{color:var(--bm-ui-text);border-color:color-mix(in srgb,var(--bm-ui-accent) 50%,var(--bm-ui-border))}
.bm-ui-pill.is-active{background:var(--bm-ui-accent);border-color:var(--bm-ui-accent);color:#fff}
.bm-ui-matches{display:flex;flex-direction:column;gap:12px}
.bm-ui-card{background:var(--bm-ui-card);border:1px solid var(--bm-ui-border);border-radius:2px;overflow:hidden}
.bm-ui-team{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--bm-ui-border)}
.bm-ui-team-away{border-bottom:none}
.bm-ui-team.is-managed .bm-ui-name{color:var(--bm-ui-managed)}
.bm-ui-logo{width:40px;height:40px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--bm-ui-logo-bg);flex-shrink:0}
.bm-ui-logo img{width:100%;height:100%;object-fit:contain;background:#fff}
.bm-ui-logo--empty{background:var(--bm-ui-logo-bg)}
.bm-ui-name{font-size:clamp(13px,2.8vw,15px);font-weight:800;line-height:1.2;text-transform:uppercase;letter-spacing:.02em;word-break:break-word}
.bm-ui-score{font-size:clamp(22px,5vw,28px);font-weight:800;min-width:2ch;text-align:right;line-height:1;color:var(--bm-ui-text)}
.bm-ui-footer{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:10px 16px;font-size:12px;color:var(--bm-ui-muted);border-top:1px solid var(--bm-ui-border);background:var(--bm-ui-footer)}
.bm-ui-date{text-align:left}
.bm-ui-mid{text-align:center;padding:0 12px;border-left:1px solid var(--bm-ui-border);border-right:1px solid var(--bm-ui-border);font-variant-numeric:tabular-nums}
.bm-ui-info{background:none;border:none;color:var(--bm-ui-text);font:inherit;font-size:12px;font-weight:700;cursor:pointer;padding:0;text-align:right;text-transform:uppercase;letter-spacing:.06em}
.bm-ui-info:hover,.bm-ui-info.is-open{color:var(--bm-ui-accent)}
.bm-ui-info--muted{opacity:.35;cursor:default}
.bm-ui-details{padding:12px 16px 14px;font-size:12px;line-height:1.55;color:var(--bm-ui-muted);border-top:1px solid var(--bm-ui-border);background:var(--bm-ui-footer)}
.bm-ui-details span{display:block;margin-bottom:6px}
.bm-ui-details span:last-child{margin-bottom:0}
.bm-match-board--filtered .bm-ui-card{display:none}
.bm-match-board--filtered .bm-ui-card.bm-ui-visible{display:block}
.bm-ui-table-wrap{overflow-x:auto;border:1px solid var(--bm-ui-border);border-radius:2px;background:var(--bm-ui-card)}
.bm-ui-table{width:100%;border-collapse:collapse;margin:0;font-size:14px}
.bm-ui-table thead th{background:var(--bm-ui-accent);color:#fff;font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.04em;padding:10px 12px;text-align:left;white-space:nowrap}
.bm-ui-table tbody td{padding:10px 12px;border-bottom:1px solid var(--bm-ui-border);color:var(--bm-ui-text)}
.bm-ui-table tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--bm-ui-bg) 35%,var(--bm-ui-card))}
.bm-ui-table tbody tr:last-child td{border-bottom:none}
.bm-ui-standings .bm-ui-team-name{font-weight:700;text-transform:uppercase;font-size:13px}
.bm-ui-standings .bm-ui-col-pts strong{font-size:16px;color:var(--bm-ui-accent)}
.bm-ui-roster .bm-ui-num{font-weight:700;color:var(--bm-ui-muted)}
.bm-ui-round{margin-bottom:1.5rem}
.bm-ui-round-title{margin:0 0 .75rem;font-size:1rem;font-weight:700;color:var(--bm-ui-text);border-bottom:2px solid var(--bm-ui-accent);padding-bottom:6px}
.bm-ui-phase{margin-bottom:2rem}
.bm-ui-phase-title{margin:0 0 1rem;font-size:1.15rem;color:var(--bm-ui-accent)}
.bm-ui-board-title{margin:0 0 .75rem;font-size:1.1rem;text-transform:uppercase}
.bm-ui-playbyplay{margin-top:1rem;padding:12px;background:var(--bm-ui-footer);border:1px solid var(--bm-ui-border);border-radius:2px;font-size:12px;overflow:auto;white-space:pre-wrap;color:var(--bm-ui-muted)}
.bm-champ-page .bm-champ-header{border-bottom-color:var(--bm-ui-accent)}
.bm-champ-page .bm-champ-tab{border-color:var(--bm-ui-border);background:var(--bm-ui-card);color:var(--bm-ui-text)}
.bm-champ-page .bm-champ-tab.is-active,.bm-champ-page .bm-champ-tab:hover{background:var(--bm-ui-accent);border-color:var(--bm-ui-accent);color:#fff}
.bm-phase-badge{display:inline-block;border-radius:999px;padding:2px 8px;margin-right:6px;font-size:10px;font-weight:700;text-transform:uppercase}
.bm-badge-playoff{background:var(--bm-success,#1B9A59);color:#fff}
.bm-badge-playout{background:var(--bm-danger,#D62828);color:#fff}
.bm-badge-finale_regionale{background:var(--bm-primary,#0B4EA2);color:#fff}
@media(max-width:480px){
  .bm-ui-footer{grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:6px}
  .bm-ui-mid{border:none;padding:0;text-align:left}
  .bm-ui-info{text-align:left}
}

/* Roster SQL — layout Madrid + palette Monaco */
.bm-roster-palette-monaco{
  --bm-roster-bg:#0f1419;
  --bm-roster-card:#1a2332;
  --bm-roster-border:#2a3548;
  --bm-roster-text:#f3f4f6;
  --bm-roster-muted:#9ca3af;
  --bm-roster-accent:#c8102e;
  --bm-roster-gold:#d4af37;
  background:var(--bm-roster-bg);
  color:var(--bm-roster-text);
  padding:1.25rem;
  border-radius:12px;
  max-width:1100px;
  margin:1rem auto;
}
.bm-roster-palette-monaco .bm-roster-season{
  margin:0 0 1rem;
  font-size:.85rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--bm-roster-gold);
}
.bm-roster-palette-monaco .bm-roster-empty{color:var(--bm-roster-muted)}
.bm-roster-palette-monaco .bm-roster-group{margin-bottom:1.75rem}
.bm-roster-palette-monaco .bm-roster-group-title{
  margin:0 0 .75rem;
  padding-bottom:.5rem;
  font-size:1rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
  border-bottom:2px solid var(--bm-roster-accent);
  color:var(--bm-roster-text);
}
.bm-roster-layout-madrid-grid .bm-roster-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(var(--bm-roster-col-min, 140px),1fr));
  gap:12px;
}
.bm-roster-layout-madrid-grid[style*="--bm-roster-cols"] .bm-roster-grid{
  grid-template-columns:repeat(var(--bm-roster-cols), minmax(0, 1fr));
}
.bm-roster-layout-cards .bm-roster-cards{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(var(--bm-roster-col-min, 160px),1fr));
  gap:14px;
}
.bm-roster-layout-cards[style*="--bm-roster-cols"] .bm-roster-cards{
  grid-template-columns:repeat(var(--bm-roster-cols), minmax(0, 1fr));
}
.bm-roster-palette-monaco .bm-roster-player{
  background:var(--bm-roster-card);
  border:1px solid var(--bm-roster-border);
  border-radius:10px;
  overflow:hidden;
  text-align:center;
}
.bm-roster-palette-monaco .bm-roster-player-photo{
  aspect-ratio:var(--bm-roster-photo-box-ratio, 3/4);
  background:#0a0e14;
  display:flex;
  align-items:flex-end;
  justify-content:center;
}
.bm-roster-palette-monaco .bm-roster-player-photo img{
  width:var(--bm-roster-photo-width, 100%);
  height:var(--bm-roster-photo-height, 100%);
  max-width:100%;
  object-fit:var(--bm-roster-photo-fit, cover);
  object-position:center bottom;
}
.bm-roster-palette-monaco .bm-roster-player-body{padding:.65rem .5rem .75rem}
.bm-roster-palette-monaco .bm-roster-player-num{
  display:block;
  font-size:1.5rem;
  font-weight:800;
  line-height:1;
  color:var(--bm-roster-gold);
}
.bm-roster-palette-monaco .bm-roster-player-name{
  margin:.35rem 0 .15rem;
  font-size:.8rem;
  font-weight:700;
  line-height:1.2;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.bm-roster-palette-monaco .bm-roster-player-role,
.bm-roster-palette-monaco .bm-roster-player-birth,
.bm-roster-palette-monaco .bm-roster-player-height{
  display:block;
  font-size:.7rem;
  color:var(--bm-roster-muted);
}
.bm-roster-palette-monaco.bm-roster-layout-table .bm-roster-table-wrap{overflow-x:auto}
.bm-roster-palette-monaco.bm-roster-layout-table .bm-roster-table th{
  background:var(--bm-roster-accent);
  color:#fff;
  border-color:var(--bm-roster-border);
}
.bm-roster-palette-monaco.bm-roster-layout-table .bm-roster-table td{
  border-color:var(--bm-roster-border);
  color:var(--bm-roster-text);
  background:var(--bm-roster-card);
}
.bm-shortcode-atleta .bm-atleta-header{
  display:flex;
  gap:1.25rem;
  align-items:flex-start;
  margin-bottom:1.25rem;
  flex-wrap:wrap;
}
.bm-roster-palette-monaco .bm-atleta-photo{
  width:120px;
  flex-shrink:0;
  border-radius:10px;
  overflow:hidden;
  border:2px solid var(--bm-roster-gold);
}
.bm-roster-palette-monaco .bm-atleta-photo img{width:100%;height:auto;display:block}
.bm-roster-palette-monaco .bm-atleta-name{margin:0 0 .35rem;font-size:1.5rem}
.bm-roster-palette-monaco .bm-atleta-role,
.bm-roster-palette-monaco .bm-atleta-number{color:var(--bm-roster-muted);margin:.2rem 0}
.bm-roster-palette-monaco .bm-atleta-career h3{
  font-size:1rem;
  text-transform:uppercase;
  letter-spacing:.05em;
  border-bottom:1px solid var(--bm-roster-border);
  padding-bottom:.35rem;
}
.bm-roster-palette-monaco .bm-atleta-career-list{
  margin:0;
  padding:0;
  list-style:none;
}
.bm-roster-palette-monaco .bm-atleta-career-list li{
  padding:.45rem 0;
  border-bottom:1px solid var(--bm-roster-border);
  font-size:.9rem;
}
@media(max-width:600px){
  .bm-roster-layout-madrid-grid .bm-roster-grid{grid-template-columns:repeat(2,1fr)}
}
.bm-roster-card-style-hero .bm-roster-cards,
.bm-roster-card-style-hero .bm-roster-grid{
  grid-template-columns:repeat(auto-fill,minmax(var(--bm-roster-col-min, 200px),1fr));
  gap:16px;
}
.bm-roster-player--hero{
  position:relative;
  aspect-ratio:3/4;
  background:var(--bm-roster-hero-bg, #000);
  border:none;
  border-radius:0;
  overflow:hidden;
  text-align:left;
}
.bm-roster-palette-monaco .bm-roster-player--hero{
  background:var(--bm-roster-hero-bg, #000);
  border:none;
}
.bm-roster-player--hero .bm-roster-player-watermark{
  position:absolute;
  top:-8%;
  left:-8%;
  font-size:clamp(6rem, 22vw, 11rem);
  font-weight:800;
  line-height:.85;
  color:color-mix(in srgb, var(--bm-roster-hero-watermark, #fff) 10%, transparent);
  pointer-events:none;
  z-index:1;
  letter-spacing:-.04em;
}
.bm-roster-player--hero .bm-roster-player-photo{
  position:absolute;
  inset:0;
  aspect-ratio:auto;
  background:transparent;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  z-index:2;
}
.bm-roster-player--hero .bm-roster-player-photo img{
  width:var(--bm-roster-photo-width, 100%);
  max-width:100%;
  height:var(--bm-roster-photo-height, 92%);
  max-height:100%;
  object-fit:var(--bm-roster-photo-fit, contain);
  object-position:center bottom;
}
.bm-roster-player--hero .bm-roster-player-overlay{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:3;
  display:flex;
  align-items:flex-end;
  gap:.5rem;
  padding:0 0 .55rem .15rem;
  background:linear-gradient(transparent, color-mix(in srgb, var(--bm-roster-hero-bg, #000) 88%, transparent) 38%);
}
.bm-roster-player--hero .bm-roster-player-num{
  flex:0 0 auto;
  font-size:clamp(3rem, 11vw, 4.8rem);
  font-weight:800;
  line-height:.82;
  color:var(--bm-roster-hero-num, #6b7280);
  margin:0 0 -.15rem -.08rem;
  letter-spacing:-.03em;
}
.bm-roster-player--hero .bm-roster-player-nameblock{
  display:flex;
  flex-direction:column;
  gap:.08rem;
  min-width:0;
  padding-bottom:.15rem;
  flex:1 1 auto;
}
.bm-roster-player--hero .bm-roster-player-first{
  font-size:clamp(.62rem, 2vw, .78rem);
  font-weight:300;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--bm-roster-hero-first, #fff);
  line-height:1.1;
}
.bm-roster-player--hero .bm-roster-player-last{
  font-size:clamp(1rem, 3.6vw, 1.55rem);
  font-weight:900;
  letter-spacing:.02em;
  line-height:.95;
  text-transform:uppercase;
  color:var(--bm-roster-hero-name, #fff);
}
.bm-roster-text-overlay .bm-roster-player--overlay{
  position:relative;
}
.bm-roster-text-overlay .bm-roster-player--overlay .bm-roster-player-body{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:.65rem .5rem .75rem;
  background:linear-gradient(transparent, rgba(0,0,0,.75));
}
.bm-roster-text-overlay .bm-roster-player--overlay .bm-roster-player-photo img{
  object-position:center top;
}

.bm-roster-card-style-profile .bm-roster-cards,
.bm-roster-card-style-profile .bm-roster-grid{
  grid-template-columns:repeat(auto-fill,minmax(var(--bm-roster-col-min, 220px),1fr));
  gap:18px;
}
.bm-roster-player--profile{
  position:relative;
  aspect-ratio:3/4;
  background:var(--bm-roster-profile-bg, #111827);
  border:none;
  border-radius:0;
  overflow:hidden;
  text-align:center;
  cursor:pointer;
}
.bm-roster-palette-monaco .bm-roster-player--profile{
  background:var(--bm-roster-profile-bg, #111827);
  border:none;
}
.bm-roster-player--profile .bm-roster-player-watermark{
  position:absolute;
  left:50%;
  bottom:18%;
  transform:translateX(-50%);
  font-size:clamp(5rem, 20vw, 9rem);
  font-weight:800;
  line-height:.85;
  color:color-mix(in srgb, var(--bm-roster-profile-watermark, #fff) 48%, transparent);
  pointer-events:none;
  z-index:2;
  letter-spacing:-.04em;
  transition:color .25s ease;
}
.bm-roster-player--profile:hover .bm-roster-player-watermark{
  color:color-mix(in srgb, var(--bm-roster-profile-watermark, #fff) 72%, transparent);
}
.bm-roster-player--profile .bm-roster-player-photo{
  position:absolute;
  inset:0;
  aspect-ratio:auto;
  background:var(--bm-roster-profile-bg, #111827);
  z-index:1;
}
.bm-roster-player--profile .bm-roster-player-photo::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(transparent 35%, color-mix(in srgb, var(--bm-roster-profile-bg, #000) 55%, transparent) 72%, color-mix(in srgb, var(--bm-roster-profile-bg, #000) 92%, transparent));
  pointer-events:none;
  transition:background .25s ease;
}
.bm-roster-player--profile:hover .bm-roster-player-photo::after{
  background:linear-gradient(transparent 20%, color-mix(in srgb, var(--bm-roster-profile-bg, #000) 70%, transparent) 60%, color-mix(in srgb, var(--bm-roster-profile-bg, #000) 96%, transparent));
}
.bm-roster-player--profile .bm-roster-player-photo img{
  width:var(--bm-roster-photo-width, 100%);
  height:var(--bm-roster-photo-height, 100%);
  max-width:100%;
  max-height:100%;
  object-fit:var(--bm-roster-photo-fit, cover);
  object-position:center top;
  transition:transform .35s ease;
}
.bm-roster-player--profile:hover .bm-roster-player-photo img{
  transform:scale(1.03);
}
.bm-roster-player--profile .bm-roster-player-caption{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:3;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.35rem;
  padding:0 1rem 1.1rem;
}
.bm-roster-player--profile .bm-roster-player-nameblock{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  justify-content:center;
  gap:.35rem .45rem;
  max-width:100%;
}
.bm-roster-player--profile .bm-roster-player-first{
  font-size:clamp(.85rem, 2.4vw, 1rem);
  font-weight:400;
  letter-spacing:.01em;
  color:var(--bm-roster-profile-first, #fff);
  line-height:1.1;
}
.bm-roster-player--profile .bm-roster-player-last{
  font-size:clamp(1.35rem, 4.2vw, 2rem);
  font-weight:800;
  letter-spacing:.02em;
  line-height:1;
  text-transform:uppercase;
  color:var(--bm-roster-profile-name, #fff);
}
.bm-roster-player--profile .bm-roster-player-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:.35rem .65rem;
  opacity:0;
  max-height:0;
  overflow:hidden;
  transform:translateY(6px);
  transition:opacity .25s ease, transform .25s ease, max-height .25s ease;
}
.bm-roster-player--profile:hover .bm-roster-player-meta,
.bm-roster-player--profile:focus-within .bm-roster-player-meta{
  opacity:1;
  max-height:2.5rem;
  transform:translateY(0);
}
.bm-roster-player--profile .bm-roster-player-role,
.bm-roster-player--profile .bm-roster-player-birth{
  font-size:clamp(.72rem, 2vw, .85rem);
  font-weight:500;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--bm-roster-profile-meta, #fff);
  line-height:1.2;
}
.bm-roster-player--profile .bm-roster-player-birth::before{
  content:"·";
  margin-right:.65rem;
  opacity:.65;
}
.bm-roster-player--profile .bm-roster-player-birth:first-child::before{
  content:none;
  margin:0;
}

.bm-roster-photo-box-manual .bm-roster-player-photo{
  aspect-ratio:auto;
  height:var(--bm-roster-photo-box-height, 75%);
  flex:0 0 auto;
}
.bm-roster-photo-box-manual.bm-roster-card-style-hero .bm-roster-player-photo,
.bm-roster-photo-box-manual.bm-roster-card-style-profile .bm-roster-player-photo{
  inset:auto;
  top:0;
  left:0;
  right:0;
  bottom:auto;
  height:var(--bm-roster-photo-box-height, 75%);
}

.bm-roster-champs-page .bm-roster-appearance-editor{
  display:grid;
  grid-template-columns:minmax(240px, 320px) minmax(0, 1fr);
  gap:20px;
  margin:1.25rem 0 1.5rem;
  padding:16px;
  background:#fff;
  border:1px solid #c3c4c7;
  border-radius:8px;
}
.bm-roster-appearance-editor__sidebar h3,
.bm-roster-appearance-editor__preview h3{
  margin:0 0 .75rem;
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.bm-roster-appearance-range label span{
  font-weight:600;
  font-size:12px;
}
.bm-roster-appearance-range output{
  float:right;
  font-size:12px;
  color:#50575e;
}
.bm-roster-appearance-range input[type="range"]{
  width:100%;
  margin-top:.35rem;
}
.bm-roster-appearance-range.is-disabled{
  opacity:.55;
}
.bm-roster-appearance-range.is-hidden{
  display:none;
}
.bm-roster-preview-context{
  margin:0 0 .75rem;
  padding:.45rem .65rem;
  background:var(--bm-roster-gold, #d4af37);
  color:#111;
  font-size:12px;
  font-weight:600;
  border-radius:4px;
}
.bm-roster-admin-preview{
  padding:14px;
  border-radius:8px;
}
.bm-roster-admin-preview__cards{
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:12px;
}
@media(max-width:960px){
  .bm-roster-champs-page .bm-roster-appearance-editor{
    grid-template-columns:1fr;
  }
  .bm-roster-admin-preview__cards{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}
@media(max-width:600px){
  .bm-roster-admin-preview__cards{
    grid-template-columns:1fr;
  }
}
