/* ==========================================================================
   OFP Badminton — Identité visuelle
   ========================================================================== */

:root {
    --bleu-marine: #1a2a6c;
    --rouge-ofp: #e30613;
    --or-ofp: #f5c518;
    --blanc: #ffffff;
    --gris-clair: #f4f6f8;
    --gris-texte: #555555;
    --vert-succes: #28a745;
    --orange-attente: #fd7e14;
    --font-titre: 'Montserrat', system-ui, sans-serif;
    --font-texte: 'Open Sans', system-ui, sans-serif;
    --shadow: 0 2px 12px rgba(26, 42, 108, 0.12);
    --transition: 0.2s ease;
}

*, *::before, *::after {
    box-sizing: border-box;
}

body {
    font-family: var(--font-texte);
    margin: 0;
    padding: 0;
    color: #1a1a1a;
    line-height: 1.6;
    background: var(--blanc);
}

a {
    color: var(--bleu-marine);
}

h1, h2, h3, h4, legend {
    font-family: var(--font-titre);
}

/* --------------------------------------------------------------------------
   Header public
   -------------------------------------------------------------------------- */

.site-header {
    background: var(--bleu-marine);
    padding: 0.75rem 1.5rem;
}

.header-inner {
    max-width: 960px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 1rem;
}

.logo-ofp {
    height: 55px;
    width: auto;
}

.header-titles h1 {
    margin: 0;
    color: var(--blanc);
    font-size: 1.5rem;
    font-weight: 700;
}

.header-subtitle {
    margin: 0;
    color: var(--or-ofp);
    font-size: 0.95rem;
    font-weight: 600;
}

main:not(.admin-main-wrapper) {
    max-width: 960px;
    margin: 0 auto;
    padding: 1.5rem;
}

body.login-body main {
    max-width: none;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    min-height: calc(100vh - 2rem);
    background: var(--gris-clair);
}

/* --------------------------------------------------------------------------
   Utilitaires
   -------------------------------------------------------------------------- */

.hidden { display: none !important; }

.text-warning { color: var(--orange-attente); }
.text-success { color: var(--vert-succes); }

.erreurs,
.alert-error {
    background: #fde8ea;
    border: 1px solid var(--rouge-ofp);
    color: #9b0000;
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: 6px;
}

.alert-success {
    background: #e8f5e9;
    border: 1px solid var(--vert-succes);
    color: #1b5e20;
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: 6px;
}

.alert-warning {
    background: #fff3e0;
    border: 1px solid var(--orange-attente);
    color: #bf360c;
    padding: 1rem;
    margin-bottom: 1rem;
    border-radius: 6px;
}

.meta {
    color: var(--gris-texte);
    font-size: 0.9rem;
    margin-bottom: 1rem;
}

.empty-state {
    text-align: center;
    color: var(--gris-texte);
    padding: 2rem;
}

/* --------------------------------------------------------------------------
   Boutons
   -------------------------------------------------------------------------- */

.btn {
    display: inline-block;
    padding: 0.55rem 1.1rem;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.95rem;
    font-family: var(--font-texte);
    text-decoration: none;
    text-align: center;
    transition: background var(--transition), transform var(--transition);
    font-weight: 600;
}

.btn:hover { transform: translateY(-1px); }

.btn-primary,
.btn-submit {
    background: var(--rouge-ofp);
    color: var(--blanc);
}

.btn-primary:hover,
.btn-submit:hover {
    background: var(--bleu-marine);
}

.btn-secondary {
    background: var(--gris-clair);
    color: #333;
    border: 1px solid #ccc;
}

