/* Présentation de l'application : console dense et lisible, sur Bootstrap 5.3 seul.
   Chargée après vendors/bootstrap/bootstrap.min.css. Couleurs : uniquement dans le bloc
   « Thème » ci-dessous (changer la couleur principale = changer --app-primary et ses nuances). */

/* ========================================================================== */
/*  Thème                                                                      */
/* ========================================================================== */
:root {
  /* Couleurs du Comité de Basket de l'Oise : noir et orange.
     --app-primary : orange des accents (filets, onglet actif, focus) ;
     --app-ink : noir des boutons principaux et des titres ;
     --app-link : orange foncé lisible pour les liens et textes d'action. */
  --app-primary: #ea6a12;
  --app-primary-rgb: 234, 106, 18;
  --app-primary-hover: #d25c0c;
  --app-primary-active: #b44e0a;
  --app-primary-300: #f5a66d;
  --app-primary-200: #f9caa5;
  --app-primary-100: #fde9d9;
  --app-primary-soft: #fff7f0;
  --app-ink: #1c1c1f;
  --app-ink-hover: #3a3a40;
  --app-link: #c2410c;
  --app-link-hover: #9a3412;

  /* États */
  --app-success: #25b003;
  --app-warning: #e5780b;
  --app-danger: #ed2000;
  --app-info: #0097eb;

  /* Gris (texte, filets, fonds) */
  --app-text: #222834;
  --app-text-2: #525b75;      /* liens du menu, en-têtes de tableau */
  --app-muted: #6e7891;       /* libellés, fil d'Ariane */
  --app-faint: #8a94ad;       /* icône d'aide */
  --app-line: #e3e6ed;        /* filets internes */
  --app-line-strong: #cbd0dd; /* bords du menu, de la barre du haut, des champs */
  --app-row-line: #f0f2f6;
  --app-bg: #f5f7fa;          /* fond des pages */
  --app-surface: #fff;        /* cartes, menu, barre du haut */

  /* Dimensions */
  --app-topbar-height: 4rem;
  --app-sidebar-width: 254px;
  --app-gap: .75rem;
  --app-radius: .375rem;
  --app-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans",
              "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";

  /* Bootstrap : variables reprises du thème */
  --bs-primary: var(--app-primary);
  --bs-primary-rgb: var(--app-primary-rgb);
  --bs-link-color: var(--app-link);
  --bs-link-color-rgb: 194, 65, 12;
  --bs-link-hover-color: var(--app-link-hover);
  --bs-link-hover-color-rgb: 154, 52, 18;
  --bs-body-font-family: var(--app-font);
  --bs-body-font-size: .875rem;
  --bs-body-color: var(--app-text);
  --bs-body-bg: var(--app-surface); /* fenêtres, menus déroulants, champs ; fond de page : body */
  --bs-border-color: var(--app-line);
  --bs-success: var(--app-success);
  --bs-success-rgb: 37, 176, 3;
  --bs-warning: var(--app-warning);
  --bs-warning-rgb: 229, 120, 11;
  --bs-danger: var(--app-danger);
  --bs-danger-rgb: 237, 32, 0;
  --bs-info: var(--app-info);
  --bs-info-rgb: 0, 151, 235;
  --bs-secondary-rgb: 179, 186, 203;
}

body {
  font-size: .875rem;
  line-height: 1.49;
  color: var(--app-text);
  background: var(--app-bg);
}
a {
  text-decoration: none;
}
code {
  color: #b81800;
}

