:root {
    --km-beton: #E8EEF5;
    --km-craie: #FFFFFF;
    --km-menu: #0F56A8;
    --km-menu-hover: #0B3D8A;
    --km-asphalte: #1873C8;
    --km-asphalte-hover: #0F56A8;
    --km-encre: #1A4E7A;
    --km-brume: #5A7188;
    --km-joint: #C5D4E3;
    --km-citron: #E8C547;
    --km-citron-profond: #C9A62A;
    --km-citron-wash: #BBDEFB;
    --km-citron-pale: #E8F1FB;
    --km-dromadaire: #3994E0;
    --km-feu: #B42318;
    --km-herbe: #1873C8;
    --km-herbe-hover: #0F56A8;
    --km-herbe-wash: #E8F1FB;
    --km-font: 'Roboto', 'Segoe UI', Helvetica, Arial, sans-serif;
    --km-font-display: var(--km-font);
    --km-font-table: var(--km-font);
    --km-radius: 2px;
    --km-btn-radius: 8px;
    --km-btn-height: 34px;
    --km-btn-pad-x: 14px;
    --km-btn-font-size: 0.875rem;
    --km-btn-font-weight: 500;
    --km-btn-gap: 12px;
    --km-shadow: 0 1px 0 rgba(24, 115, 200, 0.14);
    --km-focus: 2px solid var(--km-citron);
}

/* Styles généraux */
html {
    height: 100%;
    margin: 0;
    padding: 0;
    width: 100%;
    box-sizing: border-box;
    overflow-x: hidden;
}

html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    width: 100%;
    box-sizing: border-box;
}

*, *::before, *::after {
    box-sizing: inherit;
}

body {
    font-family: var(--km-font);
    margin: 0;
    padding: 0;
    background: var(--km-beton);
    background-attachment: scroll;
    font-size: 16px;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    position: relative;
    width: 100%;
    box-sizing: border-box;
}

body > .navbar {
    flex-shrink: 0;
}

body > .hero-modern,
body > .cta-modern,
body > .site-footer {
    flex-shrink: 0;
}

body > .container,
body > .container-welcome,
body > .login-container {
    flex: 1 0 auto;
}

/* Empêcher le premier container de s'étirer s'il y a un deuxième container après */
body > .container:has(+ .container) {
    flex: 0 0 auto;
}

/* Empêcher les containers consécutifs de s'étirer */
body > .container + .container {
    flex: 0 0 auto !important;
}

body::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: 
        radial-gradient(circle at 20% 50%, rgba(15, 86, 168, 0.05) 0%, transparent 50%),
        radial-gradient(circle at 80% 80%, rgba(15, 86, 168, 0.05) 0%, transparent 50%),
        radial-gradient(circle at 40% 20%, rgba(15, 86, 168, 0.03) 0%, transparent 50%);
    pointer-events: none;
    z-index: 0;
}

.container {
    margin-left: 20px;
    margin-right: 20px;
    padding: 0 0 20px 0;
    position: relative;
    z-index: 1;
    flex: 1;
    display: flex;
    flex-direction: column;
    /*max-width: 1200px;*/
}

/* Réduire l'espacement entre les containers consécutifs (ex: Prochaines courses / Courses passées) */
.container + .container {
    margin-top: -10px;
    padding-top: 0;
    padding-bottom: 20px;
    flex: 0 0 auto !important;
}

/* Empêcher le premier container de s'étirer s'il y a un deuxième container après */
body > .container:has(+ .container),
.container:has(+ .container) {
    flex: 0 0 auto !important;
}

.container + .container h1 {
    margin-top: 20px;
    margin-bottom: 10px;
}

.container-welcome {
    margin-left: 0;
    margin-right: auto;
    padding: 0 0 20px 0;
    max-width: 1200px;
    position: relative;
    z-index: 1;
    flex: 1;
}

/* Header et Navigation */
.navbar {
    background-color: var(--km-menu);
    overflow: visible;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    padding: 0;
    justify-content: space-between;
    border-radius: 0;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
    position: relative;
    width: 100%;
}

.navbar-left {
    display: flex;
    align-items: center;
    gap: 20px;
    flex: 1;
    padding: 0 20px;
}

.navbar-logo-link {
    display: flex;
    align-items: center;
    z-index: 1001;
}

.navbar-logo-link img {
    height: 45px;
    margin-right: 20px;
    transition: transform 0.3s ease;
}

.navbar-logo-link:hover img {
    transform: scale(1.05);
}

.navbar-links {
    display: flex;
    align-items: center;
    gap: 5px;
    flex-wrap: wrap;
    flex: 1;
    min-width: 0;
}

.navbar-links-a {
    color: white;
    text-align: center;
    padding: 14px 18px;
    text-decoration: none;
    display: block;
    border-radius: 8px;
    transition: all 0.3s ease;
    font-weight: 500;
    position: relative;
}

.navbar-links-a:hover {
    background-color: rgba(255, 255, 255, 0.15);
    color: white;
    border-radius: 0;
    border-bottom: 2px solid rgba(255, 255, 255, 0.5);
}

.navbar-links-a.active {
    background-color: rgba(255, 255, 255, 0.25);
    color: white !important;
    font-weight: 600;
    border-radius: 0;
    border-bottom: 3px solid white;
}

.navbar-admin-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

/* Centrage fiable : line-height = hauteur + text-align (évite les dérives du « 1 » en flex/grid). */
.navbar-admin-badge {
    display: inline-block;
    box-sizing: border-box;
    vertical-align: middle;
    min-width: 18px;
    height: 18px;
    padding: 0 6px;
    font-size: 11px;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    color: #ffffff;
    background-color: var(--km-feu);
    border-radius: 999px;
    flex-shrink: 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}

/* Chiffre seul : cercle fixe ; léger décalage optique pour le tracé « 1 » des polices système. */
.navbar-admin-badge--round {
    width: 18px;
    min-width: 18px;
    padding: 0;
}

.navbar-admin-badge-num {
    display: inline-block;
}

.navbar-admin-badge--round .navbar-admin-badge-num {
    position: relative;
    left: -0.5px;
}

.navbar-user-section {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    flex-shrink: 0;
    gap: 8px;
    padding-left: 15px;
    border-left: 1px solid rgba(255, 255, 255, 0.2);
}

.navbar-icon-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    padding: 12px 14px;
    font-size: 1.25rem;
    line-height: 1;
}

.navbar-logout {
    background-color: transparent;
    border-radius: 0;
    font-weight: 500;
    margin-left: 0;
    border: none;
}

.navbar-logout:hover {
    background-color: rgba(255, 255, 255, 0.15);
    border-radius: 0;
    border-bottom: 2px solid rgba(255, 255, 255, 0.5);
}

/* Responsive Navigation */
@media (max-width: 768px) {
    .navbar {
        padding: 0;
        border-radius: 0;
    }

    .navbar-left {
        padding: 12px 15px;
        position: relative;
    }

    .navbar-toggle {
        display: flex;
        margin-left: 0;
        flex-shrink: 0;
    }

    .navbar-links {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        background-color: var(--km-menu);
        flex-direction: column;
        flex: none;
        width: 100%;
        min-width: unset;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease, padding 0.3s ease;
        padding: 0;
        border-radius: 0 0 12px 12px;
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        gap: 0;
        z-index: 1000;
    }

    .navbar-links.active {
        max-height: 600px;
        padding: 10px 0;
    }

    .navbar-links-a {
        width: 100%;
        text-align: left;
        padding: 14px 20px;
        border-radius: 0;
        margin: 0;
    }

    .navbar-links-a:hover {
        transform: none;
        background-color: rgba(255, 255, 255, 0.15);
    }

    .navbar-user-section {
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        width: auto;
        margin-left: auto;
        margin-top: 0;
        padding-top: 0;
        padding-left: 10px;
        border-left: none;
        border-top: none;
        gap: 4px;
    }

    .navbar-user-section .navbar-links-a {
        width: auto;
    }

    .navbar-logo-link img {
        height: 38px;
        margin-right: 0;
    }
}

/* Bouton hamburger */
.navbar-toggle {
    display: none;
    flex-direction: column;
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 8px;
    z-index: 1001;
    gap: 5px;
}

.navbar-toggle span {
    width: 25px;
    height: 3px;
    background-color: white;
    border-radius: 3px;
    transition: all 0.3s ease;
    display: block;
}

.navbar-toggle.active span:nth-child(1) {
    transform: rotate(45deg) translate(8px, 8px);
}

.navbar-toggle.active span:nth-child(2) {
    opacity: 0;
}

.navbar-toggle.active span:nth-child(3) {
    transform: rotate(-45deg) translate(7px, -7px);
}

/* Tableaux */
table {
    margin-left: 0;
    margin-right: auto;
    border-collapse: separate;
    border-spacing: 0;
    width: max-content;
    margin: 20px 0;
    background-color: white;
    border-radius: 12px;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}

th, td {
    border: none;
    padding: 16px 20px;
    text-align: left;
    transition: all 0.2s ease;
}

th {
    background-color: var(--km-citron-wash);
    color: var(--km-asphalte);
    font-weight: 700;
    font-size: 0.9em;
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--km-citron);
    position: relative;
}

th:first-child {
    border-top-left-radius: 12px;
}

th:last-child {
    border-top-right-radius: 12px;
}

td {
    border-bottom: 1px solid #f0f0f0;
    color: #424242;
    font-family: var(--km-font-table);
    font-size: 0.9em;
}

td.center, th.center {
    text-align: center;
}

tr {
    transition: background-color 0.2s ease;
}

tr:hover {
    background-color: #F3F4F6;
}

tr:last-child td:first-child {
    border-bottom-left-radius: 12px;
}

tr:last-child td:last-child {
    border-bottom-right-radius: 12px;
}

tr:last-child td {
    border-bottom: none;
}

/* Forcer la transparence des images dans les tableaux */
table img {
    background-color: transparent !important;
    background: transparent !important;
}

tr:hover table img,
table tr:hover img {
    background-color: transparent !important;
    background: transparent !important;
}

/* Les boutons dans les lignes de tableau doivent hériter du fond au survol */
tr:hover .btn-icon {
    background-color: transparent !important;
    background: transparent !important;
}

/* Boutons */
.btn-add, .btn-submit {
    background-color: var(--km-asphalte);
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    text-decoration: none;
}

.btn-add:hover, .btn-submit:hover {
    background-color: var(--km-asphalte-hover);
}

/* Messages */
.success-message,
.error-message {
    padding: 15px;
    margin: 20px 0;
    border-radius: 4px;
    display: flex;
    align-items: center;
}

.success-message {
    background-color: var(--km-citron-pale);
    color: var(--km-asphalte);
    border: 1px solid var(--km-citron);
}

.error-message {
    background-color: #FFEBEE;
    color: var(--km-feu);
    border: 1px solid #FFCDD2;
}

/* Icônes et actions */
.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px;
    width: 32px;
    height: 32px;
    box-sizing: border-box;
    background: white !important;
}

.btn-modifier {
    background: white !important;
}

.btn-modifier:hover {
    background: var(--km-asphalte) !important;
}

.btn-supprimer {
    background: white !important;
}

.btn-supprimer:hover {
    background: var(--km-feu) !important;
}

/* Page d'accueil */
.container-welcome {
    max-width: 1200px;
    margin: 0 auto;
}

.welcome-section {
    text-align: center;
    padding: 40px 20px;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.welcome-logo {
    max-width: 300px;
    height: auto;
    margin-bottom: 30px;
}

.welcome-text {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.quick-links {
    margin-top: 40px;
}

.links-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.quick-link {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
    background-color: #f8f9fa;
    border-radius: 6px;
    text-decoration: none;
    color: #333;
    transition: all 0.3s ease;
}

.quick-link:hover {
    background-color: var(--km-asphalte);
    color: white;
    transform: translateY(-2px);
}

/* Responsive */
@media (max-width: 768px) {
    .welcome-logo {
        max-width: 200px;
    }

    .links-grid {
        grid-template-columns: 1fr;
    }

    .navbar {
        padding: 0;
        border-radius: 0;
    }

    .navbar-left {
        padding: 12px 15px;
        position: relative;
    }

    .navbar-toggle {
        display: flex;
        margin-left: 0;
        flex-shrink: 0;
    }

    .navbar-links {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        background-color: var(--km-menu);
        flex-direction: column;
        flex: none;
        width: 100%;
        min-width: unset;
        max-height: 0;
        overflow: hidden;
        transition: max-height 0.3s ease, padding 0.3s ease;
        padding: 0;
        border-radius: 0 0 12px 12px;
        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
        gap: 0;
        z-index: 1000;
    }

    .navbar-links.active {
        max-height: 600px;
        padding: 10px 0;
    }

    .navbar-links-a {
        width: 100%;
        text-align: left;
        padding: 14px 20px;
        border-radius: 0;
        margin: 0;
    }

    .navbar-links-a:hover {
        transform: none;
        background-color: rgba(255, 255, 255, 0.15);
    }

    .navbar-user-section {
        flex-direction: row;
        flex-wrap: nowrap;
        justify-content: flex-end;
        width: auto;
        margin-left: auto;
        margin-top: 0;
        padding-top: 0;
        padding-left: 10px;
        border-left: none;
        border-top: none;
        gap: 4px;
    }

    .navbar-user-section .navbar-links-a {
        width: auto;
    }

    .navbar-logo-link img {
        height: 38px;
        margin-right: 0;
    }
}

/* ACCUEIL */
.welcome-section {
    text-align: center;
    padding: 40px 20px;
    background-color: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.welcome-logo {
    max-width: 300px;
    height: auto;
    margin-bottom: 30px;
}

.welcome-text {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

h1 {
    /*color: #333;*/
    color: #f7eea0;
    font-size: 2.2em;
    margin-bottom: 10px;
}

.container h1 {
    color: #333;
    font-size: 2.2em;
    margin-bottom: 10px;
}

.subtitle {
    color: #666;
    font-size: 1.1em;
    margin-bottom: 30px;
}

.description {
    text-align: left;
    margin: 30px auto;
    padding: 20px;
    background-color: #f8f9fa;
    border-radius: 6px;
}

.description p {
    margin-bottom: 15px;
    line-height: 1.6;
}

.description ul {
    list-style-type: none;
    padding: 0;
}

.description li {
    margin: 10px 0;
    padding-left: 25px;
    position: relative;
}

.description li:before {
    content: "•";
    color: var(--km-asphalte);
    font-weight: bold;
    position: absolute;
    left: 0;
}

.quick-links {
    margin-top: 40px;
}

.quick-links h2 {
    color: #333;
    margin-bottom: 20px;
}

.links-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 20px;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.quick-link {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 20px;
    background-color: #f8f9fa;
    border-radius: 6px;
    text-decoration: none;
    color: #333;
    transition: all 0.3s ease;
}

.quick-link:hover {
    background-color: var(--km-asphalte);
    color: white;
    transform: translateY(-2px);
}

.quick-link i {
    font-size: 24px;
    margin-bottom: 10px;
}

/* Icônes personnalisées pour les liens rapides */
.icon-pilots:before {
    content: "👤";
}

.icon-races:before {
    content: "🏁";
}

.icon-tracks:before {
    content: "🏎️";
}

@media (max-width: 768px) {
    .welcome-logo {
        max-width: 200px;
    }

    h1 {
        font-size: 2em;
    }

    .links-grid {
        grid-template-columns: 1fr;
    }
}

/* PAGES */

.btn-add {
    background-color: var(--km-asphalte);
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    text-decoration: none;
    display: inline-block;
}

.btn-add:hover {
    background-color: var(--km-asphalte-hover);
}

#add-form-container {
    margin: 0;
    padding: 20px;
    background: white;
    border-radius: 5px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    max-width: 500px;
}

#add-form-container h2 {
    margin-top: 0;
}

.add-form {
    max-width: 500px;
}

.form-group select {
    width: 100%;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
    background-color: white;
    height: 35px;
    box-sizing: border-box;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 8px center;
    background-size: 16px;
    padding-right: 32px;
    font-family: inherit;
}

.form-actions-resultats {
    margin-top: 20px;
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--km-btn-gap);
}

.resultats-modifier-champs {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 16px;
    align-items: flex-start;
}

.resultats-modifier-champs .resultats-modifier-meteo,
.resultats-modifier-champs .resultats-modifier-temp {
    width: 240px;
}

.resultats-modifier-champs .meteo-row {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 8px;
}

.resultats-modifier-champs .meteo-row select#meteo {
    width: auto;
    flex: 1 1 auto;
    min-width: 0;
}

.resultats-modifier-champs .meteo-row .btn-recalcul-meteo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    margin: 0;
    border: 1px solid var(--km-joint);
    border-radius: 4px;
    background: var(--km-craie);
    color: var(--km-brume);
    cursor: pointer;
    flex: 0 0 auto;
    box-shadow: none;
}

.resultats-modifier-champs .meteo-row .btn-recalcul-meteo:hover:not(:disabled) {
    background: var(--km-joint);
    color: var(--km-encre);
}

.resultats-modifier-champs .meteo-row .btn-recalcul-meteo:disabled {
    opacity: 0.55;
    cursor: wait;
}

.resultats-modifier-champs .hint {
    display: block;
    margin-top: 6px;
    font-size: 0.8rem;
    color: var(--km-brume);
    font-weight: normal;
}

.btn-submit {
    background-color: var(--km-asphalte);
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
}

.btn-submit:hover {
    background-color: var(--km-asphalte-hover);
}

.error {
    color: #f44336;
    background-color: #ffebee;
    padding: 10px;
    margin: 10px 0;
    border-radius: 4px;
}

.form-group select option strong {
    font-weight: bold;
}

/* Style spécifique pour les options */
.form-group select option {
    padding: 8px;
}

/* Messages de succès et d'erreur */
.success-message,
.error-message {
    padding: 15px;
    margin: 20px 0;
    border-radius: 4px;
    display: flex;
    align-items: center;
}

.success-message {
    background-color: var(--km-citron-pale);
    color: var(--km-asphalte);
    border: 1px solid var(--km-citron);
}

.error-message {
    background-color: #FFEBEE;
    color: var(--km-feu);
    border: 1px solid #FFCDD2;
}

/* Style pour le bouton Modifier */
.btn-modifier {
    background-color: var(--km-asphalte);
    color: white;
    padding: 6px 12px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    transition: background-color 0.3s;
}

.btn-modifier:hover {
    background-color: var(--km-asphalte-hover);
}

/* Liens dans le tableau */
td a {
    color: var(--km-asphalte);
    text-decoration: none;
    font-weight: 500;
}

td a:hover {
    color: var(--km-asphalte-hover);
    text-decoration: underline;
}

/* Boutons style lien dans les cellules : garder le texte blanc au survol (sinon td a:hover masque le libellé) */
td a.btn-primary,
td a.btn-primary:hover,
td a.btn-primary:focus {
    color: #fff;
    text-decoration: none;
}

/* Focus des champs de formulaire */
.form-group input:focus {
    outline: none;
    border-color: var(--km-asphalte);
    box-shadow: 0 0 3px rgba(15, 86, 168, 0.3);
}

/* Style pour l'icône de modification */
.icon-modifier {
    width: 24px;
    height: 24px;
    cursor: pointer;
    transition: opacity 0.3s;
}

.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0px;
    border-radius: 4px;
    transition: background-color 0.3s;
}

.btn-icon:hover {
    background-color: rgba(15, 86, 168, 0.1); /* Fond bleu très léger au survol */
}

.btn-icon:hover .icon-modifier {
    opacity: 0.8;
}

/* Style pour la colonne des actions */
table th:last-child,
table td:last-child {
    width: auto; /* Permettre à la colonne de s'adapter au contenu */
    white-space: nowrap; /* Empêcher le retour à la ligne des boutons */
}

.action-buttons {
    display: flex;
    gap: var(--km-btn-gap);
    justify-content: center;
    align-items: center;
}

/* Style uniforme pour tous les boutons d'action */
.btn-action {
    background-color: var(--km-asphalte);
    color: white;
    padding: 4px 8px; /* Réduire le padding pour des boutons plus compacts */
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
    transition: background-color 0.3s;
    min-width: 60px; /* Largeur minimum pour uniformité */
}

.btn-action:hover {
    background-color: var(--km-asphalte-hover);
}

.btn-action.disabled {
    background-color: #ccc;
    color: #666;
    cursor: not-allowed;
    opacity: 0.7;
}

.btn-action.disabled:hover {
    background-color: #ccc;
}

/* Styles pour resultats_course.php */
.course-info {
    color: #666;
    line-height: 1.6;
}

.no-results {
    text-align: center;
    padding: 20px;
    color: #666;
    font-style: italic;
}

.actions {
    margin-top: 20px;
    text-align: center;
    vertical-align: middle;
}

.meilleur-temps {
    border-radius: 4px;
    padding: 10px 15px;
    margin-top: 15px;
    width: max-content;
    /*background-color: var(--km-herbe-wash);*/
    background-color: var(--km-herbe-wash);
    border: 1px solid var(--km-citron-wash);
    padding: 15px;
    border-radius: 8px;
    color: var(--km-herbe);
}

.meilleur-temps h3 {
    color: #856404;
    margin: 0 0 5px 0;
    font-size: 1.1em;
}

.meilleur-temps p {
    /*color: #856404;*/
    color: var(--km-herbe);
    margin: 0;
    font-weight: bold;
}

.meilleur-temps-ligne {
    /*background-color: var(--km-herbe);*/
    background-color: var(--km-citron-wash);
    color: black;
    font-weight: bold;
}

.meilleur-temps-ligne-pilote {
    background-color: #ffd890;
    color: black;
    font-weight: bold;
}

.grid-pilotes {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 15px;
    margin: 20px 0;
    /* Une carte dépliée (régularité par relais) n'étire pas ses voisines */
    align-items: start;
}

.carte-pilote {
    background: var(--km-herbe-wash);
    border-radius: 8px;
    padding: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.pilote-nom {
    font-weight: bold;
    margin-bottom: 8px;
}

.pilote-temps {
    font-weight: bold;
    color: var(--km-herbe);
    font-size: 1.1em;
}

.pilote-regularite {
    margin-top: 10px;
    width: 100%;
}

.pilote-regularite .analyse-regularite {
    width: 100%;
    box-sizing: border-box;
}

.resultats-regularite-hint {
    margin: 4px 0 0;
    font-size: 0.85rem;
    color: var(--km-brume);
    line-height: 1.35;
}

/* Résultats : régularité par relais, dépliable dans la carte du pilote */
.pilote-relais {
    width: 100%;
    margin-top: 8px;
    text-align: left;
}

.pilote-relais > summary {
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--km-asphalte-hover);
    text-align: center;
    padding: 4px 0;
}

.pilote-relais__liste {
    list-style: none;
    margin: 6px 0 0;
    padding: 0;
    display: grid;
    gap: 4px;
}

.pilote-relais__item {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-areas: "nom valeur" "tours valeur";
    align-items: center;
    column-gap: 6px;
    font-size: 0.8rem;
    line-height: 1.25;
}

.pilote-relais__nom {
    grid-area: nom;
    font-weight: 700;
    white-space: nowrap;
}

.pilote-relais__tours {
    grid-area: tours;
    color: var(--km-brume);
    font-size: 0.72rem;
    white-space: nowrap;
}

.pilote-relais__valeur {
    grid-area: valeur;
}