.btn-secondary:hover { background: #e0e4ea; }

.btn-success, .btn-valider {
    background: var(--vert-succes);
    color: var(--blanc);
}

.btn-success:hover, .btn-valider:hover {
    background: #218838;
}

.btn-danger, .btn-refuser {
    background: var(--rouge-ofp);
    color: var(--blanc);
}

.btn-danger:hover, .btn-refuser:hover {
    background: #b8050f;
}

.btn-paiement {
    background: var(--bleu-marine);
    color: var(--blanc);
}

.btn-paiement:hover { background: #12204f; }

.btn-modifier {
    background: var(--or-ofp);
    color: #1a1a1a;
}

.btn-modifier:hover { background: #ddb014; }

.btn-sm { padding: 0.35rem 0.75rem; font-size: 0.85rem; }
.btn-block { display: block; width: 100%; }
.btn-link {
    background: transparent;
    color: var(--bleu-marine);
    padding: 0.25rem 0.5rem;
    font-weight: 600;
}

.inline-form { display: inline; }

/* --------------------------------------------------------------------------
   Badges statuts
   -------------------------------------------------------------------------- */

.badge {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    border-radius: 20px;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--blanc);
}

.badge-lg { font-size: 0.85rem; padding: 0.35rem 0.9rem; }

.badge-en_attente { background: var(--orange-attente); }
.badge-valide { background: var(--vert-succes); }
.badge-refuse { background: var(--rouge-ofp); }

.badge-paiement-non_paye { background: var(--rouge-ofp); }
.badge-paiement-partiel { background: var(--orange-attente); }
.badge-paiement-solde { background: var(--vert-succes); }
.badge-paiement-confirme { background: var(--vert-succes); color: var(--blanc); }
.badge-paiement-intention { background: var(--orange-attente); color: var(--blanc); }

.badge-officiel-valide { background: var(--vert-succes); }
.badge-officiel-refuse { background: var(--rouge-ofp); }
.badge-officiel-attente { background: var(--orange-attente); }

/* --------------------------------------------------------------------------
   Formulaire public
   -------------------------------------------------------------------------- */

h2 {
    color: var(--bleu-marine);
    border-left: 4px solid var(--rouge-ofp);
    padding-left: 12px;
    margin-top: 0;
}

fieldset {
    margin-bottom: 1.5rem;
    padding: 1rem 1.25rem;
    border: 1px solid #e0e4ea;
    border-radius: 8px;
    background: var(--blanc);
}

.form-inscription fieldset + fieldset {
    margin-top: 0.25rem;
}

fieldset.fieldset-optional {
    border-style: dashed;
    background: #fafbfd;
}

fieldset.fieldset-optional legend {
    font-weight: 600;
}

.form-subsection {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid #e8ecf2;
}

.form-subsection:first-child {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

.form-subsection h4 {
    margin: 0 0 0.5rem;
    color: var(--bleu-marine);
    font-size: 1rem;
    font-family: var(--font-titre);
}

.form-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1rem;
}

@media (max-width: 640px) {
    .form-grid-2 {
        grid-template-columns: 1fr;
        gap: 0;
    }
}

.encart-consentements {
    background: #f4f6fb;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    border: 1px solid #dde3ef;
}

.encart-consentements h4 {
    margin-bottom: 0.75rem;
}

fieldset legend {
    color: var(--bleu-marine);
    font-weight: 700;
    padding: 0 8px;
}

.section-help {
    color: var(--gris-texte);
    font-size: 0.85em;
    font-style: italic;
    margin: 0 0 1rem;
}

label {
    display: block;
    margin-bottom: 0.75rem;
}

label.inline {
    display: inline-block;
    margin-right: 1.5rem;
}

input[type="text"],
input[type="email"],
input[type="tel"],
input[type="password"],
input[type="date"],
input[type="number"],
input[type="file"],
select,
textarea {
    display: block;
    width: 100%;
    margin-top: 0.25rem;
    padding: 0.55rem 0.65rem;
    border: 1px solid #ccc;
    border-radius: 6px;
    font-family: var(--font-texte);
    font-size: 0.95rem;
    transition: border-color var(--transition), box-shadow var(--transition);
}

input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--bleu-marine);
    box-shadow: 0 0 0 3px rgba(26, 42, 108, 0.15);
}