/* ========================================================================== */
/*  Cadre : barre du haut, menu de gauche, contenu, pied de page              */
/* ========================================================================== */
.app-topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1030;
  display: flex;
  align-items: center;
  height: var(--app-topbar-height);
  padding: 0 2.5rem 0 1.5rem;
  background: var(--app-surface);
  border-bottom: 1px solid var(--app-line-strong);
}
.app-brand {
  display: flex;
  align-items: center;
  gap: .6rem;
  width: calc(var(--app-sidebar-width) - 1.5rem);
  flex-shrink: 0;
  color: var(--app-ink);
  font-size: 1.25rem;
  font-weight: 700;
  letter-spacing: .01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.app-brand img {
  width: auto;
  height: auto;
  max-width: 170px;
  max-height: 40px;
}
.app-brand:hover {
  color: var(--app-ink);
}
.app-brand-text {
  display: flex;
  flex-direction: column;
  line-height: 1.1;
  font-size: .95rem;
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.app-brand-text small {
  color: var(--app-primary);
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
}
.app-menu-toggle {
  display: none;
  margin-right: .5rem;
  padding: .25rem .5rem;
  border: 0;
  background: none;
  color: var(--app-text-2);
  font-size: 1.4rem;
  line-height: 1;
}

/* Fil d'Ariane de la barre du haut */
.app-breadcrumb {
  padding-left: 1rem;
}
.app-breadcrumb .breadcrumb {
  margin: 0;
  font-size: .8125rem;
  font-weight: 700;
}
.app-breadcrumb .breadcrumb-item + .breadcrumb-item::before {
  content: "›";
  color: var(--app-muted);
}
.app-breadcrumb .breadcrumb-item,
.app-breadcrumb .breadcrumb a {
  color: var(--app-muted);
}
.app-breadcrumb .breadcrumb a:hover {
  color: var(--app-link);
}
.app-breadcrumb .breadcrumb-item.active {
  color: var(--app-text);
  font-weight: 600;
}

/* Menu de gauche : rubriques repliables (une ouverte à la fois), entrées en retrait */
.app-sidebar {
  position: fixed;
  top: var(--app-topbar-height);
  bottom: 0;
  left: 0;
  z-index: 1020;
  width: var(--app-sidebar-width);
  overflow-y: auto;
  padding: 1rem 0;
  background: var(--app-surface);
  border-right: 1px solid var(--app-line-strong);
}
.app-nav {
  list-style: none;
  margin: 0;
  padding: 0;
}
.app-nav-link {
  position: relative;
  display: flex;
  align-items: center;
  width: calc(100% - 1.5rem);
  margin: 0 .75rem 2px;
  padding: .35rem .5rem .35rem 1.75rem;
  border: 0;
  border-radius: .5rem;
  background: none;
  color: var(--app-text-2);
  font-size: .8125rem;
  font-weight: 500;
  text-align: left;
}
.app-nav-link:hover {
  background: var(--app-bg);
  color: var(--app-text);
}
.app-nav-link .bi {
  width: 1rem;
  margin-right: .625rem;
  font-size: 1rem;
  line-height: 1;
  text-align: center;
}
/* Triangle des rubriques repliables */
.app-nav-link[data-bs-toggle]::before {
  content: "";
  position: absolute;
  left: .85rem;
  top: 50%;
  border-style: solid;
  border-width: .25rem 0 .25rem .3rem;
  border-color: transparent transparent transparent currentColor;
  transform: translateY(-50%);
  transition: transform .15s;
  opacity: .7;
}
.app-nav-link[data-bs-toggle][aria-expanded="true"]::before {
  transform: translateY(-50%) rotate(90deg);
}
.app-nav-link.active {
  font-weight: 700;
  color: var(--app-text);
}
.app-subnav {
  list-style: none;
  margin: 0;
  padding: 0;
}
.app-subnav .app-nav-link {
  padding-left: 4.25rem;
}
.app-subnav .app-nav-link.active {
  color: var(--app-link);
  font-weight: 700;
}

.app-content {
  min-height: 100vh;
  margin-left: var(--app-sidebar-width);
  padding: calc(var(--app-topbar-height) + 1.125rem) 2.5rem 4rem;
  position: relative;
}
.app-footer {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 2rem;
  padding: 0 2.5rem;
  background: var(--app-surface);
  border-top: 1px solid var(--app-line-strong);
  color: var(--app-faint);
  font-size: .8125rem;
}

/* Écran étroit : menu en panneau coulissant (offcanvas Bootstrap) */
@media (max-width: 991.98px) {
  .app-menu-toggle {
    display: block;
  }
  .app-brand {
    width: auto;
  }
  .app-topbar {
    padding: 0 1rem;
  }
  .app-sidebar.offcanvas-lg {
    top: 0;
    padding-top: 1rem;
  }
  .app-content {
    margin-left: 0;
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .app-footer {
    padding: 0 1rem;
  }
}
@media (min-width: 992px) {
  .app-sidebar.offcanvas-lg {
    visibility: visible;
    transform: none;
  }
}

/* Messages après une action (session : errors / infos) */
.app-alert {
  margin-bottom: var(--app-gap);
  padding: .6rem 1rem;
  font-size: .8125rem;
  border-radius: var(--app-radius);
}
.app-alert ul {
  margin: 0;
  padding-left: 1.1rem;
}
.app-alert-danger {
  background: #ffe0db;
  border: 1px solid #fabcb3;
  color: #b81800;
}
.app-alert-success {
  background: #d9fbd0;
  border: 1px solid #bee8b4;
  color: #1c6c09;
}

/* ========================================================================== */
/*  En-tête de page                                                            */
/* ========================================================================== */
.page-header {
  margin-bottom: var(--app-gap);
}
.page-header-title {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--app-text);
}
.page-header-subtitle {
  color: var(--app-muted);
  font-size: .8125rem;
}

/* ========================================================================== */
/*  Une page = une carte (sw-sheet), avec ou sans onglets (sw-tabs)           */
/* ========================================================================== */
.sw-sheet {
  background: var(--app-surface);
  border: 1px solid var(--app-line);
  border-radius: var(--app-radius);
}
.sw-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1.5rem;
  padding: 0 1rem;
  border-bottom: 1px solid var(--app-line);
}
.sw-tabs a {
  margin-bottom: -1px;
  padding: .6rem 0 .5rem;
  border-bottom: 2px solid transparent;
  color: var(--app-muted);
  font-size: .8125rem;
  font-weight: 600;
}
.sw-tabs a:hover {
  color: var(--app-text);
}
.sw-tabs a.active {
  color: var(--app-ink);
  border-bottom-color: var(--app-primary);
}
.sw-sheet-body {
  padding: 1.25rem 1.5rem 1.5rem;
}

/* Blocs d'une carte : sans cadre, titre sur un filet gris avec un court accent bleu */
.sw-card {
  height: 100%;
}
.sw-card-row > [class*="col"] > .sw-card:not(:only-child) {
  height: auto;
}
.sw-card-header {
  position: relative;
  display: flex;
  align-items: center;
  gap: .5rem;
  min-height: 2rem;
  margin-bottom: .6rem;
  padding-bottom: .3rem;
  border-bottom: 1px solid var(--app-line);
}
.sw-card-header::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: 2.5rem;
  height: 2px;
  background: var(--app-primary);
}
.sw-card-row {
  --bs-gutter-x: 3rem;
  --bs-gutter-y: 2rem;
}
.sw-card-row + .sw-card,
.sw-card + .sw-card,
.sw-card + .sw-card-row,
.sw-card-row + .sw-card-row {
  margin-top: 2rem;
}
.section-title {
  flex-grow: 1;
  margin: 0;
  color: var(--app-ink);
  font-size: .8125rem;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
}
.sw-card-meta {
  min-width: 0;
  margin-left: auto;
  color: var(--app-muted);
  font-size: .75rem;
  text-align: right;
}