.pilote-relais__valeur {
    padding: 1px 6px;
    border-radius: 5px;
    border-left: 3px solid currentColor;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pilote-relais__item:has(.pilote-relais__meteo) {
    grid-template-areas: "nom valeur" "tours valeur" "meteo meteo";
}

.pilote-relais__meteo {
    grid-area: meteo;
}

/* Résultats : météo de chaque relais (pastille icône + température) */
.relais-meteo {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 1px 6px;
    border-radius: 5px;
    font-size: 0.75rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    background: var(--km-citron-pale);
    color: var(--km-encre);
    vertical-align: middle;
}

.relais-meteo--sec .fa-solid {
    color: var(--km-citron-profond);
}

.relais-meteo--mouille {
    background: var(--km-citron-wash);
}

.relais-meteo--pluie {
    background: var(--km-menu);
    color: var(--km-craie);
}

.relais-meteo__evolution {
    font-weight: 400;
    font-style: italic;
}

.relais-meteo__sr {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.recap-table td .relais-meteo {
    margin-left: 6px;
}

/* Résultats : tableau « Relais et conditions » */
.relais-conditions {
    margin-top: 16px;
}

.relais-conditions__scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.recap-table.relais-conditions__table {
    width: 100%;
    margin-top: 10px;
}

.relais-conditions__table td {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.relais-conditions__table td:last-child {
    white-space: normal;
    min-width: 160px;
}

.relais-conditions__ligne--humide td {
    background: var(--km-citron-pale);
}

.relais-meteo-icone--sec {
    color: var(--km-citron-profond);
}

.relais-meteo-icone--mouille,
.relais-meteo-icone--pluie {
    color: var(--km-menu);
}

.relais-conditions__mm {
    color: var(--km-brume);
    font-size: 0.85em;
}

.relais-conditions__actions {
    margin-top: 10px;
}

.relais-conditions__ligne--pluie td {
    background: var(--km-citron-wash);
}

/* Résultats : en-tête de la course (infos + chiffres clés) */
.resultats-entete {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 32px;
}

.resultats-entete__infos {
    min-width: 0;
}

.resultats-entete .course-info {
    margin: 0;
    color: var(--km-brume);
}

.resultats-chiffres {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 28px;
    margin: 0 0 0 auto;
}

.resultats-chiffres__item dt {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--km-brume);
}

.resultats-chiffres__item dd {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--km-encre);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.resultats-trophee {
    color: rgb(235, 188, 33);
}

.resultats-section-titre {
    margin: 0;
}

.resultats-pastille-pilote {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 6px;
    vertical-align: 0;
    flex-shrink: 0;
}

.resultats-pilotes {
    margin-bottom: 8px;
}

.carte-pilote--filtre {
    cursor: pointer;
    user-select: none;
    border: 2px solid transparent;
    transition: opacity 0.15s ease, filter 0.15s ease, border-color 0.15s ease;
}

.carte-pilote--filtre:hover {
    border-color: var(--km-joint);
}

.carte-pilote--filtre:focus-visible {
    outline: var(--km-focus);
    outline-offset: 2px;
}

.carte-pilote--filtre[aria-pressed="false"] {
    opacity: 0.45;
    filter: grayscale(1);
    box-shadow: none;
}

.carte-pilote--filtre[aria-pressed="false"] .pilote-nom {
    text-decoration: line-through;
}

.resultats-pilotes__tous {
    appearance: none;
    background: none;
    border: 0;
    box-shadow: none;
    min-height: 0;
    padding: 0;
    margin-left: 6px;
    color: var(--km-menu);
    font: inherit;
    text-decoration: underline;
    cursor: pointer;
}

.resultats-pilotes__tous:hover {
    background: none;
    box-shadow: none;
    color: var(--km-menu-hover);
}

.pilote-carte-meta {
    margin-top: 4px;
    font-size: 0.8rem;
    color: var(--km-brume);
    font-variant-numeric: tabular-nums;
}

/* Résultats : onglet Détail, tours groupés par relais */
.resultats-detail-table {
    width: 100%;
    font-variant-numeric: tabular-nums;
}

.recap-table .resultats-detail-relais td {
    background: var(--km-herbe-wash);
    color: var(--km-encre);
    font-size: 0.85rem;
    text-align: left;
    white-space: normal;
}

.recap-table .resultats-detail-relais--humide td {
    background: var(--km-citron-pale);
}

.recap-table .resultats-detail-relais--pluie td {
    background: var(--km-citron-wash);
}

.resultats-detail-relais__meteo {
    margin-left: 6px;
    color: var(--km-brume);
}

.resultats-ecart {
    color: var(--km-brume);
}

.resultats-ecart--meilleur {
    color: var(--km-menu);
    font-weight: 600;
}

/* Résultats : graphique (légende, bandes météo, température) */
.graphique-entete {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 20px;
    margin: 8px 0 4px;
}

.graphique-entete__titre {
    margin: 0;
    color: var(--km-menu);
}

.graphique-legende {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 16px;
    font-size: 0.85rem;
    color: var(--km-encre);
}

.graphique-legende__pilote {
    appearance: none;
    background: none;
    border: 0;
    box-shadow: none;
    min-height: 0;
    padding: 2px 0;
    color: inherit;
    font: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
}

.graphique-legende__pilote:hover {
    background: none;
    box-shadow: none;
    color: var(--km-menu);
}

.graphique-legende__pilote:focus-visible {
    outline: var(--km-focus);
    outline-offset: 2px;
}

.graphique-legende__pilote[aria-pressed="false"] {
    opacity: 0.4;
    text-decoration: line-through;
}

.graphique-legende__meilleur {
    margin-left: 6px;
    color: var(--km-brume);
    font-variant-numeric: tabular-nums;
}

.graphique-legende__meilleur::before {
    content: "· ";
}

.graphique-legende__meteo {
    display: inline-flex;
    align-items: center;
    font-weight: 400;
    color: var(--km-brume);
}

.graphique-legende__stand {
    display: inline-block;
    width: 9px;
    height: 9px;
    margin: 0 8px 0 2px;
    background: #8A99A8;
    transform: rotate(45deg);
}

.recap-table .resultats-tour-stand td {
    background: #F1F3F6;
    color: var(--km-brume);
}

.resultats-badge-stand {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 4px;
    background: #8A99A8;
    color: #FFFFFF;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
}

.graphique-legende__anneau {
    display: inline-block;
    box-sizing: border-box;
    width: 13px;
    height: 13px;
    margin-right: 6px;
    border: 2px solid var(--km-brume);
    border-radius: 50%;
    background: radial-gradient(circle, var(--km-brume) 0 3px, transparent 3.5px);
}

.graphique-legende__bande {
    display: inline-block;
    width: 16px;
    height: 10px;
    margin-right: 6px;
    border: 1px solid rgba(15, 86, 168, 0.45);
}

.graphique-legende__bande--pluie {
    background: repeating-linear-gradient(135deg, rgba(15, 86, 168, 0.3) 0 1px, rgba(15, 86, 168, 0.13) 1px 4px);
}

.graphique-legende__bande--mouille {
    background: rgba(15, 86, 168, 0.06);
    border-style: dashed;
}

.graphique-temp-shell {
    position: relative;
    height: 130px;
    max-width: 100%;
    flex: 0 0 auto;
}

.login-container {
    min-height: calc(100vh - 80px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    /*background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);*/
}

.login-box {
    background: white;
    border-radius: 20px;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
    padding: 40px;
    width: 100%;
    max-width: 480px;
}

.login-header {
    text-align: center;
    margin-bottom: 30px;
}

.login-logo {
    width: 150px;
    height: auto;
    margin-bottom: 20px;
}

.login-header h2 {
    color: var(--km-asphalte);
    font-size: 2em;
    margin-bottom: 10px;
}

.login-subtitle {
    color: #6c757d;
    font-size: 1.1em;
}

.login-form {
    margin-top: 30px;
}

.input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.input-icon {
    position: absolute;
    left: 15px;
    color: #6c757d;
    font-size: 1.2em;
}

.input-wrapper input {
    width: 100%;
    padding: 12px 15px 12px 45px;
    border: 2px solid #e9ecef;
    border-radius: 10px;
    font-size: 1em;
    transition: all 0.3s ease;
}

.input-wrapper input:focus {
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 4px rgba(15, 86, 168, 0.1);
    outline: none;
}

.input-wrapper input::placeholder {
    color: #adb5bd;
}

.error-message {
    background-color: #fff3f3;
    color: var(--km-feu);
    padding: 15px;
    border-radius: 10px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.error-icon {
    font-size: 1.2em;
}

.login-form .btn-submit,
.form-group-connexion-button .btn-submit {
    width: 100%;
    padding: 14px 20px;
    background-color: var(--km-asphalte);
    color: white;
    border: none;
    border-radius: 10px;
    font-size: 1.1em;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.btn-submit:hover {
    background-color: var(--km-asphalte-hover);
    transform: translateY(-2px);
}

.btn-arrow {
    transition: transform 0.3s ease;
}

.btn-submit:hover .btn-arrow {
    transform: translateX(5px);
}

.login-footer {
    margin-top: 25px;
    text-align: center;
}

.back-link {
    color: #6c757d;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    transition: color 0.3s ease;
}

.back-link:hover {
    color: var(--km-asphalte);
}

.back-arrow {
    transition: transform 0.3s ease;
}

.back-link:hover .back-arrow {
    transform: translateX(-5px);
}

.user-menu {
    display: none;
}

.btn-logout {
    display: none;
}

.login-logo {
    text-align: center;
    margin-bottom: 1.5rem;
}

.login-logo img {
    width: 120px;
    height: auto;
    margin-bottom: 1rem;
    animation: logoFadeIn 0.8s ease-out;
}

@keyframes logoFadeIn {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Ajuster l'espacement du titre puisque nous avons maintenant un logo */
.login-box h1 {
    margin-bottom: 2rem;  /* Réduit de 3rem à 2rem car nous avons le logo au-dessus */
}

/* Ajuster la taille de la boîte de connexion pour accommoder le logo */
.login-box {
    padding-top: 2.5rem;  /* Légèrement réduit pour compenser l'espace du logo */
}

/* Style pour le bouton de déconnexion (doublon - déjà défini plus haut) */

/* Styles pour strategie_relais.php */

/* Page statistiques pilote */
.pilote-stats-page .pilote-stats-toolbar,
.circuit-detail-page .circuit-detail-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: var(--km-btn-gap);
    margin: 0 0 1rem;
}

.pilote-stats-page .pilote-stats-toolbar .btn-cancel,
.pilote-stats-page .pilote-stats-toolbar .btn-add,
.circuit-detail-page .circuit-detail-toolbar .btn-cancel,
.circuit-detail-page .circuit-detail-toolbar .btn-add {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: stretch;
    box-sizing: border-box;
    padding: 10px 20px;
    font-size: 14px;
    font-weight: normal;
    line-height: 1.25;
    text-align: center;
}

.pilote-stats-empty {
    margin: 0;
    color: var(--km-brume);
    font-size: 0.95rem;
}

.pilote-stats-table {
    margin-top: 8px;
}

.pilote-stats-budget-chart-wrap {
    position: relative;
    height: 220px;
}

/* En-tête : identité du pilote */
.ps-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    margin: 8px 0 20px;
    padding-left: 6px;
}

.ps-hero-id {
    display: flex;
    align-items: center;
    gap: 18px;
    min-width: 0;
}

.ps-avatar {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--km-menu) 0%, var(--km-asphalte) 100%);
    color: #fff;
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    box-shadow: 0 0 0 4px #fff, 0 0 0 6px var(--km-citron);
}

.ps-eyebrow {
    margin: 0 0 4px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--km-brume);
}

.pilote-stats-page .ps-hero h1 {
    margin: 0;
    font-size: clamp(1.7rem, 3.4vw, 2.3rem);
    font-weight: 400;
    line-height: 1.1;
    color: var(--km-encre);
}

.pilote-stats-page .ps-hero h1 strong {
    font-weight: 800;
}

.pilote-stats-page .ps-hero-actions {
    margin: 0;
}

/* Chiffres clés */
.ps-kpis {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}

.ps-kpi {
    background: #fff;
    border-radius: 12px;
    padding: 16px 18px;
    box-shadow: 0 1px 3px rgba(15, 86, 168, 0.08);
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.ps-kpi-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--km-brume);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.ps-kpi-value {
    font-size: 1.9rem;
    font-weight: 800;
    color: var(--km-encre);
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
}

.ps-kpi-value small {
    font-size: 1rem;
    font-weight: 600;
    color: var(--km-brume);
}

.ps-kpi-sub {
    font-size: 0.82rem;
    color: var(--km-brume);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Cartes */
.ps-card {
    background: #fff;
    border-radius: 12px;
    padding: 20px 22px;
    box-shadow: 0 1px 3px rgba(15, 86, 168, 0.08);
    margin-bottom: 16px;
    min-width: 0;
}

.ps-card-head {
    margin-bottom: 16px;
}

.pilote-stats-page .ps-card-head h2,
.circuit-detail-page .ps-card-head h2 {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--km-encre);
    display: flex;
    align-items: center;
    gap: 8px;
}

.ps-card-head p {
    margin: 2px 0 0;
    font-size: 0.88rem;
    color: var(--km-brume);
}

.ps-count {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--km-asphalte);
    background: var(--km-citron-pale);
    border-radius: 999px;
    padding: 2px 9px;
}

.ps-meta {
    font-size: 0.82rem;
    color: var(--km-brume);
}

.ps-meta a {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: var(--km-joint);
    text-underline-offset: 2px;
}

.ps-meta a:hover {
    color: var(--km-asphalte);
}

.ps-meta .fa-sun { color: #E0A800; }
.ps-meta .fa-droplet,
.ps-meta .fa-cloud-rain { color: var(--km-asphalte); }

/* Records par circuit */
.ps-records {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 12px;
}

.ps-record {
    border: 1px solid var(--km-joint);
    border-radius: 10px;
    padding: 14px 16px;
}

.pilote-stats-page .ps-record h3 {
    margin: 0 0 10px;
    font-size: 1rem;
    font-weight: 700;
}

.ps-record h3 a {
    color: var(--km-encre);
    text-decoration: none;
}

.ps-record h3 a:hover {
    color: var(--km-asphalte);
}

.ps-record dl {
    margin: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.ps-record-ligne {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.ps-record-ligne + .ps-record-ligne {
    border-left: 1px solid var(--km-beton);
    padding-left: 14px;
}

.ps-record-ligne dt {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--km-brume);
    white-space: nowrap;
}

.ps-record-ligne dt i {
    width: 14px;
    text-align: center;
    color: var(--km-asphalte);
}

.ps-record-ligne dd {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.ps-temps {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--km-encre);
    font-variant-numeric: tabular-nums;
}

.ps-vide {
    color: var(--km-joint);
    font-weight: 700;
}

/* Historique + colonne latérale */
.ps-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 16px;
    align-items: start;
}

.ps-side .ps-card:last-child {
    margin-bottom: 0;
}

.ps-forme {
    position: relative;
    height: 180px;
    margin: -4px 0 12px;
}

.ps-courses {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ps-course {
    display: grid;
    grid-template-columns: 62px minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 14px;
    padding: 10px 4px;
    border-top: 1px solid var(--km-beton);
}

.ps-course:first-child {
    border-top: none;
}

.ps-date {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 52px;
    border-radius: 10px;
    background: var(--km-citron-pale);
    color: var(--km-encre);
    text-decoration: none;
    line-height: 1.1;
}

.ps-date strong {
    font-size: 1.2rem;
    font-weight: 800;
}

.ps-date span {
    font-size: 0.6rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--km-brume);
    white-space: nowrap;
}

.ps-date:hover {
    background: var(--km-citron-wash);
}

.ps-course-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.ps-course-circuit {
    font-weight: 600;
    color: var(--km-encre);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ps-course-circuit:hover {
    color: var(--km-asphalte);
}

.ps-rang {
    display: inline-flex;
    align-items: baseline;
    gap: 5px;
    min-width: 76px;
    justify-content: center;
    padding: 5px 12px;
    border-radius: 999px;
    background: var(--km-beton);
    color: var(--km-encre);
    font-weight: 800;
    font-size: 1rem;
    font-variant-numeric: tabular-nums;
}

.ps-rang small {
    font-size: 0.78rem;
    font-weight: 600;
    opacity: 0.7;
}

.ps-rang i {
    font-size: 0.8rem;
}

.ps-rang--or { background: #FBF0CF; color: #8A6400; }
.ps-rang--argent { background: #ECEFF3; color: #4B5563; }
.ps-rang--bronze { background: #F6E6D8; color: #8A4B1C; }
.ps-rang--vide { color: var(--km-brume); font-weight: 400; }

.ps-lien-resultats {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--km-asphalte);
    text-decoration: none;
    white-space: nowrap;
    padding: 6px 8px;
    border-radius: 8px;
}

.ps-lien-resultats i {
    font-size: 0.7rem;
    margin-left: 2px;
}

.ps-lien-resultats:hover {
    background: var(--km-citron-pale);
}

/* Carte « meilleur classement » */
.ps-best {
    background: linear-gradient(150deg, var(--km-menu) 0%, var(--km-menu-hover) 100%);
    color: #fff;
}

.ps-best-label {
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--km-citron);
}

.ps-best-rang {
    margin: 6px 0 4px;
    font-size: 3rem;
    font-weight: 800;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

.ps-best-rang small {
    font-size: 1.2rem;
    font-weight: 600;
    opacity: 0.7;
}

.ps-best-detail a {
    color: #fff;
    text-decoration: underline;
    text-decoration-color: rgba(255, 255, 255, 0.4);
    text-underline-offset: 3px;
}

.ps-best-detail {
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.82);
}

.ps-best-equipe-titre {
    margin: 16px 0 8px;
    padding-top: 14px;
    border-top: 1px solid rgba(255, 255, 255, 0.18);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.6);
}

.ps-best-equipe {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 6px;
    font-size: 0.9rem;
}

.ps-best-equipe li {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ps-best-equipe li span {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.68rem;
    font-weight: 700;
}

.ps-best-equipe li.is-moi {
    font-weight: 700;
}

.ps-best-equipe li.is-moi span {
    background: var(--km-citron);
    color: var(--km-encre);
}

/* Fiche circuit (réutilise les cartes et chiffres clés de la fiche pilote) */
.cd-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    margin: 8px 0 20px;
}

.cd-hero-id {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    min-width: 0;
}

.cd-hero-ico {
    width: 64px;
    height: 64px;
    border-radius: 16px;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--km-menu) 0%, var(--km-asphalte) 100%);
    color: var(--km-citron);
    font-size: 1.6rem;
}

.circuit-detail-page .cd-hero h1 {
    margin: 0;
    font-size: clamp(1.7rem, 3.4vw, 2.3rem);
    font-weight: 800;
    line-height: 1.1;
    color: var(--km-encre);
}

.cd-adresse {
    margin: 6px 0 10px;
    color: var(--km-brume);
    font-size: 0.95rem;
}

.cd-adresse i {
    color: var(--km-asphalte);
    margin-right: 4px;
}

.cd-contacts {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.cd-contact {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid var(--km-joint);
    color: var(--km-encre);
    font-size: 0.85rem;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
}

.cd-contact:hover {
    border-color: var(--km-asphalte);
    color: var(--km-asphalte);
}

.cd-contact i {
    color: var(--km-asphalte);
    font-size: 0.8rem;
}

.cd-contact img {
    display: block;
}

.cd-live-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #22C55E;
    box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.2);
}

.circuit-detail-page .cd-hero-actions {
    margin: 0;
}

.cd-kpis .ps-kpi-sub {
    text-decoration: none;
}

a.ps-kpi-sub:hover {
    color: var(--km-asphalte);
}

.cd-main {
    min-width: 0;
}

/* Onglets course / entraînement */
.cd-head-tabs {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.cd-tabs {
    display: inline-flex;
    padding: 3px;
    border-radius: 10px;
    background: var(--km-beton);
}

.circuit-detail-page .cd-tabs button {
    border: none;
    background: none;
    box-shadow: none;
    margin: 0;
    padding: 6px 14px;
    min-height: 0;
    width: auto;
    border-radius: 8px;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--km-brume);
    cursor: pointer;
}

.circuit-detail-page .cd-tabs button span {
    font-size: 0.75rem;
    opacity: 0.7;
    margin-left: 2px;
}

.circuit-detail-page .cd-tabs button[aria-selected="true"] {
    background: #fff;
    color: var(--km-encre);
    box-shadow: 0 1px 2px rgba(15, 86, 168, 0.15);
}

.circuit-detail-page .cd-tabs button:hover {
    transform: none;
    color: var(--km-encre);
}

/* Classement des meilleurs temps */
.cd-board {
    list-style: none;
    margin: 0;
    padding: 0;
}

.cd-board-ligne {
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr) auto 84px 64px;
    align-items: center;
    gap: 12px;
    padding: 8px 4px;
    border-top: 1px solid var(--km-beton);
}

.cd-board-ligne:first-child {
    border-top: none;
}

.cd-pos {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--km-brume);
}

.cd-pos--1 { background: #FBF0CF; color: #8A6400; }
.cd-pos--2 { background: #ECEFF3; color: #4B5563; }
.cd-pos--3 { background: #F6E6D8; color: #8A4B1C; }

.cd-pilote {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.cd-pilote a {
    color: var(--km-encre);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cd-pilote a:hover {
    color: var(--km-asphalte);
}

.cd-pilote a strong {
    font-weight: 600;
}

.cd-initiales {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--km-citron-pale);
    color: var(--km-asphalte);
    font-size: 0.68rem;
    font-weight: 700;
}

.cd-detail {
    font-size: 0.8rem;
    color: var(--km-brume);
    white-space: nowrap;
}

.cd-detail .fa-sun { color: #E0A800; }
.cd-detail .fa-droplet,
.cd-detail .fa-cloud-rain { color: var(--km-asphalte); }

.cd-temps {
    text-align: right;
    font-weight: 700;
    font-size: 1rem;
    color: var(--km-encre);
    font-variant-numeric: tabular-nums;
}

.cd-ecart {
    text-align: right;
    font-size: 0.8rem;
    color: var(--km-brume);
    font-variant-numeric: tabular-nums;
}

.cd-board-ligne:first-child .cd-temps {
    color: var(--km-asphalte);
}

/* Courses : équipe engagée */
.cd-equipe-noms {
    font-size: 0.9rem;
    color: var(--km-encre);
    line-height: 1.4;
}

.ps-lien-resultats.is-desactive {
    color: var(--km-joint);
    cursor: default;
}

.ps-lien-resultats.is-desactive:hover {
    background: none;
}

/* Plan du circuit */
.cd-plan-image {
    display: block;
    border-radius: 10px;
    overflow: hidden;
    background: var(--km-beton);
}

.cd-plan-image img {
    display: block;
    width: 100%;
    height: auto;
    max-height: 320px;
    object-fit: contain;
}

.cd-plan-vide {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 140px;
    border: 2px dashed var(--km-joint);
    border-radius: 10px;
    color: var(--km-brume);
    font-size: 0.88rem;
}

.cd-plan-vide i {
    font-size: 1.6rem;
    color: var(--km-joint);
}

.cd-plan-actions {
    display: flex;
    gap: 6px;
    margin-top: 10px;
}

.cd-plan-actions form {
    margin: 0;
    padding: 0;
    background: none;
    box-shadow: none;
}

.circuit-detail-page .cd-lien-action {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    padding: 5px 10px;
    width: auto;
    min-height: 0;
    border: none;
    border-radius: 8px;
    background: none;
    box-shadow: none;
    color: var(--km-asphalte);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
}

.circuit-detail-page .cd-lien-action:hover {
    background: var(--km-citron-pale);
    transform: none;
}

.circuit-detail-page .cd-lien-action--danger {
    color: var(--km-feu);
}

.circuit-detail-page .cd-lien-action--danger:hover {
    background: #FDECEA;
}

.cd-upload input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.cd-upload label:focus-within {
    outline: var(--km-focus);
}

.cd-plan-aide {
    margin: 4px 0 0;
    font-size: 0.75rem;
    color: var(--km-brume);
}

/* Pistes */
.circuit-detail-page .circuit-pistes-table.cd-pistes {
    width: 100%;
    margin: 0;
    box-shadow: none;
    border-radius: 0;
}

.circuit-detail-page .cd-pistes th {
    background: none;
    color: var(--km-brume);
    border-bottom: 1px solid var(--km-joint);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    text-align: left;
    padding: 6px 4px;
}

.circuit-detail-page .cd-pistes td {
    padding: 8px 4px;
    border-bottom: 1px solid var(--km-beton);
    background: none;
}

.cd-add-piste {
    margin-top: 12px;
    padding: 12px;
    border-radius: 10px;
    background: var(--km-beton);
}

.cd-add-piste form {
    margin: 0;
    padding: 0;
    background: none;
    box-shadow: none;
}

.cd-add-piste-champs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.cd-add-piste-champs label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--km-encre);
    margin: 0;
}

.circuit-detail-page .cd-add-piste-champs input {
    width: 100%;
    height: 36px;
    margin: 0;
    padding: 0 10px;
    border: 1px solid var(--km-joint);
    border-radius: 8px;
    background: #fff;
    font-size: 0.95rem;
    box-sizing: border-box;
}

.cd-add-piste-actions {
    display: flex;
    gap: 8px;
    margin-top: 10px;
}

@media (max-width: 720px) {
    .cd-hero-ico {
        width: 48px;
        height: 48px;
        border-radius: 12px;
        font-size: 1.2rem;
    }

    .cd-board-ligne {
        grid-template-columns: 28px minmax(0, 1fr) auto;
        row-gap: 0;
    }

    .cd-detail {
        grid-column: 2;
        grid-row: 2;
        padding-left: 38px;
    }

    .cd-temps {
        grid-column: 3;
        grid-row: 1;
    }

    .cd-ecart {
        grid-column: 3;
        grid-row: 2;
    }

    .cd-contact {
        font-size: 0.8rem;
    }
}

/* Liste des pilotes */
.lpi-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin: 8px 0 18px;
}

.lp-pilotes-page .lpi-head h1 {
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: clamp(1.7rem, 3.4vw, 2.2rem);
    font-weight: 800;
    color: var(--km-encre);
}

.lp-pilotes-page .lpi-head h1 .ps-count {
    font-size: 0.9rem;
}

.lp-pilotes-page .lpi-head .btn-add[hidden] {
    display: none;
}

/* Formulaire d'ajout */
.lpi-ajout[hidden] {
    display: none;
}

.lpi-ajout form {
    margin: 0;
    padding: 0;
    background: none;
    box-shadow: none;
    max-width: none;
}

.lpi-ajout-champs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.lpi-ajout-champs label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin: 0;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--km-encre);
}

.lp-pilotes-page .lpi-ajout-champs input {
    width: 100%;
    height: 38px;
    margin: 0;
    padding: 0 12px;
    border: 1px solid var(--km-joint);
    border-radius: 8px;
    background: #fff;
    font-size: 0.95rem;
    box-sizing: border-box;
}

.lp-pilotes-page .lpi-ajout-champs input:focus {
    outline: none;
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 3px rgba(24, 115, 200, 0.15);
}

.lpi-ajout-actions {
    display: flex;
    gap: 8px;
    margin-top: 14px;
}