.inline-fieldset {
    border: none;
    padding: 0;
    margin-bottom: 1rem;
    background: transparent;
}

.officiel-block {
    background: var(--gris-clair);
    border-radius: 8px;
    padding: 1rem;
    margin-bottom: 1rem;
}

.officiel-fonction {
    margin: 0.75rem 0 0.75rem 1rem;
    padding-left: 0.75rem;
    border-left: 3px solid var(--rouge-ofp);
}

.encadre-montant {
    background: var(--bleu-marine);
    color: var(--blanc);
    border: 3px solid var(--or-ofp);
    border-radius: 8px;
    padding: 15px;
    margin: 0 0 1.5rem;
    font-size: 1.1em;
}

.montant-estime { margin: 0 0 0.25rem; }
.montant-disclaimer { margin: 0 0 0.5rem; opacity: 0.85; font-size: 0.85em; }
.detail-montant { margin: 0; padding-left: 1.25rem; font-size: 0.9rem; }

.encart-sponsor {
    background: #f0f4ff;
    border: 2px solid var(--bleu-marine);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin: 0 0 1.5rem;
}
.encart-sponsor legend {
    color: var(--bleu-marine);
}
.encart-sponsor p {
    margin: 0 0 0.75rem;
    font-size: 0.95rem;
    line-height: 1.5;
}

.encart-investissement {
    background: #f3faf4;
    border: 2px solid var(--vert-succes);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin: 0 0 1.5rem;
}
.encart-investissement legend {
    color: var(--bleu-marine);
}
.encart-investissement textarea {
    min-height: 5rem;
    resize: vertical;
}