/* Carte ou onglet à un seul bloc : pas de titre ; barre d'outils (recherche à gauche en me-auto) */
.sw-toolbar {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: .25rem;
  margin-bottom: .75rem;
}

/* Paramètres : libellé / valeur */
.sw-fields {
  width: 100%;
  font-size: .8125rem;
}
.sw-fields td {
  padding: .2rem 0;
  vertical-align: top;
}
.sw-fields td:first-child {
  width: 1%;
  padding-right: 2rem;
  color: var(--app-muted);
  white-space: nowrap;
}
.sw-fields td:last-child {
  font-weight: 600;
}

/* Tableaux de données compacts */
.sw-table {
  width: 100%;
  margin: 0;
  font-size: .8125rem;
}
.sw-table > thead th {
  padding: .35rem .5rem;
  background: var(--app-primary-soft);
  border-bottom: 1px solid var(--app-primary-100);
  color: var(--app-text-2);
  font-size: .75rem;
  font-weight: 600;
  vertical-align: bottom;
}
.sw-table > tbody td {
  padding: .3rem .5rem;
  border-bottom: 1px solid var(--app-row-line);
  vertical-align: middle;
}
.sw-table > tbody tr:last-child td {
  border-bottom: 0;
}
.sw-table > tbody tr:hover td {
  background: #fbfaf8;
}
.sw-table > tbody tr.sw-row-total td {
  border-top: 1px solid var(--app-line);
  background: #f6f8fb;
}
.sw-table.sw-nowrap th,
.sw-table.sw-nowrap td {
  white-space: nowrap;
}
.sw-table.sw-nowrap .text-wrap {
  white-space: normal;
}
.sw-empty {
  color: var(--app-muted);
  font-size: .8125rem;
}

