/* =========================================================================
   Painel AVCM — tema do custom_admin
   Mesma identidade do site público (avcm.css): verde-noite do pavilhão,
   verde do campo para acções, amarelo da bola para "onde estou" e foco.
   Tipos: Saira Condensed (títulos, números) + Public Sans (texto).
   Tudo servido localmente a partir de static/vendor (sem CDN).
   ========================================================================= */

@font-face { font-family: "Saira Condensed"; font-weight: 600; font-display: swap; src: url("../vendor/fonts/saira-condensed-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "Saira Condensed"; font-weight: 700; font-display: swap; src: url("../vendor/fonts/saira-condensed-latin-700-normal.woff2") format("woff2"); }
@font-face { font-family: "Public Sans"; font-weight: 100 900; font-style: normal; font-display: swap; src: url("../vendor/fonts/public-sans-latin-wght-normal.woff2") format("woff2"); }
@font-face { font-family: "Public Sans"; font-weight: 100 900; font-style: italic; font-display: swap; src: url("../vendor/fonts/public-sans-latin-wght-italic.woff2") format("woff2"); }

/* ---- Tokens -------------------------------------------------------------- */
:root {
  --p-night: #0d2b22;
  --p-night-2: #143a2e;
  --p-night-3: #1d4a3b;
  --p-court: #1a7a4c;
  --p-court-dark: #135c39;
  --p-court-tint: #e5f2eb;
  --p-ball: #f5c518;
  --p-ball-ink: #3d2f00;
  --p-blue: #2457a6;
  --p-paper: #f1f4f2;
  --p-surface: #ffffff;
  --p-ink: #14201b;
  --p-muted: #5b6b64;
  --p-rule: #dde5e0;
  --p-rule-strong: #c5d2cb;
  --p-loss: #b3412f;
  --p-loss-tint: #f8e7e3;
  --p-warn-tint: #fdf4d3;

  --p-display: "Saira Condensed", "Arial Narrow", system-ui, sans-serif;
  --p-body: "Public Sans", system-ui, -apple-system, "Segoe UI", sans-serif;

  --p-sidebar: 264px;
  --p-rail: 72px;
  --p-topbar: 60px;
  --p-radius-sm: 6px;
  --p-radius: 10px;
  --p-shadow: 0 1px 2px rgba(13, 43, 34, .06);
  --p-shadow-pop: 0 12px 32px rgba(13, 43, 34, .18);
  --p-ease: cubic-bezier(.2, .8, .2, 1);

  /* Bootstrap */
  --bs-body-font-family: var(--p-body);
  --bs-body-font-size: .9375rem;
  --bs-body-color: var(--p-ink);
  --bs-body-bg: var(--p-paper);
  --bs-emphasis-color: var(--p-ink);
  --bs-secondary-color: var(--p-muted);
  --bs-border-color: var(--p-rule);
  --bs-border-radius: var(--p-radius-sm);
  --bs-border-radius-lg: var(--p-radius);
  --bs-primary: var(--p-court);
  --bs-primary-rgb: 26, 122, 76;
  --bs-success: var(--p-court);
  --bs-success-rgb: 26, 122, 76;
  --bs-info: var(--p-blue);
  --bs-info-rgb: 36, 87, 166;
  --bs-warning: var(--p-ball);
  --bs-warning-rgb: 245, 197, 24;
  --bs-danger: var(--p-loss);
  --bs-danger-rgb: 179, 65, 47;
  --bs-secondary-rgb: 91, 107, 100;
  --bs-dark-rgb: 13, 43, 34;
  --bs-primary-text-emphasis: var(--p-court-dark);
  --bs-primary-bg-subtle: var(--p-court-tint);
  --bs-primary-border-subtle: #b9dcc8;
  --bs-link-color: var(--p-court);
  --bs-link-color-rgb: 26, 122, 76;
  --bs-link-hover-color: var(--p-court-dark);
  --bs-link-hover-color-rgb: 19, 92, 57;
  --bs-focus-ring-color: rgba(245, 197, 24, .6);
}

/* ---- Base ---------------------------------------------------------------- */
html { scroll-padding-top: calc(var(--p-topbar) + 16px); }
body.painel-body {
  font-family: var(--p-body);
  background: var(--p-paper);
  color: var(--p-ink);
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "tnum" 0;
}
a { text-underline-offset: .15em; }
:focus-visible { outline: 3px solid var(--p-ball); outline-offset: 2px; }
.btn:focus-visible, .form-control:focus, .form-select:focus, .form-check-input:focus, .page-link:focus {
  box-shadow: 0 0 0 .2rem rgba(245, 197, 24, .55) !important;
}
::selection { background: rgba(245, 197, 24, .45); }
.skip-link {
  position: absolute; left: 12px; top: -48px; z-index: 2000;
  background: var(--p-ball); color: var(--p-ball-ink); padding: 8px 14px; border-radius: var(--p-radius-sm);
  font-weight: 600; text-decoration: none; transition: top .15s;
}
.skip-link:focus { top: 12px; }

/* ---- Esqueleto ----------------------------------------------------------- */
.painel { min-height: 100vh; }

.painel-sidebar {
  position: fixed; inset: 0 auto 0 0; z-index: 1035;
  width: var(--p-sidebar);
  display: flex; flex-direction: column;
  background: var(--p-night);
  color: rgba(255, 255, 255, .78);
  transition: width .22s var(--p-ease), transform .26s var(--p-ease);
}
.painel-main {
  margin-left: var(--p-sidebar);
  min-height: 100vh;
  display: flex; flex-direction: column;
  transition: margin-left .22s var(--p-ease);
}

/* Marca */
.painel-brand {
  display: flex; align-items: center; gap: 12px;
  height: var(--p-topbar); padding: 0 16px 0 18px;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
  flex-shrink: 0;
}
.painel-brand a { display: flex; align-items: center; gap: 12px; color: #fff; text-decoration: none; min-width: 0; }
.painel-brand img {
  width: 36px; height: 36px; border-radius: 8px; object-fit: cover; background: #fff; flex-shrink: 0;
}
.painel-brand-name { font-family: var(--p-display); font-weight: 700; font-size: 1.35rem; letter-spacing: .01em; line-height: 1; }
.painel-brand-sub { display: block; font-family: var(--p-body); font-size: .72rem; font-weight: 500; color: rgba(255, 255, 255, .55); letter-spacing: 0; margin-top: 3px; }

/* Navegação */
.painel-nav { flex: 1; overflow-y: auto; padding: 10px 10px 24px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.18) transparent; }
.painel-nav-group + .painel-nav-group { margin-top: 14px; }
.painel-nav-label {
  padding: 6px 12px 4px; font-size: .75rem; font-weight: 600; color: rgba(255, 255, 255, .56);
  white-space: nowrap; overflow: hidden;
}
.painel-nav ul { list-style: none; margin: 0; padding: 0; }
.painel-nav-link {
  position: relative;
  display: flex; align-items: center; gap: 12px;
  padding: 7px 12px; min-height: 38px;
  border-radius: var(--p-radius-sm);
  color: rgba(255, 255, 255, .78); text-decoration: none;
  font-size: .9rem; font-weight: 500; line-height: 1.2;
  white-space: nowrap;
}
.painel-nav-link .bi { font-size: 1.05rem; width: 20px; text-align: center; flex-shrink: 0; opacity: .85; }
.painel-nav-link span { overflow: hidden; text-overflow: ellipsis; }
.painel-nav-link:hover { background: var(--p-night-2); color: #fff; }
.painel-nav-link.active { background: var(--p-night-3); color: #fff; font-weight: 600; }
.painel-nav-link.active .bi { opacity: 1; color: var(--p-ball); }
/* A linha do campo: marca a área onde se está. */
.painel-nav-link.active::before {
  content: ""; position: absolute; left: -10px; top: 7px; bottom: 7px; width: 4px;
  background: var(--p-ball); border-radius: 0 3px 3px 0;
}

.painel-sidebar-foot {
  flex-shrink: 0; padding: 10px; border-top: 1px solid rgba(255, 255, 255, .08);
}
.painel-collapse-btn {
  width: 100%; display: flex; align-items: center; gap: 12px;
  padding: 8px 12px; border: 0; border-radius: var(--p-radius-sm);
  background: transparent; color: rgba(255, 255, 255, .6); font-size: .85rem; text-align: left;
}
.painel-collapse-btn:hover { background: var(--p-night-2); color: #fff; }
.painel-collapse-btn .bi { width: 20px; text-align: center; font-size: 1.05rem; transition: transform .22s var(--p-ease); }

/* Barra recolhida (só ícones) */
@media (min-width: 992px) {
  .painel-collapsed .painel-sidebar { width: var(--p-rail); }
  .painel-collapsed .painel-main { margin-left: var(--p-rail); }
  .painel-collapsed .painel-brand-text,
  .painel-collapsed .painel-nav-link span,
  .painel-collapsed .painel-collapse-btn span { display: none; }
  .painel-collapsed .painel-nav-label { height: 1px; padding: 0; margin: 10px 12px; background: rgba(255,255,255,.1); color: transparent; }
  .painel-collapsed .painel-brand { justify-content: center; padding: 0; }
  .painel-collapsed .painel-nav-link, .painel-collapsed .painel-collapse-btn { justify-content: center; padding-left: 0; padding-right: 0; }
  .painel-collapsed .painel-collapse-btn .bi { transform: rotate(180deg); }
}

/* Barra de topo */
.painel-topbar {
  position: sticky; top: 0; z-index: 1020;
  height: var(--p-topbar);
  display: flex; align-items: center; gap: 12px;
  padding: 0 24px;
  background: rgba(241, 244, 242, .88);
  backdrop-filter: saturate(1.4) blur(10px);
  -webkit-backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--p-rule);
}
.painel-menu-btn {
  display: none; border: 0; background: transparent; color: var(--p-ink);
  width: 40px; height: 40px; border-radius: var(--p-radius-sm); font-size: 1.4rem; margin-left: -8px;
}
.painel-menu-btn:hover { background: var(--p-rule); }

.painel-topbar .breadcrumb {
  margin: 0; flex-wrap: nowrap; overflow: hidden; font-size: .875rem;
  --bs-breadcrumb-divider: "›";
  --bs-breadcrumb-divider-color: var(--p-rule-strong);
  --bs-breadcrumb-item-active-color: var(--p-ink);
}
.painel-topbar .breadcrumb-item { white-space: nowrap; }
.painel-topbar .breadcrumb-item a { color: var(--p-muted); text-decoration: none; }
.painel-topbar .breadcrumb-item a:hover { color: var(--p-court); text-decoration: underline; }
.painel-topbar .breadcrumb-item.active { font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.painel-topbar .breadcrumb-item i { display: none; }

.painel-search {
  margin-left: auto;
  display: flex; align-items: center; gap: 10px;
  height: 38px; min-width: 240px; padding: 0 8px 0 12px;
  border: 1px solid var(--p-rule-strong); border-radius: var(--p-radius-sm);
  background: var(--p-surface); color: var(--p-muted); font-size: .875rem;
}
.painel-search:hover { border-color: var(--p-court); color: var(--p-ink); }
.painel-search kbd {
  margin-left: auto; padding: 2px 6px; border-radius: 4px;
  background: var(--p-paper); color: var(--p-muted); border: 1px solid var(--p-rule);
  font-family: var(--p-body); font-size: .72rem; box-shadow: none;
}

.painel-user {
  display: flex; align-items: center; gap: 10px;
  padding: 4px 8px 4px 4px; border: 0; border-radius: 999px; background: transparent; color: var(--p-ink);
}
.painel-user:hover, .painel-user[aria-expanded="true"] { background: var(--p-rule); }
.painel-avatar {
  width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
  display: inline-grid; place-items: center;
  background: var(--p-night); color: var(--p-ball);
  font-family: var(--p-display); font-weight: 700; font-size: .95rem; letter-spacing: .02em;
  object-fit: cover;
}
.painel-user-name { font-size: .875rem; font-weight: 600; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.painel-user-menu { min-width: 250px; }
.painel-user-menu .dropdown-item-text { padding: 10px 16px; }

/* Conteúdo */
.painel-content {
  flex: 1;
  width: 100%;
  padding: 28px 32px 48px;
}
/* Muitas páginas trazem margens de topo próprias (mt-4, py-4) do esqueleto antigo. */
.painel-content > :first-child, .painel-content > .container-fluid:first-child > :first-child { margin-top: 0 !important; }
.painel-content > .container-fluid:first-child, .painel-content > .container:first-child { padding-top: 0 !important; }
.painel-content > .container-fluid,
.painel-content > .container { padding-left: 0 !important; padding-right: 0 !important; max-width: none; }

.painel-footer {
  padding: 16px 32px; font-size: .8rem; color: var(--p-muted);
  border-top: 1px solid var(--p-rule);
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}

/* ---- Tipografia das páginas --------------------------------------------- */
.painel-content h1, .painel-content .h1-page {
  font-family: var(--p-display);
  font-weight: 700;
  font-size: clamp(1.7rem, 1.3rem + 1vw, 2.15rem);
  line-height: 1.05;
  letter-spacing: .005em;
  color: var(--p-ink);
  margin-top: 0 !important;
  margin-bottom: 20px;
}
.painel-content .d-flex > h1, .painel-content .d-flex > div > h1 { margin-bottom: 0; }
.painel-content h1 .bi, .painel-content h1 .fas { color: var(--p-court); font-size: .8em; }
.painel-content h2, .painel-content .h2 { font-family: var(--p-display); font-weight: 700; font-size: 1.6rem; }
.painel-content h3:not(.card-title), .painel-content .h3:not(h1) { font-size: 1.25rem; font-weight: 700; }
.painel-content h4, .painel-content h5, .painel-content h6, .painel-content .h5, .painel-content .h6 { font-weight: 650; letter-spacing: 0; }
.text-muted { color: var(--p-muted) !important; }
.lead { font-size: 1.05rem; color: var(--p-muted); }
hr { border-color: var(--p-rule); opacity: 1; }

/* ---- Cartões --------------------------------------------------------------- */
.card {
  --bs-card-border-color: var(--p-rule);
  --bs-card-border-radius: var(--p-radius);
  --bs-card-inner-border-radius: calc(var(--p-radius) - 1px);
  --bs-card-cap-bg: var(--p-surface);
  --bs-card-spacer-y: 1.15rem;
  --bs-card-spacer-x: 1.25rem;
  background: var(--p-surface);
  border: 1px solid var(--p-rule);
  box-shadow: var(--p-shadow);
}
.card.shadow, .card.shadow-sm, .card.shadow-lg { box-shadow: var(--p-shadow) !important; }
.card.border-0 { border: 1px solid var(--p-rule) !important; }
.card-header {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: .85rem 1.25rem;
  font-weight: 650; font-size: .95rem;
  background: var(--p-surface);
  border-bottom: 1px solid var(--p-rule);
}
.card-header > .bi:first-child, .card-header > i:first-child { color: var(--p-court); }
.painel-content .card-header :is(h1, h2, h3, h4, h5, h6), .card-header .card-title {
  margin: 0; font-size: .98rem; font-weight: 650; font-family: var(--p-body); letter-spacing: 0; line-height: 1.3;
}
.card-header .btn { margin-left: auto; }
.card-header.d-flex > :first-child { margin-right: auto; }
/* Cabeçalhos coloridos neutros (bg-primary, bg-info, bg-dark...) ficam sóbrios;
   perigo, aviso e sucesso mantêm a cor porque aí ela é informação. */
.card-header.bg-primary, .card-header.bg-info, .card-header.bg-secondary, .card-header.bg-dark,
.card-header.bg-light, .card-header.bg-white, .card-header.bg-gradient-primary {
  background: var(--p-surface) !important; color: var(--p-ink) !important;
}
.card-header.bg-primary *, .card-header.bg-info *, .card-header.bg-secondary *, .card-header.bg-dark * { color: inherit; }
.card-header.bg-primary .bi, .card-header.bg-info .bi, .card-header.bg-secondary .bi, .card-header.bg-dark .bi { color: var(--p-court); }
.card-header.bg-primary .btn-light, .card-header.bg-info .btn-light, .card-header.bg-dark .btn-light,
.card-header.bg-primary .btn-outline-light, .card-header.bg-info .btn-outline-light, .card-header.bg-dark .btn-outline-light {
  --bs-btn-color: var(--p-court); --bs-btn-bg: var(--p-surface); --bs-btn-border-color: var(--p-rule-strong);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--p-court); --bs-btn-hover-border-color: var(--p-court);
}
.card-header.bg-danger { background: var(--p-loss-tint) !important; color: var(--p-loss) !important; border-bottom-color: #efc9c0; }
.card-header.bg-danger * { color: inherit; }
.card-header.bg-warning { background: var(--p-warn-tint) !important; color: var(--p-ball-ink) !important; }
.card-header.bg-success { background: var(--p-court-tint) !important; color: var(--p-court-dark) !important; }
.card-header.bg-success * , .card-header.bg-warning * { color: inherit; }
.card.border-danger { border-color: #e7b7ac !important; }
.card-footer { background: var(--p-paper); border-top: 1px solid var(--p-rule); padding: .85rem 1.25rem; }
.card-title { font-weight: 650; }
.card .card { box-shadow: none; }
.card-body > .table-responsive:first-child:last-child,
.card-body.p-0 > .table-responsive { margin: 0; }

/* ---- Botões ----------------------------------------------------------------- */
.btn {
  --bs-btn-font-weight: 600;
  --bs-btn-padding-x: .95rem;
  --bs-btn-padding-y: .45rem;
  --bs-btn-font-size: .875rem;
  --bs-btn-border-radius: var(--p-radius-sm);
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  transition: background-color .15s, border-color .15s, color .15s;
}
.btn > .bi.me-1, .btn > .bi.me-2, .btn > .fas.me-1, .btn > .fas.me-2 { margin-right: 0 !important; }
.btn-sm { --bs-btn-padding-x: .6rem; --bs-btn-padding-y: .28rem; --bs-btn-font-size: .8rem; gap: .3rem; }
.btn-lg { --bs-btn-padding-x: 1.25rem; --bs-btn-padding-y: .65rem; --bs-btn-font-size: 1rem; }
.btn-primary, .btn-success {
  --bs-btn-color: #fff; --bs-btn-bg: var(--p-court); --bs-btn-border-color: var(--p-court);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--p-court-dark); --bs-btn-hover-border-color: var(--p-court-dark);
  --bs-btn-active-bg: var(--p-court-dark); --bs-btn-active-border-color: var(--p-court-dark);
  --bs-btn-disabled-bg: var(--p-court); --bs-btn-disabled-border-color: var(--p-court);
}
.btn-outline-primary, .btn-outline-success {
  --bs-btn-color: var(--p-court); --bs-btn-border-color: #9fcdb4;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--p-court); --bs-btn-hover-border-color: var(--p-court);
  --bs-btn-active-bg: var(--p-court-dark); --bs-btn-active-border-color: var(--p-court-dark);
}
.btn-secondary {
  --bs-btn-color: var(--p-ink); --bs-btn-bg: var(--p-surface); --bs-btn-border-color: var(--p-rule-strong);
  --bs-btn-hover-color: var(--p-ink); --bs-btn-hover-bg: var(--p-paper); --bs-btn-hover-border-color: #a9bab1;
  --bs-btn-active-color: var(--p-ink); --bs-btn-active-bg: var(--p-rule); --bs-btn-active-border-color: #a9bab1;
}
.btn-outline-secondary, .btn-light, .btn-outline-dark {
  --bs-btn-color: var(--p-ink); --bs-btn-bg: var(--p-surface); --bs-btn-border-color: var(--p-rule-strong);
  --bs-btn-hover-color: var(--p-ink); --bs-btn-hover-bg: var(--p-paper); --bs-btn-hover-border-color: #a9bab1;
  --bs-btn-active-color: var(--p-ink); --bs-btn-active-bg: var(--p-rule); --bs-btn-active-border-color: #a9bab1;
}
.btn-warning {
  --bs-btn-color: var(--p-ball-ink); --bs-btn-bg: var(--p-ball); --bs-btn-border-color: var(--p-ball);
  --bs-btn-hover-color: var(--p-ball-ink); --bs-btn-hover-bg: #ffd43b; --bs-btn-hover-border-color: #ffd43b;
  --bs-btn-active-color: var(--p-ball-ink); --bs-btn-active-bg: #e0b30f; --bs-btn-active-border-color: #e0b30f;
}
.btn-outline-warning {
  --bs-btn-color: #8a6a00; --bs-btn-border-color: #e9cf6a;
  --bs-btn-hover-color: var(--p-ball-ink); --bs-btn-hover-bg: var(--p-ball); --bs-btn-hover-border-color: var(--p-ball);
}
.btn-info {
  --bs-btn-color: #fff; --bs-btn-bg: var(--p-blue); --bs-btn-border-color: var(--p-blue);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #1c4687; --bs-btn-hover-border-color: #1c4687;
}
.btn-outline-info {
  --bs-btn-color: var(--p-blue); --bs-btn-border-color: #a9bfe3;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--p-blue); --bs-btn-hover-border-color: var(--p-blue);
}
.btn-danger {
  --bs-btn-color: #fff; --bs-btn-bg: var(--p-loss); --bs-btn-border-color: var(--p-loss);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #932f20; --bs-btn-hover-border-color: #932f20;
  --bs-btn-active-bg: #932f20; --bs-btn-active-border-color: #932f20;
}
.btn-outline-danger {
  --bs-btn-color: var(--p-loss); --bs-btn-border-color: #e3b1a7;
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--p-loss); --bs-btn-hover-border-color: var(--p-loss);
}
.btn-link { --bs-btn-color: var(--p-court); --bs-btn-hover-color: var(--p-court-dark); font-weight: 600; text-decoration: none; }
.btn-link:hover { text-decoration: underline; }
.btn-group > .btn { gap: .3rem; }
/* Botões só com ícone nas tabelas: alvo de toque confortável. */
td .btn-sm:has(> .bi:only-child), td .btn-sm:has(> i:only-child) { min-width: 32px; min-height: 32px; }

/* ---- Formulários ------------------------------------------------------------ */
.form-label, .col-form-label { font-weight: 600; font-size: .85rem; color: var(--p-ink); margin-bottom: .35rem; }
.form-control, .form-select {
  border-color: var(--p-rule-strong);
  border-radius: var(--p-radius-sm);
  padding: .5rem .75rem;
  font-size: .9rem;
  background-color: var(--p-surface);
}
.form-select { padding-right: 2.25rem; }
.form-control-sm, .form-select-sm { padding: .3rem .6rem; font-size: .82rem; }
.form-control:hover, .form-select:hover { border-color: #a9bab1; }
.form-control:focus, .form-select:focus { border-color: var(--p-court); }
.form-control::placeholder { color: #75837d; }
.form-control[readonly] { background: var(--p-paper); }
.form-text { color: var(--p-muted); font-size: .8rem; }
.form-check-input { border-color: #a9bab1; }
.form-check-input:checked { background-color: var(--p-court); border-color: var(--p-court); }
.form-switch .form-check-input { width: 2.25em; }
.input-group-text { background: var(--p-paper); border-color: var(--p-rule-strong); color: var(--p-muted); }
.was-validated .form-control:invalid, .form-control.is-invalid { border-color: var(--p-loss); }
.invalid-feedback { color: var(--p-loss); }
/* Secções de formulários longos */
.form-section { padding-bottom: 1rem; margin-bottom: 1.25rem; border-bottom: 1px solid var(--p-rule); }
.form-section:last-child { border-bottom: 0; }
.form-section h5, .form-section h6 { font-size: 1rem; font-weight: 700; margin-bottom: 1rem; }
/* Barra de acções presa ao fundo nos formulários: os botões ficam sempre à mão. */
/* Só em formulários que gravam (POST) e são compridos; os filtros (GET) ficam como estão. */
.painel-content form[method=post i]:has(.form-control ~ .form-control, .row ~ .row) > .d-flex.justify-content-between:last-child:has(> .btn[type=submit], > div > .btn[type=submit], > button[type=submit]),
.painel-content form[method=post i]:has(.form-control ~ .form-control, .row ~ .row) > .d-flex.justify-content-end:last-child:has(> .btn[type=submit], > button[type=submit]) {
  position: sticky; bottom: 0; z-index: 5;
  margin: 1.25rem calc(-1 * var(--bs-card-spacer-x, 0px)) calc(-1 * var(--bs-card-spacer-y, 0px)) !important;
  padding: .85rem var(--bs-card-spacer-x, 0);
  background: rgba(255, 255, 255, .94);
  backdrop-filter: blur(6px);
  border-top: 1px solid var(--p-rule);
  border-radius: 0 0 var(--p-radius) var(--p-radius);
}

/* ---- Tabelas ---------------------------------------------------------------- */
.table {
  --bs-table-bg: transparent;
  --bs-table-hover-bg: rgba(26, 122, 76, .045);
  --bs-table-striped-bg: rgba(13, 43, 34, .025);
  --bs-table-border-color: var(--p-rule);
  margin-bottom: 0;
  font-size: .875rem;
  font-variant-numeric: tabular-nums;
}
.table > thead > tr > th, .table > thead > tr > td {
  background: var(--p-paper) !important;
  color: var(--p-muted) !important;
  font-weight: 600; font-size: .78rem;
  border-bottom: 1px solid var(--p-rule-strong);
  padding: .6rem .85rem;
  white-space: nowrap;
  text-transform: none;
  letter-spacing: 0;
}
.table-dark, .table > thead.table-dark, .table > thead.thead-dark, .table > thead.table-light, .table > thead.bg-primary {
  --bs-table-bg: var(--p-paper); --bs-table-color: var(--p-muted);
}
.table > tbody > tr > td, .table > tbody > tr > th { padding: .7rem .85rem; vertical-align: middle; }
.table > tbody > tr:last-child > * { border-bottom: 0; }
.table-sm > tbody > tr > td, .table-sm > thead > tr > th { padding: .4rem .6rem; }
.table td .btn-group, .table td .d-flex.gap-1, .table td .d-flex.gap-2 { flex-wrap: nowrap; }
.table a:not(.btn) { font-weight: 600; text-decoration: none; }
.table a:not(.btn):hover { text-decoration: underline; }
.table img.rounded-circle, .table img.img-thumbnail { object-fit: cover; }
.card > .table-responsive, .card-body.p-0 .table-responsive { border-radius: 0 0 var(--p-radius) var(--p-radius); }
.card > .table-responsive:first-child { border-radius: var(--p-radius); }
.table-responsive { scrollbar-width: thin; }
/* Tabelas largas no telemóvel: sombra a indicar que há mais para o lado. */
.table-responsive.is-scrollable {
  background:
    linear-gradient(to right, var(--p-surface) 30%, rgba(255,255,255,0)) left center / 32px 100% no-repeat local,
    linear-gradient(to left, var(--p-surface) 30%, rgba(255,255,255,0)) right center / 32px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%, rgba(13,43,34,.16), transparent) left center / 12px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%, rgba(13,43,34,.16), transparent) right center / 12px 100% no-repeat scroll;
}

/* ---- Distintivos, alertas, navegação interna -------------------------------- */
.badge { font-weight: 600; font-size: .72rem; padding: .32em .6em; border-radius: 999px; letter-spacing: .01em; }
.badge.bg-success, .badge.text-bg-success { background: var(--p-court-tint) !important; color: var(--p-court-dark) !important; }
.badge.bg-danger, .badge.text-bg-danger { background: var(--p-loss-tint) !important; color: var(--p-loss) !important; }
.badge.bg-warning, .badge.text-bg-warning { background: var(--p-warn-tint) !important; color: #6b5300 !important; }
.badge.bg-secondary, .badge.text-bg-secondary, .badge.bg-light { background: #e8eeea !important; color: var(--p-muted) !important; }
.badge.bg-info, .badge.text-bg-info { background: #e3ebf7 !important; color: var(--p-blue) !important; }
.badge.bg-primary, .badge.text-bg-primary { background: var(--p-night) !important; color: #fff !important; }
.badge.bg-dark { background: var(--p-night) !important; }

.alert {
  border: 1px solid transparent; border-left-width: 4px; border-radius: var(--p-radius-sm);
  padding: .8rem 1rem; font-size: .9rem; box-shadow: none;
}
.alert-info { background: #edf2fa; border-color: #c9d7ef; border-left-color: var(--p-blue); color: #1b3f78; }
.alert-success { background: var(--p-court-tint); border-color: #bfdccb; border-left-color: var(--p-court); color: var(--p-court-dark); }
.alert-warning { background: var(--p-warn-tint); border-color: #f0dc8f; border-left-color: var(--p-ball); color: #5c4700; }
.alert-danger { background: var(--p-loss-tint); border-color: #efc9c0; border-left-color: var(--p-loss); color: #7c2a1d; }
.alert-secondary, .alert-light { background: var(--p-paper); border-color: var(--p-rule); border-left-color: var(--p-rule-strong); color: var(--p-ink); }

.nav-tabs { --bs-nav-tabs-border-color: var(--p-rule); gap: 4px; }
.nav-tabs .nav-link { color: var(--p-muted); font-weight: 600; font-size: .875rem; border: 0; border-bottom: 3px solid transparent; border-radius: 0; padding: .6rem .9rem; }
.nav-tabs .nav-link:hover { color: var(--p-ink); border-bottom-color: var(--p-rule-strong); }
.nav-tabs .nav-link.active { color: var(--p-ink); background: transparent; border-bottom-color: var(--p-ball); }
.nav-pills .nav-link.active { background: var(--p-night); }
.nav-pills .nav-link { color: var(--p-muted); font-weight: 600; }

.list-group { --bs-list-group-border-color: var(--p-rule); --bs-list-group-active-bg: var(--p-night); --bs-list-group-active-border-color: var(--p-night); }
.list-group-item-action:hover { background: var(--p-paper); }

.pagination { --bs-pagination-color: var(--p-ink); --bs-pagination-border-color: var(--p-rule); --bs-pagination-hover-bg: var(--p-paper);
  --bs-pagination-active-bg: var(--p-night); --bs-pagination-active-border-color: var(--p-night);
  --bs-pagination-font-size: .85rem; gap: 4px; flex-wrap: wrap; }
.pagination .page-link { border-radius: var(--p-radius-sm) !important; min-width: 36px; text-align: center; font-variant-numeric: tabular-nums; }

.dropdown-menu {
  --bs-dropdown-border-color: var(--p-rule); --bs-dropdown-link-active-bg: var(--p-night);
  --bs-dropdown-font-size: .875rem; --bs-dropdown-item-padding-y: .45rem;
  border-radius: var(--p-radius); box-shadow: var(--p-shadow-pop); padding: 6px;
}
.dropdown-item { border-radius: var(--p-radius-sm); display: flex; align-items: center; gap: 8px; }
.dropdown-item .bi { width: 18px; color: var(--p-muted); margin: 0 !important; }
.dropdown-item.text-danger .bi { color: inherit; }

.modal { --bs-modal-border-radius: var(--p-radius); --bs-modal-border-color: transparent; }
.modal-content { box-shadow: var(--p-shadow-pop); }
.modal-header { border-bottom-color: var(--p-rule); }
.modal-header.bg-primary, .modal-header.bg-info { background: var(--p-surface) !important; color: var(--p-ink) !important; }
.modal-header.bg-primary .btn-close-white, .modal-header.bg-info .btn-close-white { filter: none; }
.modal-footer { border-top-color: var(--p-rule); background: var(--p-paper); border-radius: 0 0 var(--p-radius) var(--p-radius); }
.modal-title { font-weight: 700; }
.tooltip { --bs-tooltip-bg: var(--p-night); --bs-tooltip-font-size: .78rem; }

.progress { background: var(--p-rule); }
.progress-bar { background-color: var(--p-court); }
.bg-primary:not(.badge):not(.card-header):not(.btn) { background-color: var(--p-night) !important; }
.text-primary { color: var(--p-court) !important; }
.border-primary { border-color: var(--p-court) !important; }
.img-thumbnail { border-color: var(--p-rule); border-radius: var(--p-radius-sm); }

/* ---- Componentes antigos ainda usados por algumas páginas ------------------- */
.stats-card { text-align: left; }
.stats-card i { color: var(--p-court); }
.stats-number { font-family: var(--p-display); font-weight: 700; font-size: 2rem; line-height: 1; color: var(--p-ink); font-variant-numeric: tabular-nums; }
.stats-text { color: var(--p-muted); font-size: .85rem; }
.chart-container { background: var(--p-surface); border: 1px solid var(--p-rule); border-radius: var(--p-radius); padding: 16px; position: relative; height: 360px; margin-bottom: 20px; }
.chart-container.medium { height: 320px; }
.chart-container.small { height: 250px; }

/* Estado vazio genérico */
.painel-empty { text-align: center; padding: 48px 16px; color: var(--p-muted); }
.painel-empty .bi { font-size: 2.2rem; color: var(--p-rule-strong); display: block; margin-bottom: 10px; }

/* ---- Painel inicial (dashboard) --------------------------------------------- */
.dash-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.dash-head h1 { margin-bottom: 2px !important; }
.dash-date { margin: 0; color: var(--p-muted); font-size: .95rem; }
.dash-date::first-letter { text-transform: uppercase; }
.dash-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.dash-actions .btn { white-space: nowrap; }

.dash-top { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: 16px; margin-bottom: 16px; }

/* O próximo jogo, como o placard do pavilhão: escuro, nomes grandes, amarelo da bola. */
.dash-next {
  position: relative; overflow: hidden;
  display: flex; flex-direction: column; gap: 18px;
  padding: 22px 24px; border-radius: var(--p-radius);
  background: var(--p-night); color: #fff;
}
/* Linhas do campo ao fundo: a linha central e a linha dos 3 m. */
.dash-next::before, .dash-next::after {
  content: ""; position: absolute; top: 0; bottom: 0; width: 2px; background: rgba(255, 255, 255, .06); pointer-events: none;
}
.dash-next::before { left: 50%; }
.dash-next::after { left: 66%; }
.dash-next > * { position: relative; }
.dash-next-label { margin: 0; font-family: var(--p-body) !important; font-size: .85rem !important; font-weight: 600; color: var(--p-ball); }
.dash-next-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: .85rem; color: rgba(255, 255, 255, .72); }
.dash-next-meta .bi { margin-right: 4px; color: rgba(255, 255, 255, .5); }
.dash-next-match { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px; }
.dash-team { display: flex; align-items: center; gap: 14px; min-width: 0; }
.dash-team:last-child { flex-direction: row-reverse; text-align: right; }
.dash-team img, .dash-team-mono {
  width: 56px; height: 56px; flex-shrink: 0; border-radius: 12px; object-fit: contain; background: #fff; padding: 4px;
}
.dash-team-mono { display: grid; place-items: center; background: var(--p-night-3); color: var(--p-ball); font-family: var(--p-display); font-weight: 700; font-size: 1.3rem; }
.dash-team-name {
  font-family: var(--p-display); font-weight: 700; font-size: clamp(1.35rem, 1rem + 1.2vw, 2rem); line-height: 1.02;
  overflow-wrap: anywhere;
}
.dash-vs { font-family: var(--p-display); font-weight: 600; font-size: 1.1rem; color: rgba(255, 255, 255, .45); }
.dash-next-foot { display: flex; align-items: center; gap: 14px; }
.dash-next > .btn { align-self: flex-start; }
.dash-countdown { font-size: .85rem; color: rgba(255, 255, 255, .6); }
.dash-next-empty { margin: 0; font-family: var(--p-display); font-weight: 700; font-size: 1.6rem; }

.dash-pending .card-header { justify-content: space-between; }
.dash-hint { margin: 0; padding: 12px 20px 0; font-size: .8rem; color: var(--p-muted); }

.dash-list { list-style: none; margin: 0; padding: 6px 8px 8px; }
.dash-list li a {
  display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: var(--p-radius-sm);
  color: var(--p-ink); text-decoration: none; font-size: .9rem;
}
.dash-list li a:hover { background: var(--p-paper); }
.dash-list li a > .bi { margin-left: auto; color: var(--p-rule-strong); flex-shrink: 0; }
.dash-list li a:hover > .bi { color: var(--p-court); }
.dash-list li + li { border-top: 1px solid var(--p-rule); }
.dash-list-date { flex-shrink: 0; min-width: 44px; color: var(--p-muted); font-size: .8rem; font-variant-numeric: tabular-nums; text-align: center; line-height: 1.1; }
.dash-list-date b { display: block; font-family: var(--p-display); font-size: 1.35rem; color: var(--p-ink); }
.dash-list-main { min-width: 0; font-weight: 600; }
.dash-list-main small { display: block; font-weight: 400; color: var(--p-muted); font-size: .8rem; margin-top: 2px; }
.dash-list-roomy li a { padding: 11px 12px; }
.dash-more { display: block; padding: 0 20px 14px; font-size: .85rem; font-weight: 600; }
.dash-result { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; font-weight: 500; }
.dash-result .is-winner { font-weight: 700; }
.dash-score { font-family: var(--p-display); font-weight: 700; font-size: 1.15rem; font-variant-numeric: tabular-nums; padding: 0 8px; border-radius: 4px; background: var(--p-night); color: var(--p-ball); }
.dash-score i { font-style: normal; color: rgba(255, 255, 255, .5); padding: 0 2px; }

.dash-counts { display: grid; grid-template-columns: repeat(6, 1fr); margin-bottom: 16px; padding: 0; overflow: hidden; }
.dash-counts a { padding: 16px 20px; color: var(--p-ink); text-decoration: none; border-left: 1px solid var(--p-rule); }
.dash-counts a:first-child { border-left: 0; }
.dash-counts a:hover { background: var(--p-paper); }
.dash-counts strong { display: block; font-family: var(--p-display); font-weight: 700; font-size: 2rem; line-height: 1; font-variant-numeric: tabular-nums; }
.dash-counts span { font-size: .82rem; color: var(--p-muted); }

.dash-chart { position: relative; height: 260px; }
.dash-bars-title { font-family: var(--p-body) !important; font-size: .8rem !important; font-weight: 600 !important; color: var(--p-muted); margin-bottom: 10px; }
.dash-bar { display: grid; grid-template-columns: minmax(70px, auto) 1fr 28px; align-items: center; gap: 10px; font-size: .85rem; margin-bottom: 8px; }
.dash-bar-track { height: 8px; border-radius: 4px; background: var(--p-paper); overflow: hidden; }
.dash-bar-track span { display: block; height: 100%; background: var(--p-court); border-radius: 4px; }
.dash-bar b { text-align: right; font-variant-numeric: tabular-nums; }

@media (max-width: 991.98px) {
  .dash-top { grid-template-columns: 1fr; }
  .dash-counts { grid-template-columns: repeat(3, 1fr); }
  .dash-counts a:nth-child(4) { border-left: 0; }
  .dash-counts a:nth-child(n+4) { border-top: 1px solid var(--p-rule); }
}
@media (max-width: 575.98px) {
  .dash-next { padding: 18px; }
  .dash-next-match { grid-template-columns: 1fr; gap: 10px; }
  .dash-team:last-child { flex-direction: row; text-align: left; }
  .dash-vs { padding-left: 70px; }
  .dash-team img, .dash-team-mono { width: 44px; height: 44px; }
  .dash-next::after { display: none; }
  .dash-counts a { padding: 12px 14px; }
  .dash-counts strong { font-size: 1.6rem; }
  .dash-actions { width: 100%; }
  .dash-actions > .btn { flex: 1; }
}

/* ---- Entrada e recuperação de senha ----------------------------------------- */
.auth-body { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1fr) minmax(380px, 560px); background: var(--p-surface); }
.auth-court {
  position: sticky; top: 0; overflow: hidden; background: var(--p-night); color: #fff;
  display: flex; flex-direction: column; padding: 32px 48px 36px; height: 100vh;
}
/* Campo inteiro visto de cima (SVG no auth_base.html). */
.auth-court-field { flex: 1; min-height: 0; display: grid; place-items: center; padding: 8px 0 24px; }
.auth-court-svg { width: 100%; height: 100%; max-height: calc(100vh - 210px); overflow: visible; }
.auth-c-floor { fill: #143a2e; }
.auth-c-line { fill: none; stroke: rgba(255, 255, 255, .55); stroke-width: .9; }
.auth-c-dash { stroke: rgba(255, 255, 255, .4); stroke-width: .9; stroke-dasharray: 2 2; }
.auth-c-net { stroke: var(--p-ball); stroke-width: 1.8; stroke-linecap: round; }
.auth-c-post { fill: var(--p-ball); }
.auth-player circle { stroke: rgba(13, 43, 34, .6); stroke-width: .8; }
.auth-player text { font-family: var(--p-display); font-weight: 700; font-size: 6.4px; }
.auth-ball circle { fill: #fff; stroke: #0d2b22; stroke-width: .6; }
.auth-ball path { fill: none; stroke: #2457a6; stroke-width: .6; }
.auth-court-brand { position: relative; display: flex; align-items: center; gap: 18px; }
.auth-court-brand img { width: 72px; height: 72px; border-radius: 14px; background: #fff; object-fit: cover; }
.auth-court-name { margin: 0; font-family: var(--p-display); font-weight: 700; font-size: 3.2rem; line-height: .95; }
.auth-court-sub { margin: 4px 0 0; color: rgba(255, 255, 255, .65); font-size: .95rem; max-width: 30ch; }

.auth-main { display: flex; flex-direction: column; justify-content: center; padding: 48px clamp(24px, 6vw, 72px); }
.auth-panel { width: 100%; max-width: 400px; margin: 0 auto; }
.auth-title { font-family: var(--p-display); font-weight: 700; font-size: 2.2rem; line-height: 1.05; margin-bottom: 28px; }
.auth-mobile-brand { display: none; }
.auth-password { position: relative; }
.auth-password .form-control { padding-right: 52px; }
.auth-password-toggle {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; border: 0; border-radius: var(--p-radius-sm); background: transparent; color: var(--p-muted);
}
.auth-password-toggle:hover { background: var(--p-paper); color: var(--p-ink); }
.auth-panel .form-floating > .form-control { padding-top: 1.6rem; }
.auth-links { margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--p-rule); font-size: .9rem; }
.auth-links a { color: var(--p-muted); text-decoration: none; font-weight: 600; }
.auth-links a:hover { color: var(--p-court); }
.auth-foot { margin: 40px auto 0; max-width: 400px; width: 100%; font-size: .8rem; color: var(--p-muted); }

@media (max-width: 899.98px) {
  .auth-body { grid-template-columns: 1fr; background: var(--p-paper); }
  .auth-court { display: none; }
  .auth-main { justify-content: flex-start; padding: 28px 20px; }
  .auth-panel { background: var(--p-surface); border: 1px solid var(--p-rule); border-radius: var(--p-radius); padding: 24px 20px; }
  .auth-mobile-brand { display: inline-flex; align-items: center; gap: 10px; margin-bottom: 20px; color: var(--p-ink); text-decoration: none; font-family: var(--p-display); font-weight: 700; font-size: 1.4rem; }
  .auth-mobile-brand img { width: 40px; height: 40px; border-radius: 9px; }
  .auth-title { font-size: 1.9rem; margin-bottom: 22px; }
  .auth-foot { margin-top: 20px; text-align: center; }
}

/* ---- Cartão de atleta (ID-1: 85,6 × 54 mm) ------------------------------------ */
.detail-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.detail-header h1 { margin-bottom: 0 !important; }
.detail-header .d-flex { flex-wrap: wrap; }

.athlete-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: 20px; }
/* Cada face mede-se a si própria (cqw = % da largura do cartão): igual no ecrã e no papel. */
.ac-wrap { container-type: inline-size; min-width: 0; }
.athlete-card {
  position: relative; overflow: hidden;
  aspect-ratio: 85.6 / 54; width: 100%;
  border-radius: 4.2cqw;
  display: flex; flex-direction: column;
  box-shadow: 0 1px 2px rgba(13, 43, 34, .12), 0 10px 28px rgba(13, 43, 34, .16);
  font-family: var(--p-body);
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.athlete-card p, .athlete-card dl, .athlete-card dd { margin: 0; }

/* Frente: escura como o pavilhão, linhas do campo e a faixa amarela da rede. */
.athlete-card-front { background: var(--p-night); color: #fff; padding: 4.2cqw 5cqw 3.4cqw; }
.ac-lines { position: absolute; inset: 0; pointer-events: none; }
.ac-lines span { position: absolute; top: 0; bottom: 0; }
.ac-lines span:nth-child(1) { right: 22cqw; width: .45cqw; background: rgba(255, 255, 255, .07); }
.ac-lines span:nth-child(2) { right: 0; width: 2.4cqw; background: var(--p-ball); }
.athlete-card-front > * { position: relative; }

.ac-head { display: flex; align-items: center; gap: 2.6cqw; padding-right: 3cqw; }
.ac-logo { width: 8.6cqw; height: 8.6cqw; border-radius: 1.8cqw; background: #fff; object-fit: cover; }
.ac-org { font-family: var(--p-display); font-weight: 700; font-size: 5.2cqw; line-height: 1; letter-spacing: .02em; }
.ac-org-sub { font-size: 2.3cqw; color: rgba(255, 255, 255, .62); margin-top: .5cqw !important; }
.ac-kind { margin-left: auto !important; font-size: 2.5cqw; font-weight: 600; color: var(--p-ball); white-space: nowrap; }

.ac-body { flex: 1; display: grid; grid-template-columns: 19cqw 1fr; gap: 4cqw; align-items: center; position: relative; margin-top: 2.6cqw; padding-right: 4cqw; min-height: 0; }
.ac-photo {
  width: 19cqw; aspect-ratio: 4 / 5; border-radius: 2cqw; overflow: hidden;
  background: var(--p-night-3); display: grid; place-items: center;
  outline: .5cqw solid rgba(255, 255, 255, .14);
}
.ac-photo img { width: 100%; height: 100%; object-fit: cover; }
.ac-photo span { font-family: var(--p-display); font-weight: 700; font-size: 9cqw; color: var(--p-ball); }
.ac-who { min-width: 0; }
.ac-name { font-family: var(--p-display); font-weight: 700; font-size: 5.6cqw; line-height: .98; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.ac-name span { display: block; color: rgba(255, 255, 255, .78); font-weight: 600; font-size: .78em; }
.ac-nick { font-size: 2.3cqw; color: rgba(255, 255, 255, .6); margin-top: .4cqw !important; }
.ac-facts { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.35fr) minmax(0, .9fr); gap: 1.4cqw 2.6cqw; margin-top: 2.2cqw !important; }
.ac-facts .ac-wide { grid-column: span 2; }
.ac-facts dt { font-size: 1.85cqw; font-weight: 500; color: rgba(255, 255, 255, .55); }
.ac-facts dd { font-size: 2.45cqw; font-weight: 600; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ac-jersey {
  position: absolute; right: 4.5cqw; top: -1cqw;
  font-family: var(--p-display); font-weight: 700; font-size: 13cqw; line-height: 1;
  color: var(--p-ball); opacity: .95; font-variant-numeric: tabular-nums;
}
.ac-foot { display: flex; justify-content: space-between; align-items: baseline; gap: 3cqw; padding-right: 4cqw; margin-top: 2cqw; padding-top: 1.8cqw; border-top: .3cqw solid rgba(255, 255, 255, .12); font-size: 2.4cqw; color: rgba(255, 255, 255, .7); }
.ac-foot b { color: #fff; font-weight: 600; }
.ac-number { font-family: var(--p-display); font-weight: 600; font-size: 3.2cqw; letter-spacing: .06em; color: #fff; }
/* Sem número de camisola, os dados ocupam a largura toda. */
.athlete-card-front:not(:has(.ac-jersey)) .ac-body { padding-right: 4cqw; }
.athlete-card-front:has(.ac-jersey) .ac-name, .athlete-card-front:has(.ac-jersey) .ac-nick { padding-right: 16cqw; }

/* Verso: claro, para escrever a assinatura e ler o código de barras. */
.athlete-card-back { background: #fff; color: var(--p-ink); padding: 4.6cqw 5cqw 4cqw; border: 1px solid var(--p-rule); }
.athlete-card-back::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1.6cqw; background: var(--p-night); }
.athlete-card-back::after { content: ""; position: absolute; left: 0; width: 22cqw; top: 0; height: 1.6cqw; background: var(--p-ball); }
.ac-back-head { display: flex; align-items: baseline; gap: 3cqw; }
.ac-back-head .ac-org { color: var(--p-night); }
.ac-back-note { font-size: 2.3cqw; color: var(--p-muted); line-height: 1.3; }
.ac-back-body { flex: 1; display: grid; grid-template-columns: 1fr auto; gap: 4cqw; align-items: center; margin-top: 3cqw; }
.ac-back-title { font-size: 2.7cqw; font-weight: 700; margin-bottom: 1.2cqw !important; }
.ac-back-contact p:not(.ac-back-title) { font-size: 2.45cqw; line-height: 1.4; color: var(--p-ink); }
.ac-barcode { text-align: center; }
.ac-barcode svg { width: 34cqw; height: 9cqw; display: block; }
.ac-barcode span { font-family: var(--p-display); font-weight: 600; font-size: 2.6cqw; letter-spacing: .08em; }
.ac-back-foot { display: grid; grid-template-columns: 1fr 1fr; gap: 6cqw; margin-top: 3cqw; }
.ac-sign { font-size: 2.1cqw; color: var(--p-muted); }
.ac-sign span { display: block; border-bottom: .3cqw solid var(--p-rule-strong); height: 6cqw; margin-bottom: 1cqw; }

/* Impressão: o script da página copia o cartão para #athletePrint (filho directo do
   body) e só esse elemento é impresso, sem páginas em branco. */
#athletePrint { display: none; }
@media print {
  body.printing-athlete-card > *:not(#athletePrint) { display: none !important; }
  body.printing-athlete-card #athletePrint { display: block; }
  #athletePrint .athlete-cards { display: flex; flex-direction: column; gap: 8mm; }
  #athletePrint .ac-wrap { width: 85.6mm; }
  #athletePrint .athlete-card { width: 85.6mm; height: 54mm; box-shadow: none; border: .2mm solid #c5d2cb; }
}
@page { margin: 10mm; }

/* ---- Perfis de utilizador ------------------------------------------------------ */
.up-hero {
  position: relative; overflow: hidden;
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 24px;
  padding: 28px 28px; margin-bottom: 16px; border-radius: var(--p-radius);
  background: var(--p-night); color: #fff;
}
.up-hero::before { content: ""; position: absolute; top: 0; bottom: 0; right: 30%; width: 2px; background: rgba(255, 255, 255, .06); }
.up-hero::after { content: ""; position: absolute; top: 0; bottom: 0; right: 0; width: 6px; background: var(--p-ball); }
.up-hero > * { position: relative; }
.up-avatar {
  width: 112px; height: 112px; border-radius: 50%; overflow: hidden; flex-shrink: 0;
  display: grid; place-items: center; background: var(--p-night-3);
  box-shadow: 0 0 0 4px rgba(255, 255, 255, .12);
}
.up-avatar img { width: 100%; height: 100%; object-fit: cover; }
.up-avatar span { font-family: var(--p-display); font-weight: 700; font-size: 2.9rem; color: var(--p-ball); letter-spacing: .02em; }
.up-avatar-edit { width: 144px; height: 144px; background: var(--p-night); box-shadow: 0 0 0 4px var(--p-rule); }
.up-avatar-edit span { font-size: 3.6rem; }
.up-id { min-width: 0; }
.up-id h1 { color: #fff !important; margin: 0 0 4px !important; overflow-wrap: anywhere; }
.up-sub { margin: 0 0 12px; display: flex; flex-wrap: wrap; gap: 4px 14px; color: rgba(255, 255, 255, .72); font-size: .95rem; }
.up-handle { color: rgba(255, 255, 255, .5); }
.up-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.up-hero .badge.bg-secondary { background: rgba(255, 255, 255, .12) !important; color: #fff !important; }
.up-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; padding-right: 10px; }
.up-hero .btn-outline-light {
  --bs-btn-color: #fff; --bs-btn-border-color: rgba(255, 255, 255, .35); --bs-btn-bg: transparent;
  --bs-btn-hover-color: var(--p-night); --bs-btn-hover-bg: #fff; --bs-btn-hover-border-color: #fff;
}

.up-facts { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0 0 16px; padding: 0; overflow: hidden; }
.up-facts > div { padding: 14px 20px; border-left: 1px solid var(--p-rule); }
.up-facts > div:first-child { border-left: 0; }
.up-facts dt { font-size: .78rem; font-weight: 600; color: var(--p-muted); }
.up-facts dd { margin: 2px 0 0; font-family: var(--p-display); font-weight: 700; font-size: 1.45rem; line-height: 1.1; font-variant-numeric: tabular-nums; }
.up-facts dd small { font-family: var(--p-body); font-weight: 500; font-size: .8rem; color: var(--p-muted); }

.up-label { font-family: var(--p-body) !important; font-size: .78rem !important; font-weight: 600 !important; color: var(--p-muted); margin-bottom: 8px; }
.up-contact { list-style: none; margin: 0; padding: 8px 0; }
.up-contact li { display: flex; align-items: center; gap: 12px; padding: 8px 20px; font-size: .92rem; overflow-wrap: anywhere; }
.up-contact .bi { color: var(--p-court); width: 18px; }
.up-checks { list-style: none; margin: 0; padding: 8px 0; }
.up-checks li { display: flex; align-items: flex-start; gap: 10px; padding: 8px 20px; font-size: .9rem; }
.up-checks .bi { margin-top: 2px; }
.up-checks .is-ok .bi { color: var(--p-court); }
.up-checks .is-warn .bi { color: #a07c00; }
.up-checks .is-bad { color: var(--p-loss); font-weight: 600; }
.up-areas { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 18px 24px; }
.up-areas ul { list-style: none; margin: 0; padding: 0; }
.up-areas li a { display: flex; align-items: center; gap: 8px; padding: 4px 0; color: var(--p-ink); text-decoration: none; font-size: .88rem; }
.up-areas li a:hover { color: var(--p-court); }
.up-areas li .bi { color: var(--p-muted); }
.up-activity { list-style: none; margin: 0; padding: 6px 0; }
.up-activity li { display: grid; grid-template-columns: 10px 1fr auto; align-items: baseline; gap: 12px; padding: 8px 20px; font-size: .88rem; }
.up-activity li + li { border-top: 1px solid var(--p-rule); }
.up-activity time { color: var(--p-muted); font-size: .8rem; white-space: nowrap; font-variant-numeric: tabular-nums; }
.up-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--p-court); align-self: center; }
.up-dot-warning { background: var(--p-ball); }
.up-dot-error, .up-dot-critical { background: var(--p-loss); }

@media (max-width: 991.98px) {
  .up-hero { grid-template-columns: auto 1fr; }
  .up-actions { grid-column: 1 / -1; justify-content: flex-start; padding-right: 0; }
  .up-facts { grid-template-columns: repeat(2, 1fr); }
  .up-facts > div:nth-child(3) { border-left: 0; }
  .up-facts > div:nth-child(n+3) { border-top: 1px solid var(--p-rule); }
}
@media (max-width: 575.98px) {
  .up-hero { grid-template-columns: 1fr; padding: 22px 20px; gap: 16px; }
  .up-hero::before { display: none; }
  .up-avatar { width: 84px; height: 84px; }
  .up-avatar span { font-size: 2.2rem; }
  .up-facts dd { font-size: 1.2rem; }
}

/* ---- Formato do campeonato, grupos e marcação de jogos ------------------------ */
.cf-formats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.cf-format {
  position: relative; display: flex; flex-direction: column; gap: 4px; cursor: pointer;
  padding: 12px; border: 1px solid var(--p-rule-strong); border-radius: var(--p-radius);
  background: var(--p-surface);
}
.cf-format:hover { border-color: #a9bab1; }
.cf-format input { position: absolute; opacity: 0; pointer-events: none; }
.cf-format:has(input:checked) { border-color: var(--p-court); box-shadow: inset 0 0 0 1px var(--p-court); background: var(--p-court-tint); }
.cf-format:has(input:focus-visible) { outline: 3px solid var(--p-ball); outline-offset: 2px; }
.cf-format-pic svg { width: 64px; height: 40px; fill: var(--p-court); stroke: var(--p-court); }
.cf-format-name { font-weight: 700; font-size: .9rem; }
.cf-format-hint { font-size: .78rem; color: var(--p-muted); line-height: 1.35; }
.cf-knockout { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--p-rule); }
.cf-knockout[hidden], .cf-hybrid-note[hidden] { display: none !important; }

.groups-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px 16px; }
.groups-team { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--p-rule); font-size: .88rem; font-weight: 600; }
.groups-team select { width: auto; min-width: 120px; }

.pf-when-preview { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: var(--p-radius-sm); font-size: .9rem; font-weight: 600; }
.pf-when-preview.is-set { background: var(--p-court-tint); color: var(--p-court-dark); }
.pf-when-preview.is-set::first-letter { text-transform: uppercase; }
.pf-when-preview.is-tbc { background: var(--p-warn-tint); color: #5c4700; }
.pf-tbc { display: inline-block; padding: 1px 7px; border-radius: 4px; background: var(--p-ball); color: var(--p-ball-ink); font-family: var(--p-display); font-weight: 700; letter-spacing: .04em; }
#stageFields[hidden], #slotField[hidden] { display: none !important; }

@media (max-width: 767.98px) {
  .cf-formats { grid-template-columns: 1fr; }
  .cf-format { flex-direction: row; flex-wrap: wrap; align-items: center; }
  .cf-format-hint { flex-basis: 100%; }
}

/* ---- Avisos (mensagens do Django) ------------------------------------------- */
.painel-toasts {
  position: fixed; top: calc(var(--p-topbar) + 12px); right: 20px; z-index: 1090;
  display: flex; flex-direction: column; gap: 10px; width: min(400px, calc(100vw - 32px));
}
.painel-toast {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px 12px 12px 14px;
  background: var(--p-surface); color: var(--p-ink);
  border: 1px solid var(--p-rule); border-left: 4px solid var(--p-court);
  border-radius: var(--p-radius-sm); box-shadow: var(--p-shadow-pop);
  font-size: .9rem; line-height: 1.4;
  animation: toast-in .28s var(--p-ease);
}
.painel-toast .bi:first-child { font-size: 1.1rem; margin-top: 1px; color: var(--p-court); }
.painel-toast.is-error { border-left-color: var(--p-loss); }
.painel-toast.is-error .bi:first-child { color: var(--p-loss); }
.painel-toast.is-warning { border-left-color: var(--p-ball); }
.painel-toast.is-warning .bi:first-child { color: #a07c00; }
.painel-toast.is-info { border-left-color: var(--p-blue); }
.painel-toast.is-info .bi:first-child { color: var(--p-blue); }
.painel-toast .btn-close { margin-left: auto; flex-shrink: 0; font-size: .7rem; padding: 6px; }
.painel-toast.is-leaving { opacity: 0; transform: translateX(16px); transition: opacity .2s, transform .2s; }
@keyframes toast-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }

/* ---- Paleta "Ir para…" ------------------------------------------------------ */
.painel-palette {
  border: 0; padding: 0; margin: 12vh auto auto; width: min(560px, calc(100vw - 24px));
  border-radius: var(--p-radius); box-shadow: var(--p-shadow-pop); background: var(--p-surface); color: var(--p-ink);
}
.painel-palette::backdrop { background: rgba(13, 43, 34, .45); backdrop-filter: blur(2px); }
.painel-palette-input {
  display: flex; align-items: center; gap: 10px; padding: 0 16px; border-bottom: 1px solid var(--p-rule);
}
.painel-palette-input .bi { color: var(--p-muted); font-size: 1.1rem; }
.painel-palette-input input {
  flex: 1; border: 0; outline: 0; height: 56px; font-size: 1.05rem; background: transparent; color: var(--p-ink);
}
.painel-palette-input input:focus-visible { outline: 0; }
.painel-palette-list { list-style: none; margin: 0; padding: 6px; max-height: min(420px, 60vh); overflow-y: auto; }
.painel-palette-list li a {
  display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: var(--p-radius-sm);
  color: var(--p-ink); text-decoration: none; font-size: .92rem;
}
.painel-palette-list li a .bi { color: var(--p-muted); width: 20px; text-align: center; }
.painel-palette-list li a small { margin-left: auto; color: var(--p-muted); font-size: .78rem; }
.painel-palette-list li[aria-selected="true"] a { background: var(--p-night); color: #fff; }
.painel-palette-list li[aria-selected="true"] a .bi { color: var(--p-ball); }
.painel-palette-list li[aria-selected="true"] a small { color: rgba(255,255,255,.65); }
.painel-palette-empty { padding: 24px 16px; text-align: center; color: var(--p-muted); font-size: .9rem; }
.painel-palette-foot { display: flex; gap: 16px; padding: 8px 16px; border-top: 1px solid var(--p-rule); font-size: .75rem; color: var(--p-muted); background: var(--p-paper); border-radius: 0 0 var(--p-radius) var(--p-radius); }
.painel-palette-foot kbd { background: var(--p-surface); color: var(--p-ink); border: 1px solid var(--p-rule); font-family: var(--p-body); font-size: .7rem; padding: 1px 5px; box-shadow: none; }

/* ---- Telemóvel e tablet ----------------------------------------------------- */
@media (max-width: 991.98px) {
  .painel-sidebar { transform: translateX(-100%); width: min(300px, 86vw); box-shadow: none; }
  .painel-nav-open .painel-sidebar { transform: none; box-shadow: var(--p-shadow-pop); }
  .painel-main { margin-left: 0; }
  .painel-menu-btn { display: inline-grid; place-items: center; }
  .painel-sidebar-foot { display: none; }
  .painel-scrim {
    position: fixed; inset: 0; z-index: 1030; background: rgba(13, 43, 34, .5);
    opacity: 0; pointer-events: none; transition: opacity .2s;
  }
  .painel-nav-open .painel-scrim { opacity: 1; pointer-events: auto; }
  .painel-nav-open { overflow: hidden; }
  .painel-topbar { padding: 0 16px; }
  .painel-search { min-width: 0; width: 40px; padding: 0; justify-content: center; border-color: transparent; background: transparent; }
  .painel-search span, .painel-search kbd { display: none; }
  .painel-search .bi { font-size: 1.15rem; color: var(--p-ink); }
  .painel-user-name, .painel-user .bi-chevron-down { display: none; }
  .painel-content { padding: 20px 16px 40px; }
  .painel-footer { padding: 14px 16px; }
}
@media (max-width: 575.98px) {
  .painel-topbar .breadcrumb .breadcrumb-item:not(.active) { display: none; }
  .painel-topbar .breadcrumb-item.active::before { display: none; }
  .painel-content h1 { font-size: 1.65rem; }
  /* Cabeçalhos de página com botões: os botões passam para baixo e ocupam a largura. */
  .painel-content > .d-flex.justify-content-between:first-child,
  .painel-content > .container-fluid > .d-flex.justify-content-between:first-of-type { flex-wrap: wrap; gap: 12px; }
  .card-header { padding: .75rem 1rem; }
  .card { --bs-card-spacer-x: 1rem; --bs-card-spacer-y: 1rem; }
  .painel-toasts { right: 16px; left: 16px; width: auto; }
}

/* Tabelas em fichas no telemóvel (classe posta pelo painel.js). */
@media (max-width: 767.98px) {
  .table-stack, .table-stack tbody, .table-stack tr, .table-stack td, .table-stack th[scope=row] { display: block; width: 100%; }
  .table-stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .table-responsive:has(> .table-stack) { overflow: visible; background: none !important; }
  .table-stack > tbody > tr {
    position: relative; padding: 10px 14px; border-bottom: 1px solid var(--p-rule);
    background: var(--p-surface);
  }
  .table-stack > tbody > tr:last-child { border-bottom: 0; }
  .table-stack > tbody > tr > td, .table-stack > tbody > tr > th {
    display: grid; grid-template-columns: minmax(96px, 36%) 1fr; gap: 12px; align-items: center;
    padding: 5px 0 !important; border: 0 !important; text-align: left !important; background: transparent !important;
    box-shadow: none !important; min-height: 0;
  }
  .table-stack > tbody > tr > td::before {
    content: attr(data-label); color: var(--p-muted); font-size: .78rem; font-weight: 600;
  }
  .table-stack > tbody > tr > td.stack-nolabel { display: block; }
  .table-stack > tbody > tr > td.stack-nolabel::before { content: none; }
  /* A coluna das acções vai para o fim da ficha, alinhada à esquerda. */
  .table-stack > tbody > tr > td:last-child:has(.btn) { display: flex; gap: 6px; padding-top: 10px !important; }
  .table-stack > tbody > tr > td:last-child:has(.btn)::before { content: none; }
  .table-stack > tbody > tr.stack-full > td { display: block; text-align: center !important; }
  .table-stack > tbody > tr.stack-full > td::before { content: none; }
  .table-stack td .btn-group, .table-stack td .d-flex { flex-wrap: wrap; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

@media print {
  .painel-sidebar, .painel-topbar, .painel-footer, .painel-toasts { display: none !important; }
  .painel-main { margin: 0 !important; }
  .painel-content { padding: 0; max-width: none; }
  body.painel-body { background: #fff; }
}

/* Quadro de eliminatórias (championships/draw.html) */
.draw-teams { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 6px; }
.draw-team { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border: 1px solid var(--bs-border-color); border-radius: 8px; cursor: pointer; }
.draw-team:has(input:checked) { border-color: #1a7a4c; background: rgba(26, 122, 76, .08); font-weight: 600; }
.draw-team:has(input:disabled) { opacity: .55; cursor: not-allowed; }
.draw-games { list-style: none; padding: 0; margin: 0 0 16px; display: grid; gap: 8px; }
.draw-game { display: grid; grid-template-columns: 64px 1fr auto 1fr; align-items: center; gap: 8px; }
.draw-game-n { font-size: .78rem; font-weight: 600; color: var(--bs-secondary-color); }
.draw-vs { font-size: .75rem; color: var(--bs-secondary-color); }
@media (max-width: 575.98px) {
  .draw-game { grid-template-columns: 1fr; }
  .draw-vs { display: none; }
}

/* =========================================================================
   Estatísticas do site (custom_admin/analytics)
   ========================================================================= */
.an-muted { color: var(--p-muted); }
.an-head { margin-bottom: 14px; }
.an-filters { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; padding: 10px 12px; margin-bottom: 16px; }
.an-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.an-chip {
  padding: 5px 12px; border-radius: 999px; border: 1px solid var(--p-rule); background: var(--p-surface);
  color: var(--p-ink); font-size: .85rem; font-weight: 600; text-decoration: none; white-space: nowrap;
}
.an-chip:hover { border-color: var(--p-court); color: var(--p-court); }
.an-chip.is-active { background: var(--p-night); border-color: var(--p-night); color: #fff; }
.an-range { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: .85rem; color: var(--p-muted); }
.an-range .form-control { width: auto; }

.an-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.an-kpi {
  background: var(--p-surface); border: 1px solid var(--p-rule); border-radius: var(--p-radius); box-shadow: var(--p-shadow);
  padding: 14px 16px; display: flex; flex-direction: column; gap: 2px; min-width: 0;
}
.an-kpi-label { font-size: .8rem; font-weight: 600; color: var(--p-muted); }
.an-kpi-value { font-family: var(--p-display); font-weight: 700; font-size: 2rem; line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--p-ink); }
.an-kpi-change { font-size: .8rem; font-weight: 600; display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; }
.an-kpi-change .an-muted { font-weight: 400; }
.an-kpi-change.is-good { color: var(--p-court-dark); }
.an-kpi-change.is-bad { color: var(--p-loss); }
.an-kpi-change.is-neutral { color: var(--p-ink); }

.an-insights { margin-bottom: 16px; border-left: 4px solid var(--p-ball); }
.an-insights ul { margin: 0; padding: 14px 20px 14px 36px; display: grid; gap: 6px; }
.an-insights li { line-height: 1.45; }
.an-insights li::marker { color: var(--p-court); }

.an-legend { display: flex; gap: 14px; margin-left: auto; font-size: .82rem; color: var(--p-ink); }
.an-legend span { display: inline-flex; align-items: center; gap: 6px; }
.an-swatch { display: inline-block; width: 18px; height: 0; border-top: 2px solid; }
.an-swatch.is-views { border-color: #1a7a4c; }
.an-swatch.is-visitors { border-color: #c8a000; border-top-style: dashed; }
.an-chart { position: relative; height: 280px; }
.an-table-toggle { margin-top: 12px; font-size: .88rem; }
.an-table-toggle summary { cursor: pointer; color: var(--p-court); font-weight: 600; }
.an-table-toggle .table-responsive { max-height: 320px; margin-top: 8px; }
.an-weekend td { background: var(--p-paper); }

.an-heat-wrap { overflow-x: auto; max-width: 100%; }
.an-heat { border-collapse: separate; border-spacing: 2px; width: 100%; min-width: 620px; table-layout: fixed; }
.an-heat th { font-size: .72rem; font-weight: 600; color: var(--p-muted); text-align: left; padding: 0 2px; white-space: nowrap; }
.an-heat thead th { text-align: left; }
.an-heat tbody th { width: 38px; }
.an-heat td { height: 22px; border-radius: 3px; }
.an-heat .lv0, .an-heat-scale .lv0 { background: var(--p-paper); }
.an-heat .lv1, .an-heat-scale .lv1 { background: #d3eadc; }
.an-heat .lv2, .an-heat-scale .lv2 { background: #a6d3b8; }
.an-heat .lv3, .an-heat-scale .lv3 { background: #6fb48c; }
.an-heat .lv4, .an-heat-scale .lv4 { background: #36905f; }
.an-heat .lv5, .an-heat-scale .lv5 { background: #135c39; }
.an-heat td:hover { outline: 2px solid var(--p-ink); outline-offset: 0; }
.an-heat-scale { display: flex; align-items: center; justify-content: flex-end; gap: 3px; margin-top: 10px; font-size: .75rem; color: var(--p-muted); }
.an-heat-scale i { width: 16px; height: 12px; border-radius: 2px; border: 1px solid var(--p-rule); }
.an-heat-scale span:first-child { margin-right: 4px; }
.an-heat-scale span:last-child { margin-left: 4px; }

.an-bar { display: block; height: 6px; border-radius: 3px; background: var(--p-paper); overflow: hidden; }
.an-bar > span { display: block; height: 100%; border-radius: 3px; background: var(--p-court); min-width: 2px; }
.an-rank td { vertical-align: middle; }
.an-rank-label { display: block; font-weight: 600; margin-bottom: 4px; }
.an-rank .an-bar { max-width: 320px; }
.an-bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.an-bars li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; align-items: baseline; }
.an-bars-label { font-weight: 600; font-size: .9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.an-bars-value { font-variant-numeric: tabular-nums; font-size: .88rem; white-space: nowrap; }
.an-bars-value small { color: var(--p-muted); margin-left: 4px; }
.an-bars .an-bar { grid-column: 1 / -1; }
.an-content-title { max-width: 420px; }
.an-content-title a { color: var(--p-ink); font-weight: 600; text-decoration: none; }
.an-content-title a:hover { color: var(--p-court); text-decoration: underline; }
.an-section-title { font-size: 1.25rem; margin: 26px 0 10px; }

@media (max-width: 1199.98px) { .an-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575.98px) {
  .an-kpi-value { font-size: 1.6rem; }
  .an-kpi { padding: 12px; }
  .an-filters { flex-direction: column; align-items: stretch; }
  .an-chart { height: 220px; }
  .an-heat { min-width: 0; border-spacing: 1px; }
  .an-heat td { height: 18px; border-radius: 2px; }
  .an-heat tbody th { width: 30px; }
  .an-heat thead th { font-size: .62rem; padding: 0; }
  .an-heat .an-h3 { display: none; }
  .an-content-title { max-width: none; }
}

/* Juntar clubes */
.merge-club-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 6px; max-height: 420px; overflow-y: auto; }
.merge-club-option { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; border: 1px solid var(--p-rule); border-radius: var(--p-radius-sm); cursor: pointer; }
.merge-club-option:has(input:checked) { border-color: var(--p-court); background: var(--p-court-tint); }
.merge-club-option span { display: flex; flex-direction: column; font-weight: 600; font-size: .9rem; line-height: 1.3; }
.merge-club-option small { font-weight: 400; color: var(--p-muted); }
.merge-from { max-width: 60%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.merge-suffix { max-width: 7rem; text-transform: uppercase; }
.merge-counts { display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 0 0 12px; }
.merge-counts div { display: flex; flex-direction: column-reverse; }
.merge-counts dt { font-weight: 400; font-size: .78rem; color: var(--p-muted); }
.merge-counts dd { margin: 0; font-family: var(--p-display); font-weight: 700; font-size: 1.4rem; }

/* Formulário de atleta: secções à esquerda, resumo fixo à direita (em cima no telemóvel) */
.ath-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
.ath-aside { position: sticky; top: calc(var(--p-topbar) + 16px); }
.ath-summary { overflow: hidden; }
.ath-photo { aspect-ratio: 4 / 3; background: var(--p-paper); display: grid; place-items: center; border-bottom: 1px solid var(--p-rule); }
.ath-photo img { width: 100%; height: 100%; object-fit: cover; }
.ath-photo .bi { font-size: 4rem; color: var(--p-rule-strong); }
.ath-name { font-family: var(--p-display); font-weight: 700; font-size: 1.4rem; line-height: 1.15; }
.ath-facts { margin: 12px 0 0; display: grid; gap: 8px; font-size: .88rem; }
.ath-facts dt { font-size: .75rem; font-weight: 600; color: var(--p-muted); }
.ath-facts dd { margin: 0; }
.ath-missing, .ath-complete { margin-top: 12px; padding: 8px 10px; border-radius: var(--p-radius-sm); font-size: .85rem; }
.ath-missing { background: var(--p-warn-tint); color: var(--p-ball-ink); }
.ath-complete { background: var(--p-court-tint); color: var(--p-court-dark); }
.ath-similar ul { padding-left: 1.1rem; font-size: .9rem; }
.ath-similar li.is-strong { font-weight: 600; }
.ath-similar { background: var(--p-warn-tint); }
.ath-actions { display: flex; gap: 8px; align-items: center; padding: 4px 0 24px; }
@media (max-width: 991.98px) {
  .ath-layout { grid-template-columns: minmax(0, 1fr); }
  .ath-aside { position: static; order: -1; }
  .ath-summary { display: grid; grid-template-columns: 96px minmax(0, 1fr); }
  .ath-photo { aspect-ratio: 1; border-bottom: 0; border-right: 1px solid var(--p-rule); }
  .ath-photo .bi { font-size: 2.4rem; }
  .ath-actions { position: sticky; bottom: 0; background: var(--p-paper); padding: 10px 0; border-top: 1px solid var(--p-rule); }
}

/* ---- Importar fichas de inscrição ------------------------------------- */
.fichas-drop {
  display: flex; flex-direction: column; align-items: center; gap: .25rem;
  padding: 2rem 1rem; border: 2px dashed var(--p-rule-strong); border-radius: var(--p-radius);
  background: var(--p-paper); text-align: center; cursor: pointer;
  transition: border-color .15s var(--p-ease), background .15s var(--p-ease);
}
.fichas-drop > .bi { font-size: 2rem; color: var(--p-court); }
.fichas-drop:hover, .fichas-drop.is-over, .fichas-drop:focus-within { border-color: var(--p-court); background: var(--p-court-tint); }
.fichas-drop.has-files { border-style: solid; }
.fichas-drop-title { font-weight: 600; color: var(--p-ink); }
.fichas-drop-hint { font-size: .85rem; color: var(--p-muted); }
.fichas-chosen li { padding: .15rem 0; overflow-wrap: anywhere; }
.fichas-kinds dt { font-weight: 600; margin-top: .5rem; }
.fichas-kinds dd { margin: 0; color: var(--p-muted); }

.fichas-group-head { display: flex; justify-content: space-between; align-items: flex-start; gap: .75rem; flex-wrap: wrap; }
.fichas-warnings { margin: 0; padding: .5rem 1rem .5rem 2rem; background: var(--p-warn-tint); border-bottom: 1px solid var(--p-rule); }
.fichas-settings { background: var(--p-paper); border-bottom: 1px solid var(--p-rule); }

.fichas-row {
  display: grid; grid-template-columns: 2rem 3.5rem 1fr 1fr 9.5rem minmax(12rem, 1.3fr);
  gap: .5rem; align-items: start; padding: .5rem 1rem; border-bottom: 1px solid var(--p-rule);
  border-left: 3px solid transparent;
}
.fichas-row-head { font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--p-muted); padding-block: .35rem; }
.fichas-row .fichas-label { display: none; }
.fichas-pick { padding-top: .35rem; }
.fichas-novo { border-left-color: var(--p-court); }
.fichas-existente { border-left-color: var(--p-blue); }
.fichas-parecido { border-left-color: var(--p-ball); }
.fichas-row.is-off, .fichas-official.is-off { opacity: .5; }
.fichas-badge-new { background: var(--p-court-tint); color: var(--p-court-dark); }
.fichas-hint { display: block; font-size: .75rem; color: var(--p-muted); margin-top: .2rem; }
.fichas-more { grid-column: 3 / -1; font-size: .8rem; }
.fichas-more summary { color: var(--p-muted); cursor: pointer; }
.fichas-facts { display: flex; flex-wrap: wrap; gap: .25rem 1rem; margin: .35rem 0 0; }
.fichas-facts dt { display: inline; font-weight: 600; color: var(--p-muted); }
.fichas-facts dt::after { content: ": "; }
.fichas-facts dd { display: inline; margin: 0; }
.fichas-officials { display: grid; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); gap: .75rem; }
.fichas-official { padding: .5rem .75rem; border: 1px solid var(--p-rule); border-radius: var(--p-radius-sm); background: var(--p-surface); }

.fichas-bar, .form-bar {
  position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: flex-end; gap: .5rem;
  padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom)); margin: 0 -1rem;
  background: var(--p-surface); border-top: 1px solid var(--p-rule); box-shadow: 0 -4px 12px rgba(13, 43, 34, .06);
}

@media (max-width: 767.98px) {
  .fichas-row { grid-template-columns: 2rem 3.25rem 1fr; padding-inline: .75rem; }
  .fichas-row-head { display: none; }
  .fichas-row > * { grid-column: 2 / -1; }
  .fichas-row > .fichas-pick { grid-column: 1; grid-row: 1; }
  .fichas-row > .fichas-num { grid-column: 2; grid-row: 1; }
  .fichas-row > .fichas-first { grid-column: 3; grid-row: 1; }
  .fichas-row .fichas-label { display: block; font-size: .7rem; color: var(--p-muted); margin-bottom: .1rem; }
  .fichas-pick { padding-top: 1.35rem; }
  .fichas-more { grid-column: 2 / -1; }
  .fichas-bar .btn-primary, .form-bar .btn-primary { flex: 1; }
}

/* ---- Ficha da equipa --------------------------------------------------- */
.tm-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.tm-id { display: flex; align-items: center; gap: 16px; min-width: 0; }
.tm-id-text { min-width: 0; }
.tm-id h1 { margin: 0; font-size: clamp(1.5rem, 4vw, 2.1rem); line-height: 1.05; overflow-wrap: anywhere; }
.tm-id p { margin: 2px 0 6px; color: var(--p-muted); }
.tm-id p a { color: inherit; }
.tm-tags { display: flex; flex-wrap: wrap; gap: 4px; }
.tm-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }

.tm-crest {
  position: relative; display: inline-grid; place-items: center; flex-shrink: 0;
  width: 36px; height: 36px; border-radius: 50%; overflow: hidden;
  background: var(--p-night-3); color: var(--p-ball);
  font-family: var(--p-display); font-weight: 700; font-size: .85rem; letter-spacing: .02em;
}
.tm-crest img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: var(--p-surface); }
.tm-crest-lg { width: 88px; height: 88px; font-size: 1.8rem; border-radius: var(--p-radius); box-shadow: var(--p-shadow); }

.tm-stats { display: grid; grid-template-columns: repeat(4, 1fr); margin-bottom: 16px; overflow: hidden; }
.tm-stats > div { padding: 12px 16px; border-left: 1px solid var(--p-rule); }
.tm-stats > div:first-child { border-left: 0; }
.tm-stats strong { display: block; font-family: var(--p-display); font-size: 1.7rem; line-height: 1; font-variant-numeric: tabular-nums; }
.tm-stats strong small { font-size: 1.1rem; color: var(--p-muted); padding: 0 1px; }
.tm-stats span { font-size: .8rem; color: var(--p-muted); }

.tm-games, .tm-roster { list-style: none; margin: 0; padding: 0; }
.tm-games > li + li, .tm-roster > li + li { border-top: 1px solid var(--p-rule); }
.tm-empty { padding: 16px; color: var(--p-muted); font-size: .9rem; }
.tm-game { display: block; padding: 10px 16px 12px; color: var(--p-ink); text-decoration: none; }
.tm-game:hover { background: var(--p-paper); color: var(--p-ink); }
.tm-game-meta { display: flex; align-items: center; gap: 8px; font-size: .75rem; color: var(--p-muted); margin-bottom: 6px; min-width: 0; }
.tm-game-comp { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }
.tm-outcome { flex-shrink: 0; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: .72rem; color: #fff; }
.tm-outcome-V { background: var(--p-court); }
.tm-outcome-D { background: var(--p-loss); }
.tm-game-row { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; max-width: 640px; margin: 0 auto; }
.tm-game-meta { max-width: 640px; margin-left: auto; margin-right: auto; }
.tm-side { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tm-side-away { justify-content: flex-end; text-align: right; }
.tm-side-name { font-weight: 500; font-size: .92rem; line-height: 1.2; overflow-wrap: anywhere; }
.tm-side.is-us .tm-side-name { font-weight: 700; }
.tm-score {
  font-family: var(--p-display); font-weight: 700; font-size: 1.35rem; font-variant-numeric: tabular-nums;
  padding: 2px 10px; border-radius: var(--p-radius-sm); background: var(--p-night); color: var(--p-ball); white-space: nowrap;
}
.tm-score i { font-style: normal; color: rgba(255, 255, 255, .5); padding: 0 3px; }
.tm-score-vs { background: var(--p-paper); color: var(--p-muted); font-size: 1rem; }
.tm-partials { display: flex; justify-content: center; flex-wrap: wrap; gap: 4px; margin-top: 6px; font-size: .75rem; color: var(--p-muted); font-variant-numeric: tabular-nums; }
.tm-partials span { padding: 1px 6px; border-radius: 4px; background: var(--p-paper); }
.tm-where { font-variant-numeric: normal; }

.tm-roster > li { display: grid; grid-template-columns: 2.5rem 1fr auto; align-items: center; gap: 8px; padding: 8px 16px; }
.tm-num { font-family: var(--p-display); font-weight: 700; font-size: 1.15rem; text-align: center; color: var(--p-court-dark); }
.tm-roster-name { font-weight: 500; min-width: 0; overflow-wrap: anywhere; }
.tm-roster-meta { font-size: .8rem; color: var(--p-muted); text-align: right; }

.tm-info { margin: 0; padding: 4px 16px 12px; }
.tm-info > div { padding: 8px 0; }
.tm-info > div + div { border-top: 1px solid var(--p-rule); }
.tm-info dt { font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--p-muted); }
.tm-info dd { margin: 2px 0 0; }

@media (max-width: 575.98px) {
  .tm-id { gap: 12px; }
  .tm-actions { width: 100%; }
  .tm-actions > .btn, .tm-actions > .dropdown { flex: 1; }
  .tm-actions > .dropdown > .btn { width: 100%; }
  .tm-actions > .btn-outline-danger { flex: 0 0 auto; }
  .tm-stats { grid-template-columns: repeat(2, 1fr); }
  .tm-stats > div:nth-child(3) { border-left: 0; }
  .tm-stats > div:nth-child(n+3) { border-top: 1px solid var(--p-rule); }
  .tm-game { padding-inline: 12px; }
  .tm-crest { width: 30px; height: 30px; font-size: .75rem; }
  .tm-crest.tm-crest-lg { width: 64px; height: 64px; font-size: 1.35rem; }
  .tm-side-name { font-size: .85rem; }
  .tm-score { font-size: 1.15rem; padding: 2px 8px; }
  .tm-roster > li { grid-template-columns: 2.25rem 1fr; padding-inline: 12px; }
  .tm-roster-meta { grid-column: 2; text-align: left; margin-top: -4px; }
}

/* ---- Contratos -------------------------------------------------------- */
.ctr-modes { display: inline-flex; padding: 3px; gap: 3px; background: var(--p-surface); border: 1px solid var(--p-rule); border-radius: 999px; }
.ctr-modes a { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: 999px; color: var(--p-muted); font-weight: 600; font-size: .9rem; text-decoration: none; }
.ctr-modes a:hover { color: var(--p-ink); background: var(--p-paper); }
.ctr-modes a.is-active { background: var(--p-night); color: #fff; }

.ctr-combo { position: relative; }
.ctr-combo-list { position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 4px); margin: 0; padding: 4px; list-style: none;
  background: var(--p-surface); border: 1px solid var(--p-rule); border-radius: var(--p-radius); box-shadow: var(--p-shadow-pop); max-height: 320px; overflow-y: auto; }
.ctr-combo-list li { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 8px 10px; border-radius: var(--p-radius-sm); cursor: pointer; }
.ctr-combo-list li small { color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ctr-combo-list li[aria-selected="true"], .ctr-combo-list li:hover { background: var(--p-court-tint); }
.ctr-combo-list li.is-empty { color: var(--p-muted); cursor: default; }
.ctr-athlete { margin-top: 8px; display: grid; gap: 4px; font-size: .88rem; }
.ctr-athlete-row .bi { color: var(--p-court); margin-right: 4px; }

.ctr-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ctr-chip { border: 1px solid var(--p-rule-strong); background: var(--p-surface); color: var(--p-ink); border-radius: 999px; padding: 4px 12px; font-size: .85rem; font-weight: 600; }
.ctr-chip:hover { border-color: var(--p-court); color: var(--p-court-dark); background: var(--p-court-tint); }
.ctr-chip-num { min-width: 2.4rem; padding: 3px 8px; font-variant-numeric: tabular-nums; }
.ctr-numbers { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.ctr-numbers .form-text { flex-basis: 100%; }
.ctr-numbers-label { font-size: .85rem; color: var(--p-muted); margin-right: 2px; }

.ctr-plan { background: var(--p-warn-tint); border-radius: var(--p-radius-sm); padding: 10px 12px; }
.ctr-plan-item { font-size: .92rem; }
.ctr-plan-item + .ctr-plan-item { margin-top: 4px; }
.ctr-plan-item .bi { color: var(--p-ball-ink); margin-right: 4px; }
.ctr-more summary { cursor: pointer; font-weight: 600; }

.ctr-summary-kicker { font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--p-muted); margin-bottom: 6px; }

/* Estado de um contrato (calculado pelas datas) */
.ctr-state { display: inline-flex; align-items: center; gap: 6px; padding: 2px 10px; border-radius: 999px; font-size: .8rem; font-weight: 700;
  background: var(--p-paper); color: var(--p-muted); }
.ctr-state:empty { display: none; }
.ctr-state::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.ctr-state[data-state="Em vigor"], .ctr-state.is-active { background: var(--p-court-tint); color: var(--p-court-dark); }
.ctr-state[data-state="Agendado"], .ctr-state.is-scheduled { background: #e3ebf7; color: var(--p-blue); }
.ctr-state[data-state="Suspenso"], .ctr-state.is-suspended { background: var(--p-warn-tint); color: var(--p-ball-ink); }
.ctr-state[data-state="Rescindido"], .ctr-state.is-ended_early { background: var(--p-loss-tint); color: var(--p-loss); }

/* Percurso (linha do tempo) */
.ctr-career { list-style: none; margin: 0; padding: 0; position: relative; }
.ctr-career::before { content: ""; position: absolute; left: 19px; top: 8px; bottom: 8px; width: 2px; background: var(--p-rule); }
.ctr-career li { position: relative; display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; gap: 12px; align-items: start; padding: 10px 0; }
.ctr-career-dot { width: 40px; height: 40px; border-radius: 50%; background: var(--p-surface); border: 2px solid var(--p-rule-strong); display: grid; place-items: center; overflow: hidden; position: relative; z-index: 1; }
.ctr-career-dot img { width: 100%; height: 100%; object-fit: contain; }
.ctr-career li.is-current .ctr-career-dot { border-color: var(--p-court); box-shadow: 0 0 0 3px var(--p-court-tint); }
.ctr-career li.is-this { background: var(--p-paper); border-radius: var(--p-radius); margin: 0 -8px; padding-left: 8px; padding-right: 8px; }
.ctr-career-team { font-weight: 700; }
.ctr-career-meta { font-size: .85rem; color: var(--p-muted); }
.ctr-career-tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }

.ctr-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.ctr-kpi { display: block; padding: 14px 16px; background: var(--p-surface); border: 1px solid var(--p-rule); border-radius: var(--p-radius); color: var(--p-ink); text-decoration: none; }
.ctr-kpi:hover { border-color: var(--p-court); }
.ctr-kpi.is-active { border-color: var(--p-court); box-shadow: inset 0 -3px 0 var(--p-court); }
.ctr-kpi b { display: block; font-family: var(--p-display); font-size: 1.9rem; line-height: 1; }
.ctr-kpi span { font-size: .85rem; color: var(--p-muted); }
.ctr-kpi.is-warn b { color: #9a6b00; }
@media (max-width: 767.98px) { .ctr-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ctr-days { font-size: .78rem; color: #9a6b00; font-weight: 600; }

/* Contrato passado: equipa da AVCM ou clube de fora */
.ctr-origin { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ctr-origin-opt { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border: 1px solid var(--p-rule-strong); border-radius: var(--p-radius); cursor: pointer; background: var(--p-surface); }
.ctr-origin-opt:has(input:checked) { border-color: var(--p-court); background: var(--p-court-tint); }
.ctr-origin-opt input { margin-top: 4px; accent-color: var(--p-court); }
.ctr-origin-opt b { display: block; }
.ctr-origin-opt small { color: var(--p-muted); }
#contractForm[data-origin="avcm"] .only-external { display: none !important; }
#contractForm[data-origin="external"] .only-avcm { display: none !important; }
.ctr-career-dot.is-external { background: var(--p-paper); color: var(--p-muted); font-weight: 700; font-size: .8rem; }

/* ---- Campeonatos externos (gestão) ------------------------------------ */
.tn-admin-quadros { display: flex; flex-wrap: wrap; gap: 6px; align-items: flex-start; }
.ctr-chip.is-active { background: var(--p-night); border-color: var(--p-night); color: #fff; }
.tn-admin-quadros a.ctr-chip { text-decoration: none; }
.tn-new-quadro { flex-basis: 100%; }
.tn-new-quadro > summary { list-style: none; display: inline-flex; gap: 6px; align-items: center; cursor: pointer; }
.tn-new-quadro > summary::-webkit-details-marker { display: none; }
.tn-new-quadro:not([open]) { flex-basis: auto; }
.tn-row { display: grid; gap: 8px; align-items: center; padding: 8px 16px; border-bottom: 1px solid var(--p-rule); }
.tn-row:last-child { border-bottom: 0; }
.tn-row-team { grid-template-columns: 4.8rem minmax(10rem, 2fr) 4.5rem minmax(7rem, 1fr) minmax(10rem, 1.6fr) auto; }
.tn-row-new { padding: 0; border: 0; }
.tn-row-match { grid-template-columns: 2rem minmax(12rem, 2fr) 3.6rem 9rem 6rem minmax(6rem, 1fr) minmax(10rem, 1.3fr) 3.5rem auto; }
.tn-row-match.tn-row-ko { grid-template-columns: 2.4rem minmax(22rem, 3fr) 9rem 6rem minmax(6rem, 1fr) minmax(9rem, 1.2fr) 3.5rem auto; }
.tn-row-match.is-done { background: #f6faf8; }
.tn-row-match.is-live { background: #fff5f3; }
.tn-row-actions { display: inline-flex; gap: 4px; justify-content: flex-end; white-space: nowrap; }
.tn-num { font-family: var(--p-display); font-weight: 700; color: var(--p-muted); text-align: center; }
.tn-teams { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.tn-ko { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 4px; }
.tn-origin { display: block; font-size: .75rem; color: var(--p-muted); }
.tn-state { font-family: var(--p-display); font-size: 1.1rem; text-align: center; }
.tn-sets { font-variant-numeric: tabular-nums; }
.tn-sub { font-size: .75rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--p-muted); background: var(--p-paper);
  margin: 0; padding: 6px 16px; border-bottom: 1px solid var(--p-rule); }
.tn-mini td, .tn-mini th { font-size: .85rem; padding: 4px 8px; }
@media (max-width: 1199.98px) {
  .tn-row-match, .tn-row-match.tn-row-ko { grid-template-columns: 2.4rem 1fr 1fr; }
  .tn-row-match .tn-teams { grid-column: 2 / -1; }
  .tn-row-match .tn-jor { grid-column: 1 / 2; }
  .tn-row-match .tn-date { grid-column: 2 / 3; }
  .tn-row-match .tn-local { grid-column: 1 / 3; }
  .tn-row-match .tn-sets { grid-column: 1 / 3; }
  .tn-row-match .tn-state { text-align: left; }
  .tn-row-match .tn-row-actions { grid-column: 1 / -1; }
}
@media (max-width: 767.98px) {
  .tn-row-team { grid-template-columns: 4.8rem 1fr 4.5rem; }
  .tn-row-team > select, .tn-row-team > input[name="origem"] { grid-column: 1 / -1; }
  .tn-row-team .tn-row-actions { grid-column: 1 / -1; }
}

/* Detalhes do quadro (cartão no topo, editável) */
.tn-quadro > details > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.tn-quadro > details > summary::-webkit-details-marker { display: none; }
.tn-quadro-facts { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: .8rem; color: var(--bs-secondary-color, #6c757d); }
.tn-quadro-facts > span + span::before { content: "·"; margin-right: 14px; margin-left: -8px; opacity: .6; }
.tn-quadro-toggle { pointer-events: none; }
.tn-quadro details[open] .when-closed, .tn-quadro details:not([open]) .when-open { display: none; }
.tn-quadro details[open] > summary { border-bottom: 1px solid var(--bs-border-color, #dee2e6); }
.tn-quadro-desc { border-top: 1px solid var(--bs-border-color, #dee2e6); }

/* Ordem no grupo e jornadas */
.tn-pos .form-select { padding-right: 1.6rem; font-weight: 700; font-family: var(--p-display); }
.tn-sub-note { font-weight: 400; letter-spacing: 0; text-transform: none; }
.tn-round-head { font-size: .78rem; font-weight: 700; color: var(--p-court-dark, #135c39); margin: 0; padding: 6px 16px; border-bottom: 1px solid var(--p-rule); background: #fbfcfb; }
.tn-code { display: inline-block; font-family: var(--p-display); font-size: .72rem; font-weight: 700; color: var(--p-muted); border: 1px solid var(--p-rule-strong, #cfd9d3); border-radius: 4px; padding: 0 4px; line-height: 1.4; }
.tn-jor { text-align: center; }

/* Eliminatórias: assistente e nomes dos jogos (QF1, MF2…) */
.tn-label { display: block; font-size: .68rem; color: var(--p-court-dark, #135c39); font-family: var(--p-display); letter-spacing: .02em; }
.tn-ko-builder { border-bottom: 1px solid var(--p-rule); background: #fbfcfb; }
.tn-plan { margin-top: 10px; }
.tn-plan-list { margin: 0; padding-left: 1.2rem; columns: 2 18rem; font-size: .85rem; }
.tn-plan-list li { break-inside: avoid; padding: 1px 0; }