.encart-document-club {
    background: #f8f9fc;
    border: 1px solid #dde3ef;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

.encart-document-club h4 {
    margin: 0 0 0.75rem;
    color: var(--bleu-marine);
}

.encart-documents-medicaux {
    background: #f0f4ff;
    border-left: 4px solid var(--bleu-marine);
    padding: 0.75rem 1rem;
    margin: 0 0 1rem;
    border-radius: 4px;
}

.encart-questionnaire-instructions {
    margin-bottom: 0.75rem;
}

.encart-questionnaire-instructions p {
    margin: 0 0 0.5rem;
}

.encart-questionnaire-instructions ul {
    margin: 0.5rem 0 0;
    padding-left: 1.25rem;
}

.encart-questionnaire-instructions li {
    margin-bottom: 0.5rem;
    line-height: 1.5;
}

.encart-documents-titre {
    margin: 0.75rem 0 0.35rem;
}

.liste-documents-medicaux {
    margin: 0.5rem 0 0;
    padding-left: 1.25rem;
}

.liste-documents-medicaux a {
    color: var(--bleu-marine);
    font-weight: 600;
}
.checkbox-group label.inline-block {
    display: block;
    margin: 0.35rem 0;
}

.bandeau-compte {
    background: #e8ecf5;
    border-left: 4px solid var(--bleu-marine);
    padding: 0.75rem 1rem;
    margin-bottom: 1.5rem;
    border-radius: 0 6px 6px 0;
}

.bandeau-compte a { color: var(--bleu-marine); font-weight: 600; }
.bandeau-connecte { margin: 0; color: var(--bleu-marine); }

form button[type="submit"]:not(.btn) {
    background: var(--rouge-ofp);
    color: var(--blanc);
    border: none;
    border-radius: 6px;
    padding: 12px 30px;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    font-family: var(--font-texte);
    transition: background var(--transition);
}

form button[type="submit"]:not(.btn):hover {
    background: var(--bleu-marine);
}

/* --------------------------------------------------------------------------
   Cards login / compte
   -------------------------------------------------------------------------- */

.admin-login,
.compte-page {
    max-width: 420px;
    margin: 2rem auto;
    background: var(--blanc);
    border-radius: 10px;
    box-shadow: var(--shadow);
    padding: 2rem;
}

.card-logo,
.logo-ofp-card {
    display: block;
    margin: 0 auto 1.25rem;
    height: 50px;
    width: auto;
}

.admin-login h2,
.compte-page h2 {
    text-align: center;
    border: none;
    padding: 0;
    margin-bottom: 0.5rem;
}

.admin-login .subtitle {
    text-align: center;
    color: var(--gris-texte);
    margin-bottom: 1.5rem;
}

.form-admin label,
.form-compte label {
    margin-bottom: 1rem;
}

.compte-links {
    text-align: center;
    margin-top: 1.25rem;
    font-size: 0.9rem;
}

.back-link {
    margin-top: 1.5rem;
    text-align: center;
    font-size: 0.9rem;
}

/* --------------------------------------------------------------------------
   Layout admin
   -------------------------------------------------------------------------- */

.admin-body {
    overflow-x: hidden;
}

.admin-main-wrapper {
    max-width: none;
    padding: 0;
    margin: 0;
}

.admin-layout {
    display: flex;
    min-height: 100vh;
}

.admin-sidebar {
    width: 250px;
    flex-shrink: 0;
    background: var(--bleu-marine);
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    z-index: 100;
}

.sidebar-logo {
    padding: 1.25rem 1rem;
    text-align: center;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.sidebar-logo img,
.sidebar-logo-img {
    height: 55px;
    width: auto;
}

.sidebar-nav {
    flex: 1;
    padding: 1rem 0;
}

.sidebar-link {
    display: block;
    color: var(--blanc);
    text-decoration: none;
    padding: 12px 20px;
    font-weight: 600;
    transition: background var(--transition);
}

.sidebar-link:hover,
.sidebar-link.active {
    background: var(--rouge-ofp);
}

.sidebar-footer {
    padding: 1rem 20px;
    border-top: 1px solid rgba(255, 255, 255, 0.15);
}

.sidebar-user {
    display: block;
    color: rgba(255, 255, 255, 0.75);
    font-size: 0.85rem;
    margin-bottom: 0.5rem;
}

.sidebar-logout {
    font-size: 0.9rem;
    padding-left: 0;
}

.admin-content {
    margin-left: 250px;
    flex: 1;
    min-height: 100vh;
    background: var(--gris-clair);
}

.admin-page-header {
    background: var(--blanc);
    border-bottom: 3px solid var(--rouge-ofp);
    padding: 1rem 1.75rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.admin-page-header h1 {
    margin: 0;
    color: var(--bleu-marine);
    font-size: 1.35rem;
    border: none;
    padding: 0;
}

.admin-page-body {
    padding: 1.5rem 1.75rem;
}

.admin-page-header-right {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

/* --------------------------------------------------------------------------
   Dashboard stats
   -------------------------------------------------------------------------- */

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.stat-card {
    background: var(--blanc);
    border-radius: 8px;
    padding: 1.25rem;
    text-align: center;
    box-shadow: var(--shadow);
    border-top: 4px solid var(--rouge-ofp);
}

.stat-value {
    display: block;
    font-family: var(--font-titre);
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--bleu-marine);
}

.stat-label {
    font-size: 0.85rem;
    color: var(--gris-texte);
}

.inline-stat {
    display: inline-block;
    margin-bottom: 1.5rem;
    min-width: 200px;
}

.export-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 1.25rem;
    background: var(--blanc);
    padding: 1rem;
    border-radius: 8px;
    box-shadow: var(--shadow);
}

.export-bar label {
    margin: 0;
    font-size: 0.85rem;
}

.export-bar select {
    width: auto;
    min-width: 160px;
    display: inline-block;
    margin-top: 0.25rem;
}

/* --------------------------------------------------------------------------
   Filtres & tableaux admin
   -------------------------------------------------------------------------- */

.filtres {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-end;
    background: var(--blanc);
    padding: 1rem;
    border-radius: 8px;
    box-shadow: var(--shadow);
    margin-bottom: 1.5rem;
}

.filtres label {
    margin: 0;
    font-size: 0.85rem;
}

.filtres select {
    display: block;
    margin-top: 0.25rem;
    min-width: 160px;
}

.table-wrapper {
    overflow-x: auto;
    background: var(--blanc);
    border-radius: 8px;
    box-shadow: var(--shadow);
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.admin-table th,
.admin-table td {
    padding: 0.7rem 0.85rem;
    text-align: left;
}

.admin-table thead th {
    background: var(--bleu-marine);
    color: var(--blanc);
    font-weight: 700;
}

.admin-table tbody tr:nth-child(even) {
    background: var(--gris-clair);
}

.admin-table tbody tr:hover {
    background: #e8ecf5;
}

/* --------------------------------------------------------------------------
   Fiche adhérent
   -------------------------------------------------------------------------- */

.actions-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 1.5rem;
}

.fiche-section {
    background: var(--blanc);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
    box-shadow: var(--shadow);
}

.fiche-section h3 {
    margin: 0 0 0.75rem;
    font-size: 1rem;
    color: var(--bleu-marine);
    border-left: 4px solid var(--rouge-ofp);
    padding-left: 10px;
}

.fiche-section h4.fiche-subtitle {
    margin: 1.25rem 0 0.75rem;
    font-size: 0.95rem;
    color: var(--bleu-marine);
}

.fiche-dl {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 0.35rem 1rem;
    margin: 0;
}

.fiche-dl dt {
    font-weight: 600;
    color: var(--gris-texte);
}

.fiche-dl dd { margin: 0; }

.paiement-resume {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}

.paiement-item .label {
    display: block;
    font-size: 0.8rem;
    color: var(--gris-texte);
}

.paiement-item .value {
    font-family: var(--font-titre);
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--bleu-marine);
}

.paiement-detail {
    background: var(--gris-clair);
    border-radius: 8px;
    padding: 1rem;
    margin: 1rem 0;
}

.paiement-detail-line {
    display: flex;
    justify-content: space-between;
    padding: 0.25rem 0;
}

.paiement-detail-sep {
    border-top: 2px solid var(--bleu-marine);
    margin: 0.5rem 0;
    padding-top: 0.5rem;
    font-weight: 700;
}

.form-paiement {
    background: var(--gris-clair);
    border-radius: 8px;
    padding: 1rem;
    margin-top: 1rem;
}

.form-paiement h4 {
    margin: 0 0 1rem;
    color: var(--bleu-marine);
}

.form-paiement label { margin-bottom: 0.75rem; }

/* Officiels validation */
.officiel-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid #e0e4ea;
}