/* Pastille d'état : <span class="sw-dot bg-success"> */
.sw-dot {
  display: inline-block;
  width: .85rem;
  height: .85rem;
  border-radius: 50%;
  vertical-align: middle;
}
.sw-dot.bg-secondary {
  background-color: #b3bacb !important;
}

/* Bouton d'action d'une ligne (icône seule) */
.sw-icon-btn {
  padding: .1rem .3rem;
  font-size: .8125rem;
  line-height: 1;
}

/* Tuiles de chiffres clés (tableau de bord) */
.sw-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: var(--app-gap);
}
.sw-kpi {
  display: flex;
  flex-direction: column;
  min-height: 6.5rem;
  padding: .9rem 1rem .8rem;
  border: 1px solid var(--app-line);
  border-radius: .5rem;
  background: var(--app-surface);
  color: var(--app-text);
}
a.sw-kpi:hover {
  color: var(--app-text);
  box-shadow: 0 .25rem .75rem rgba(34, 40, 52, .08);
}
.sw-kpi-label {
  color: var(--app-muted);
  font-size: .8rem;
  font-weight: 600;
}
.sw-kpi-value {
  margin-top: .35rem;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.sw-kpi-sub {
  margin-top: auto;
  padding-top: .3rem;
  color: var(--app-muted);
  font-size: .8rem;
}

/* ========================================================================== */
/*  Boutons et badges                                                          */
/* ========================================================================== */
.btn {
  --bs-btn-font-size: .8125rem;
  --bs-btn-font-weight: 700;
  --bs-btn-border-radius: var(--app-radius);
}
.btn-sm {
  --bs-btn-padding-y: .25rem;
  --bs-btn-padding-x: .6rem;
  --bs-btn-font-size: .75rem;
}
.btn-primary {
  --bs-btn-bg: var(--app-ink);
  --bs-btn-border-color: var(--app-ink);
  --bs-btn-hover-bg: var(--app-primary-active);
  --bs-btn-hover-border-color: var(--app-primary-active);
  --bs-btn-active-bg: var(--app-primary-active);
  --bs-btn-active-border-color: var(--app-primary-active);
  --bs-btn-disabled-bg: var(--app-ink);
  --bs-btn-disabled-border-color: var(--app-ink);
  --bs-btn-focus-shadow-rgb: var(--app-primary-rgb);
}
.btn-outline-primary {
  --bs-btn-color: var(--app-ink);
  --bs-btn-border-color: var(--app-ink);
  --bs-btn-hover-bg: var(--app-ink);
  --bs-btn-hover-border-color: var(--app-ink);
  --bs-btn-active-bg: var(--app-primary-active);
  --bs-btn-active-border-color: var(--app-primary-active);
  --bs-btn-focus-shadow-rgb: var(--app-primary-rgb);
}
/* Bouton discret des en-têtes de page et de bloc (Modifier, Nouveau…) */
.btn-soft {
  --bs-btn-color: var(--app-link);
  --bs-btn-bg: var(--app-bg);
  --bs-btn-border-color: var(--app-line);
  --bs-btn-hover-color: var(--app-link-hover);
  --bs-btn-hover-bg: var(--app-line);
  --bs-btn-hover-border-color: var(--app-line);
  --bs-btn-active-color: var(--app-link);
  --bs-btn-active-bg: var(--app-line);
  --bs-btn-active-border-color: var(--app-line);
  --bs-btn-focus-shadow-rgb: var(--app-primary-rgb);
}
.btn-soft-danger {
  --bs-btn-color: #b81800;
  --bs-btn-bg: var(--app-bg);
  --bs-btn-border-color: var(--app-line);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--app-danger);
  --bs-btn-hover-border-color: var(--app-danger);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #b81800;
  --bs-btn-active-border-color: #b81800;
}
.btn-link {
  --bs-btn-color: var(--app-link);
  --bs-btn-hover-color: var(--app-link-hover);
  --bs-btn-active-color: var(--app-link-hover);
}