/* Barre d'outils */
.lpi-outils {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.lpi-recherche {
    flex: 1 1 320px;
    margin: 0;
    max-width: 460px;
}

.lp-pilotes-page .lpi-recherche input[type="search"] {
    width: 100%;
    height: 38px;
    padding: 0 12px 0 32px;
    margin: 0;
    border: 1px solid var(--km-joint);
    border-radius: 999px;
    background: #fff;
    font-size: 0.9rem;
    box-sizing: border-box;
}

.lp-pilotes-page .lpi-recherche input[type="search"]:focus {
    outline: none;
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 3px rgba(24, 115, 200, 0.15);
}

.lpi-tri {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 0.85rem;
    color: var(--km-brume);
    white-space: nowrap;
}

.lp-pilotes-page .lpi-tri select {
    width: auto;
    height: 38px;
    margin: 0;
    padding: 0 30px 0 12px;
    border: 1px solid var(--km-joint);
    border-radius: 8px;
    background-color: #fff;
    font-size: 0.9rem;
    color: var(--km-encre);
}

.lp-pilotes-page .lpi-bulk {
    margin: 0 0 0 auto;
}

/* Grille de cartes */
.lpi-grille {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
    gap: 14px;
}

.lpi-carte {
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: #fff;
    border-radius: 12px;
    padding: 16px 16px 12px;
    box-shadow: 0 1px 3px rgba(15, 86, 168, 0.08);
    border: 1px solid transparent;
    transition: border-color 0.15s, box-shadow 0.15s;
    min-width: 0;
}

.lpi-carte[hidden] {
    display: none;
}

.lpi-carte:hover {
    border-color: var(--km-joint);
    box-shadow: 0 6px 18px rgba(15, 86, 168, 0.1);
}

.lpi-carte:has(.pilote-select-checkbox:checked) {
    border-color: var(--km-feu);
}

.lpi-carte-haut {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.lpi-identite {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    text-decoration: none;
    color: var(--km-encre);
}

.lpi-avatar {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--km-menu) 0%, var(--km-asphalte) 100%);
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
}

.lpi-nom {
    font-size: 1.05rem;
    line-height: 1.25;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lpi-nom strong {
    font-weight: 700;
}

.lpi-identite:hover .lpi-nom {
    color: var(--km-asphalte);
}

.lpi-select {
    margin: 0;
    padding: 4px;
    cursor: pointer;
}

.lpi-select input {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--km-feu);
}

.lpi-chiffres {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
    margin: 0;
}

.lpi-chiffres div {
    background: var(--km-beton);
    border-radius: 8px;
    padding: 6px 8px;
    text-align: center;
}

.lpi-chiffres dt {
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--km-brume);
}

.lpi-chiffres dd {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--km-encre);
    font-variant-numeric: tabular-nums;
}

.lpi-derniere {
    margin: -2px 0 0;
    font-size: 0.8rem;
    color: var(--km-brume);
}

.lpi-derniere i {
    color: var(--km-asphalte);
    margin-right: 4px;
}

.lpi-contacts {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-height: 44px;
}

.lpi-contact {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
    color: var(--km-encre);
    text-decoration: none;
    min-width: 0;
}

.lpi-contact span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lpi-contact i {
    width: 14px;
    text-align: center;
    color: var(--km-brume);
    font-size: 0.78rem;
}

a.lpi-contact:hover {
    color: var(--km-asphalte);
}

.lpi-contact--vide {
    color: var(--km-brume);
    font-style: italic;
}

.lpi-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 10px;
    margin-top: auto;
    border-top: 1px solid var(--km-beton);
}

.lpi-lien {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--km-asphalte);
    text-decoration: none;
}

.lpi-lien i {
    font-size: 0.7rem;
    margin-left: 2px;
}

.lpi-lien:hover {
    text-decoration: underline;
}

.lpi-icones {
    display: inline-flex;
    gap: 6px;
}

@media (max-width: 900px) {
    .lpi-ajout-champs {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .lp-pilotes-page .lpi-bulk {
        margin-left: 0;
    }
}

@media (max-width: 520px) {
    .lpi-ajout-champs {
        grid-template-columns: 1fr;
    }

    .lpi-recherche {
        flex-basis: 100%;
        max-width: none;
    }
}

@media (max-width: 1100px) {
    .ps-kpis {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .ps-grid {
        grid-template-columns: 1fr;
    }

    .ps-side {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 16px;
    }

    .ps-side .ps-card {
        margin-bottom: 0;
    }
}

@media (max-width: 720px) {
    .ps-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ps-kpi:last-child {
        grid-column: span 2;
    }

    .ps-side {
        grid-template-columns: 1fr;
    }

    .ps-card {
        padding: 16px;
    }

    .ps-avatar {
        width: 56px;
        height: 56px;
        font-size: 1.25rem;
    }

    .ps-course {
        grid-template-columns: 58px minmax(0, 1fr) auto;
        gap: 10px;
    }

    .ps-lien-resultats {
        grid-column: 2 / -1;
        justify-self: start;
        padding: 0;
    }

    .ps-records {
        grid-template-columns: 1fr;
    }
}

.page-title-with-toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.km-fold {
    display: flex;
    align-items: center;
}

.km-fold > .btn-toggle-details {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    margin: 0;
    padding: 0;
    border: none;
    background: none;
    box-shadow: none;
    min-width: 0;
    min-height: 0;
    height: auto;
    width: auto;
    font: inherit;
    font-size: inherit;
    font-weight: inherit;
    font-family: inherit;
    letter-spacing: inherit;
    line-height: inherit;
    color: inherit;
    text-align: left;
    cursor: pointer;
    border-radius: 0 !important;
}

.km-fold > .btn-toggle-details:hover,
.km-fold > .btn-toggle-details:active,
.km-fold > .btn-toggle-details:focus-visible {
    background: none;
    box-shadow: none;
    color: var(--km-asphalte-hover);
}

.km-fold > .btn-toggle-details i {
    flex: 0 0 auto;
    font-size: 0.42em;
    line-height: 1;
    color: var(--km-citron-profond);
    transition: transform 0.2s ease, color 0.15s ease;
}

.km-fold > .btn-toggle-details:hover i {
    color: var(--km-asphalte);
}

.btn-toggle-details {
    background: transparent;
    color: var(--km-brume);
    border: none;
    border-radius: 0;
    padding: 0;
    cursor: pointer;
    font-size: inherit;
    transition: color 0.15s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: none;
    min-width: 0;
    min-height: 0;
}

.btn-toggle-details:hover {
    background: none;
    color: var(--km-asphalte);
    box-shadow: none;
}

.btn-toggle-details:active {
    background: none;
}

.btn-toggle-details i {
    transition: transform 0.2s ease;
    font-size: 0.7rem;
}

.course-details {
    background: white;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.course-details.is-collapsed {
    display: none;
}

/* Résultats course — graphique en pleine hauteur lorsque le résumé est rétracté */
.graphique-chart-shell {
    position: relative;
    height: 420px;
    max-width: 100%;
}

.container.resultats-course-page:has(#course-details.is-collapsed) {
    display: flex;
    flex-direction: column;
    min-height: calc(100dvh - 80px);
}

.container.resultats-course-page:has(#course-details.is-collapsed) > .selection-pilotes-section {
    flex-shrink: 0;
}

.container.resultats-course-page:has(#course-details.is-collapsed) > .strategie-summary {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin-top: 12px;
}

.container.resultats-course-page:has(#course-details.is-collapsed) > .strategie-summary > .tabs-container {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.container.resultats-course-page:has(#course-details.is-collapsed) #tab-graphique.tab-content.active {
    display: flex !important;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.container.resultats-course-page:has(#course-details.is-collapsed) #graphiqueTempsWrap {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.container.resultats-course-page:has(#course-details.is-collapsed) .graphique-chart-shell {
    flex: 1 1 auto;
    height: auto !important;
    min-height: 320px;
}

.container.resultats-course-page:has(#course-details.is-collapsed) .graphique-chart-shell canvas#graphiqueTemps {
    width: 100% !important;
    height: 100% !important;
}

.course-details h2 {
    margin: 0 0 10px 0;
    color: var(--km-asphalte);
}

.course-info {
    margin: 0;
    line-height: 1.5;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pilote-select {
    flex: 1;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
}

.strategie-summary {
    margin-top: 20px;
    padding: 15px;
    background-color: #f8f9fa;
    border-radius: 6px;
    border-left: 4px solid var(--km-asphalte);
}

.strategy-summary-noborder {
    border: none;
}

.strategie-summary h3 {
    margin: 0 0 10px 0;
    color: var(--km-asphalte);
}

.strategie-summary h4 {
    margin: 14px 0 8px 0;
    font-size: 1.05em;
    color: #333;
    font-weight: 600;
}

.strategie-summary p {
    margin: 10px 0;
    font-size: 1.1em;
}

.strategie-summary span {
    font-weight: bold;
}

.form-actions {
    margin-top: 16px;
    margin-bottom: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--km-btn-gap);
    justify-content: flex-start;
}

.form-actions .btn-submit,
.form-actions .btn-cancel,
.form-actions .btn-primary,
.form-actions .btn-primary-delete {
    width: auto;
    max-width: none;
    flex: 0 0 auto;
}

.form-actions > *,
.selection-pilotes-section > .btn-primary,
.selection-pilotes-section > .btn-cancel,
.selection-pilotes-section > .btn-primary-delete {
    margin-left: 0;
    margin-right: 0;
}

.btn-submit {
    padding: 10px 20px;
    border-radius: 4px;
    border: none;
    cursor: pointer;
    font-size: 1em;
    text-decoration: none;
}

.btn-submit {
    background: var(--km-asphalte);
    color: white;
    transition: all 0.3s ease;
}

.btn-submit:hover {
    background: var(--km-asphalte-hover);
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(15, 86, 168, 0.2);
}

.btn-submit:disabled {
    background-color: #ccc;
    cursor: not-allowed;
}

.btn-cancel {
    display: inline-block;
    background: #6c757d;
    color: white;
    padding: 12px 24px;
    text-decoration: none;
    border: none;
    border-radius: 4px;
    font-weight: bold;
    font-family: inherit;
    cursor: pointer;
    transition: all 0.3s ease;
}

.btn-cancel:hover {
    background: #5a6268;
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.btn-small {
    padding: 8px 14px;
    font-size: 0.9em;
}

/* Forcer la petite taille quand combiné avec btn-submit/btn-cancel
   (il existe plusieurs définitions de .btn-submit dans ce fichier). */
.btn-submit.btn-small {
    padding: 8px 14px;
    font-size: 0.9em;
    width: auto;
}

.btn-cancel.btn-small {
    padding: 8px 14px;
    font-size: 0.9em;
}

.alert {
    padding: 15px;
    margin-bottom: 20px;
    border-radius: 4px;
}

.alert-error {
    background: #f8d7da;
    border: 1px solid #f5c6cb;
    color: #721c24;
}

.alert-info {
    background-color: var(--km-citron-pale);
    border: 1px solid var(--km-citron-wash);
    color: var(--km-asphalte-hover);
}

/* Styles généraux pour les boutons */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 16px;
    margin: 0 4px;
    border-radius: 4px;
    text-decoration: none;
    font-weight: normal;
    cursor: pointer;
    border: none;
    transition: background-color 0.2s;
    height: 32px; /* Hauteur fixe pour tous les boutons */
    vertical-align: middle;
}

/* Style pour les boutons avec icônes */
.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px;
    width: 32px;
    height: 32px;
    box-sizing: border-box;
    background: white !important;
}

.btn-icon img {
    width: 24px;
    height: 24px;
    display: block;
    background-color: transparent !important;
    background: transparent !important;
}

/* Icônes Font Awesome : même emprise visuelle que les images 24×24 */
.btn-icon i[class*="fa-"] {
    font-size: 14px;
    width: 24px;
    height: 24px;
    line-height: 24px;
    text-align: center;
    color: #616161;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-icon:hover i[class*="fa-"] {
    color: var(--km-asphalte);
}

/* Styles pour les boutons textuels */
.btn-strategie {
    background-color: var(--km-herbe);
    color: white !important;
    text-decoration: none !important;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 16px;
    box-sizing: border-box;
}

.btn-strategie:hover {
    background-color: var(--km-herbe-hover);
    color: white !important;
}

.btn-strategie.btn-detail {
    max-height: 32px;
    height: auto;
    min-height: 0;
    padding: 5px 12px;
    font-size: 0.88rem;
    line-height: 1.2;
}

.btn-resultats {
    background-color: #6c757d;
    color: white !important;
    text-decoration: none !important;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 16px;
    box-sizing: border-box;
}

.btn-resultats:hover {
    background-color: #5a6268;
    color: white !important;
}

.btn-resultats.disabled {
    background-color: #cccccc;
    color: #666666 !important;
    cursor: not-allowed;
    pointer-events: none;
    text-decoration: none !important;
}

.btn-google-calendar {
    background: white;
    color: white !important;
    text-decoration: none !important;
    padding: 8px;
    border-radius: 6px;
    border: 1px solid #dadce0;
    cursor: pointer;
    font-size: 13px;
    font-weight: 600;
    margin: 0 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    position: relative;
    overflow: hidden;
    width: 40px;
    height: 40px;
}

.btn-google-calendar::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
    transition: left 0.5s;
}

.btn-google-calendar:hover::before {
    left: 100%;
}

.btn-google-calendar:hover {
    background: #f8f9fa;
    color: white !important;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    border-color: #dadce0;
}

.btn-google-calendar:active {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(66, 133, 244, 0.3);
}

.btn-apple-calendar {
    background: white;
    color: #000000 !important;
    text-decoration: none !important;
    padding: 8px;
    border-radius: 6px;
    border: 1px solid #dadce0;
    cursor: pointer;
    font-size: 13px;
    font-weight: 600;
    margin: 0 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    position: relative;
    overflow: hidden;
    width: 40px;
    height: 40px;
}

.btn-apple-calendar::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
    transition: left 0.5s;
}

.btn-apple-calendar:hover::before {
    left: 100%;
}

.btn-apple-calendar:hover {
    background: #f8f9fa;
    color: #000000 !important;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    border-color: #dadce0;
}

.btn-apple-calendar:active {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}

.calendar-logo {
    display: inline-block;
    transition: transform 0.3s ease;
    flex-shrink: 0;
}

.btn-google-calendar:hover .calendar-logo,
.btn-apple-calendar:hover .calendar-logo {
    transform: scale(1.1);
}

.calendar-event-menu a:hover {
    background-color: #F3F4F6;
}

/* Boutons de cartes (Google Maps et Apple Plan) - taille réduite */
.btn-map {
    background: white;
    color: white !important;
    text-decoration: none !important;
    padding: 3px;
    border-radius: 4px;
    border: 1px solid #dadce0;
    cursor: pointer;
    font-size: 13px;
    font-weight: 600;
    margin: 0 2px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    position: relative;
    overflow: hidden;
    width: 24px !important;
    height: 24px !important;
    min-width: 24px;
    min-height: 24px;
}

.btn-map:hover {
    background: #f8f9fa;
    transform: translateY(-1px);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
    border-color: #dadce0;
}

.btn-map:active {
    transform: translateY(0);
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

/* Style pour les boutons désactivés */
.btn[disabled] {
    background-color: #ccc;
    cursor: not-allowed;
    pointer-events: none;
}

/* Style pour la cellule contenant les actions */
.actions {
    white-space: nowrap;
    text-align: center;
    vertical-align: middle;
}

.circuit-link {
    color: var(--km-asphalte);
    text-decoration: none;
}

.circuit-link:hover {
    text-decoration: underline;
}

td strong .circuit-link {
    font-weight: bold !important;
}

.circuit-ville {
    font-weight: normal;
    font-size: 0.92em;
    line-height: 1.25;
}

.circuit-cell {
    vertical-align: middle;
}

.circuit-cell-layout {
    display: flex;
    align-items: center;
    gap: 8px;
}

.circuit-cell-maps {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex-shrink: 0;
}

.circuit-cell-maps .btn-map {
    margin: 0;
}

.circuit-cell-info {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px;
    min-width: 0;
    text-align: left;
}

.circuit-cell-info .circuit-ville::before {
    content: '-';
    margin-right: 6px;
    color: var(--km-brume);
}

/* Stratégie relais */
.strategie-form {
    background: white;
    padding: 10px 20px 20px 20px;
    border-radius: 8px;
    max-width: 1000px;
}

/* Barres d'actions du formulaire stratégie : Enregistrer / Retour à droite */
.strategie-form .form-actions {
    justify-content: flex-end;
}

/* Réduire la largeur du bouton "Enregistrer la stratégie" */
.strategie-form .form-actions .btn-submit {
    width: auto;
    min-width: 180px;
    max-width: 250px;
    padding: 10px 16px;
}

/* Page ajout résultats — même espace visuel que .strategie-summary (strategie_relais.php) */
.strategie-summary.resultats-aide-bloc {
    margin-top: 12px;
    margin-bottom: 4px;
}

.strategie-form .form-group + .strategie-summary.resultats-aide-bloc {
    margin-top: 18px;
}

.strategie-form .strategie-summary.resultats-aide-bloc + .form-group {
    margin-top: 1.25rem;
}

/* Import fichier — bouton moderne (resultats_course_ajouter.php) */
.resultats-file-form-group .resultats-file-field-label {
    display: block;
    margin-bottom: 8px;
    font-weight: bold;
    width: 100%;
}

.resultats-file-upload {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 18px;
}

.resultats-file-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
    opacity: 0;
}

.resultats-file-form-group label.resultats-file-btn {
    width: auto;
    max-width: max-content;
    align-self: flex-start;
    margin-bottom: 0;
}

.resultats-file-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 8px 14px;
    margin: 0;
    background: linear-gradient(135deg, var(--km-asphalte) 0%, var(--km-asphalte-hover) 100%);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 0.88rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    box-shadow: 0 2px 10px rgba(15, 86, 168, 0.28);
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
    text-decoration: none;
    line-height: 1.2;
}

.resultats-file-btn:hover {
    background: linear-gradient(135deg, var(--km-asphalte-hover) 0%, var(--km-asphalte) 100%);
    box-shadow: 0 4px 16px rgba(15, 86, 168, 0.38);
    transform: translateY(-1px);
}

.resultats-file-btn:active {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(15, 86, 168, 0.25);
}

.resultats-file-btn:focus {
    outline: none;
}

.resultats-file-btn:focus-visible {
    outline: 2px solid var(--km-brume);
    outline-offset: 3px;
}

.resultats-file-upload:focus-within .resultats-file-btn {
    box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--km-asphalte-hover), 0 2px 10px rgba(15, 86, 168, 0.28);
}

.resultats-file-btn i {
    font-size: 1.05em;
    opacity: 0.95;
}

.resultats-file-selected {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    flex: 0 1 auto;
    max-width: 220px;
    min-width: 0;
}

.resultats-file-selected .resultats-file-name {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.resultats-file-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    padding: 0;
    margin: 0;
    border: 1px solid #cfd8dc;
    border-radius: 8px;
    background: #fff;
    color: #546e7a;
    font-size: 0.95rem;
    font-family: inherit;
    cursor: pointer;
    line-height: 1;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.resultats-file-clear:hover {
    background: #eceff1;
    border-color: #b0bec5;
    color: #37474f;
}

.resultats-file-clear:focus {
    outline: none;
}

.resultats-file-clear:focus-visible {
    outline: 2px solid var(--km-citron);
    outline-offset: 2px;
}

.resultats-file-clear i {
    font-size: 1em;
}

.resultats-file-name {
    font-size: 0.8rem;
    color: #37474f;
    line-height: 1.3;
}

.resultats-file-name.is-empty {
    color: #90a4ae;
    font-style: italic;
}

.strategie-summary.resultats-aide-bloc h3 {
    margin: 0 0 10px 0;
}

.strategie-summary.resultats-aide-bloc .resultats-aide-intro {
    margin: 0 0 10px 0;
    color: #333;
    line-height: 1.5;
    font-size: 1em;
}

.strategie-summary.resultats-aide-bloc .resultats-aide-sub {
    margin: 0 0 6px 0;
    font-size: 0.95em;
    font-weight: 600;
    color: #555;
}

.strategie-summary.resultats-aide-bloc .resultats-aide-formats {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.strategie-summary.resultats-aide-bloc .resultats-format-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem 0.85rem;
    padding: 8px 10px;
    background: #fff;
    border-radius: 6px;
    border: 1px solid #e3e6ea;
}

.strategie-summary.resultats-aide-bloc .resultats-format-label {
    flex: 0 0 auto;
    min-width: 7.5rem;
    font-size: 0.8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #607d8b;
}

.strategie-summary.resultats-aide-bloc span.resultats-format-label {
    font-weight: 600;
}

.strategie-summary.resultats-aide-bloc .resultats-format-code {
    font-family: ui-monospace, "Cascadia Code", "Consolas", monospace;
    font-size: 0.88rem;
    color: var(--km-asphalte);
    background: #F3F4F6;
    padding: 0.3rem 0.5rem;
    border-radius: 4px;
    border: 1px solid #dde4ec;
    line-height: 1.4;
}

.strategie-summary.resultats-aide-bloc .resultats-format-code--inline {
    padding: 0.12rem 0.35rem;
    font-size: 0.88em;
}

.strategie-summary.resultats-aide-bloc span.resultats-format-hint {
    flex: 1 1 100%;
    margin-left: 0;
    font-size: 0.85rem;
    color: #78909c;
    font-style: italic;
    font-weight: normal;
}

@media (min-width: 520px) {
    .strategie-summary.resultats-aide-bloc span.resultats-format-hint {
        flex: 1 1 auto;
        margin-left: auto;
        text-align: right;
    }
}

.strategie-summary.resultats-aide-bloc .resultats-aide-foot {
    margin: 12px 0 0;
    padding-top: 10px;
    border-top: 1px solid #dee2e6;
    font-size: 0.95em;
    color: #555;
    line-height: 1.5;
}

.strategie-summary.resultats-aide-bloc .resultats-aide-foot--compact {
    margin-top: 8px;
    padding-top: 0;
    border-top: none;
    font-size: 0.9em;
    color: #666;
}

.btn-duplicate {
    display: none;
}

.form-group {
    margin-bottom: 15px;
    display: flex;
    flex-direction: column;
}

.form-group label {
    display: block;
    margin-bottom: 5px;
    font-weight: bold;
    width: 100%;
}

.form-group input {
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
    width: 100%;
    height: 35px;
    font-size: 14px;
    box-sizing: border-box;
}

.alert {
    padding: 15px;
    margin: 20px 0;
    border-radius: 6px;
    background-color: #f8d7da;
    border: 1px solid #f5c6cb;
    color: #721c24;
}

.btn-submit:disabled {
    background-color: #ccc;
    cursor: not-allowed;
}

.selection-pilotes-section {
    margin: 0;
    padding: 20px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--km-btn-gap);
    text-align: left;
}

.strategie-relais-page .selection-pilotes-section.strategie-relais-actions {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--km-btn-gap);
}

/* Libellés courts des boutons Stratégie / Course uniquement en vue smartphone */
.strategie-relais-page .strategie-relais-actions .strategie-relais-btn-label--mobile {
    display: none;
}
@media (max-width: 768px) {
    .strategie-relais-page .strategie-relais-actions .strategie-relais-btn-label--desktop {
        display: none;
    }
    .strategie-relais-page .strategie-relais-actions .strategie-relais-btn-label--mobile {
        display: inline;
    }
}

.btn-primary {
    display: inline-block;
    padding: 12px 24px;
    background-color: var(--km-asphalte);
    color: white;
    text-decoration: none;
    border: none;
    border-radius: 4px;
    font-weight: bold;
    font-family: inherit;
    cursor: pointer;
    transition: all 0.3s ease;
}

.btn-primary:hover {
    background-color: var(--km-asphalte-hover);
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(15, 86, 168, 0.2);
}

.btn-primary-delete  {
    margin-left: 0;
    display: inline-block;
    padding: 12px 24px;
    background-color: var(--km-feu);
    color: white;
    text-decoration: none;
    border: none;
    border-radius: 4px;
    font-weight: bold;
    font-family: inherit;
    cursor: pointer;
    transition: all 0.3s ease;
}

.btn-primary-delete:hover {
    background-color: var(--km-feu);
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(220, 53, 69, 0.2);
}

.alert-info {
    background-color: var(--km-citron-pale);
    border: 1px solid var(--km-citron-wash);
    color: var(--km-asphalte-hover);
    padding: 15px;
    border-radius: 4px;
    margin: 20px 0;
}

.recap-table {
    width: max-content;
    margin-top: 20px;
    border-collapse: separate;
    border-spacing: 0;
    border-radius: 12px;
    background-color: white;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}

.recap-table th,
.recap-table td {
    padding: 16px 20px;
    border: none;
    transition: all 0.2s ease;
}

.recap-table th {
    background-color: var(--km-citron-wash);
    font-weight: 700;
    font-size: 0.9em;
    color: var(--km-asphalte);
    letter-spacing: 0.5px;
    border-bottom: 2px solid var(--km-citron);
    position: relative;
}

.recap-table th:first-child {
    border-top-left-radius: 12px;
}

.recap-table th:last-child {
    border-top-right-radius: 12px;
}

.recap-table td {
    border-bottom: 1px solid #f0f0f0;
    color: #424242;
    font-size: 0.9em;
}

.recap-table tr:nth-child(even) {
    background-color: #fafbfc;
}

.recap-table tr:hover {
    background-color: #F3F4F6;
}

.recap-table tr:last-child td:first-child {
    border-bottom-left-radius: 12px;
}

.recap-table tr:last-child td:last-child {
    border-bottom-right-radius: 12px;
}

.recap-table tr:last-child td {
    border-bottom: none;
}

/* Actions du tableau (bouton Retour) */
.table-actions {
    margin-top: 20px;
    display: flex;
    justify-content: flex-end;
}

/* Styles du header et de la navigation */
header {
    background-color: white;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    position: sticky;
    top: 0;
    z-index: 1000;
}

.nav-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 20px;
    background-color: rgb(255, 255, 255);
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    border-radius: 10px;
    margin: 0;
}

.nav-left {
    display: flex;
    align-items: center;
    gap: 20px;
}

.nav-logo {
    height: 40px;
    width: auto;
}