.officiel-row:last-child { border-bottom: none; }

.officiel-info { flex: 1; min-width: 180px; }
.officiel-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.detail-remises {
    margin: 0;
    padding-left: 1rem;
}

.niveaux-groupe h4 { color: var(--bleu-marine); }

.niveaux-liste {
    list-style: none;
    padding: 0;
    margin: 0;
}

.niveaux-liste li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0;
    border-bottom: 1px solid #eee;
}

.niveaux-liste li.inactif {
    opacity: 0.5;
    text-decoration: line-through;
}

.form-parametres label input[type="number"],
.form-parametres label input[type="text"] {
    max-width: 200px;
}

/* Graphiques dashboard */
.charts-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.25rem;
    margin-bottom: 1.5rem;
}

.chart-card {
    background: var(--blanc);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    box-shadow: var(--shadow);
    border-top: 4px solid var(--rouge-ofp);
}

.chart-card h3 {
    margin: 0 0 1rem;
    font-size: 0.95rem;
    color: var(--bleu-marine);
    border-left: 4px solid var(--rouge-ofp);
    padding-left: 10px;
}

.chart-card canvas {
    max-height: 260px;
}

.comparaison-saisons {
    margin-bottom: 1.5rem;
}

/* Saisons */
.badge-saison-courante {
    background: var(--or-ofp);
    color: #1a1a1a;
    margin-left: 0.5rem;
}

