    /* standings */
    .card {
      background: var(--card);
      border: 1px solid var(--line);
      border-radius: 14px;
      overflow: hidden;
      margin-bottom: 16px
    }

    .grp-head {
      display: flex;
      align-items: center;
      gap: 11px;
      padding: 14px 16px;
      border-bottom: 2px solid var(--dark)
    }

    .grp-badge {
      width: 28px;
      height: 28px;
      border-radius: 50%;
      background: var(--ac, var(--green));
      color: #fff;
      font-family: 'Bebas Neue', sans-serif;
      display: grid;
      place-items: center;
      font-size: 15px
    }

    .grp-head h3 {
      margin: 0;
      font-family: 'Barlow Condensed', sans-serif;
      font-size: 13px;
      font-weight: 800;
      letter-spacing: .05em;
      text-transform: uppercase;
      color: var(--muted2)
    }

    table {
      width: 100%;
      border-collapse: collapse;
      table-layout: fixed;
      font-size: 13.5px
    }

    /* larguras da tabela de classificação — mobile (só #, Equipe, P, J, SG visíveis) */
    table th:nth-child(1),
    table td:nth-child(1) {
      width: 10%
    }

    table th:nth-child(2),
    table td:nth-child(2) {
      width: 52%
    }

    table th:nth-child(3),
    table td:nth-child(3) {
      width: 13%
    }

    table th:nth-child(4),
    table td:nth-child(4) {
      width: 12%
    }

    table th:nth-child(10),
    table td:nth-child(10) {
      width: 13%
    }

    @media (min-width: 600px) {

      /* larguras — desktop, 10 colunas */
      table th:nth-child(1),
      table td:nth-child(1) {
        width: 5%
      }

      table th:nth-child(2),
      table td:nth-child(2) {
        width: 34%
      }

      table th:nth-child(3),
      table td:nth-child(3),
      table th:nth-child(4),
      table td:nth-child(4),
      table th:nth-child(5),
      table td:nth-child(5),
      table th:nth-child(6),
      table td:nth-child(6),
      table th:nth-child(7),
      table td:nth-child(7) {
        width: 7%
      }

      table th:nth-child(8),
      table td:nth-child(8),
      table th:nth-child(9),
      table td:nth-child(9),
      table th:nth-child(10),
      table td:nth-child(10) {
        width: 8%
      }
    }

    thead th {
      font-family: 'Barlow Condensed', sans-serif;
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: .04em;
      color: var(--label);
      font-weight: 800;
      padding: 11px 6px;
      text-align: center
    }

    thead th.left {
      text-align: left;
      padding-left: 14px
    }

    tbody td {
      padding: 11px 6px;
      text-align: center;
      border-bottom: 1px dashed var(--line);
      font-variant-numeric: tabular-nums
    }

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

    td.team {
      text-align: left;
      padding-left: 10px
    }

    .team-cell {
      display: flex;
      align-items: center;
      gap: 9px;
      font-weight: 700;
      font-size: 13.5px;
      line-height: 1.15
    }

    .team-cell .crest {
      width: 27px;
      height: 29px
    }

    .team-cell span {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      min-width: 0
    }

    .pos {
      display: inline-grid;
      place-items: center;
      width: 24px;
      height: 24px;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 15px;
      color: var(--label)
    }

    tr.qual .pos {
      color: var(--ac, var(--green))
    }

    tr.qual td:first-child {
      border-left: 4px solid var(--ac, var(--green))
    }

    tr.qual td {
      background: color-mix(in srgb, var(--ac, var(--green)) 8%, var(--card))
    }

    /* Veterano: 3º (Taça Prata) e 4º (Taça Bronze) de cada grupo — mesmas
       cores de medalha já usadas em .art-medal/.taca */
    tr.prata .pos {
      color: #8a8f93
    }

    tr.prata td:first-child {
      border-left: 4px solid #B9C0C4
    }

    tr.prata td {
      background: color-mix(in srgb, #B9C0C4 12%, var(--card))
    }

    tr.bronze .pos {
      color: #C1673A
    }

    tr.bronze td:first-child {
      border-left: 4px solid #C1673A
    }

    tr.bronze td {
      background: color-mix(in srgb, #C1673A 10%, var(--card))
    }

    td.pts {
      font-family: 'Bebas Neue', sans-serif;
      font-size: 16px;
      color: var(--ink)
    }

    .hide-mob {
      display: none
    }

    @media(min-width:600px) {
      .hide-mob {
        display: table-cell
      }
    }

    .qual-note {
      font-family: 'Barlow Condensed', sans-serif;
      font-size: 13px;
      font-weight: 600;
      color: var(--muted2);
      padding: 4px;
      margin-top: 4px;
      display: flex;
      gap: 8px;
      align-items: center
    }

    .qual-dot {
      width: 14px;
      height: 14px;
      border-radius: 4px;
      background: var(--ac, var(--green))
    }

    .qual-dot.prata {
      background: #B9C0C4
    }

    .qual-dot.bronze {
      background: #C1673A
    }

    /* botões de exportar imagem (classificação — Veterano/Tropeiros) */
    .export-img-row {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      margin-top: 16px
    }

    .export-img-btn {
      font-size: 13.5px;
      padding: 10px 16px
    }

    .export-img-btn:disabled {
      opacity: .55;
      cursor: default
    }

    /* modal de exportar tabela (checklist de grupos — reaproveita .adm-modal) */
    .export-modal-hint {
      color: var(--muted);
      font-size: 13.5px;
      line-height: 1.5;
      margin: 0 0 16px
    }

    .export-modal-grupos {
      display: flex;
      flex-direction: column;
      gap: 4px
    }

    .export-modal-check {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 10px 4px;
      border-bottom: 1px dashed var(--line);
      font-weight: 600;
      font-size: 14px
    }

    .export-modal-check:last-child {
      border-bottom: 0
    }

    .export-modal-check input {
      width: 18px;
      height: 18px;
      accent-color: var(--green)
    }

    .export-modal-go {
      width: 100%;
      justify-content: center;
      margin-top: 18px
    }

    /* empty / bracket */
    .empty {
      background: var(--card);
      border: 1px solid var(--line);
      border-radius: 14px;
      padding: 46px 22px;
      text-align: center
    }

    .empty .ico {
      font-size: 38px;
      margin-bottom: 10px
    }

    /* .empty .ico agora também recebe ícones do sistema IC (SVG) em vez de
       emoji, em alguns usos (ver js/ui/public.js, js/ui/admin.js) — svgIcon()
       não define width/height própria, então sem isso o SVG renderiza no
       tamanho padrão do navegador (bem maior que o card). Emoji que ainda
       sobrar (ex.: renderNotFound, aguardando ícone de bola murcha) continua
       do tamanho certo via font-size acima, sem conflito. */
    .empty .ico svg {
      width: 40px;
      height: 40px;
      color: var(--label)
    }

    .empty h3 {
      margin: 0 0 6px;
      font-family: 'Bebas Neue', sans-serif;
      font-size: 21px;
      font-weight: 400
    }

    .empty p {
      margin: 0;
      color: var(--muted);
      font-size: 14px;
      line-height: 1.5;
      max-width: 34ch;
      margin-inline: auto
    }

    .taca-row {
      display: flex;
      justify-content: center;
      gap: 9px;
      margin: 18px 0 0;
      flex-wrap: wrap
    }

    .taca {
      padding: 8px 14px;
      border-radius: 20px;
      font-family: 'Barlow Condensed', sans-serif;
      font-weight: 700;
      font-size: 13px
    }

    .taca.o {
      background: rgba(217, 164, 65, .2);
      color: #8a641a
    }

    .taca.p {
      background: #eceef0;
      color: #737d86
    }

    .taca.b {
      background: rgba(193, 103, 58, .18);
      color: #9a4f28
    }

    .taca.n {
      background: color-mix(in srgb, var(--ac, var(--green)) 16%, var(--card));
      color: color-mix(in srgb, var(--ac, var(--green)) 70%, var(--ink))
    }