.nav-links {
    display: flex;
    gap: 20px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.nav-right {
    margin-left: auto;
}

.nav-brand {
    flex-shrink: 0;
}

.nav-logo-link {
    display: flex;
    align-items: center;
    text-decoration: none;
    gap: 15px;
}

.nav-logo-img {
    height: 50px;
    width: auto;
}

.nav-logo-text {
    color: var(--km-asphalte);
    font-size: 1.2em;
    font-weight: bold;
}

.nav-links a {
    text-decoration: none;
    color: #333;
    padding: 8px 15px;
    border-radius: 5px;
    transition: all 0.3s ease;
}

.nav-links a:hover {
    background-color: #f0f0f0;
}

.nav-links a.active {
    background-color: var(--km-asphalte);
    color: white;
}

.nav-auth {
    margin-left: 30px;
}

.btn-login, 
.btn-logout {
    padding: 10px 20px;
    border-radius: 25px;
    text-decoration: none;
    font-weight: 600;
    transition: all 0.3s ease;
}

.btn-login {
    background-color: var(--km-asphalte);
    color: white;
}

.btn-login:hover {
    background-color: var(--km-asphalte-hover);
    transform: translateY(-2px);
}

.btn-login.active {
    background-color: var(--km-asphalte-hover);
}

.btn-logout {
    background-color: var(--km-feu);
    color: white;
}

.btn-logout:hover {
    background-color: var(--km-feu);
    transform: translateY(-2px);
}

/* Ajout de responsive design */
@media (max-width: 768px) {
    .nav-logo-text {
        display: none;
    }

    .nav-links {
        gap: 15px;
    }

    .nav-auth {
        margin-left: 15px;
    }
}

/* Ajustement pour le contenu principal */
main {
    min-height: calc(100vh - 70px); /* Hauteur du viewport moins la hauteur du header */
    background-color: #f8f9fa;
    padding-bottom: 40px;
}

/* Styles pour la page d'accueil */
.welcome-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* Hero Section */
.hero-section {
    text-align: center;
    padding: 80px 0;
    background: linear-gradient(135deg, var(--km-asphalte), var(--km-asphalte-hover));
    color: white;
    border-radius: 10px;
    margin: 20px 0;
}

.hero-section h1 {
    font-size: 3.5em;
    margin-bottom: 20px;
}

.hero-subtitle {
    font-size: 1.8em;
    margin-bottom: 15px;
    opacity: 0.9;
}

.hero-description {
    font-size: 1.2em;
    margin-bottom: 30px;
    opacity: 0.8;
}

/* Features Section */
.features-section {
    padding-top: 20px;
}

.features-section h2 {
    text-align: center;
    color: var(--km-asphalte);
    font-size: 2em;
    margin-bottom: 40px;
}

.features-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 30px;
    margin-bottom: 50px;
}

.feature-card {
    background: white;
    padding: 30px;
    border-radius: 10px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s ease;
}

.feature-card:hover {
    transform: translateY(-5px);
}

.feature-icon {
    font-size: 2.5em;
    margin-bottom: 20px;
}

.feature-card h3 {
    color: var(--km-asphalte);
    margin-bottom: 15px;
}

.feature-card ul {
    list-style-type: none;
    padding: 0;
}

.feature-card ul li {
    margin-bottom: 10px;
    padding-left: 20px;
    position: relative;
}

.feature-card ul li:before {
    content: "•";
    color: var(--km-asphalte);
    position: absolute;
    left: 0;
}

/* How it works Section */
.how-it-works {
    padding: 0;
    /*background-color: #f8f9fa;*/
    border-radius: 10px;
    margin: 0;
}

.how-it-works h2 {
    text-align: center;
    color: var(--km-asphalte);
    font-size: 2em;
    margin-bottom: 40px;
}

.steps-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 30px;
}

.step-card {
    text-align: center;
    padding: 30px;
    background: white;
    border-radius: 10px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

.step-number {
    width: 40px;
    height: 40px;
    background: var(--km-asphalte);
    color: white;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
    font-size: 1.2em;
    font-weight: bold;
}

/* Benefits Section */
.benefits-section {
    padding: 40px 0;
}

.benefits-section h2 {
    text-align: center;
    color: var(--km-asphalte);
    font-size: 2em;
    margin-bottom: 40px;
}

.benefits-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 30px;
}

.benefit-card {
    background: white;
    padding: 30px;
    border-radius: 10px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    text-align: center;
}

.benefit-card h3 {
    color: var(--km-asphalte);
    margin-bottom: 15px;
}

/* CTA Section */
.cta-section {
    text-align: center;
    padding: 60px 0;
    background: linear-gradient(135deg, var(--km-asphalte), var(--km-asphalte-hover));
    color: white;
    border-radius: 10px;
    margin: 20px 0;
}

.cta-section h2 {
    font-size: 2em;
    margin-bottom: 20px;
}

.btn-cta {
    display: inline-block;
    padding: 15px 40px;
    background-color: white;
    color: var(--km-asphalte);
    text-decoration: none;
    border-radius: 25px;
    font-weight: bold;
    font-size: 1.1em;
    transition: transform 0.3s ease;
    margin-top: 20px;
}

.btn-cta:hover {
    transform: scale(1.05);
    background-color: #f8f9fa;
}

.hero-logo {
    margin-bottom: 30px;
}

.logo-image {
    max-width: 300px; /* Ajusté pour votre logo */
    height: auto;
    filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.2));
}

.form-group-connexion {
    margin-bottom: 20px;
    display: flex;
    flex-direction: column;
}

.form-group-connexion label {
    width: 100%;
    margin-bottom: 8px;
    font-weight: 600;
    color: #333;
    font-size: 0.95em;
    letter-spacing: 0.3px;
}

.form-group-connexion-button {
    margin-top: 25px;
    text-align: center;
}

.separator {
    height: 1px;
    background-color: #ddd;
    margin: 20px 0;
    width: 100%;
}

/* Styles modernes pour le formulaire de connexion */
.input-wrapper-modern {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
}

.input-icon-modern {
    position: absolute;
    left: 18px;
    color: #6c757d;
    font-size: 1.1em;
    z-index: 2;
    transition: color 0.3s ease;
}

.input-connexion-modern {
    width: 100%;
    padding: 14px 18px 14px 48px;
    border: 2px solid #e0e0e0;
    border-radius: 12px;
    font-size: 1em;
    transition: all 0.3s ease;
    background-color: #fafafa;
    color: #333;
    box-sizing: border-box;
}

.input-connexion-modern:focus {
    border-color: var(--km-asphalte);
    background-color: white;
    box-shadow: 0 0 0 4px rgba(15, 86, 168, 0.1), 0 4px 12px rgba(15, 86, 168, 0.15);
    outline: none;
    transform: translateY(-1px);
}

.input-connexion-modern:focus + .input-icon-modern,
.input-wrapper-modern:focus-within .input-icon-modern {
    color: var(--km-asphalte);
}

.input-connexion-modern::placeholder {
    color: #adb5bd;
    font-size: 0.95em;
}

.password-toggle {
    position: absolute;
    right: 15px;
    background: none;
    border: none;
    color: #6c757d;
    cursor: pointer;
    padding: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    z-index: 2;
    border-radius: 6px;
}

.password-toggle:hover {
    color: var(--km-asphalte);
    background-color: rgba(15, 86, 168, 0.05);
}

.password-toggle:active {
    transform: scale(0.95);
}

.password-toggle i {
    font-size: 1.1em;
}

.input-connexion-modern[type="password"] ~ .password-toggle {
    display: flex;
}

.btn-submit-modern {
    width: 100%;
    padding: 16px 24px;
    background: linear-gradient(135deg, var(--km-asphalte) 0%, var(--km-asphalte-hover) 100%);
    color: white;
    border: none;
    border-radius: 12px;
    font-size: 1.05em;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    box-shadow: 0 4px 15px rgba(15, 86, 168, 0.3);
    text-decoration: none;
    box-sizing: border-box;
}

.btn-submit-modern:hover {
    background: linear-gradient(135deg, var(--km-asphalte-hover) 0%, var(--km-asphalte) 100%);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(15, 86, 168, 0.4);
}

.btn-submit-modern:active {
    transform: translateY(0);
    box-shadow: 0 2px 10px rgba(15, 86, 168, 0.3);
}

.btn-submit-modern span {
    display: inline-block;
}

.btn-arrow-modern {
    transition: transform 0.3s ease;
    font-size: 0.9em;
}

.btn-submit-modern:hover .btn-arrow-modern {
    transform: translateX(5px);
}

.btn-secondary-modern {
    background: white !important;
    color: var(--km-asphalte) !important;
    border: 2px solid var(--km-asphalte) !important;
    box-shadow: 0 2px 8px rgba(15, 86, 168, 0.15) !important;
}

.btn-secondary-modern:hover {
    background: #F3F4F6 !important;
    border-color: var(--km-asphalte-hover) !important;
    color: var(--km-asphalte-hover) !important;
    box-shadow: 0 4px 12px rgba(15, 86, 168, 0.25) !important;
}

.separator-modern {
    display: flex;
    align-items: center;
    text-align: center;
    margin: 30px 0;
    color: #6c757d;
    font-size: 0.9em;
}

.separator-modern::before,
.separator-modern::after {
    content: '';
    flex: 1;
    border-bottom: 1px solid #e0e0e0;
}

.separator-modern span {
    padding: 0 15px;
    background: white;
    position: relative;
}

/* Amélioration de la boîte de connexion */
.login-box {
    background: white;
    border-radius: 24px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.12), 0 8px 25px rgba(0, 0, 0, 0.08);
    padding: 50px 45px;
    width: 100%;
    max-width: 480px;
    position: relative;
    overflow: hidden;
    animation: slideUp 0.5s ease-out;
}

.login-box::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--km-asphalte), var(--km-asphalte), var(--km-asphalte));
    background-size: 200% 100%;
    animation: shimmer 3s infinite;
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes shimmer {
    0% {
        background-position: -200% 0;
    }
    100% {
        background-position: 200% 0;
    }
}

.login-header h2 {
    color: var(--km-asphalte);
    font-size: 2.2em;
    margin-bottom: 8px;
    font-weight: 700;
}

.login-subtitle {
    color: #6c757d;
    font-size: 1.05em;
    font-weight: 400;
}

.error-message {
    background: linear-gradient(135deg, #fff5f5 0%, #ffe8e8 100%);
    color: var(--km-feu);
    padding: 16px 20px;
    border-radius: 12px;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 12px;
    border-left: 4px solid var(--km-feu);
    box-shadow: 0 2px 8px rgba(220, 53, 69, 0.1);
    animation: shake 0.5s ease-in-out;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}

.btn-submit {
    display: inline-block;
    background-color: var(--km-asphalte);
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    text-decoration: none;
    text-align: center;
    width: auto;
}

.btn-submit:hover {
    background-color: var(--km-asphalte-hover);
}

.input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
}

.input-icon {
    position: absolute;
    left: 15px;
    color: #6c757d;
    font-size: 1.2em;
}

.input-connexion {
    padding: 12px 15px 12px 15px;
    border: 2px solid #e9ecef;
    border-radius: 10px;
    font-size: 1em;
    transition: all 0.3s ease;
}

.input-connexion:focus {
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 4px rgba(15, 86, 168, 0.1);
    outline: none;
}

.input-connexion::placeholder {
    color: #adb5bd;
}

.password-container {
    display: inline-flex;
    align-items: center;
    margin-top: 8px;
    line-height: normal;
}

.password-container input {
    width: 100%;
    margin-left: 6px;
    cursor: pointer;
    accent-color: var(--km-asphalte);
    vertical-align: middle;
}

.form-control {
    width: 100%;
    font-family: monospace;
}

.checkbox-group {
    display: flex;
    align-items: center;
    gap: 10px;
} 

input[type="checkbox" i] {
    background-color: initial;
    cursor: default;
    appearance: auto;
    box-sizing: border-box;
    margin: 3px 3px 4px 4px;
    padding: initial;
    border: initial;
}

/* Styles pour le calendrier FullCalendar */
#tab-calendrier {
    position: relative;
}

.calendar-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 14px 20px;
    margin-bottom: 14px;
}

.calendar-toggle-past {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.92em;
    color: #455a64;
    cursor: pointer;
    user-select: none;
}

.calendar-toggle-past input {
    width: 16px;
    height: 16px;
    accent-color: var(--km-asphalte);
}

.calendar-legend {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    font-size: 0.85em;
    color: #546e7a;
}

.calendar-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.calendar-legend-swatch {
    width: 14px;
    height: 14px;
    border-radius: 4px;
    display: inline-block;
}

.calendar-legend-swatch--agenda {
    background: var(--km-asphalte);
}

.calendar-legend-swatch--participe {
    background: var(--km-herbe);
}

.calendar-detail-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 0.82em;
    font-weight: 700;
}

.calendar-detail-badge--participe {
    background: var(--km-herbe-wash);
    color: var(--km-herbe);
}

.calendar-v2 .fc-event-participe {
    background-color: var(--km-herbe) !important;
    border-color: var(--km-herbe) !important;
}

#calendar {
    max-width: 100%;
    margin: 0 auto;
    padding: 25px;
    background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
    border-radius: 12px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08), 0 1px 3px rgba(0,0,0,0.05);
}

#calendar.calendar-v2 {
    padding: 20px 18px 24px;
    background: #fff;
    border: 1px solid #ECEDEF;
    box-shadow: 0 8px 24px rgba(15, 86, 168, 0.08);
}

.fc {
    max-width: 100%;
    height: 100% !important;
    font-family: var(--km-font);
}

.fc-view-harness {
    overflow: visible !important;
}

#calendar > div.fc-view-harness.fc-view-harness-passive > div {
    background: none !important;
}

.fc-scrollgrid {
    overflow: visible !important;
    border: none !important;
}

.fc-scrollgrid-section {
    overflow: visible !important;
}

.fc-daygrid-body {
    overflow: visible !important;
}

.fc-scroller {
    overflow: visible !important;
    height: auto !important;
}

/* Toolbar moderne */
.fc-toolbar {
    flex-wrap: wrap;
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 2px solid var(--km-citron-pale);
}

.fc-toolbar-title {
    font-size: 1.8em !important;
    font-weight: 700 !important;
    color: var(--km-asphalte) !important;
    text-transform: capitalize;
}

.fc-button {
    background: linear-gradient(135deg, var(--km-asphalte) 0%, var(--km-asphalte-hover) 100%) !important;
    border: none !important;
    border-radius: 6px !important;
    padding: 8px 16px !important;
    font-weight: 500 !important;
    color: white !important;
    transition: all 0.3s ease !important;
    box-shadow: 0 2px 4px rgba(15, 86, 168, 0.2) !important;
}

.calendar-v2 .fc-button-group {
    display: inline-flex;
    gap: 8px;
}

.calendar-v2 .fc-button-group > .fc-button {
    margin-left: 0 !important;
}

.fc-button:hover {
    background: linear-gradient(135deg, var(--km-asphalte-hover) 0%, var(--km-asphalte) 100%) !important;
    transform: translateY(-1px) !important;
    box-shadow: 0 4px 8px rgba(15, 86, 168, 0.3) !important;
}

.fc-button:active {
    transform: translateY(0) !important;
}

.fc-button-primary:not(:disabled):active,
.fc-button-primary:not(:disabled).fc-button-active {
    background: linear-gradient(135deg, var(--km-asphalte-hover) 0%, var(--km-asphalte) 100%) !important;
    box-shadow: 0 2px 4px rgba(15, 86, 168, 0.3) !important;
}

/* En-têtes des jours */
.fc-col-header-cell {
    padding: 12px 8px !important;
    font-size: 0.95em !important;
    font-weight: 600 !important;
    background-color: var(--km-citron-pale) !important;
    color: var(--km-asphalte) !important;
    border: none !important;
    text-transform: capitalize;
}

.fc-col-header-cell:first-child {
    border-top-left-radius: 8px;
}

.fc-col-header-cell:last-child {
    border-top-right-radius: 8px;
}

.fc-col-header-cell-cushion {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Cellules du calendrier */
.fc-daygrid-day {
    min-height: 80px !important;
    height: auto !important;
    border: 1px solid #e0e0e0 !important;
    background: white !important;
    transition: background-color 0.2s ease !important;
}

.calendar-v2 .fc-daygrid-day:hover {
    background: #f7fbff !important;
}

.fc-daygrid-day-frame {
    min-height: 80px !important;
    height: auto !important;
    padding: 4px !important;
}

.fc-day-today {
    background-color: var(--km-citron-pale) !important;
    font-weight: bold !important;
}

.calendar-v2 .fc-day-today {
    background: linear-gradient(180deg, #e8f3ff 0%, #F3F4F6 100%) !important;
    box-shadow: inset 0 0 0 2px rgba(15, 86, 168, 0.25);
}

.fc-day-today .fc-daygrid-day-number {
    color: var(--km-asphalte) !important;
    font-weight: 700 !important;
    font-size: 1.1em !important;
}

.calendar-v2 .fc-day-today .fc-daygrid-day-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.7em;
    height: 1.7em;
    border-radius: 50%;
    background: var(--km-asphalte);
    color: #fff !important;
    font-size: 0.9em !important;
}

.fc-daygrid-day-number {
    padding: 6px 8px !important;
    font-size: 0.95em !important;
    color: #424242 !important;
    font-weight: 500 !important;
}

/* Événements */
.fc-event {
    border-radius: 4px !important;
    border: none !important;
    padding: 4px 6px !important;
    margin: 2px 0 !important;
    font-size: 0.85em !important;
    font-weight: 500 !important;
    box-shadow: 0 2px 4px rgba(15, 86, 168, 0.2) !important;
    transition: all 0.2s ease !important;
}

.fc-event:hover {
    box-shadow: 0 4px 8px rgba(15, 86, 168, 0.3) !important;
    transform: translateY(-1px);
}

.fc-event-title {
    font-weight: 500 !important;
}

.calendar-v2 .fc-event {
    border-radius: 6px !important;
    padding: 6px 8px !important;
    margin: 3px 1px !important;
    box-shadow: none !important;
    border: none !important;
    cursor: pointer;
    font-size: 13px !important;
    line-height: 1.3 !important;
    overflow: hidden !important;
}

.calendar-v2 .fc-event:hover {
    filter: brightness(1.06);
    transform: none;
}

.calendar-v2 .fc-event-past {
    opacity: 0.45;
    filter: grayscale(0.25);
}

.calendar-v2 .fc-event-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    min-width: 0;
    line-height: 1.25;
}

.calendar-v2 .fc-event-time {
    flex-shrink: 0;
    font-size: 12px;
    font-weight: 700;
    opacity: 0.95;
    letter-spacing: 0.01em;
}

.calendar-v2 .fc-event-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
    font-weight: 600;
    font-size: 13px;
}

.calendar-v2 .fc-daygrid-day {
    min-height: 100px !important;
}

.calendar-v2 .fc-daygrid-day-frame {
    min-height: 100px !important;
}

.calendar-v2 .fc-daygrid-more-link {
    font-size: 0.85em;
    font-weight: 600;
    color: var(--km-asphalte) !important;
    margin-top: 2px;
}

.calendar-v2 .fc-list-event-dot {
    border-color: currentColor;
}

/* Panneau détail course (v2) */
.calendar-detail-panel {
    margin-top: 16px;
    position: relative;
    background: #fff;
    border: 1px solid #e3eaf3;
    border-radius: 12px;
    padding: 18px 20px 16px;
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.08);
    animation: calendar-detail-in 0.2s ease;
}

@keyframes calendar-detail-in {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}

.calendar-detail-close {
    position: absolute;
    top: 8px;
    right: 10px;
    border: none;
    background: transparent;
    font-size: 1.6em;
    line-height: 1;
    color: #78909c;
    cursor: pointer;
}

.calendar-detail-close:hover {
    color: var(--km-asphalte);
}

.calendar-detail-accent {
    width: 48px;
    height: 4px;
    border-radius: 4px;
    margin-bottom: 12px;
}

.calendar-detail-date {
    margin: 0 0 4px;
    color: #607d8b;
    font-size: 0.9em;
    text-transform: capitalize;
}

.calendar-detail-title {
    margin: 0 0 4px;
    color: var(--km-asphalte-hover);
    font-size: 1.25em;
}

.calendar-detail-adresse {
    margin: 0 0 14px;
    color: #546e7a;
    font-size: 0.92em;
}

.calendar-detail-meta {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 16px;
}

.calendar-detail-meta > div {
    background: #F3F4F6;
    border-radius: 8px;
    padding: 10px 12px;
}

.calendar-detail-meta dt {
    margin: 0;
    font-size: 0.75em;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #78909c;
}

.calendar-detail-meta dd {
    margin: 4px 0 0;
    font-weight: 700;
    color: var(--km-asphalte);
    font-size: 1.05em;
}

.calendar-detail-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.calendar-detail-actions .btn-strategie,
.calendar-detail-actions .btn-action {
    text-decoration: none;
}

/* Autres mois (jours grisés) */
.fc-day-other {
    background: #fafafa !important;
    opacity: 0.6;
}

.fc-day-other .fc-daygrid-day-number {
    color: #bdbdbd !important;
}

@media (max-width: 768px) {
    #calendar {
        padding: 10px 5px;
        min-height: 500px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .calendar-controls {
        flex-direction: column;
        align-items: stretch;
    }

    .calendar-detail-meta {
        grid-template-columns: 1fr;
    }
    
    .fc-toolbar {
        flex-direction: column;
        gap: 10px;
        padding-bottom: 10px;
    }
    
    .fc-toolbar-title {
        font-size: 1.2em !important;
        text-align: center;
    }
    
    .fc-button {
        padding: 6px 10px !important;
        font-size: 0.85em !important;
    }
    
    .fc-button-group {
        display: flex;
        flex-wrap: wrap;
        gap: 5px;
        justify-content: center;
    }
    
    .fc-daygrid-day {
        min-height: 70px !important;
    }
    
    .fc-daygrid-day-frame {
        min-height: 70px !important;
    }
    
    .fc-col-header-cell {
        padding: 8px 2px !important;
        font-size: 0.75em !important;
    }
    
    .fc-col-header-cell-cushion {
        font-size: 0.7em !important;
    }
    
    .fc-daygrid-day-number {
        font-size: 0.8em !important;
        padding: 4px 6px !important;
    }
    
    .fc-event {
        font-size: 12px !important;
        padding: 4px 6px !important;
        margin: 2px 0 !important;
    }
    
    .fc-event-title {
        font-size: 12px !important;
    }

    .calendar-v2 .fc-event {
        font-size: 12px !important;
        padding: 5px 6px !important;
    }

    .calendar-v2 .fc-event-time {
        font-size: 11px;
    }

    .calendar-v2 .fc-event-name {
        font-size: 12px;
    }
    
    /* Assurer que le calendrier peut scroller */
    .fc-view-harness {
        min-height: 500px !important;
    }
    
    .fc-scrollgrid {
        min-height: 500px !important;
    }
}

/* Styles pour les onglets */
.tabs-container {
    margin-top: 20px;
}

.tabs-header {
    display: flex;
    border-bottom: 2px solid #dee2e6;
    margin-bottom: 20px;
}

.tab-button {
    background: none;
    border: none;
    padding: 12px 24px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    color: #6c757d;
    border-bottom: 3px solid transparent;
    transition: all 0.3s ease;
    position: relative;
    top: 2px;
}

.tab-button:hover {
    color: var(--km-asphalte);
    background-color: #f8f9fa;
}

.tab-button.active {
    color: var(--km-asphalte);
    border-bottom-color: var(--km-asphalte);
    font-weight: bold;
}

.tab-button i {
    margin-right: 8px;
}

.tab-content {
    display: none;
}

.tab-content.active {
    display: block;
}

/* Filtres graphique — résultats course */
.graphique-filtres-panel {
    margin-bottom: 1.25rem;
    background: linear-gradient(145deg, var(--km-craie) 0%, #F3F4F6 100%);
    border: 1px solid var(--km-joint);
    border-radius: 12px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 4px 12px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

.graphique-filtres-panel__head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: rgba(15, 86, 168, 0.06);
    border-bottom: 1px solid var(--km-joint);
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--km-asphalte);
    letter-spacing: 0.02em;
}

.graphique-filtres-panel__head i {
    opacity: 0.85;
}

.graphique-filtres-panel__body {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1.25rem 2rem;
    padding: 16px 18px 18px;
}

.graphique-filtre-toggle {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    user-select: none;
}

.graphique-filtre-toggle__input {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 44px;
    height: 26px;
    margin: 0;
    opacity: 0;
    cursor: pointer;
    z-index: 2;
}

.graphique-filtre-toggle:has(.graphique-filtre-toggle__input:disabled) {
    cursor: not-allowed;
    opacity: 0.55;
}

.graphique-filtre-toggle__input:disabled {
    cursor: not-allowed;
}

.graphique-filtre-toggle__track {
    flex-shrink: 0;
    position: relative;
    width: 44px;
    height: 26px;
    border-radius: 999px;
    background: var(--km-joint);
    transition: background 0.2s ease;
}

.graphique-filtre-toggle__input:checked + .graphique-filtre-toggle__track {
    background: var(--km-asphalte);
}

.graphique-filtre-toggle__input:disabled + .graphique-filtre-toggle__track {
    background: var(--km-joint);
}

.graphique-filtre-toggle__input:focus-visible + .graphique-filtre-toggle__track {
    box-shadow: 0 0 0 3px rgba(15, 86, 168, 0.35);
}

.graphique-filtre-toggle__thumb {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
    transition: transform 0.2s ease;
}

.graphique-filtre-toggle__input:checked + .graphique-filtre-toggle__track .graphique-filtre-toggle__thumb {
    transform: translateX(18px);
}

.graphique-filtre-toggle__label {
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--km-encre);
    line-height: 1.35;
}

.graphique-filtre-plafond {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 8px 10px;
    min-width: 0;
}

.graphique-filtre-plafond__label {
    flex-shrink: 0;
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--km-encre);
    line-height: 1.35;
    white-space: nowrap;
}

.graphique-filtre-plafond__format {
    font-weight: 500;
    color: var(--km-brume);
    font-size: inherit;
}