.form-saison {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1rem;
    align-items: end;
}

.actions-cell {
    white-space: nowrap;
}

/* Journal badges */
.journal-badge {
    font-size: 0.75rem;
    text-transform: none;
    letter-spacing: 0;
}

.journal-validation { background: var(--vert-succes); }
.journal-refus { background: var(--rouge-ofp); }
.journal-paiement { background: var(--bleu-marine); }
.journal-modification { background: var(--orange-attente); }
.journal-connexion { background: #6c757d; }
.journal-default { background: #888; }

/* Recherche & tri liste adhérents */
.search-bar {
    margin: 1rem 0;
}
.search-bar label {
    display: block;
    font-weight: 600;
    margin-bottom: 0.35rem;
    color: var(--bleu-marine);
}
.search-bar input {
    width: 100%;
    max-width: 420px;
    padding: 0.5rem 0.75rem;
    border: 1px solid #ccc;
    border-radius: 4px;
}
th.sortable {
    user-select: none;
    white-space: nowrap;
}
th.sortable .sort-icon {
    color: var(--or-ofp);
    font-weight: bold;
}
.row-doublon {
    background: #fff8e6 !important;
}
.badge-doublon {
    background: var(--orange-attente);
    color: var(--blanc);
    font-size: 0.65rem;
}
.row-actuel {
    background: #f0f4ff;
}
.badge-actuel {
    background: var(--bleu-marine);
    color: var(--blanc);
    font-size: 0.65rem;
}
.relance-bar {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: 1rem 0;
    padding: 0.75rem 1rem;
    background: #fff8e6;
    border-left: 4px solid var(--or-ofp);
    border-radius: 4px;
}

/* Modale confirmation */
.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(26, 42, 108, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2000;
    padding: 1rem;
}
.modal-box {
    background: var(--blanc);
    padding: 1.5rem 2rem;
    border-radius: 8px;
    max-width: 480px;
    width: 100%;
    border-top: 4px solid var(--rouge-ofp);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.modal-box h3 {
    color: var(--bleu-marine);
    margin: 0 0 0.75rem;
}
.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 1.25rem;
    align-items: center;
}
.modal-actions form,
.confirm-modal-form {
    margin: 0;
    display: flex;
    gap: 0.5rem;
    align-items: center;
}
body.modal-open {
    overflow: hidden;
}
.paiements-resume {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
    margin-bottom: 1rem;
    padding: 1rem;
    background: #f8f9fa;
    border-radius: 6px;
}
.paiements-resume .resume-item strong {
    display: block;
    font-size: 1.25rem;
    color: var(--bleu-marine);
}
.form-paiement-inline {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-end;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid #dee2e6;
}
.form-paiement-inline label {
    flex: 1 1 140px;
}
.paiement-mode-block {
    flex: 1 1 100%;
    border: 1px solid #dee2e6;
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin: 0.5rem 0 0;
}
.paiement-mode-block legend {
    font-weight: 600;
    color: var(--bleu-marine);
    padding: 0 0.25rem;
}
.encart-intention {
    background: #fff8e6;
    border-left: 4px solid var(--or-ofp);
    padding: 0.75rem 1rem;
    margin: 0.75rem 0 1rem;
    font-size: 0.95rem;
}

.encart-reglement-info {
    background: #f8fafc;
    border: 1px solid #dde3ef;
    border-radius: 8px;
    padding: 0.75rem 1rem;
    margin: 0 0 1rem;
    font-size: 0.95rem;
}

.encart-reglement-info h4 {
    margin: 0.75rem 0 0.35rem;
    color: var(--bleu-marine);
    font-size: 0.95rem;
    font-family: var(--font-titre);
}

.encart-reglement-info h4:first-child {
    margin-top: 0;
}

.encart-reglement-info p {
    margin: 0 0 0.35rem;
    line-height: 1.5;
}

.encart-reglement-info a {
    color: var(--bleu-marine);
    font-weight: 600;
}
.cotisation-montant-reglement {
    margin: 0.5rem 0 1rem;
    font-size: 1.05rem;
}
.intention-resume {
    margin-top: 0.75rem;
    padding: 0.5rem 0.75rem;
    background: #f4f6fb;
    border-radius: 4px;
}
.intention-resume.intention-erreur {
    background: #fdecea;
    color: var(--rouge-ofp);
    font-weight: 600;
}
.form-paiement-dual .paiement-comment-wrap.hidden,
#section-reglement .paiement-comment-wrap.hidden {
    display: none;
}
.form-email label,
.form-danger {
    display: block;
    margin-top: 1rem;
}
.fiche-actions-danger {
    border-top: 2px solid #eee;
    padding-top: 1rem;
}

/* Onglets paramètres */
.parametres-tabs {
    display: flex;
    gap: 0.25rem;
    margin-bottom: 1.5rem;
    border-bottom: 2px solid #e0e0e0;
    flex-wrap: wrap;
}
.parametres-tab {
    padding: 0.65rem 1.25rem;
    text-decoration: none;
    color: var(--bleu-marine);
    font-weight: 600;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    transition: color 0.15s, border-color 0.15s;
}
.parametres-tab:hover {
    color: var(--rouge-ofp);
}
.parametres-tab.active {
    color: var(--rouge-ofp);
    border-bottom-color: var(--rouge-ofp);
}
.form-cotisation-ajout,
.form-cotisation-edit,
.form-tarifs-saison {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-end;
}
.form-cotisation-ajout label,
.form-cotisation-edit label {
    flex: 1 1 200px;
}
.form-row-inline {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    flex: 1 1 100%;
}
.form-row-inline label {
    flex: 1 1 140px;
}
.row-inactif {
    opacity: 0.65;
}
.inline-filtres {
    margin-bottom: 1rem;
}
.required {
    color: var(--rouge-ofp);
}

/* Archivage */
.badge-archive {
    background: #6c757d;
    color: var(--blanc);
}

.row-archive {
    opacity: 0.75;
}

.filtre-checkbox {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
}

.filtre-checkbox input {
    width: auto;
    margin: 0;
}

.sidebar-nav {
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

/* Cards cliquables dashboard */
.stat-card-link {
    text-decoration: none;
    color: inherit;
    display: block;
    transition: transform 0.15s ease, box-shadow 0.15s ease;
    cursor: pointer;
}

.stat-card-link:hover {
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(26, 42, 108, 0.18);
}

.stat-card-orange { border-top-color: var(--orange-attente); }
.stat-card-green { border-top-color: var(--vert-succes); }
.stat-card-red { border-top-color: var(--rouge-ofp); }
.stat-card-gold { border-top-color: var(--or-ofp); }

.saison-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 1rem;
    background: var(--blanc);
    padding: 1rem;
    border-radius: 8px;
    box-shadow: var(--shadow);
    margin-bottom: 1rem;
    border-left: 4px solid var(--or-ofp);
}

.saison-bar label { margin: 0; font-size: 0.85rem; }
.saison-bar select { min-width: 200px; }

.back-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem;
}

/* Formation fiche adhérent */
.formation-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 0;
    margin-bottom: 0.75rem;
    border-bottom: 1px solid #e0e4ea;
}

.formation-info p { margin: 0 0 0.5rem; }
.formation-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.badge-formation-en_attente { background: var(--orange-attente); color: var(--blanc); }
.badge-formation-validee { background: var(--vert-succes); color: var(--blanc); }
.badge-formation-refusee { background: var(--rouge-ofp); color: var(--blanc); }

@media (max-width: 768px) {
    .admin-sidebar {
        width: 100%;
        position: relative;
        height: auto;
    }

    .admin-content {
        margin-left: 0;
    }

    .admin-layout {
        flex-direction: column;
    }

    .fiche-dl {
        grid-template-columns: 1fr;
    }

    .header-inner {
        flex-direction: column;
        text-align: center;
    }
}