/* Badge clair à bordure : <span class="badge badge-soft badge-soft-success">Actif</span> */
.badge-soft {
  padding: 2px 8px;
  border: 1px solid;
  border-radius: 4px;
  font-size: .609rem;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
  vertical-align: middle;
}
.badge-soft-primary   { background: var(--app-primary-100); color: var(--app-primary-active); border-color: var(--app-primary-200); }
.badge-soft-success   { background: #d9fbd0; color: #1c6c09; border-color: #bee8b4; }
.badge-soft-warning   { background: #ffefca; color: #bc3803; border-color: #ffcc85; }
.badge-soft-danger    { background: #ffe0db; color: #b81800; border-color: #fabcb3; }
.badge-soft-info      { background: #c7ebff; color: #005585; border-color: #96d9ff; }
.badge-soft-secondary { background: var(--app-line); color: #141824; border-color: var(--app-line-strong); }

/* ========================================================================== */
/*  Formulaires et fenêtres de modification                                    */
/* ========================================================================== */
.form-label {
  margin-bottom: .2rem;
  color: var(--app-text);
  font-size: .75rem;
  font-weight: 600;
}
.form-control,
.form-select {
  padding-top: .3rem;
  padding-bottom: .3rem;
  border-color: var(--app-line-strong);
  border-radius: var(--app-radius);
  color: var(--app-text);
  font-size: .8125rem;
  line-height: 1.4;
}
.form-control {
  padding-left: .6rem;
  padding-right: .6rem;
}
.form-select {
  padding-left: .6rem;
  background-position: right .6rem center;
}
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: var(--app-primary-300);
  box-shadow: 0 0 0 .2rem rgba(var(--app-primary-rgb), .15);
}
.form-check-input:checked {
  background-color: var(--app-primary);
  border-color: var(--app-primary);
}
.form-check-label {
  font-size: .8125rem;
}
.form-text {
  font-size: .75rem;
}

/* Formulaire en lignes : libellé à gauche, champ à droite à la largeur de son contenu */
.sw-form-row {
  display: grid;
  grid-template-columns: 12rem 1fr;
  align-items: center;
  gap: .75rem;
  padding: .3rem 0;
}
.sw-form-row > .form-label {
  margin: 0;
}
.sw-form-row + .sw-form-row {
  border-top: 1px solid var(--app-row-line);
}
.sw-form-section {
  margin: .75rem 0 .25rem;
  color: var(--app-muted);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .02em;
  text-transform: uppercase;
}
.sw-form-section:first-child {
  margin-top: 0;
}
.sw-form-narrow .sw-form-row {
  grid-template-columns: 9.5rem 1fr;
}
.sw-input-xs { max-width: 6rem; }
.sw-input-sm { max-width: 10rem; }
.sw-input-md { max-width: 18rem; }
@media (max-width: 575.98px) {
  .sw-form-row {
    grid-template-columns: 1fr;
    gap: .25rem;
  }
}

.modal-content {
  border: 0;
  border-radius: var(--app-radius);
  box-shadow: 0 .5rem 1.5rem rgba(36, 40, 46, .18);
}
.modal-header {
  padding: .6rem 1rem;
  border-bottom-color: var(--app-line);
}
.modal-title {
  color: #3e465b;
  font-size: .9375rem;
  font-weight: 700;
}
.modal-body {
  padding: .9rem 1rem;
}
.modal-footer {
  padding: .5rem 1rem;
  border-top-color: var(--app-line);
}
.modal-footer .btn {
  padding: .35rem .9rem;
}

/* ========================================================================== */
/*  Aide : icône « ? » (helper help()) et sa bulle                            */
/* ========================================================================== */
.help-tip {
  display: inline-flex;
  align-items: center;
  padding: 0 .25rem;
  border: 0;
  background: none;
  color: var(--app-faint);
  font-size: .8125rem;
  line-height: 1;
  vertical-align: middle;
  cursor: help;
}
.help-tip:hover,
.help-tip:focus-visible,
.help-tip[aria-describedby] {
  color: var(--app-link);
}
h1 .help-tip,
h2 .help-tip {
  font-size: .9375rem;
}
.help-popover {
  --bs-popover-max-width: 26rem;
  --bs-popover-border-color: transparent;
  --bs-popover-font-size: .8125rem;
  box-shadow: 0 .5rem 1.5rem rgba(36, 40, 46, .18);
  line-height: 1.55;
}
.help-popover .popover-header {
  background: none;
  border-bottom: 1px solid var(--app-line);
  font-size: .8125rem;
  font-weight: 700;
}
.help-popover .popover-body {
  color: #31374a;
}
.help-popover .popover-body > :last-child { margin-bottom: 0; }
.help-popover p { margin-bottom: .5rem; }
.help-popover ul { margin-bottom: .5rem; padding-left: 1.1rem; }
.help-popover li + li { margin-top: .2rem; }
.help-popover code { font-size: .75rem; }

/* ========================================================================== */
/*  Divers                                                                     */
/* ========================================================================== */
/* Avatar : initiales sur un rond de couleur (helper avatar()) */
.sw-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 50%;
  color: #fff;
  font-weight: 600;
  letter-spacing: .02em;
  line-height: 1;
  user-select: none;
}
.sw-avatar-m { width: 36px; height: 36px; font-size: .875rem; }
.sw-avatar-l { width: 56px; height: 56px; font-size: 1.25rem; }
.sw-avatar-c0 { background: #c2410c; }
.sw-avatar-c1 { background: #1c1c1f; }
.sw-avatar-c2 { background: #2f7d6d; }
.sw-avatar-c3 { background: #7a5ba6; }
.sw-avatar-c4 { background: #b5642d; }
.sw-avatar-c5 { background: #5c6b80; }
.app-user-menu {
  min-width: 15rem;
  font-size: .8125rem;
}

/* Page de connexion (layout visitor) */
.app-visitor {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 1rem;
}
.app-visitor-box {
  width: 100%;
  max-width: 24rem;
}
.app-visitor-brand {
  margin-bottom: 1.5rem;
  color: var(--app-ink);
  font-size: 1.5rem;
  font-weight: 700;
  text-align: center;
}

/* ========================================================================== */
/*  Compléments CDO                                                            */
/* ========================================================================== */
.app-alert-warning {
  background: #fff4e5;
  border: 1px solid #ffd8a8;
  color: #9a3412;
}
.app-alert-info {
  background: var(--app-primary-soft);
  border: 1px solid var(--app-primary-100);
  color: var(--app-text);
}
.app-season {
  padding: .2rem .6rem;
  border: 1px solid var(--app-line);
  border-radius: 1rem;
  background: var(--app-bg);
  color: var(--app-text-2);
  font-size: .75rem;
  font-weight: 700;
  white-space: nowrap;
}
.app-season-past {
  background: #fff4e5;
  border-color: #ffd8a8;
  color: #9a3412;
}
.app-visitor-title {
  margin-top: .75rem;
  font-size: 1rem;
  font-weight: 700;
}
.app-topbar {
  border-bottom: 3px solid var(--app-primary);
}

/* Filtres au-dessus d'une liste */
.sw-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: .5rem .75rem;
  margin-bottom: .9rem;
  padding-bottom: .75rem;
  border-bottom: 1px solid var(--app-line);
}
.sw-filters .form-label {
  margin-bottom: .1rem;
  color: var(--app-muted);
  font-size: .6875rem;
  text-transform: uppercase;
  letter-spacing: .02em;
}
.sw-filters .form-control,
.sw-filters .form-select {
  font-size: .78rem;
  padding-top: .2rem;
  padding-bottom: .2rem;
}
.sw-count {
  color: var(--app-muted);
  font-size: .75rem;
}

/* Montants alignés */
.sw-amount {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sw-negative { color: #b81800; }
.sw-positive { color: #1c6c09; }
.sw-muted { color: var(--app-muted); }
.sw-small { font-size: .75rem; }

/* Tuile de chiffre clé en alerte */
.sw-kpi-alert .sw-kpi-value { color: #b81800; }
.sw-kpi-warn .sw-kpi-value { color: #c2410c; }
.sw-kpi-ok .sw-kpi-value { color: #1c6c09; }
.sw-kpis + .sw-sheet,
.sw-kpis + .sw-card-row,
.sw-sheet + .sw-sheet {
  margin-top: var(--app-gap);
}

/* Fil des commentaires d'une rencontre */
.sw-comments {
  list-style: none;
  margin: 0 0 .75rem;
  padding: 0;
}
.sw-comment {
  padding: .5rem .75rem;
  border-left: 3px solid var(--app-line-strong);
  background: var(--app-bg);
  border-radius: 0 var(--app-radius) var(--app-radius) 0;
  font-size: .8125rem;
}
.sw-comment + .sw-comment { margin-top: .4rem; }
.sw-comment-committee { border-left-color: var(--app-ink); }
.sw-comment-club { border-left-color: var(--app-primary); }
.sw-comment-referee { border-left-color: #2f7d6d; }
.sw-comment-system { border-left-color: var(--app-faint); color: var(--app-muted); font-style: italic; }
.sw-comment-meta {
  margin-bottom: .15rem;
  color: var(--app-muted);
  font-size: .72rem;
}
.sw-comment-body { white-space: pre-line; }

/* Encadré d'une étape ou d'un état important dans une fiche */
.sw-callout {
  margin-bottom: 1rem;
  padding: .6rem .9rem;
  border: 1px solid var(--app-line);
  border-left: 3px solid var(--app-primary);
  border-radius: var(--app-radius);
  background: var(--app-primary-soft);
  font-size: .8125rem;
}
.sw-callout-danger { border-left-color: var(--app-danger); background: #fff5f3; }
.sw-callout-success { border-left-color: var(--app-success); background: #f3fdf0; }
.sw-callout .btn { margin-top: .35rem; }

/* Import : changements d'une ligne */
.sw-changes {
  margin: 0;
  padding-left: 1rem;
  font-size: .75rem;
}
.sw-changes li.text-danger,
.sw-changes li.text-warning { list-style: square; }
.sw-preview-sample td {
  max-width: 14rem;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sw-steps {
  display: flex;
  gap: 1.5rem;
  margin-bottom: 1rem;
  color: var(--app-muted);
  font-size: .78rem;
  font-weight: 700;
}
.sw-steps .done { color: var(--app-text-2); }
.sw-steps .current { color: var(--app-ink); border-bottom: 2px solid var(--app-primary); }

/* Lignes cliquables */
tr[data-href] { cursor: pointer; }

/* Formulaire de modal avec cases par arbitre */
.sw-check-grid {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: .25rem 1rem;
  align-items: center;
}
code.sw-iban {
  color: var(--app-text);
  font-size: .8rem;
  letter-spacing: .02em;
}
@media print {
  .app-topbar, .app-sidebar, .app-footer, .sw-toolbar, .sw-filters, .btn { display: none !important; }
  .app-content { margin: 0; padding: 0; }
}