.graphique-mmss {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 2px 3px 2px 6px;
    background: #fff;
    border: 1px solid var(--km-joint);
    border-radius: 8px;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.04);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.graphique-mmss:focus-within {
    border-color: var(--km-asphalte);
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.04), 0 0 0 3px rgba(15, 86, 168, 0.18);
}

.graphique-mmss__colon {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--km-brume);
    font-variant-numeric: tabular-nums;
    user-select: none;
    padding: 0 1px;
    line-height: 1;
}

.graphique-mmss__field {
    border: none;
    background: transparent;
    font-size: 0.88rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--km-encre);
    padding: 4px 3px;
    min-width: 0;
    outline: none;
    line-height: 1.2;
}

.graphique-mmss__field--min {
    width: 2.35rem;
    text-align: right;
}

.graphique-mmss__field--sec {
    width: 1.65rem;
    text-align: center;
}

.graphique-mmss__field::placeholder {
    color: var(--km-brume);
    font-weight: 500;
}

.graphique-mmss__clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    margin-left: 1px;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--km-brume);
    cursor: pointer;
    font-size: 0.75rem;
    transition: background 0.15s ease, color 0.15s ease;
}

.graphique-mmss__clear:hover {
    background: #F3F4F6;
    color: var(--km-encre);
}

.graphique-mmss__clear:focus-visible {
    outline: 2px solid var(--km-asphalte);
    outline-offset: 2px;
}

@media (max-width: 640px) {
    .graphique-filtres-panel__body {
        flex-direction: column;
        align-items: stretch;
    }

    .graphique-filtre-plafond {
        flex-wrap: wrap;
        min-width: 0;
    }

    .graphique-filtre-plafond__label {
        white-space: normal;
    }
}

/* Responsive pour resultats_course.php */
@media (max-width: 768px) {
    /* Course details */
    .course-details {
        padding: 15px;
    }
    
    .course-details h2 {
        font-size: 1.3em;
    }
    
    .course-info {
        white-space: normal;
        font-size: 0.9em;
    }
    
    /* Grille des pilotes */
    .grid-pilotes {
        grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
        gap: 10px;
        margin: 15px 0;
    }
    
    .carte-pilote {
        padding: 12px;
        font-size: 0.9em;
    }
    
    .meilleur-temps-pilote h3 {
        font-size: 1.1em;
    }
    
    /* Section des boutons d'action */
    .selection-pilotes-section {
        padding: 15px 10px;
        display: flex;
        flex-direction: column;
        gap: var(--km-btn-gap);
        box-sizing: border-box;
    }

    .selection-pilotes-section a {
        width: 100%;
        max-width: 100%;
        text-align: center;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding: 10px 16px !important;
        font-size: 0.9em;
        box-sizing: border-box;
        word-wrap: break-word;
        white-space: normal;
    }

    /* strategie_relais.php — Modifier / Retour sur une ligne, texte court */
    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions {
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        justify-content: stretch;
        gap: 6px;
        padding: 8px;
    }

    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions .btn-primary,
    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions a.btn-cancel {
        width: auto !important;
        max-width: none !important;
        flex: 1 1 0;
        min-width: 0;
        min-height: 0;
        padding: 6px 8px !important;
        font-size: 0.78rem !important;
        font-weight: 600;
        line-height: 1.2;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        min-height: 0 !important;
    }
    
    .btn-primary,
    .btn-primary-delete,
    .btn-cancel {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding: 10px 16px !important;
        box-sizing: border-box;
    }

    .form-actions .btn-submit,
    .form-actions .btn-cancel,
    .form-actions .btn-primary,
    .form-actions .btn-primary-delete {
        width: auto !important;
        max-width: none !important;
    }

    .pilote-stats-page .pilote-stats-toolbar .btn-cancel,
    .pilote-stats-page .pilote-stats-toolbar .btn-add,
    .circuit-detail-page .circuit-detail-toolbar .btn-cancel,
    .circuit-detail-page .circuit-detail-toolbar .btn-add {
        width: auto !important;
        max-width: none !important;
        padding: 10px 20px !important;
        min-height: 0 !important;
    }

    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions .btn-primary,
    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions .btn-cancel {
        width: auto !important;
        max-width: none !important;
        padding: 6px 8px !important;
    }

    /* Tableau des résultats */
    .recap-table {
        width: 100%;
        display: block;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    
    .recap-table thead,
    .recap-table tbody,
    .recap-table tr {
        display: table;
        width: 100%;
        table-layout: fixed;
    }
    
    .recap-table th,
    .recap-table td {
        padding: 10px 8px;
        font-size: 0.85em;
    }

    /* Tableaux courts (peu de colonnes, ex. Qualifications ou Résumé de la stratégie) :
       restent adaptés à la taille de leur contenu au lieu d'être étirés en pleine largeur. */
    .recap-table.recap-table-compact {
        display: table;
        width: max-content;
        max-width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .recap-table.recap-table-compact thead {
        display: table-header-group;
    }

    .recap-table.recap-table-compact tbody {
        display: table-row-group;
    }

    .recap-table.recap-table-compact tr {
        display: table-row;
        width: auto;
    }

    /* Onglets */
    .tabs-header {
        flex-wrap: wrap;
    }
    
    .tab-button {
        padding: 10px 16px;
        font-size: 13px;
        flex: 1;
        min-width: 50%;
    }
    
    .tab-button i {
        margin-right: 6px;
        font-size: 0.9em;
    }
    
    /* Graphique : la hauteur est portée par le conteneur (le canvas le remplit) */
    .graphique-chart-shell {
        height: 440px;
    }

    #tab-graphique {
        overflow-x: auto;
        min-height: 500px;
    }

    .container.resultats-course-page:has(#course-details.is-collapsed) #tab-graphique.tab-content.active {
        min-height: 0;
        overflow-x: visible;
    }

    #tab-graphique > div {
        min-height: 500px;
        padding-bottom: 20px;
    }

    .container.resultats-course-page:has(#course-details.is-collapsed) #tab-graphique > div {
        min-height: 0 !important;
        padding-bottom: 12px;
    }
    
    /* Container général */
    .container {
        padding: 10px;
    }
    
    h1 {
        font-size: 1.8em;
    }
    
    h3 {
        font-size: 1.2em;
    }
}

/* Lien retour (détail circuit, stats pilote, entraînements…) */
.circuit-detail-back {
    margin: 0 0 0.5rem;
}

.circuit-detail-back + h1 {
    margin-top: 0;
}

/* Page détail circuit */
.circuit-detail-page .circuit-detail-flash {
    width: 100%;
    box-sizing: border-box;
    margin: 0 0 1rem;
}

.circuit-detail-page .circuit-detail-subtitle {
    color: #555;
    margin-top: -0.25rem;
    margin-bottom: 1.25rem;
}

.circuit-info-card {
    background: var(--km-craie);
    border: 1px solid var(--km-joint);
    border-radius: 8px;
    padding: 1rem 1.25rem 1.25rem;
    margin-bottom: 2rem;
}

.circuit-info-header {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 12px;
    margin-bottom: 0.75rem;
}

.circuit-section-header-with-toggle {
    align-items: center;
    justify-content: flex-start;
    gap: 12px;
    flex-wrap: wrap;
}

.circuit-collapsible-body.is-collapsed {
    display: none;
}

.circuit-info-header h2 {
    margin: 0;
    font-size: 1.2rem;
    color: var(--km-asphalte);
}

.circuit-info-footer {
    margin-top: 12px;
    display: flex;
    justify-content: flex-start;
}

/* Statistiques — circuit_details.php */
.circuit-stats-section {
    margin-bottom: 1.75rem;
}

.circuit-stats-header-row {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.circuit-stats-header-row h2 {
    margin: 0;
    font-size: 1.2rem;
    color: var(--km-asphalte);
}

.circuit-stats-summary-count {
    margin: 0 0 1rem;
    padding: 12px 14px;
    background: var(--km-craie);
    border: 1px solid var(--km-joint);
    border-radius: 10px;
    font-size: 0.95rem;
    color: var(--km-encre);
}

.circuit-stats-courses-block {
    margin-bottom: 1rem;
}

.circuit-stats-courses-block .circuit-stats-summary-count {
    margin-bottom: 0;
}

.circuit-stats-summary-toggle {
    width: 100%;
    cursor: pointer;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-family: inherit;
}

.circuit-stats-summary-toggle:hover {
    background: #F3F4F6;
}

.circuit-stats-summary-toggle-text {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px;
}

.circuit-stats-summary-chevron {
    color: var(--km-asphalte);
    flex-shrink: 0;
}

.circuit-courses-list-body:not(.is-collapsed) {
    margin-top: 10px;
}

.circuit-courses-list-table {
    margin-top: 0;
}

.circuit-courses-actions {
    white-space: nowrap;
}

.circuit-courses-actions .btn-resultats {
    height: auto;
    min-height: 32px;
    padding: 6px 12px;
    font-size: 0.88rem;
    margin: 2px;
}

.circuit-stats-summary-count i {
    margin-right: 6px;
    color: var(--km-asphalte);
}

.circuit-stats-summary-count strong {
    font-size: 1.15rem;
    color: var(--km-asphalte);
    margin-right: 4px;
}

.circuit-stats-records {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.25rem;
}

@media (max-width: 1000px) {
    .circuit-stats-records {
        grid-template-columns: 1fr;
    }
}

.circuit-stats-record-card {
    background: #ffffff;
    border: 1px solid var(--km-joint);
    border-radius: 10px;
    padding: 12px 14px;
}

.circuit-stats-record-card h3 {
    margin: 0 0 10px;
    font-size: 1rem;
    font-weight: 600;
    color: var(--km-encre);
}

.circuit-stats-dl {
    margin: 0;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 6px 14px;
    font-size: 0.95rem;
}

.circuit-stats-dl dt {
    margin: 0;
    color: var(--km-brume);
    font-weight: 600;
}

.circuit-stats-dl dd {
    margin: 0;
    color: var(--km-encre);
}

.circuit-stats-best-time {
    color: var(--km-herbe);
}

.circuit-stats-empty {
    margin: 0;
    color: var(--km-brume);
    font-size: 0.92rem;
}

.circuit-stats-subheading {
    margin: 0 0 10px;
    font-size: 1rem;
    font-weight: 600;
    color: var(--km-encre);
}

.circuit-stats-pilotes-grid {
    display: grid;
    grid-template-columns: repeat(2, max-content);
    gap: 1rem 1.5rem;
    align-items: start;
    justify-content: start;
}

@media (max-width: 900px) {
    .circuit-stats-pilotes-grid {
        grid-template-columns: 1fr;
        justify-content: stretch;
    }

    .circuit-stats-pilotes-col {
        min-width: 0;
    }
}

.circuit-stats-table {
    margin-top: 8px;
}

/* Liens pilotes : même traitement que circuit-meta-link malgré td a / td a:hover globaux */
.circuit-stats-section a.circuit-meta-link {
    color: var(--km-asphalte);
    font-weight: 600;
    text-decoration: none;
}

.circuit-stats-section a.circuit-meta-link:hover,
.recap-table.circuit-stats-table td a.circuit-meta-link:hover {
    color: var(--km-asphalte);
    text-decoration: underline;
}

.circuit-meta-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 0.25rem;
}

@media (max-width: 700px) {
    .circuit-meta-grid {
        grid-template-columns: 1fr;
    }
}

.circuit-meta-item {
    background: #ffffff;
    border: 1px solid var(--km-joint);
    border-radius: 12px;
    padding: 12px 14px;
    box-shadow: 0 1px 0 rgba(15, 23, 42, 0.02);
}

.circuit-meta-label {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--km-brume);
    margin-bottom: 6px;
}

.circuit-meta-value {
    color: var(--km-encre);
    line-height: 1.45;
    word-break: break-word;
}

.circuit-meta-actions {
    display: inline-flex;
    gap: 6px;
    margin-right: 8px;
    vertical-align: middle;
}

.circuit-meta-text {
    display: inline;
}

.circuit-meta-link {
    color: var(--km-asphalte);
    font-weight: 600;
    text-decoration: none;
}

.circuit-meta-link:hover {
    text-decoration: underline;
}

.circuit-meta-muted {
    color: var(--km-brume);
}

.circuit-image-card .form-actions {
    justify-content: flex-start;
}

.circuit-info-dl {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.35rem 1.25rem;
    margin: 0 0 1rem;
}

.circuit-info-dl dt {
    font-weight: 600;
    color: var(--km-encre);
}

.circuit-info-dl dd {
    margin: 0;
}

.circuit-detail-actions {
    margin: 0;
}

.circuit-pistes-section h2 {
    margin-bottom: 0.75rem;
}

.circuit-pistes-empty {
    margin-bottom: 1rem;
    color: var(--km-brume);
}

.circuit-pistes-toolbar {
    margin-bottom: 1rem;
}

.circuit-detail-hint {
    font-size: 0.9rem;
    color: var(--km-brume);
}

.add-piste-wrap {
    margin-bottom: 1.5rem;
}

/* Formulaire piste : champs numéro / longueur et bouton plus compacts */
.add-form-piste {
    max-width: 220px;
}

.add-form-piste-two-actions {
    max-width: 280px;
}

.add-form-piste .form-group input[type="number"] {
    width: 7.25rem;
    max-width: 100%;
}

.add-form-piste .form-actions {
    margin-top: 1rem;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: var(--km-btn-gap);
}

/* Un seul bouton « Ajouter » : largeur alignée sur les champs */
.add-form-piste:not(.add-form-piste-two-actions) .form-actions .btn-submit {
    width: 7.25rem;
    max-width: 100%;
    flex: 0 0 auto;
    box-sizing: border-box;
    padding: 8px 12px;
}

/* Ajouter + Annuler : même largeur, côte à côte */
.add-form-piste-two-actions .form-actions {
    flex-wrap: nowrap;
    gap: 8px;
}

.add-form-piste-two-actions .form-actions .btn-submit,
.add-form-piste-two-actions .form-actions .btn-cancel {
    flex: 1 1 0;
    min-width: 0;
    box-sizing: border-box;
    padding: 8px 12px;
    font-size: 14px;
    text-align: center;
}

.circuit-pistes-table {
    margin-top: 0.5rem;
}

/* Édition inline des pistes (circuit_details.php) */
.circuit-pistes-table .piste-row .piste-edit {
    display: none;
}

.circuit-pistes-table .piste-row-editing .piste-view {
    display: none;
}

.circuit-pistes-table .piste-row-editing .piste-edit {
    display: inline-block;
    width: 5.5rem;
    max-width: 100%;
    box-sizing: border-box;
    padding: 6px 8px;
    font-size: 0.9em;
    vertical-align: middle;
}

.circuit-pistes-table .piste-row .piste-actions-edit {
    display: none;
}

.circuit-pistes-table .piste-row-editing .piste-actions-view {
    display: none !important;
}

.circuit-pistes-table .piste-row-editing .piste-actions-edit {
    display: flex !important;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    align-items: center;
}

.circuit-pistes-table .piste-actions-edit .btn-submit,
.circuit-pistes-table .piste-actions-edit .btn-cancel {
    flex: 1 1 0;
    min-width: 5.5rem;
    padding: 8px 12px;
    font-size: 13px;
    text-align: center;
    box-sizing: border-box;
}

.circuit-pistes-table .btn-piste-editer {
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 4px;
}

/* Liste des longueurs (circuits.php) */
table .circuit-col-longueurs {
    vertical-align: middle;
    text-align: center;
    white-space: normal;
    line-height: 1.45;
}

/* Entraînements */
.entrainement-page .entrainement-toolbar {
    margin-bottom: 1.5rem;
}

.entrainement-page .entrainement-intro {
    color: var(--km-brume);
    margin-bottom: 1.25rem;
    line-height: 1.45;
}

.entrainement-page .entrainement-flash {
    margin: 0 0 1rem;
}

.entrainement-page .course-details {
    margin-bottom: 1.25rem;
}

.entrainement-page .entrainement-meilleurs-sous-section + .entrainement-meilleurs-sous-section {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--km-joint);
}

.entrainement-section {
    margin-bottom: 2.25rem;
}

.entrainement-section h2 {
    font-size: 1.2rem;
    margin-bottom: 0.75rem;
    color: var(--km-asphalte);
}

.add-form-entrainement {
    max-width: 420px;
}

.add-form-entrainement .meteo-row,
.add-form-course-edit .meteo-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.add-form-entrainement .meteo-row select#meteo,
.add-form-course-edit .meteo-row select#meteo {
    width: 160px;
    max-width: 100%;
    flex: 0 0 auto;
}

.add-form-entrainement .meteo-row .btn-recalcul-meteo,
.add-form-course-edit .meteo-row .btn-recalcul-meteo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    margin: 0;
    border: 1px solid var(--km-joint);
    border-radius: 4px;
    background: var(--km-craie);
    color: var(--km-brume);
    cursor: pointer;
    flex: 0 0 auto;
}

.add-form-entrainement .meteo-row .btn-recalcul-meteo:hover:not(:disabled),
.add-form-course-edit .meteo-row .btn-recalcul-meteo:hover:not(:disabled) {
    background: var(--km-joint);
    color: var(--km-encre);
}

.add-form-entrainement .meteo-row .btn-recalcul-meteo:disabled,
.add-form-course-edit .meteo-row .btn-recalcul-meteo:disabled {
    opacity: 0.55;
    cursor: wait;
}

.add-form-entrainement .meteo-row .btn-recalcul-meteo i,
.add-form-course-edit .meteo-row .btn-recalcul-meteo i {
    font-size: 0.85rem;
}

.add-form-entrainement .form-group .hint,
.add-form-course-edit .form-group .hint {
    display: block;
    font-size: 0.85rem;
    color: var(--km-brume);
    margin-top: 6px;
    font-weight: normal;
}

.entrainement-liste-table {
    width: 100%;
    max-width: 720px;
}

.entrainement-detail-table {
    width: 100%;
    max-width: 900px;
}

.entrainement-temps-meilleur {
    color: var(--km-herbe);
    font-weight: 700;
}

.entrainement-pilote-bloc {
    margin-bottom: 2rem;
}

.entrainement-pilote-bloc h2 {
    font-size: 1.1rem;
    margin-bottom: 0.5rem;
    color: var(--km-encre);
}

.entrainement-detail-table .entrainement-col-actions {
    width: 1%;
    white-space: nowrap;
    vertical-align: middle;
}

.entrainement-detail-table .entrainement-actions {
    justify-content: center;
}

/* Footer */
.site-footer {
    background-color: var(--km-menu);
    color: white;
    margin-top: auto;
    padding: 0;
    width: 100vw;
    max-width: 100%;
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.1);
    flex-shrink: 0;
    position: relative;
    left: 0;
    right: 0;
    box-sizing: border-box;
    margin-left: 0;
    margin-right: 0;
}

.footer-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 15px 20px;
}

.footer-section {
    display: flex;
    flex-direction: column;
}

.footer-brand {
    max-width: 300px;
}

.footer-logo-link {
    display: inline-block;
    margin-bottom: 15px;
    transition: transform 0.3s ease;
}

.footer-logo-link:hover {
    transform: scale(1.05);
}

.footer-logo {
    height: 50px;
    width: auto;
}

.footer-tagline {
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.95em;
    line-height: 1.6;
    margin: 0;
}

.footer-title {
    color: white;
    font-size: 1.1em;
    font-weight: 600;
    margin-bottom: 15px;
    border-bottom: 2px solid rgba(255, 255, 255, 0.2);
    padding-bottom: 10px;
}

.footer-menu {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-menu li {
    margin-bottom: 10px;
}

.footer-menu a {
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    transition: all 0.3s ease;
    display: inline-block;
    font-size: 0.95em;
}

.footer-menu a:hover {
    color: white;
    padding-left: 5px;
    transform: translateX(5px);
}

.footer-text {
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.95em;
    line-height: 1.6;
    margin-bottom: 15px;
}

.footer-social {
    display: flex;
    gap: 15px;
    margin-top: 10px;
}

.social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    background-color: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    color: white;
    text-decoration: none;
    transition: all 0.3s ease;
    font-size: 1.2em;
}

.social-link:hover {
    background-color: rgba(255, 255, 255, 0.2);
    transform: translateY(-3px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

.footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, 0.2);
    padding-top: 20px;
    margin-top: 0;
    transition: margin-top 0.3s ease;
}

.site-footer.expanded .footer-bottom {
    margin-top: 20px;
}

.footer-copyright {
    text-align: center;
}

.footer-copyright p {
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.85em;
    margin: 0;
    padding: 0;
}

.footer-version {
    color: rgba(255, 255, 255, 0.55);
    font-size: 0.9em;
}

/* Responsive Footer */
@media (max-width: 768px) {
    .footer-container {
        padding: 30px 15px 15px 15px;
    }
    
    .footer-content {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    
    .footer-brand {
        max-width: 100%;
        text-align: center;
    }
    
    .footer-logo-link {
        display: flex;
        justify-content: center;
    }
    
    .footer-title {
        text-align: center;
    }
    
    .footer-menu {
        text-align: center;
    }
    
    .footer-social {
        justify-content: center;
    }
    
    .footer-copyright {
        text-align: center;
    }
    
    /* Responsive pour le formulaire de connexion */
    .login-box {
        padding: 35px 25px;
        border-radius: 20px;
        margin: 20px;
    }
    
    .login-header h2 {
        font-size: 1.8em;
    }
    
    .login-subtitle {
        font-size: 0.95em;
    }
    
    .input-connexion-modern {
        padding: 12px 16px 12px 45px;
        font-size: 0.95em;
    }
    
    .btn-submit-modern {
        padding: 14px 20px;
        font-size: 1em;
    }
    
    .password-toggle {
        right: 12px;
        padding: 6px;
    }
}

/* =============================================================================
   Mobile global — compatibilité smartphone (toutes les pages)
   Placé en fin de feuille pour compléter les @media existantes.
   ============================================================================= */
@media (max-width: 768px) {
    html {
        -webkit-text-size-adjust: 100%;
    }

    body {
        font-size: 16px;
    }

    .container,
    .container-welcome {
        margin-left: max(10px, env(safe-area-inset-left, 0px));
        margin-right: max(10px, env(safe-area-inset-right, 0px));
        min-width: 0;
        max-width: 100%;
    }

    .container-welcome {
        padding-left: 0;
        padding-right: 0;
    }

    .container h1 {
        font-size: 1.5rem;
        line-height: 1.3;
        word-wrap: break-word;
    }

    h2 {
        font-size: 1.25rem;
        line-height: 1.3;
        word-wrap: break-word;
    }

    pre,
    code {
        word-break: break-word;
        white-space: pre-wrap;
    }

    /* Tableaux : remplace width: max-content des petits écrans (lisibilité + pas de débordement page) */
    table:not(.recap-table) {
        width: 100% !important;
        max-width: 100%;
        min-width: 0;
        table-layout: auto;
    }

    th,
    td {
        word-wrap: break-word;
        overflow-wrap: break-word;
    }

    .circuit-pistes-table,
    .entrainement-detail-table {
        display: block;
        width: 100% !important;
        max-width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .circuit-pistes-table thead,
    .circuit-pistes-table tbody,
    .circuit-pistes-table tr,
    .entrainement-detail-table thead,
    .entrainement-detail-table tbody,
    .entrainement-detail-table tr {
        display: table;
        width: 100%;
        table-layout: fixed;
    }

    img {
        max-width: 100%;
        height: auto;
    }

    input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]),
    select,
    textarea {
        max-width: 100%;
        box-sizing: border-box;
    }

    .meilleur-temps {
        width: auto;
        max-width: 100%;
        box-sizing: border-box;
    }

    /* Barres d’actions formulaires : retour à la ligne */
    .form-actions {
        flex-wrap: wrap;
    }

    .entrainement-toolbar,
    .circuit-pistes-toolbar {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
    }

    /* Menu burger : liste longue défilable (admin, etc.) */
    .navbar-links.active {
        max-height: min(85vh, 720px);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* Cartes / grilles stats déjà partiellement couvertes ; renfort très petites largeurs */
    .circuit-stats-records {
        grid-template-columns: 1fr;
    }

    .circuit-meta-grid {
        grid-template-columns: 1fr;
    }

    /* Formulaire ajout de piste (circuit_details) : pleine largeur sur téléphone */
    .add-form-piste,
    .add-form-piste-two-actions {
        max-width: 100%;
    }

}

@media (max-width: 480px) {
    body {
        font-size: 15px;
    }

    .container h1 {
        font-size: 1.35rem;
    }

    th,
    td {
        padding: 8px 10px;
    }

    .btn-add,
    .btn-primary,
    .btn-strategie,
    .btn-cancel,
    .btn-submit {
        min-height: var(--km-btn-height);
    }

    .btn-strategie.btn-detail {
        min-height: 0;
        max-height: 32px;
        height: auto;
    }

    /* Pas de min-height 44px ici : inline-flex centre le texte et la ligne reste compacte */
    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions .btn-primary,
    .strategie-relais-page .selection-pilotes-section.strategie-relais-actions .btn-cancel {
        min-height: 0 !important;
    }
}

/* liste_courses.php — colonne Pilotes : nom d'équipe vs pilotes */
.liste-courses-section-count {
    font: inherit;
    color: inherit;
}

.liste-courses-nom-equipe {
    display: inline;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--km-encre);
    line-height: 1.25;
}

.liste-courses-nom-equipe--empty {
    font-weight: 600;
    font-style: italic;
    color: #888;
}

.liste-courses-equipe-row {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.liste-courses-equipe-view {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.liste-courses-equipe-edit-form {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    padding: 0;
    border: none;
    background: transparent;
}

.liste-courses-equipe-edit-form[hidden],
.liste-courses-equipe-view[hidden] {
    display: none !important;
}

.liste-courses-equipe-input {
    width: 180px;
    max-width: 100%;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
    height: 35px;
    font-size: 14px;
    font-weight: normal;
    text-align: left;
    box-sizing: border-box;
    background: #fff;
}

.liste-courses-equipe-input:focus {
    outline: none;
    border-color: var(--km-asphalte);
    box-shadow: 0 0 3px rgba(15, 86, 168, 0.3);
}

.liste-courses-equipe-edit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    margin: 0 0 0 2px;
    border: none;
    background: transparent;
    cursor: pointer;
    color: #888;
    font-size: 0.7rem;
    line-height: 1;
    vertical-align: middle;
}

.liste-courses-equipe-edit:hover {
    color: var(--km-asphalte);
}

.liste-courses-equipe-save,
.liste-courses-equipe-cancel {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 2px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.8rem;
    line-height: 1;
}

.liste-courses-equipe-save {
    color: var(--km-herbe);
}

.liste-courses-equipe-cancel {
    color: var(--km-feu);
}

.liste-courses-equipe-view .liste-courses-nom-equipe {
    display: inline;
    margin-bottom: 0;
}

.liste-courses-pilotes-list {
    display: inline;
    font-weight: normal;
    color: var(--km-brume);
    line-height: 1.35;
}

.course-card-team-line {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 6px;
    row-gap: 2px;
}

.course-card-pilotes-sep {
    color: var(--km-brume);
}

/* liste_courses.php — cartes de courses (remplacent les tableaux km-cards
   pour cette page : une fiche horizontale par course, date / infos / actions). */
.courses-cards {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin: 16px 0;
}

.course-card {
    position: relative;
    display: grid;
    grid-template-columns: 100px 1fr auto;
    gap: 20px;
    align-items: center;
    background: var(--km-craie);
    border: 1px solid var(--km-joint);
    border-left: 4px solid var(--km-asphalte);
    border-radius: 10px;
    padding: 16px 20px;
    box-shadow: 0 1px 2px rgba(31, 90, 138, 0.05);
}

.course-card--winner {
    border-left-color: var(--km-citron);
}

/* Plusieurs équipes le même jour sur le même circuit : une carte, une ligne par équipe */
.course-card--groupe {
    grid-template-columns: 100px 1fr;
    align-items: start;
}

.course-card--groupe > .course-card-date {
    padding-top: 4px;
}

.course-groupe-equipes {
    list-style: none;
    margin: 10px 0 0;
    padding: 0;
}

.course-groupe-equipe {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px 16px;
    padding: 10px 0 10px 12px;
    border-top: 1px solid var(--km-joint);
    border-left: 3px solid transparent;
}

.course-groupe-equipe--winner {
    border-left-color: var(--km-citron);
    background: rgba(232, 197, 71, 0.08);
}

.course-groupe-equipe-info {
    min-width: 0;
}

.course-groupe-equipe-info .course-card-stats {
    margin-bottom: 2px;
}

/* Classement et boutons sur une seule ligne pour garder chaque équipe compacte */
.course-groupe-equipe .course-card-side {
    flex-direction: row;
    align-items: center;
    gap: 12px;
}

/* Course du jour : pas de pavé date (redondant, la section entière est "aujourd'hui") */
.course-card--du-jour {
    grid-template-columns: 1fr auto;
    border-left-color: var(--km-citron);
}

.course-card-date {
    text-align: center;
    font-family: var(--km-font-display);
    color: var(--km-encre);
}

.course-card-date-day {
    display: block;
    font-size: 1.7rem;
    font-weight: 800;
    line-height: 1;
}

.course-card-date-month {
    display: block;
    font-size: 0.8rem;
    color: var(--km-encre);
    font-weight: 700;
    margin-top: 2px;
    white-space: nowrap;
}

.course-card-date-year {
    display: block;
    font-size: 0.75rem;
    color: var(--km-brume);
    font-weight: 600;
}

.course-card-main {
    min-width: 0;
}

.course-card-circuit {
    margin-bottom: 8px;
}

.course-card .circuit-link {
    color: var(--km-encre);
}

.course-card .circuit-cell-maps,
.km-list-card .circuit-cell-maps {
    flex-direction: row;
    gap: 6px;
}

.km-list-card .circuit-link {
    color: var(--km-encre);
}

.course-card-stats {
    margin: 0 0 6px;
    color: var(--km-brume);
    font-size: 0.88rem;
}

.course-card-stats strong {
    color: var(--km-encre);
}

.course-card-pilotes {
    margin: 0;
    font-size: 0.85rem;
    color: var(--km-brume);
}

.course-card-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    justify-content: center;
    gap: 10px;
}

.course-card-classement {
    font-family: var(--km-font-display);
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--km-citron-profond);
    background: rgba(232, 197, 71, 0.16);
    border: 1px solid var(--km-citron);
    border-radius: 999px;
    padding: 4px 12px;
    white-space: nowrap;
    line-height: 1.2;
}

.course-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

/* Boutons dédiés aux cartes de courses : identité propre à ce composant,
   indépendante de .btn-strategie/.btn-resultats/.btn-icon-edit/.btn-icon-delete
   utilisés (avec d'autres couleurs) sur les autres pages du site. */
.course-card-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 36px;
    padding: 0 16px;
    border-radius: 8px;
    border: 1px solid transparent;
    font-family: var(--km-font);
    font-weight: 700;
    font-size: 0.85rem;
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
    white-space: nowrap;
}

.course-card-btn--primary {
    background-color: var(--km-menu);
    color: #fff;
}

.course-card-btn--primary:hover {
    background-color: var(--km-menu-hover);
    color: #fff;
}

.course-card-btn--outline {
    background-color: var(--km-craie);
    border-color: var(--km-joint);
    color: var(--km-encre);
}

.course-card-btn--outline:hover {
    background-color: var(--km-beton);
}

.course-card-btn--disabled,
.course-card-btn--outline.course-card-btn--disabled {
    color: #A9B8C7;
    border-color: var(--km-joint);
    background-color: var(--km-craie);
    cursor: not-allowed;
    pointer-events: none;
}

.course-card-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    border: 1px solid var(--km-joint);
    background-color: var(--km-craie);
    cursor: pointer;
    text-decoration: none;
}

.course-card-icon-btn i {
    font-size: 14px;
}

.course-card-icon-btn--edit {
    color: var(--km-asphalte);
}

.course-card-icon-btn--edit:hover {
    background-color: var(--km-citron-pale);
    border-color: var(--km-asphalte);
}

.course-card-icon-btn--delete {
    color: var(--km-feu);
}

.course-card-icon-btn--delete:hover {
    background-color: #FFEBEE;
    border-color: var(--km-feu);
}

.course-card-icon-btn--live:hover {
    background-color: var(--km-citron-pale);
    border-color: var(--km-asphalte);
}

@media (max-width: 720px) {
    .course-card {
        grid-template-columns: 84px 1fr;
    }

    .course-card--du-jour {
        grid-template-columns: 1fr;
    }

    .course-card-side {
        grid-column: 1 / -1;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        margin-top: 8px;
        padding-top: 12px;
        border-top: 1px solid var(--km-joint);
    }

    .course-card-actions {
        justify-content: flex-start;
    }

    .course-card--groupe {
        grid-template-columns: 84px 1fr;
        row-gap: 6px;
    }

    /* Carte groupée : la liste des équipes prend toute la largeur sous la date */
    .course-card--groupe > .course-card-main {
        display: contents;
    }

    .course-card--groupe .course-card-circuit,
    .course-card--groupe > .course-card-main > .course-card-stats {
        grid-column: 2;
    }

    .course-card--groupe .course-card-circuit {
        grid-row: 1;
    }

    .course-card--groupe > .course-card-date {
        grid-row: 1 / span 2;
    }

    .course-groupe-equipes {
        grid-column: 1 / -1;
        margin-top: 0;
    }

    .course-groupe-equipe {
        grid-template-columns: 1fr;
    }

    .course-groupe-equipe .course-card-side {
        grid-column: auto;
        margin-top: 0;
        padding-top: 0;
        border-top: 0;
        justify-content: space-between;
    }
}

/* liste_courses.php — fenêtre de confirmation de suppression, à la place
   du confirm() natif du navigateur. */
.km-confirm-overlay {
    position: fixed;
    inset: 0;
    background: rgba(15, 30, 50, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    z-index: 1000;
}

.km-confirm-overlay[hidden] {
    display: none;
}

.km-confirm-box {
    background: var(--km-craie);
    border-radius: 12px;
    padding: 24px;
    max-width: 420px;
    width: 100%;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
}

.km-confirm-icon {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #FFEBEE;
    color: var(--km-feu);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
    margin-bottom: 14px;
}

.km-confirm-box h2 {
    margin: 0 0 8px;
    font-family: var(--km-font-display);
    font-weight: 700;
    font-size: 1.2rem;
    color: var(--km-encre);
}

.km-confirm-box p {
    margin: 0 0 20px;
    color: var(--km-brume);
    font-size: 0.92rem;
    line-height: 1.45;
    white-space: pre-line;
}

.km-confirm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

.km-confirm-btn-danger {
    background-color: var(--km-feu);
    color: #fff;
}

.km-confirm-btn-danger:hover {
    background-color: #8B1A14;
    color: #fff;
}

/* strategie_relais.php — bouton "Stand" et modale de saisie de l'heure
   réelle de rentrée au stand (permet de recalculer les relais suivants). */
.btn-relai-rentree-group {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    margin-left: 8px;
}

.btn-relai-rentree {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 8px;
    border: 1px solid #C7D0DC;
    border-radius: 999px;
    background: var(--km-craie);
    color: #5A7188;
    font-size: 0.78em;
    font-weight: 600;
    line-height: 1.6;
    cursor: pointer;
}

.btn-relai-rentree:hover {
    border-color: #0F56A8;
    color: #0F56A8;
}

.btn-relai-rentree--set {
    border-color: #0F56A8;
    background: #E3F2FD;
    color: #0F56A8;
}

.btn-relai-rentree-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    padding: 0;
    border: 1px solid #C7D0DC;
    border-radius: 50%;
    background: var(--km-craie);
    color: #5A7188;
    font-size: 0.7em;
    line-height: 1;
    cursor: pointer;
}

.btn-relai-rentree-clear:hover {
    border-color: var(--km-feu);
    color: var(--km-feu);
    background: #FFEBEE;
}

.strategie-duree-relai-inline--reelle {
    color: #0F56A8;
}

.km-rentree-box {
    max-width: 380px;
}

.km-rentree-input {
    width: 100%;
    box-sizing: border-box;
    padding: 8px 10px;
    border: 1px solid #C7D0DC;
    border-radius: 8px;
    font-size: 1rem;
    margin-bottom: 4px;
}

.km-rentree-modes {
    border: 0;
    margin: 14px 0 0;
    padding: 0;
}

.km-rentree-modes legend {
    font-size: 0.85rem;
    font-weight: 700;
    color: #5A7188;
    padding: 0;
    margin-bottom: 6px;
}

.km-rentree-mode {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    padding: 6px 0;
    font-size: 0.9rem;
    cursor: pointer;
}

.km-rentree-mode input {
    margin-top: 3px;
}

.km-rentree-error {
    color: var(--km-feu);
    background: #FFEBEE;
    border: 1px solid #FFCDD2;
    border-radius: 6px;
    padding: 8px 10px;
    font-size: 0.85rem;
    font-weight: 600;
    margin: 10px 0 0;
}

.km-rentree-actions {
    margin-top: 18px;
}

/* Carte générique pour les listes simples (kartings, pilotes, circuits,
   entraînements, admin, agenda...) : même identité visuelle que
   .course-card mais sans colonne date dédiée — un jeu de champs
   étiquette/valeur à gauche, les actions à droite. */
.km-list-cards {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin: 16px 0;
}

.km-list-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    background: var(--km-craie);
    border: 1px solid var(--km-joint);
    border-left: 4px solid var(--km-asphalte);
    border-radius: 10px;
    padding: 16px 20px;
    box-shadow: 0 1px 2px rgba(31, 90, 138, 0.05);
}

.km-list-card-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 20px;
    flex: 1 1 auto;
    min-width: 0;
}

.km-list-card-field {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.km-list-card-field-label {
    /* Étiquettes gardées dans le DOM pour les lecteurs d'écran, mais
       masquées visuellement : les valeurs se comprennent seules sur la carte. */
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
    margin: 0;
    padding: 0;
}

.km-list-card-field-value {
    font-size: 0.95rem;
    color: var(--km-encre);
    font-weight: 400;
}

/* Seul le premier champ de la carte (identifiant principal : nom du
   circuit, du pilote...) ressort en gras, les autres restent en texte normal. */
.km-list-card-field:first-child .km-list-card-field-value {
    font-weight: 700;
}

.km-list-card-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    flex: none;
    justify-content: flex-end;
}

.km-list-card-select {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 22px;
}

.km-list-card-select input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

.km-list-card-select-placeholder {
    width: 22px;
}

/* Cartes Pilotes : une carte par ligne, toutes à la largeur de la carte
   la plus large (colonne unique dimensionnée sur le contenu le plus long,
   les autres cartes s'étirent à cette même largeur). */
.km-list-cards-pilotes {
    display: grid;
    grid-template-columns: minmax(0, max-content);
    gap: 14px;
}

.km-list-card-pilote {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    padding: 14px 16px;
}

.km-list-card-pilote-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

/* Champs du pilote alignés à l'horizontale en desktop (repassent en
   colonne sous 600px, cf. media query plus bas). */
.km-list-card-pilote .km-list-card-main {
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 28px;
}

.btn-icon.btn-icon-delete.is-disabled,
span.btn-icon.btn-icon-delete.is-disabled {
    background: var(--km-joint) !important;
    background-color: var(--km-joint) !important;
    color: #9a9a9a !important;
    cursor: not-allowed;
}

.btn-icon.btn-icon-delete.is-disabled i {
    color: #9a9a9a !important;
}

.km-bulk-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    margin: 16px 0;
    padding: 12px 16px;
    background: var(--km-craie);
    border: 1px solid var(--km-joint);
    border-radius: var(--km-radius);
}

.km-bulk-select-all {
    display: flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}

.km-bulk-select-all input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

.km-bulk-count {
    color: var(--km-encre);
    font-weight: 600;
}

.km-bulk-actions .btn-primary-delete {
    margin-left: auto;
    padding: 8px 16px;
}

.km-bulk-actions .btn-primary-delete:disabled {
    background-color: var(--km-joint) !important;
    color: #9a9a9a !important;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

@media (max-width: 600px) {
    .km-list-card {
        flex-direction: column;
        align-items: stretch;
        padding: 14px 16px;
    }

    .km-list-card-actions {
        justify-content: flex-start;
    }

    .km-list-card-select {
        width: auto;
        justify-content: flex-start;
    }

    .km-bulk-actions .btn-primary-delete {
        margin-left: 0;
        width: 100%;
    }

    .km-list-cards-pilotes {
        grid-template-columns: minmax(0, 1fr);
    }

    .km-list-card-pilote .km-list-card-main {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

    .km-list-card-pilote .km-list-card-field {
        width: 100%;
    }

    .km-list-card-pilote .km-list-card-field-value {
        overflow-wrap: anywhere;
    }
}

@media (max-width: 480px) {
    .course-card {
        grid-template-columns: 1fr;
        padding: 14px 16px;
    }

    .course-card-date {
        display: flex;
        align-items: baseline;
        gap: 6px;
        text-align: left;
    }

    .course-card-date-day {
        font-size: 1.3rem;
    }

    .course-card-actions {
        justify-content: flex-start;
    }

    /* Carte groupée : une seule colonne, date en ligne au-dessus du circuit */
    .course-card--groupe .course-card-circuit,
    .course-card--groupe > .course-card-main > .course-card-stats,
    .course-card--groupe > .course-card-date {
        grid-column: auto;
        grid-row: auto;
    }

    .course-groupe-equipe {
        padding-left: 8px;
    }

    .course-groupe-equipe .course-card-side {
        flex-wrap: wrap;
        justify-content: flex-start;
    }
}

/* Tableaux simples (courses, pilotes, entraînements, circuits, kartings, admin) :
   sur smartphone, chaque ligne devient une carte verticale (étiquette + valeur)
   plutôt qu'un tableau tassé ou tronqué par le scroll horizontal. */
@media (max-width: 768px) {
    table.km-cards,
    table.km-cards thead,
    table.km-cards tbody,
    table.km-cards tr,
    table.km-cards th,
    table.km-cards td {
        display: block;
    }

    table.km-cards {
        width: 100% !important;
        max-width: 100%;
        background: transparent;
        box-shadow: none;
        border-radius: 0;
        margin: 16px 0;
    }

    /* Ces tableaux n'utilisent pas <thead> : la ligne d'en-tête est un <tr> de <th>
       comme les autres, on la repère donc avec :has(). L'entête reste dans le DOM
       (lisible par les lecteurs d'écran) mais n'est plus affichée visuellement. */
    table.km-cards tr:has(th) {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
        border: 0;
        margin: 0;
        padding: 0;
    }

    table.km-cards tr:not(:has(th)) {
        background-color: white;
        border-radius: 12px;
        /* Pas d'overflow:hidden ici : sur le même élément que box-shadow, il rogne l'ombre
           au ras du coin arrondi et laisse une pointe plus sombre visible sur smartphone.
           Aucune cellule n'a de fond propre à découper, donc le clip n'est pas nécessaire. */
        box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08);
        margin-bottom: 16px;
    }

    table.km-cards tr:last-child {
        margin-bottom: 0;
    }

    table.km-cards tr:hover {
        background-color: white;
    }

    table.km-cards td {
        border: none;
        border-bottom: 1px solid #f0f0f0;
        padding: 10px 16px;
        text-align: left !important;
        white-space: normal;
    }

    table.km-cards tr td:last-child {
        border-bottom: none;
    }

    /* Étiquette de colonne au-dessus de la valeur (issue de data-label en PHP) */
    table.km-cards td[data-label]:not([data-label=""])::before {
        content: attr(data-label);
        display: block;
        font-size: 0.72em;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: var(--km-brume);
        margin-bottom: 4px;
    }

    /* Cellule d'actions : pas d'étiquette, boutons centrés qui s'enroulent proprement.
       Pas de fond teinté ici : il serait identique au fond de page et donnerait l'impression
       d'une zone grise entre les cartes au lieu d'une simple carte blanche. */
    table.km-cards td.km-card-actions {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        align-items: center;
        gap: 8px;
        text-align: center;
    }

    table.km-cards td.km-card-actions .action-buttons {
        flex-wrap: wrap;
        justify-content: center;
    }
}

/* strategie_relais.php — pilote : prénom et nom sur 2 lignes sur smartphone */
.strategie-relais-page .strategie-personne {
    display: inline-flex;
    flex-direction: row;
    align-items: baseline;
    gap: 0.35em;
    flex-wrap: wrap;
}

@media (max-width: 768px) {
    .strategie-relais-page .strategie-personne {
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
        line-height: 1.3;
    }
}

/* strategie_relais — ligne horloge / temps écoulé ; pilote plus compact sur smartphone */
.strategie-relais-page .strategie-temps-ligne {
    font-size: 1.5em;
    line-height: 1.3;
}

.strategie-relais-page .strategie-course-meteo {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35em;
    margin: 0 0.5em 0 0.25em;
    font-size: 1.05em;
    font-weight: 600;
    color: #1a365d;
    white-space: nowrap;
}

.strategie-relais-page .strategie-course-meteo__sep {
    color: var(--km-brume);
    font-weight: 500;
}

.strategie-relais-page .strategie-temps-ligne__ecoule-label--compact {
    display: none;
}

/* strategie_relais.php — bloc détail sous « Stratégie » : sur PC, espaces entre les infos (voir mobile ci-dessous) */
.strategie-relais-page .strategie-details .strategie-detail-row:not(:last-child)::after {
    content: '\00a0\00a0';
}

/* Résumé bas de page : sur PC, séparateur « | » entre les deux lignes d’intro */
.strategie-relais-page .course-layout__summary .strategie-summary-intro-row:not(:last-child)::after {
    content: '\00a0|\00a0';
}

/* Début de relai / Prévenir à : secondes sur PC uniquement (sur mobile, version sans secondes) */
.strategie-relais-page .strategie-heure-debut--mobile,
.strategie-relais-page .strategie-heure-prevenir--mobile {
    display: none;
}

@media (max-width: 768px) {
    .strategie-relais-page .strategie-details .strategie-details__lines {
        font-size: 0.78rem;
        line-height: 1.45;
    }

    .strategie-relais-page .strategie-details .strategie-detail-row {
        display: block;
        margin-bottom: 0.4rem;
    }

    .strategie-relais-page .strategie-details .strategie-detail-row:last-child {
        margin-bottom: 0;
    }

    .strategie-relais-page .strategie-details .strategie-detail-row:not(:last-child)::after {
        content: none;
    }

    /* Résumé de la stratégie : visible et repliable, comme Stratégie */
    .strategie-relais-page .course-layout__summary {
        display: block;
    }

    .strategie-relais-page .strategie-heure-debut--desktop,
    .strategie-relais-page .strategie-heure-prevenir--desktop {
        display: none;
    }

    .strategie-relais-page .strategie-heure-debut--mobile,
    .strategie-relais-page .strategie-heure-prevenir--mobile {
        display: inline;
    }

    .strategie-relais-page .strategie-temps-ligne {
        font-size: 0.74rem;
        white-space: nowrap;
        line-height: 1.25;
    }

    .strategie-relais-page .strategie-temps-ligne__ecoule-label--full {
        display: none;
    }

    .strategie-relais-page .strategie-temps-ligne__ecoule-label--compact {
        display: inline;
    }

    .strategie-relais-page .strategie-temps-ligne__icon {
        font-size: 0.9em;
        vertical-align: -0.05em;
    }

    /*
     * Pas de défilement horizontal sur .course-layout__relay : sur iOS les taps sur les boutons
     * (horloge / relais / live) dans ce bloc seraient souvent perdus.
     */
    .strategie-relais-page .course-layout__relay {
        overflow-x: visible;
        max-width: 100%;
    }

    /* Smartphone : pas de bouton pour basculer tout/relais restants — masquage des relais passés uniquement (voir strategie_relais.php). */
    .strategie-relais-page #relais-visibility-toggle {
        display: none !important;
    }
}

/* strategie_relais — lien « Ouvrir » live timing : compact (les .btn-primary sont sinon pleine largeur sur mobile) */
#course-layout-strategie .livetiming-panel__actions .btn-livetiming-open {
    padding: 6px 12px;
    font-size: 0.875rem;
    font-weight: 600;
}

@media (max-width: 768px) {
    #course-layout-strategie .livetiming-panel__actions .btn-livetiming-open {
        width: auto !important;
        max-width: max-content !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        padding: 5px 10px !important;
        font-size: 0.8125rem !important;
    }
}

@media (max-width: 480px) {
    #course-layout-strategie .livetiming-panel__actions .btn-livetiming-open {
        min-height: 0 !important;
    }
}

/* Tableau de bord */
.dashboard-page {
    max-width: 1100px;
}

.dashboard-header {
    margin-bottom: 18px;
}

.dashboard-header h1 {
    margin-bottom: 4px;
}

.dashboard-intro {
    margin: 0;
    color: var(--km-brume);
    line-height: 1.45;
}

.dashboard-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 12px;
    margin-bottom: 22px;
}

.dashboard-stat {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    padding: 14px 16px;
}

.dashboard-stat--alert {
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), inset 3px 0 0 #ef6c00;
}

.dashboard-stat-value {
    display: block;
    font-size: 1.55em;
    font-weight: 700;
    color: var(--km-asphalte);
    line-height: 1.15;
}

.dashboard-stat--alert .dashboard-stat-value {
    color: #ef6c00;
}

.dashboard-stat-label {
    display: block;
    margin-top: 4px;
    color: #607d8b;
    font-size: 0.88em;
}

.dashboard-section {
    margin-bottom: 22px;
}

.dashboard-section-today > h2 {
    color: var(--km-herbe-hover);
}

.dashboard-today-card {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 18px;
    align-items: center;
    background: var(--km-herbe-wash);
    border: 2px solid var(--km-herbe);
    box-shadow: 0 4px 14px rgba(15, 86, 168, 0.18), inset 6px 0 0 var(--km-herbe);
    padding: 22px 24px;
}

.dashboard-badge--today {
    display: inline-block;
    background: var(--km-herbe);
    color: #fff;
    margin-bottom: 10px;
    padding: 5px 12px;
    font-size: 0.88em;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.dashboard-today-main .dashboard-next-title {
    margin-bottom: 8px;
    margin-top: 0;
    font-size: 1.55em;
}

.dashboard-today-main .dashboard-next-title a {
    color: var(--km-herbe-hover);
}

.dashboard-today-meta {
    margin: 0 0 8px;
    color: var(--km-herbe);
    font-weight: 600;
}

.dashboard-today-hint {
    margin: 0;
    color: var(--km-encre);
    font-size: 0.98em;
}

.dashboard-today-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 180px;
}

.dashboard-today-actions .btn,
.dashboard-today-actions .btn-strategie,
.dashboard-today-actions .btn-action,
.dashboard-today-actions .btn-resultats {
    text-align: center;
    text-decoration: none;
    justify-content: center;
}

.dashboard-today-actions .btn-strategie {
    font-weight: var(--km-btn-font-weight);
    box-shadow: 0 2px 8px rgba(15, 86, 168, 0.35);
}

.dashboard-today-strategie-btn {
    animation: dashboard-strategie-breathe 2.4s ease-in-out infinite;
    transform-origin: center center;
}

.dashboard-today-strategie-btn:hover,
.dashboard-today-strategie-btn:focus {
    animation-play-state: paused;
}

@keyframes dashboard-strategie-breathe {
    0%,
    100% {
        transform: scale(1);
        box-shadow: 0 2px 8px rgba(15, 86, 168, 0.3);
    }
    50% {
        transform: scale(1.05);
        box-shadow: 0 4px 16px rgba(15, 86, 168, 0.5);
    }
}

@media (prefers-reduced-motion: reduce) {
    .dashboard-today-strategie-btn {
        animation: none;
    }
}

.dashboard-section > h2,
.dashboard-section-head h2 {
    font-size: 1.2rem;
    margin: 0 0 0.75rem;
    color: #212121;
}

.dashboard-section-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 0.75rem;
}

.dashboard-section-head h2 {
    margin-bottom: 0;
}

.dashboard-link-more {
    color: var(--km-asphalte);
    font-size: 0.9em;
    font-weight: 500;
    text-decoration: none;
}

.dashboard-link-more:hover {
    text-decoration: underline;
}

.dashboard-empty p {
    margin-top: 0;
}

.dashboard-next-card {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 18px;
    align-items: start;
}

.dashboard-next-card.is-participe {
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), inset 4px 0 0 var(--km-herbe);
}

.dashboard-next-card.is-agenda {
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), inset 4px 0 0 var(--km-asphalte);
}

.dashboard-next-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 10px;
}

.dashboard-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.8em;
    font-weight: 600;
}

.dashboard-badge--participe {
    background: var(--km-herbe-wash);
    color: var(--km-herbe);
}

.dashboard-badge--agenda {
    background: var(--km-citron-pale);
    color: var(--km-asphalte);
}

.dashboard-badge--countdown {
    background: #eceff1;
    color: #455a64;
}

.dashboard-next-date {
    margin: 0 0 4px;
    color: #546e7a;
    text-transform: capitalize;
}

.dashboard-next-time {
    font-weight: 600;
    color: var(--km-asphalte);
    text-transform: none;
}

.dashboard-next-title {
    margin: 0 0 2px;
    font-size: 1.35em;
}

.dashboard-next-ville {
    margin: 0 0 12px;
    color: #78909c;
}

.dashboard-next-meta {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0 0 12px;
}

.dashboard-next-meta > div {
    background: #F3F4F6;
    border-radius: 6px;
    padding: 8px 10px;
}

.dashboard-next-meta dt {
    margin: 0;
    font-size: 0.75em;
    color: #78909c;
    text-transform: uppercase;
}

.dashboard-next-meta dd {
    margin: 3px 0 0;
    font-weight: 700;
    color: var(--km-asphalte);
}

.dashboard-next-pilotes {
    margin: 0;
    color: #455a64;
}

.dashboard-next-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 160px;
}

.dashboard-next-actions .btn,
.dashboard-next-actions .btn-strategie,
.dashboard-next-actions .btn-action,
.dashboard-next-actions .btn-resultats {
    text-align: center;
    text-decoration: none;
    justify-content: center;
}

.dashboard-livetiming-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.dashboard-livetiming-link img {
    filter: brightness(0) invert(1);
}

.dashboard-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 24px;
    align-items: stretch;
}

.dashboard-grid .dashboard-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.dashboard-panel--entrainements .dashboard-panel-footer {
    margin-top: auto;
}

.dashboard-panel {
    margin: 0;
}

.dashboard-panel-empty {
    margin: 0;
    color: #78909c;
}

.dashboard-panel-footer {
    margin-top: 12px;
}

.dashboard-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.dashboard-list-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid #ECEDEF;
}

.dashboard-list-item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.dashboard-list-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.dashboard-list-date {
    font-size: 0.82em;
    color: #78909c;
    font-weight: 600;
}

.dashboard-list-heure {
    margin-left: 6px;
    color: var(--km-asphalte);
}

.dashboard-list-title {
    font-weight: 700;
    color: var(--km-asphalte);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dashboard-list-title-row {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0;
    min-width: 0;
}

.dashboard-list-title-row .dashboard-list-title {
    flex: 0 1 auto;
}

.dashboard-list-meteo {
    font-weight: 400;
    font-size: 0.85em;
    color: #607d8b;
    white-space: nowrap;
}

.dashboard-list-title:hover {
    text-decoration: underline;
}

.dashboard-list-meta {
    font-size: 0.85em;
    color: #607d8b;
}

.dashboard-list-side {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-shrink: 0;
}

.dashboard-list-side .btn-strategie,
.dashboard-list-side .btn-resultats {
    height: auto;
    min-height: 0;
    padding: 10px 20px;
    font-size: 14px;
    line-height: 1.2;
    box-sizing: border-box;
}

.dashboard-list-result,
.dashboard-list-tempo {
    font-weight: 700;
    color: var(--km-asphalte);
    white-space: nowrap;
}

.dashboard-shortcuts {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.dashboard-shortcuts .btn-action {
    text-decoration: none;
}

.dashboard-histo {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.dashboard-histo-row {
    display: grid;
    grid-template-columns: minmax(110px, 38%) 1fr auto;
    align-items: center;
    gap: 10px;
}

.dashboard-histo-label {
    color: var(--km-asphalte);
    font-weight: 600;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.92em;
}

.dashboard-histo-label:hover {
    text-decoration: underline;
}

.dashboard-histo-track {
    height: 18px;
    background: #ECEDEF;
    border-radius: 4px;
    overflow: hidden;
}

.dashboard-histo-bar {
    height: 100%;
    min-width: 2px;
    background: var(--km-citron);
    border-radius: 4px;
}

.dashboard-histo-value {
    min-width: 1.5em;
    text-align: right;
    font-weight: 700;
    color: var(--km-asphalte);
    font-size: 0.95em;
}

/* Test lisibilité : listes du tableau de bord en bleu foncé, sans gras */
.dashboard-page .dashboard-list,
.dashboard-page .dashboard-list a:not([class*="btn"]),
.dashboard-page .dashboard-list-title,
.dashboard-page .dashboard-list-date,
.dashboard-page .dashboard-list-heure,
.dashboard-page .dashboard-list-result,
.dashboard-page .dashboard-list-tempo,
.dashboard-page .dashboard-histo-label,
.dashboard-page .dashboard-histo-value {
    color: var(--km-encre);
    font-weight: 400;
}

@media (max-width: 900px) {
    .dashboard-next-card,
    .dashboard-today-card {
        grid-template-columns: 1fr;
    }

    .dashboard-next-actions,
    .dashboard-today-actions {
        min-width: 0;
        flex-direction: row;
        flex-wrap: wrap;
    }

    .dashboard-next-meta {
        grid-template-columns: 1fr;
    }

    .dashboard-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 600px) {
    .dashboard-list-item {
        flex-direction: column;
        align-items: stretch;
    }

    .dashboard-list-side {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
    }
}

/* Page Analyse des performances */
.analyse-page h1 {
    margin-bottom: 0.5rem;
}

.analyse-intro {
    margin: 0 0 1.25rem;
    color: var(--km-brume);
}

.analyse-layout {
    display: grid;
    grid-template-columns: minmax(260px, 300px) minmax(0, 1fr);
    gap: 20px;
    align-items: start;
}

.analyse-sidebar {
    position: sticky;
    top: 12px;
    max-height: calc(100vh - 24px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    background: #fff;
    padding: 16px 18px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.analyse-form {
    margin: 0;
    padding: 0;
    background: none;
    box-shadow: none;
    border-radius: 0;
}

.analyse-main {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.analyse-filters-bar {
    background: #fff;
    padding: 16px 18px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.analyse-results {
    min-width: 0;
}

.analyse-filters-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px 12px;
    align-items: start;
}

.analyse-filters-bar .form-group {
    margin-bottom: 0;
}

.analyse-filter-pilotes {
    margin-bottom: 0;
}

.analyse-label {
    display: block;
    margin-bottom: 8px;
    font-weight: bold;
}

/* Sélection des pilotes : pastilles à cocher */
.analyse-pilotes-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.analyse-pilotes-head .analyse-label {
    margin-bottom: 0;
}

.analyse-pilotes-compteur {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--km-asphalte);
    background: var(--km-citron-pale);
    border-radius: 999px;
    padding: 2px 9px;
    font-variant-numeric: tabular-nums;
}

.analyse-pilotes-compteur.is-vide {
    color: var(--km-feu);
    background: #FDECEA;
}

.analyse-pilotes-recherche {
    position: relative;
    margin-bottom: 12px;
}

.analyse-pilotes-recherche i {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--km-brume);
    font-size: 0.8rem;
    pointer-events: none;
}

.analyse-page .analyse-pilotes-recherche input[type="search"] {
    width: 100%;
    height: 34px;
    padding: 0 10px 0 30px;
    margin: 0;
    border: 1px solid var(--km-joint);
    border-radius: 999px;
    font-size: 0.875rem;
    background: var(--km-beton);
    box-sizing: border-box;
}

.analyse-page .analyse-pilotes-recherche input[type="search"]:focus {
    outline: none;
    background: #fff;
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 3px rgba(24, 115, 200, 0.15);
}

.analyse-pilotes-actions {
    display: flex;
    gap: 2px;
    margin-left: auto;
}

.analyse-page .analyse-lien {
    background: none;
    border: none;
    box-shadow: none;
    padding: 4px 6px;
    margin: 0;
    min-height: 0;
    height: auto;
    width: auto;
    color: var(--km-asphalte);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    border-radius: 6px;
}

.analyse-page .analyse-lien:hover {
    background: var(--km-citron-pale);
    color: var(--km-asphalte-hover);
    transform: none;
}

.analyse-pilotes-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.analyse-page .form-group .analyse-chip {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    width: auto;
    margin: 0;
    padding: 3px 12px 3px 3px;
    border: 1px solid var(--km-joint);
    border-radius: 999px;
    background: #fff;
    color: var(--km-encre);
    font-weight: 400;
    font-size: 0.875rem;
    line-height: 1.2;
    cursor: pointer;
    user-select: none;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}

.analyse-page .form-group .analyse-chip[hidden] {
    display: none;
}

.analyse-page .form-group .analyse-chip:hover {
    border-color: var(--km-asphalte);
}

.analyse-chip input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
    pointer-events: none;
}

.analyse-chip-avatar {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--km-citron-pale);
    color: var(--km-asphalte);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    flex-shrink: 0;
}

.analyse-chip-avatar i {
    display: none;
    font-size: 0.75rem;
}

.analyse-chip-nom strong {
    font-weight: 600;
}

.analyse-page .form-group .analyse-chip:has(input:checked) {
    background: var(--km-asphalte);
    border-color: var(--km-asphalte);
    color: #fff;
}

.analyse-chip input:checked + .analyse-chip-avatar {
    background: var(--km-citron);
    color: var(--km-encre);
}

.analyse-chip input:checked + .analyse-chip-avatar .analyse-chip-initiales {
    display: none;
}

.analyse-chip input:checked + .analyse-chip-avatar i {
    display: inline;
}

.analyse-chip:has(input:focus-visible) {
    outline: var(--km-focus);
    outline-offset: 2px;
}

.analyse-pilotes-vide {
    margin: 4px 0 0;
}

.analyse-pilotes-vide[hidden] {
    display: none;
}

.analyse-form .hint,
.analyse-hint {
    display: block;
    font-size: 0.85rem;
    color: var(--km-brume);
    margin-top: 6px;
    font-weight: normal;
}

.analyse-label-karting {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 5px;
}

.analyse-label-karting label {
    margin-bottom: 0;
    width: auto;
}

.analyse-tip {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--km-asphalte);
    cursor: help;
    font-size: 0.95rem;
    font-weight: 400;
    line-height: 1;
    outline: none;
}

.analyse-tip:focus-visible {
    outline: var(--km-focus);
    outline-offset: 2px;
}

.analyse-tip-bubble {
    position: absolute;
    left: 0;
    bottom: calc(100% + 8px);
    z-index: 8;
    width: max-content;
    max-width: 16rem;
    padding: 8px 10px;
    background: var(--km-asphalte);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 400;
    line-height: 1.4;
    border-radius: var(--km-radius);
    box-shadow: 0 6px 16px rgba(15, 86, 168, 0.28);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.analyse-tip-bubble::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 8px;
    border: 6px solid transparent;
    border-top-color: var(--km-asphalte);
}

.analyse-tip:hover .analyse-tip-bubble,
.analyse-tip:focus .analyse-tip-bubble,
.analyse-tip:focus-within .analyse-tip-bubble {
    opacity: 1;
    visibility: visible;
}

.analyse-form-actions {
    margin-top: 14px;
    align-items: stretch;
}

.analyse-form-actions .btn-submit,
.analyse-form-actions .btn-cancel {
    font-size: var(--km-btn-font-size);
    font-weight: var(--km-btn-font-weight);
    line-height: 1.2;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.analyse-empty {
    margin: 0;
    padding: 16px 20px;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    color: var(--km-brume);
    font-style: italic;
}

.analyse-section.strategie-summary {
    background: #fff;
    margin-top: 0;
    margin-bottom: 1.5rem;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.analyse-section h2 {
    margin: 0 0 10px;
    font-size: 1.15rem;
    color: var(--km-asphalte);
}

.analyse-section h2:has(+ .analyse-charts-legend) {
    margin-bottom: 6px;
}

.analyse-page .strategie-summary p.analyse-context {
    margin: 0 0 8px;
    font-size: 0.95rem;
    color: var(--km-encre);
}

.analyse-page .strategie-summary p.analyse-hint {
    margin: 6px 0;
    font-size: 0.85rem;
    color: var(--km-brume);
    font-weight: normal;
    font-style: normal;
}

.analyse-regularite-aide {
    margin: 4px 0 10px;
}

.analyse-regularite-aide-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    list-style: none;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--km-asphalte);
    padding: 2px 0;
}

.analyse-regularite-aide-toggle::-webkit-details-marker {
    display: none;
}

.analyse-regularite-aide-toggle::after {
    content: '';
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 2px;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 5px solid currentColor;
    opacity: 0.7;
    transition: transform 0.15s ease;
}

.analyse-regularite-aide[open] .analyse-regularite-aide-toggle::after {
    transform: rotate(180deg);
}

.analyse-regularite-aide-toggle:hover {
    text-decoration: underline;
}

.analyse-regularite-aide-body {
    margin-top: 8px;
    padding: 12px 14px;
    background: var(--km-craie);
    border: 1px solid var(--km-joint);
    border-radius: 8px;
}

.analyse-regularite-def {
    margin: 0 0 10px;
    font-size: 0.9rem;
    color: var(--km-encre);
    line-height: 1.45;
}

.analyse-regularite-def strong {
    color: var(--km-encre);
}

.analyse-regularite-echelle {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.analyse-regularite-palier {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 7rem;
    flex: 1 1 7rem;
    padding: 7px 10px;
    border-radius: 6px;
    border-left: 4px solid transparent;
}

.analyse-regularite-palier-libelle {
    font-weight: 700;
    font-size: 0.82rem;
}

.analyse-regularite-palier-borne {
    font-size: 0.75rem;
    opacity: 0.85;
}

.analyse-regularite--excellent {
    background: var(--km-herbe-wash);
    border-color: var(--km-herbe);
    color: var(--km-herbe-hover);
}

.analyse-regularite--bon {
    background: var(--km-citron-pale);
    border-color: var(--km-asphalte);
    color: var(--km-asphalte-hover);
}

.analyse-regularite--moyen {
    background: #fff8e1;
    border-color: #f9a825;
    color: #f57f17;
}

.analyse-regularite--faible {
    background: #ffebee;
    border-color: var(--km-feu);
    color: #b71c1c;
}

.analyse-regularite--insuffisant {
    background: #F3F4F6;
    border-color: var(--km-brume);
    color: var(--km-brume);
}

.analyse-td-regularite {
    vertical-align: middle;
}

.analyse-regularite {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    min-width: 6.8rem;
    padding: 4px 8px;
    border-radius: 6px;
    border-left: 4px solid currentColor;
    line-height: 1.2;
}

.analyse-regularite-valeur {
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    font-size: 0.92rem;
    white-space: nowrap;
}

.analyse-regularite-libelle {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.01em;
}

.analyse-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin-top: 12px;
}

.analyse-page .recap-table.analyse-table {
    margin-top: 0;
    box-shadow: none;
    border: 1px solid var(--km-joint);
    border-radius: 10px;
    overflow: hidden;
}

.analyse-page .recap-table.analyse-table th,
.analyse-page .recap-table.analyse-table td {
    padding: 10px 12px;
}

.analyse-page .recap-table.analyse-table th {
    position: static;
    border-bottom: none;
    letter-spacing: 0;
}

.analyse-page .recap-table.analyse-table th:first-child,
.analyse-page .recap-table.analyse-table th:last-child {
    border-radius: 0;
}

.analyse-page .analyse-table thead .analyse-th-id {
    background: var(--km-citron-pale);
    color: var(--km-encre);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    vertical-align: middle;
    border-bottom: 1px solid #c5d8f0;
}

.analyse-page .analyse-table thead .analyse-th-group {
    background: var(--km-citron-pale);
    color: var(--km-encre);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 9px 12px 7px;
}

.analyse-page .analyse-table thead .analyse-th-sub {
    background: var(--km-citron-pale);
    color: var(--km-encre);
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    padding: 7px 12px 8px;
    border-bottom: 1px solid #c5d8f0;
}

.analyse-page .analyse-table thead .analyse-th-group.analyse-th-group-start,
.analyse-page .analyse-table thead .analyse-th-id + .analyse-th-group,
.analyse-page .analyse-table thead .analyse-th-sub.analyse-th-group-start,
.analyse-page .analyse-table tbody .analyse-td-group-start {
    border-left: 1px solid #d7e3f4;
}

.analyse-page .analyse-table tbody td.analyse-rang {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--km-encre);
}

.analyse-page .analyse-table tbody td {
    font-variant-numeric: tabular-nums;
}

.analyse-rang {
    white-space: nowrap;
}

.analyse-charts {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
}

.analyse-charts-legend {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 18px;
    list-style: none;
    margin: 0 0 16px;
    padding: 0;
    font-size: 0.9rem;
    color: var(--km-encre);
}

.analyse-charts-legend li {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.analyse-charts-swatch {
    width: 28px;
    height: 12px;
    border-radius: 2px;
    flex-shrink: 0;
    box-sizing: border-box;
}

.analyse-charts-swatch--ent {
    background: rgba(232, 197, 71, 0.92);
    border: 1px solid #C9A62A;
}

.analyse-charts-swatch--course {
    background: rgba(13, 71, 161, 0.75);
    border: 1px solid #0B3D8A;
}

.analyse-chart-block h3 {
    margin: 0 0 8px;
    font-size: 1rem;
    color: var(--km-asphalte);
}

.analyse-chart-wrap {
    position: relative;
    height: 280px;
}

@media (min-width: 1400px) {
    .analyse-charts {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 960px) {
    .analyse-layout {
        grid-template-columns: 1fr;
    }

    .analyse-sidebar {
        position: static;
        max-height: none;
        overflow: visible;
    }

}

@media (max-width: 768px) {
    .analyse-filters-grid {
        grid-template-columns: 1fr;
    }

    .analyse-page .analyse-table-wrap .recap-table.analyse-table,
    .analyse-page .analyse-table-wrap .recap-table.analyse-table thead,
    .analyse-page .analyse-table-wrap .recap-table.analyse-table tbody,
    .analyse-page .analyse-table-wrap .recap-table.analyse-table tr {
        display: revert;
        width: auto;
        table-layout: auto;
    }

    .analyse-page .analyse-table-wrap .recap-table.analyse-table {
        width: max-content;
        min-width: 100%;
    }

    /* Résultats : tableau des relais, défilement horizontal dans son conteneur */
    .relais-conditions__scroll .recap-table.relais-conditions__table,
    .relais-conditions__scroll .recap-table.relais-conditions__table thead,
    .relais-conditions__scroll .recap-table.relais-conditions__table tbody,
    .relais-conditions__scroll .recap-table.relais-conditions__table tr {
        display: revert;
        width: auto;
        table-layout: auto;
    }

    .relais-conditions__scroll .recap-table.relais-conditions__table {
        width: max-content;
        min-width: 100%;
    }
}

/* ========== Identité visuelle Kartmadaire (panneau de stand) ========== */

html {
    overflow-x: hidden;
}

body {
    font-family: var(--km-font);
    font-size: 16px;
    line-height: 1.5;
    color: var(--km-encre);
    background: var(--km-beton);
    background-attachment: scroll;
    -webkit-font-smoothing: antialiased;
}

body::before {
    display: none;
}

h1, h2, h3,
.dashboard-stat-value,
.dashboard-list-tempo,
.dashboard-next-time,
.dashboard-histo-value,
.hero-title-modern,
.login-header h2,
.analyse-regularite-valeur {
    font-family: var(--km-font-display);
    font-optical-sizing: auto;
    letter-spacing: 0.01em;
}

h1,
.container h1,
.dashboard-header h1 {
    color: var(--km-encre);
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
    margin-bottom: 12px;
}

h2,
.dashboard-section > h2,
.dashboard-section-head h2 {
    color: var(--km-encre);
    font-weight: 650;
}

a {
    color: var(--km-asphalte);
}

a:hover:not([class*="btn"]):not(.navbar-links-a):not(.navbar-logo-link) {
    color: var(--km-asphalte-hover);
}

.dashboard-page .dashboard-list a:hover:not([class*="btn"]),
.dashboard-page .dashboard-histo-label:hover:not([class*="btn"]) {
    color: var(--km-encre);
}

a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.btn-add:focus-visible,
.btn-submit:focus-visible,
.btn-primary:focus-visible,
.btn-cta-modern:focus-visible,
.navbar-links-a:focus-visible,
.input-connexion-modern:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: var(--km-focus);
    outline-offset: 2px;
}

.navbar {
    background-color: var(--km-menu);
    box-shadow: none;
    border-bottom: 4px solid var(--km-citron);
    margin-bottom: 20px;
}

.navbar-links-a {
    border-radius: 0;
    font-weight: 400;
}

.navbar-links-a:hover {
    background-color: rgba(255, 255, 255, 0.08);
    border-bottom: 2px solid var(--km-citron);
    color: #fff;
}

.navbar-links-a.active {
    background-color: transparent;
    font-weight: 700;
    border-bottom: 3px solid var(--km-citron);
}

.navbar-admin-badge {
    background-color: var(--km-citron);
    color: var(--km-menu);
    box-shadow: none;
}

.navbar-logo-link:hover img {
    transform: none;
}

.site-footer {
    background-color: var(--km-menu);
    box-shadow: none;
    border-top: 4px solid var(--km-citron);
}

table {
    border-radius: var(--km-radius);
    box-shadow: var(--km-shadow);
}

th {
    background-color: var(--km-asphalte);
    color: #fff;
    border-bottom: 2px solid var(--km-citron);
    letter-spacing: 0.02em;
    font-family: var(--km-font-display);
    font-weight: 600;
}

th:first-child,
th:last-child,
tr:last-child td:first-child,
tr:last-child td:last-child {
    border-radius: 0;
}

tr:hover {
    background-color: var(--km-citron-pale);
}

.btn-add,
.btn-submit,
.btn-action,
.btn-modifier,
.btn-primary,
.btn-submit-modern {
    background: var(--km-asphalte);
    background-color: var(--km-asphalte);
    background-image: none;
    color: var(--km-craie);
    border-radius: var(--km-radius);
    box-shadow: none;
    font-family: inherit;
    font-weight: var(--km-btn-font-weight);
}

.btn-add:hover,
.btn-submit:hover,
.btn-action:hover,
.btn-modifier:hover,
.btn-primary:hover,
.btn-submit-modern:hover,
a.btn-add:hover,
a.btn-submit:hover,
a.btn-action:hover,
a.btn-modifier:hover,
a.btn-primary:hover,
td a.btn-add:hover,
td a.btn-submit:hover,
td a.btn-action:hover,
td a.btn-primary:hover {
    background: var(--km-asphalte-hover);
    background-color: var(--km-asphalte-hover);
    background-image: none;
    color: #fff;
    text-decoration: none;
    transform: none;
    box-shadow: none;
}

.btn-strategie:hover,
.btn-resultats:hover,
a.btn-strategie:hover,
a.btn-resultats:hover,
td a.btn-strategie:hover,
td a.btn-resultats:hover {
    color: #fff;
    text-decoration: none;
}

.btn-submit-modern.btn-secondary-modern,
.btn-secondary-modern {
    background: var(--km-craie) !important;
    color: var(--km-asphalte) !important;
    border: 2px solid var(--km-asphalte) !important;
    box-shadow: none !important;
}

.btn-secondary-modern:hover {
    background: var(--km-citron-pale) !important;
    border-color: var(--km-asphalte) !important;
    color: var(--km-asphalte) !important;
    transform: none !important;
}

.btn-strategie {
    background-color: var(--km-herbe);
    border-radius: var(--km-radius);
}

.btn-strategie:hover {
    background-color: var(--km-herbe-hover);
}

.btn,
.btn-resultats {
    border-radius: var(--km-radius);
}

.btn-primary:hover,
.btn-submit:hover {
    transform: none;
}

.dashboard-stat {
    background: var(--km-craie);
    border-radius: 0;
    box-shadow: none;
    border: 1px solid var(--km-joint);
    border-left: 4px solid var(--km-citron);
}

.dashboard-stat--alert {
    border-left-color: var(--km-dromadaire);
    box-shadow: none;
}

.dashboard-stat-value {
    color: var(--km-asphalte);
    font-size: 2rem;
    font-weight: 700;
}

.dashboard-stat--alert .dashboard-stat-value {
    color: var(--km-dromadaire);
}

.dashboard-stat-label {
    color: var(--km-brume);
    text-transform: none;
}

.dashboard-today-card {
    background: var(--km-herbe-wash);
    border: 1px solid var(--km-herbe);
    box-shadow: none;
    border-radius: 0;
}

.dashboard-badge--today {
    background: var(--km-herbe);
    text-transform: none;
    letter-spacing: 0;
    border-radius: var(--km-radius);
}

.dashboard-next-meta dt {
    text-transform: none;
    letter-spacing: 0;
}

.dashboard-next-meta > div {
    background: var(--km-citron-pale);
    border-radius: 0;
}

.dashboard-next-card.is-participe {
    box-shadow: none;
    border-left: 4px solid var(--km-herbe);
}

.dashboard-next-card.is-agenda {
    box-shadow: none;
    border-left: 4px solid var(--km-citron);
}

.course-details {
    border-radius: 0;
    box-shadow: var(--km-shadow);
}

.login-box {
    background: var(--km-craie);
    border-radius: 0;
    box-shadow: none;
    border: 1px solid var(--km-joint);
    overflow: hidden;
    animation: km-rise 0.45s ease both;
}

.login-box::before {
    height: 4px;
    background: var(--km-citron);
    animation: none;
}

.login-header h2 {
    color: var(--km-encre);
    font-weight: 700;
}

.input-connexion-modern,
.input-connexion {
    border-radius: var(--km-radius);
    border-color: var(--km-joint);
    background: var(--km-craie);
}

.input-connexion-modern:focus,
.input-connexion:focus {
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 3px rgba(232, 197, 71, 0.45);
    transform: none;
}

.error-message {
    border-radius: var(--km-radius);
    animation: none;
    box-shadow: none;
}

.success-message {
    border-radius: var(--km-radius);
}

.btn-icon.btn-icon-edit,
.btn-icon.btn-icon-delete,
a.btn-icon.btn-icon-edit,
a.btn-icon.btn-icon-delete,
button.btn-icon.btn-icon-edit,
button.btn-icon.btn-icon-delete {
    width: 34px;
    height: 34px;
    min-width: 34px;
    min-height: 34px;
    padding: 0;
    margin: 0 2px;
    border: none;
    border-radius: var(--km-radius);
    box-shadow: none;
    text-decoration: none;
    color: #fff !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-icon.btn-icon-edit,
a.btn-icon.btn-icon-edit,
button.btn-icon.btn-icon-edit {
    background: var(--km-asphalte) !important;
    background-color: var(--km-asphalte) !important;
}

.btn-icon.btn-icon-delete,
a.btn-icon.btn-icon-delete,
button.btn-icon.btn-icon-delete {
    background: var(--km-feu) !important;
    background-color: var(--km-feu) !important;
}

.btn-icon.btn-icon-edit i,
.btn-icon.btn-icon-delete i,
a.btn-icon.btn-icon-edit i,
a.btn-icon.btn-icon-delete i {
    color: #fff !important;
    font-size: 12px;
    width: auto;
    height: auto;
    line-height: 1;
}

.btn-icon.btn-icon-edit:hover,
.btn-icon.btn-icon-edit:focus,
a.btn-icon.btn-icon-edit:hover,
a.btn-icon.btn-icon-edit:focus,
td a.btn-icon.btn-icon-edit:hover,
td a.btn-icon.btn-icon-edit:focus,
button.btn-icon.btn-icon-edit:hover {
    background: var(--km-asphalte-hover) !important;
    background-color: var(--km-asphalte-hover) !important;
    color: #fff !important;
    text-decoration: none;
    transform: none;
}

.btn-icon.btn-icon-delete:hover,
.btn-icon.btn-icon-delete:focus,
a.btn-icon.btn-icon-delete:hover,
a.btn-icon.btn-icon-delete:focus,
td a.btn-icon.btn-icon-delete:hover,
td a.btn-icon.btn-icon-delete:focus,
button.btn-icon.btn-icon-delete:hover {
    background: #8B1A14 !important;
    background-color: #8B1A14 !important;
    color: #fff !important;
    text-decoration: none;
    transform: none;
}

.btn-icon.btn-icon-edit:hover i,
.btn-icon.btn-icon-delete:hover i,
a.btn-icon.btn-icon-edit:hover i,
a.btn-icon.btn-icon-delete:hover i {
    color: #fff !important;
}

tr:hover .btn-icon.btn-icon-edit,
tr:hover a.btn-icon.btn-icon-edit {
    background: var(--km-asphalte) !important;
}

tr:hover .btn-icon.btn-icon-delete,
tr:hover a.btn-icon.btn-icon-delete {
    background: var(--km-feu) !important;
}

tr:hover .btn-icon.btn-icon-edit:hover,
tr:hover a.btn-icon.btn-icon-edit:hover {
    background: var(--km-asphalte-hover) !important;
}

tr:hover .btn-icon.btn-icon-delete:hover,
tr:hover a.btn-icon.btn-icon-delete:hover {
    background: #8B1A14 !important;
}

.circuit-pistes-table .btn-piste-editer.btn-icon-edit {
    background: var(--km-asphalte) !important;
    border: none;
    cursor: pointer;
    padding: 0;
}

.recap-table {
    border-radius: var(--km-radius);
    box-shadow: var(--km-shadow);
}

.recap-table th {
    background-color: var(--km-asphalte);
    color: #fff;
    border-bottom: 2px solid var(--km-citron);
}

.recap-table th:first-child,
.recap-table th:last-child,
.recap-table tr:last-child td:first-child,
.recap-table tr:last-child td:last-child {
    border-radius: 0;
}

.recap-table tr:hover {
    background-color: var(--km-citron-pale);
}

.strategie-relais-page > h1,
.strategie-relais-page > .course-details,
.strategie-relais-page > .selection-pilotes-section {
    flex: 0 0 auto;
}

.strategie-relais-page .course-details {
    margin: 0 0 12px;
    padding: 14px 18px;
    height: auto;
    min-height: 0;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.strategie-relais-page .course-details h2 {
    margin: 0 0 6px;
}

.strategie-relais-page .course-details .course-info {
    margin: 0;
}

.resultats-course-page .course-details {
    margin: 0 0 12px;
    padding: 14px 18px 18px;
    border-radius: 16px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.resultats-course-page .strategie-summary {
    background: #fff;
    border: none;
    border-radius: 16px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    padding: 18px 20px 20px;
}

.resultats-course-page .strategie-summary > h3 {
    margin: 0 0 12px;
}

.resultats-course-page .strategie-summary .selection-pilotes-section {
    margin: 0 0 16px;
    padding: 0;
    justify-content: flex-start;
    text-align: left;
}

.strategie-relais-page .strategie-summary {
    background: #fff;
    border: none;
    border-radius: 10px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    padding: 20px;
    margin-top: 4px;
    flex: 1 1 auto;
}

.strategie-relais-page .strategie-summary.strategy-summary-noborder {
    border: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.strategie-relais-page .course-layout__summary {
    margin-top: 8px;
    padding: 0;
    background: none;
    box-shadow: none;
    border: none;
}

.strategie-relais-page .course-layout__summary .strategie-summary-bottom__title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 16px 0 8px;
    color: var(--km-asphalte);
    font-weight: 600;
}

.strategie-relais-page .course-layout__summary .strategie-summary-intro-lines {
    margin: 0 0 10px;
    font-size: 0.95rem;
    color: var(--km-encre);
}

.strategie-relais-page .strategie-summary h3 {
    color: var(--km-asphalte);
    font-weight: 600;
}

.strategie-relais-page .strategie-summary span {
    font-weight: 500;
}

.strategie-relais-page .strategie-summary p {
    font-size: 0.95rem;
    color: var(--km-encre);
}

.strategie-relais-page table.recap-table {
    margin-top: 8px;
    max-width: 100%;
    box-shadow: none;
    border: 1px solid var(--km-joint);
    border-radius: 10px;
    overflow: hidden;
    background: var(--km-craie);
}

.strategie-relais-page table.recap-table th {
    background: var(--km-citron-pale) !important;
    color: var(--km-encre) !important;
    font-family: var(--km-font);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-bottom: 1px solid #c5d8f0;
    padding: 10px 12px;
}

.strategie-relais-page table.recap-table td {
    padding: 10px 12px;
    font-size: 0.9rem;
    font-weight: 400;
    font-variant-numeric: tabular-nums;
    color: var(--km-encre);
    border-bottom: 1px solid #edf2f8;
}

.strategie-relais-page table.recap-table td strong {
    font-weight: 500;
    color: inherit;
}

.strategie-relais-page table.recap-table tbody tr:nth-child(even) {
    background-color: #f7fafc;
}

.strategie-relais-page table.recap-table tbody tr:hover {
    background-color: var(--km-citron-pale);
}

.strategie-relais-page .strategie-valeur,
.strategie-relais-page #horloge,
.strategie-relais-page #tempsEcoule,
.strategie-relais-page #heureFinCourse {
    color: var(--km-asphalte);
    font-family: var(--km-font-display);
    font-weight: 700;
}

.strategie-relais-page .strategie-temps-ligne {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4em;
    flex: 0 0 auto;
    white-space: nowrap;
}

.strategie-relais-page .strategie-temps-ligne__ecoule-label,
.strategie-relais-page .strategie-temps-ligne__sep {
    font-family: var(--km-font);
    font-size: 1.05rem;
    font-weight: 600;
    color: #1a365d;
    line-height: 1.3;
}

.strategie-relais-page .strategie-temps-chiffre,
.strategie-relais-page #horloge,
.strategie-relais-page #tempsEcoule {
    display: inline-block;
    box-sizing: content-box;
    width: 8ch;
    min-width: 8ch;
    max-width: 8ch;
    font-variant-numeric: tabular-nums lining-nums;
    font-feature-settings: "tnum" 1, "lnum" 1;
    letter-spacing: 0;
    white-space: nowrap;
    text-align: left;
    overflow: hidden;
}

.strategie-relais-page .strategie-temps-ligne__icon {
    color: var(--km-brume);
}

.strategie-relais-page .selection-pilotes-section.strategie-relais-actions {
    padding: 0 0 16px;
}

.strategie-relais-page .km-fold > .btn-toggle-details {
    color: inherit;
    border: none;
}

.strategie-relais-page .km-fold > .btn-toggle-details:hover {
    background: none;
    color: var(--km-asphalte-hover);
}

.strategie-relais-page .course-layout__fin-course-line {
    color: var(--km-encre);
}

/* Boutons : une seule taille, un seul rayon */
.btn:not(.btn-icon):not(.btn-google-calendar):not(.btn-apple-calendar):not(.btn-map),
.btn-add,
.btn-submit,
.btn-cancel,
.btn-primary,
.btn-primary-delete,
.btn-action,
.btn-modifier,
.btn-strategie,
.btn-resultats,
.btn-submit-modern,
.btn-cta,
.btn-cta-modern,
.btn-login,
.btn-logout,
.btn-livetiming-toggle,
.btn-livetiming-open,
.btn-small {
    min-height: var(--km-btn-height) !important;
    height: var(--km-btn-height) !important;
    padding: 0 var(--km-btn-pad-x) !important;
    border-radius: var(--km-btn-radius) !important;
    font-size: var(--km-btn-font-size);
    font-weight: var(--km-btn-font-weight) !important;
    font-family: inherit;
    line-height: 1.2;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: none;
    transform: none;
}

.btn-submit-modern,
.btn-cta-modern,
.btn-cta-large {
    min-height: 38px !important;
    height: 38px !important;
}

.btn-cta-modern,
a.btn-cta-modern {
    color: var(--km-encre);
}

.btn-cta-modern:hover,
a.btn-cta-modern:hover {
    color: var(--km-encre);
}

.login-form .btn-submit-modern {
    color: #fff;
}

.btn-strategie.btn-detail {
    min-height: 28px !important;
    height: 28px !important;
    max-height: 28px !important;
    padding: 0 10px !important;
    font-size: 0.8rem;
}

.btn-google-calendar,
.btn-apple-calendar {
    width: 34px;
    height: 34px !important;
    min-height: 34px !important;
    padding: 0 !important;
    border-radius: var(--km-btn-radius) !important;
    box-shadow: none;
    transform: none;
}

.btn-icon,
a.btn-icon,
button.btn-icon,
.btn.btn-icon {
    width: 34px;
    height: 34px !important;
    min-width: 34px;
    min-height: 34px !important;
    padding: 0 !important;
    border-radius: var(--km-btn-radius) !important;
}

.btn-map {
    border-radius: var(--km-btn-radius) !important;
}

.liste-courses-equipe-edit,
.liste-courses-equipe-save,
.liste-courses-equipe-cancel {
    border-radius: var(--km-btn-radius) !important;
}

.btn-recalcul-meteo {
    border-radius: var(--km-btn-radius) !important;
}

@media (max-width: 768px) {
    .selection-pilotes-section a.btn-primary,
    .selection-pilotes-section a.btn-cancel,
    .selection-pilotes-section .btn-primary-delete,
    .selection-pilotes-section a.btn-cancel {
        padding: 0 12px !important;
        min-height: var(--km-btn-height);
        height: var(--km-btn-height);
        font-size: 0.85rem;
    }
}

@keyframes km-rise {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: none; }
}

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

/* ============================================================
   Harmonisation site entier avec le style de la page Courses
   (mêmes couleurs/formes que .course-card-btn / .course-card-icon-btn) :
   bleu foncé plein pour les actions principales, contour clair pour
   les actions secondaires et les icônes Modifier/Supprimer.
   Bloc volontairement placé en toute fin de feuille pour l'emporter
   sur les règles historiques ci-dessus (mêmes propriétés visuelles
   uniquement — fond, texte, bordure — jamais les tailles/marges
   propres à chaque page). Le rayon et la hauteur restent gérés par
   --km-btn-radius / --km-btn-height plus haut.
   ============================================================ */

/* Actions principales : bleu foncé plein */
.btn-add,
.btn-submit,
.btn-submit-modern,
.btn-action,
.btn-primary,
.btn-strategie {
    background: var(--km-menu);
    background-color: var(--km-menu);
    background-image: none;
    border: 1px solid transparent;
}

.btn-add:hover,
.btn-submit:hover,
.btn-submit-modern:hover,
.btn-action:hover,
.btn-primary:hover,
.btn-strategie:hover,
a.btn-add:hover,
a.btn-submit:hover,
a.btn-action:hover,
a.btn-primary:hover,
a.btn-strategie:hover,
td a.btn-add:hover,
td a.btn-submit:hover,
td a.btn-action:hover,
td a.btn-primary:hover,
td a.btn-strategie:hover {
    background: var(--km-menu-hover);
    background-color: var(--km-menu-hover);
    background-image: none;
}

.btn-action.disabled,
.btn-action.disabled:hover {
    background: var(--km-craie);
    background-color: var(--km-craie);
    color: #A9B8C7;
    border: 1px solid var(--km-joint);
}

/* Actions secondaires : contour clair */
.btn-cancel,
.btn-resultats {
    background: var(--km-craie) !important;
    background-color: var(--km-craie) !important;
    background-image: none !important;
    color: var(--km-encre) !important;
    border: 1px solid var(--km-joint) !important;
}

.btn-cancel:hover,
.btn-resultats:hover,
a.btn-cancel:hover,
a.btn-resultats:hover,
td a.btn-resultats:hover {
    background: var(--km-beton) !important;
    background-color: var(--km-beton) !important;
    color: var(--km-encre) !important;
}

.btn-resultats.disabled {
    background: var(--km-craie) !important;
    background-color: var(--km-craie) !important;
    color: #A9B8C7 !important;
    border: 1px solid var(--km-joint) !important;
}

/* Action destructrice */
.btn-primary-delete {
    background: var(--km-feu);
    background-color: var(--km-feu);
}

.btn-primary-delete:hover {
    background: #8B1A14;
    background-color: #8B1A14;
}

/* Icônes Modifier / Supprimer : contour clair plutôt que carré plein */
.btn-icon.btn-icon-edit,
a.btn-icon.btn-icon-edit,
button.btn-icon.btn-icon-edit,
tr:hover .btn-icon.btn-icon-edit,
tr:hover a.btn-icon.btn-icon-edit {
    background: var(--km-craie) !important;
    background-color: var(--km-craie) !important;
    border: 1px solid var(--km-joint);
    color: var(--km-asphalte) !important;
}

.btn-icon.btn-icon-edit i,
a.btn-icon.btn-icon-edit i,
button.btn-icon.btn-icon-edit i {
    color: var(--km-asphalte) !important;
}

.btn-icon.btn-icon-edit:hover,
.btn-icon.btn-icon-edit:focus,
a.btn-icon.btn-icon-edit:hover,
a.btn-icon.btn-icon-edit:focus,
td a.btn-icon.btn-icon-edit:hover,
td a.btn-icon.btn-icon-edit:focus,
button.btn-icon.btn-icon-edit:hover,
tr:hover .btn-icon.btn-icon-edit:hover,
tr:hover a.btn-icon.btn-icon-edit:hover {
    background: var(--km-citron-pale) !important;
    border-color: var(--km-asphalte);
    color: var(--km-asphalte) !important;
}

.btn-icon.btn-icon-edit:hover i,
a.btn-icon.btn-icon-edit:hover i {
    color: var(--km-asphalte) !important;
}

.btn-icon.btn-icon-delete,
a.btn-icon.btn-icon-delete,
button.btn-icon.btn-icon-delete,
tr:hover .btn-icon.btn-icon-delete,
tr:hover a.btn-icon.btn-icon-delete {
    background: var(--km-craie) !important;
    background-color: var(--km-craie) !important;
    border: 1px solid var(--km-joint);
    color: var(--km-feu) !important;
}

.btn-icon.btn-icon-delete i,
a.btn-icon.btn-icon-delete i,
button.btn-icon.btn-icon-delete i {
    color: var(--km-feu) !important;
}

.btn-icon.btn-icon-delete:hover,
.btn-icon.btn-icon-delete:focus,
a.btn-icon.btn-icon-delete:hover,
a.btn-icon.btn-icon-delete:focus,
td a.btn-icon.btn-icon-delete:hover,
td a.btn-icon.btn-icon-delete:focus,
button.btn-icon.btn-icon-delete:hover,
tr:hover .btn-icon.btn-icon-delete:hover,
tr:hover a.btn-icon.btn-icon-delete:hover {
    background: #FFEBEE !important;
    border-color: var(--km-feu);
    color: var(--km-feu) !important;
}

.btn-icon.btn-icon-delete:hover i,
a.btn-icon.btn-icon-delete:hover i {
    color: var(--km-feu) !important;
}

.circuit-pistes-table .btn-piste-editer.btn-icon-edit {
    background: var(--km-craie) !important;
    border: 1px solid var(--km-joint);
    color: var(--km-asphalte) !important;
}

/* ============================================================
   Écran de connexion — refonte "Grille de départ" (connexion.php).
   Nouveau jeu de classes .km-auth-*, indépendant de .login-box /
   .login-form pour ne pas modifier l'apparence de la page
   d'inscription (utilisateur_creer.php), qui réutilise encore
   l'ancien style. Uniquement les jetons --km-* définis en tête de
   fichier : aucune nouvelle couleur ni police introduite.
   ============================================================ */

.km-auth-page {
    min-height: 100vh;
    background: var(--km-beton);
}

.km-auth-shell {
    width: 100%;
    min-height: 100vh;
    display: grid;
    grid-template-columns: 1.05fr 1fr;
    background: var(--km-craie);
}

/* -------- Panneau de marque -------- */
.km-auth-brand {
    position: relative;
    padding: 48px 44px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 28px;
    background: linear-gradient(165deg, var(--km-menu) 0%, var(--km-menu-hover) 80%);
    color: var(--km-craie);
    overflow: hidden;
}

.km-auth-brand::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 70px;
    background-image: repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.5) 0 26px, transparent 26px 54px);
    opacity: 0.14;
    mask-image: linear-gradient(to top, #000, transparent);
    -webkit-mask-image: linear-gradient(to top, #000, transparent);
    pointer-events: none;
}

.km-auth-brand__top {
    display: flex;
    align-items: center;
    gap: 14px;
    position: relative;
    z-index: 1;
}

.km-auth-brand__badge {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid rgba(255, 255, 255, 0.35);
    flex: none;
}

.km-auth-brand__badge img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.km-auth-brand__word {
    font-family: var(--km-font-display);
    line-height: 0.95;
}

.km-auth-brand__word strong {
    display: block;
    font-size: 1.4rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.km-auth-brand__word span {
    display: block;
    font-size: 0.7rem;
    letter-spacing: 0.2em;
    color: var(--km-citron);
    font-weight: 700;
    margin-top: 3px;
    text-transform: uppercase;
}

.km-auth-lights {
    display: flex;
    gap: 12px;
    margin-bottom: 20px;
    position: relative;
    z-index: 1;
}

.km-auth-lights i {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
    border: 2px solid rgba(255, 255, 255, 0.25);
    display: block;
}

.km-auth-lights i.is-lit {
    background: var(--km-citron);
    border-color: var(--km-citron);
    box-shadow: 0 0 0 5px rgba(232, 197, 71, 0.22), 0 0 14px rgba(232, 197, 71, 0.7);
}

@media (prefers-reduced-motion: no-preference) {
    .km-auth-lights i.is-lit {
        animation: km-auth-glow 1.8s ease-in-out infinite;
    }
}

@keyframes km-auth-glow {
    0%, 100% { box-shadow: 0 0 0 5px rgba(232, 197, 71, 0.22), 0 0 14px rgba(232, 197, 71, 0.7); }
    50% { box-shadow: 0 0 0 8px rgba(232, 197, 71, 0.12), 0 0 20px rgba(232, 197, 71, 0.9); }
}

.km-auth-brand__pitch {
    position: relative;
    z-index: 1;
}

.km-auth-brand__pitch h1 {
    font-family: var(--km-font-display);
    font-size: 1.6rem;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--km-craie);
    max-width: 16ch;
    margin: 0 0 10px;
    text-wrap: balance;
}

.km-auth-brand__pitch p {
    font-size: 0.92rem;
    color: rgba(255, 255, 255, 0.8);
    max-width: 34ch;
    margin: 0;
}

.km-auth-stats {
    display: flex;
    gap: 26px;
    padding-top: 24px;
    border-top: 1px solid rgba(255, 255, 255, 0.18);
    position: relative;
    z-index: 1;
}

.km-auth-stats div b {
    display: block;
    font-family: var(--km-font-display);
    font-size: 1.3rem;
    font-weight: 800;
}

.km-auth-stats div span {
    display: block;
    font-size: 0.66rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.62);
    margin-top: 2px;
}

/* -------- Panneau formulaire -------- */
.km-auth-form {
    padding: 48px 46px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 22px;
}

.km-auth-form h2 {
    font-family: var(--km-font-display);
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--km-encre);
    text-transform: uppercase;
    margin: 0;
}

.km-auth-form__subtitle {
    color: var(--km-brume);
    font-size: 0.92rem;
    margin: 4px 0 0;
}

.km-auth-form form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.km-field label {
    display: block;
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--km-encre);
    margin-bottom: 6px;
}

.km-field-control {
    display: flex;
    align-items: center;
    gap: 9px;
    height: 44px;
    padding: 0 12px;
    border: 1.5px solid var(--km-joint);
    border-radius: var(--km-btn-radius);
    background: var(--km-craie);
    transition: border-color 0.15s, box-shadow 0.15s;
}

.km-field-control:focus-within {
    border-color: var(--km-asphalte);
    box-shadow: 0 0 0 3px rgba(24, 115, 200, 0.15);
}

.km-field-control i {
    color: var(--km-brume);
    flex: none;
}

.km-field-control input {
    flex: 1;
    height: 100%;
    border: 0;
    outline: 0;
    background: none;
    font-family: var(--km-font);
    font-size: 0.95rem;
    color: var(--km-encre);
}

.km-field-control .km-toggle-pw {
    border: 0;
    background: none;
    padding: 2px;
    color: var(--km-brume);
    cursor: pointer;
    display: flex;
}

.km-remember {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.86rem;
    color: var(--km-brume);
}

.km-remember input {
    accent-color: var(--km-menu);
    width: 16px;
    height: 16px;
}

.km-auth-form .btn-submit-modern {
    height: 44px;
}

.km-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--km-brume);
    font-size: 0.8rem;
}

.km-divider::before,
.km-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--km-joint);
}

.km-auth-footer {
    text-align: center;
}

.km-auth-footer a {
    font-size: 0.85rem;
    color: var(--km-brume);
    text-decoration: none;
}

.km-auth-footer a:hover {
    color: var(--km-asphalte);
}

@media (max-width: 860px) {
    .km-auth-shell {
        grid-template-columns: 1fr;
    }

    .km-auth-brand {
        padding: 32px 28px;
    }

    .km-auth-stats {
        display: none;
    }

    .km-auth-form {
        padding: 32px 28px;
    }
}

/* Notifications "toast" (succès/erreur), voir js/km-toast.js */
.km-toast-container {
    position: fixed;
    top: 16px;
    right: 16px;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: min(360px, calc(100vw - 32px));
    pointer-events: none;
}

.km-toast {
    padding: 12px 16px;
    border-radius: var(--km-radius, 8px);
    color: #fff;
    font-family: var(--km-font);
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.35;
    white-space: pre-line;
    box-shadow: 0 8px 22px rgba(0, 0, 0, 0.22);
    opacity: 0;
    transform: translateX(16px);
    transition: opacity 0.25s ease, transform 0.25s ease;
    cursor: pointer;
    pointer-events: auto;
}

.km-toast--visible {
    opacity: 1;
    transform: translateX(0);
}

.km-toast--success {
    background-color: #2e7d32;
}

.km-toast--error {
    background-color: #c62828;
}

@media (max-width: 480px) {
    .km-toast-container {
        top: 12px;
        right: 12px;
        left: 12px;
        max-width: none;
    }
}
