/*
 * Thème de l'application, posé par-dessus le template Arox (assets/css/dashboard.css).
 * Deux thèmes, choisis avec l'interrupteur de l'en-tête (cookie "theme", par appareil) :
 *   - sombre (par défaut) : "Arox sombre maîtrisé" ;
 *   - clair : contenu sur fond clair, plus lisible en plein soleil.
 * Principes communs :
 *   - surfaces de plus en plus claires quand elles s'élèvent (page < carte < menu), bordures plutôt qu'ombres ;
 *   - une seule couleur d'action, couleurs vives réservées aux anomalies (retard, urgent) ;
 *   - statuts toujours couleur + libellé/icône ; textes contrastés ;
 *   - mobile : texte 16 px, zones tactiles 48 px, navigation en bas d'écran.
 * Toutes les couleurs passent par les variables ci-dessous. Classes propres à l'application : "app-".
 */

/* ---------------------------------------------------------------- Variables : thème sombre (défaut) */
:root {
    /* En-tête : bleu marine Arox dans les deux thèmes */
    --c-header: #04153d;
    --c-header-text: #eef2fa;
    --c-header-muted: #a9b6d6;
    --c-header-border: rgba(255, 255, 255, .09);
    --c-header-fill: rgba(255, 255, 255, .07);
    --c-brand: #f2b330;
    --c-on-brand: #1a1300;

    --c-page: #061a47;
    --c-surface: #0b2766;
    --c-surface-2: #10307a;
    --c-surface-3: #163a8a;
    --c-border: rgba(255, 255, 255, .09);
    --c-border-strong: rgba(255, 255, 255, .2);
    --c-text: #eef2fa;
    --c-text-2: #b7c3e0;
    --c-text-3: #93a2c8;
    --c-link: #8db0ff;
    --c-link-hover: #b3caff;

    --c-action: #f2b330;          /* bouton principal */
    --c-action-hover: #f6c45a;
    --c-on-action: #1a1300;
    --c-highlight: #f2b330;       /* onglet actif, jour en cours, liens de carte */
    --c-highlight-hover: #f6c45a;
    --c-focus: rgba(242, 179, 48, .45);
    --c-today: rgba(242, 179, 48, .08);

    --c-fill: rgba(255, 255, 255, .05);
    --c-fill-hover: rgba(255, 255, 255, .11);
    --c-hover: rgba(255, 255, 255, .04);
    --c-input-bg: rgba(255, 255, 255, .06);
    --c-input-border: rgba(255, 255, 255, .16);
    --c-track: rgba(255, 255, 255, .12);
    --c-weekend: rgba(0, 0, 0, .12);
    --c-chip: #163a8a;
    --c-card-shadow: none;
    --c-pop-shadow: 0 16px 40px rgba(0, 0, 0, .4);
    --c-scheme: dark;

    --c-info: #8db0ff;       --c-info-soft: rgba(110, 155, 255, .16);
    --c-success: #6fd6a2;    --c-success-soft: rgba(70, 200, 140, .15);
    --c-warning: #f2c14e;    --c-warning-soft: rgba(242, 179, 48, .15);
    --c-danger: #ff8e7d;     --c-danger-soft: rgba(255, 110, 90, .15);
    --c-neutral: #b7c3e0;    --c-neutral-soft: rgba(255, 255, 255, .08);

    --radius: 12px;
    --radius-sm: 8px;
}

/* ---------------------------------------------------------------- Variables : thème clair */
html[data-theme="light"] {
    --c-page: #f3f5f9;
    --c-surface: #ffffff;
    --c-surface-2: #f7f9fc;
    --c-surface-3: #ffffff;
    --c-border: #e2e7ef;
    --c-border-strong: #cbd3df;
    --c-text: #13203b;
    --c-text-2: #3d4a63;
    --c-text-3: #5b6577;
    --c-link: #1f4fd1;
    --c-link-hover: #163da6;

    --c-action: #1f4fd1;
    --c-action-hover: #1a43b3;
    --c-on-action: #ffffff;
    --c-highlight: #1f4fd1;
    --c-highlight-hover: #163da6;
    --c-focus: rgba(31, 79, 209, .3);
    --c-today: #fff6dd;

    --c-fill: #ffffff;
    --c-fill-hover: #f1f4f9;
    --c-hover: #f7f9fc;
    --c-input-bg: #ffffff;
    --c-input-border: #cbd3df;
    --c-track: #e7ebf2;
    --c-weekend: #f6f7fa;
    --c-chip: #eef2fb;
    --c-card-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .04);
    --c-pop-shadow: 0 12px 32px rgba(16, 24, 40, .16);
    --c-scheme: light;

    --c-info: #1e46a8;       --c-info-soft: #e6eefc;
    --c-success: #146c3a;    --c-success-soft: #e3f4ea;
    --c-warning: #8a5300;    --c-warning-soft: #fdf1dc;
    --c-danger: #a62b16;     --c-danger-soft: #fce7e3;
    --c-neutral: #4a5363;    --c-neutral-soft: #eef0f3;
}

/* ---------------------------------------------------------------- Base */
body.app-theme, body.app-theme.color1 { background: var(--c-page) !important; color: var(--c-text); font-size: 14px; color-scheme: var(--c-scheme); }
.app-theme .page, .app-theme .page-main, .app-theme .app-content { background: transparent; }
.app-theme a { color: var(--c-link); }
.app-theme a:hover { color: var(--c-link-hover); text-decoration: none; }
.app-theme h1, .app-theme h2, .app-theme h3, .app-theme h4, .app-theme h5, .app-theme h6, .app-theme strong, .app-theme b, .app-theme dt { color: var(--c-text); }
.app-theme p, .app-theme dd, .app-theme li, .app-theme label, .app-theme td, .app-theme th, .app-theme span { color: inherit; }
.app-theme .text-muted { color: var(--c-text-3) !important; }
.app-theme .text-white-50 { color: var(--c-text-2) !important; }
.app-theme .text-danger { color: var(--c-danger) !important; }
.app-theme .text-success { color: var(--c-success) !important; }
.app-theme .text-warning { color: var(--c-warning) !important; }
.app-theme .small, .app-theme small { font-size: 12.5px; }
.font-weight-semibold { font-weight: 600; }
.app-theme hr { border-color: var(--c-border); }

/* ---------------------------------------------------------------- En-tête (identique dans les deux thèmes) */
.app-theme .app-content .header-fixed, .app-theme .header {
    background: var(--c-header) !important; border-bottom: 1px solid var(--c-header-border); box-shadow: none; padding: 0;
}
.app-header-row { display: flex; align-items: center; gap: 12px; min-height: 64px; }
.app-brand { display: inline-flex; align-items: center; color: var(--c-header-text) !important; text-decoration: none !important; }
.app-brand-icon {
    width: 36px; height: 36px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center;
    background: var(--c-brand); color: var(--c-on-brand); font-size: 18px; margin-right: 10px; flex-shrink: 0;
}
.app-brand-name { font-size: 17px; font-weight: 600; letter-spacing: .2px; white-space: nowrap; }
.app-brand-lg { flex-direction: column; margin: 2.5rem 0 1.25rem; color: var(--c-text) !important; }
.app-brand-lg .app-brand-icon { width: 60px; height: 60px; font-size: 30px; border-radius: 15px; margin: 0 0 .75rem; }
.app-brand-lg .app-brand-name { font-size: 1.5rem; }

.app-search { margin-left: auto; position: relative; width: min(380px, 36vw); }
.app-search input {
    width: 100%; height: 40px; padding: 0 12px 0 38px; border-radius: var(--radius-sm); font-size: 14px;
    background: var(--c-header-fill); border: 1px solid rgba(255, 255, 255, .14); color: var(--c-header-text);
}
.app-search input::placeholder { color: var(--c-header-muted); }
.app-search input:focus { outline: none; border-color: var(--c-brand); box-shadow: 0 0 0 3px rgba(242, 179, 48, .35); }
.app-search .fa { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); color: var(--c-header-muted); }
.app-header-tools { display: flex; align-items: center; gap: 4px; margin-left: 8px; }

.app-icon-btn {
    position: relative; width: 44px; height: 44px; border-radius: var(--radius-sm); display: inline-flex; align-items: center; justify-content: center;
    color: var(--c-header-text) !important; font-size: 19px; background: transparent; border: 0; cursor: pointer; text-decoration: none !important;
}
.app-icon-btn:hover, .app-icon-btn:focus { background: var(--c-header-fill); outline: none; }
.app-icon-btn:focus-visible { box-shadow: 0 0 0 3px rgba(242, 179, 48, .45); }
.app-icon-btn .app-count {
    position: absolute; top: 5px; right: 3px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px;
    background: #e5482d; color: #fff; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; box-shadow: 0 0 0 2px var(--c-header);
}
.app-theme-toggle .app-theme-light, html[data-theme="light"] .app-theme-toggle .app-theme-dark { display: none; }
html[data-theme="light"] .app-theme-toggle .app-theme-light { display: inline-block; }
.app-user-btn { display: flex; align-items: center; gap: 10px; padding: 4px 6px; border-radius: var(--radius-sm); color: var(--c-header-text); background: transparent; border: 0; cursor: pointer; }
.app-user-btn:hover { background: var(--c-header-fill); }
.app-user-meta { text-align: left; line-height: 1.25; }
.app-user-meta strong { display: block; font-size: 13px; font-weight: 600; color: var(--c-header-text) !important; }
.app-user-meta span { display: block; font-size: 12px; color: var(--c-header-muted) !important; }
.app-theme .header .app-avatar { box-shadow: 0 0 0 2px var(--c-header); }

/* Menu horizontal (bureau) */
.app-theme .horizontal-main, .app-theme .horizontal-main.hor-menu { background: var(--c-header) !important; border-top: 0 !important; border-bottom: 1px solid var(--c-header-border); box-shadow: none !important; }
.app-theme .sticky-wrapper.is-sticky .horizontal-main { background: var(--c-header) !important; }
body.horizontal-body .app-content > .horizontal-main.hor-menu { border-top: 0 !important; }
/* Le template prévoit un en-tête de 76 px ; le nôtre fait 64 px + bordure */
@media (min-width: 992px) {
    body.app-theme.horizontal-body .horizontal-main { margin-top: 65px; }
    body.app-theme.horizontal-body .sticky-wrapper.is-sticky .horizontal-main { margin-top: 65px; }
}
@media (min-width: 992px) {
    .app-theme .horizontalMenu > .horizontalMenu-list > li { border: 0 !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > a {
        display: flex !important; align-items: center; gap: 8px; height: 50px; padding: 0 14px !important; margin: 0 !important;
        color: var(--c-header-muted) !important; font-size: 14px; font-weight: 500; background: transparent !important;
        border: 0 !important; border-bottom: 3px solid transparent !important; border-radius: 0 !important;
    }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > a .fa { color: inherit !important; margin: 0 !important; font-size: 15px; width: 18px; text-align: center; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > a:hover { color: var(--c-header-text) !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > a.active { color: var(--c-header-text) !important; font-weight: 600; border-bottom-color: var(--c-brand) !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > ul.sub-menu {
        background: var(--c-surface-3) !important; border: 1px solid var(--c-border-strong) !important; border-radius: var(--radius-sm); padding: 6px !important;
        box-shadow: var(--c-pop-shadow) !important; min-width: 230px;
    }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > ul.sub-menu > li > a {
        color: var(--c-text) !important; padding: 9px 12px !important; font-size: 14px; border-radius: 6px; background: transparent !important;
    }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > ul.sub-menu > li > a:hover { background: var(--c-fill-hover) !important; color: var(--c-text) !important; }
    .app-theme .horizontalMenu .horizontal-icon { margin-left: 2px; font-size: 12px !important; opacity: .7; }
}
.app-nav-count { display: inline-block; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: #e5482d; color: #fff !important; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
@media (max-width: 991px) {
    .app-theme .horizontal-main { border-bottom: 0; }
    .app-theme .horizontalMenu > .horizontalMenu-list { background: var(--c-surface) !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li { border-color: var(--c-border) !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > a { color: var(--c-text) !important; background: transparent !important; border-color: var(--c-border) !important; font-size: 16px; padding-top: 15px !important; padding-bottom: 15px !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > a .fa { color: var(--c-text-3) !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > ul.sub-menu { background: var(--c-surface-2) !important; }
    .app-theme .horizontalMenu > .horizontalMenu-list > li > ul.sub-menu > li > a { color: var(--c-text-2) !important; font-size: 15px; }
    .app-theme .horizontalMenu-click > i { color: var(--c-text-3) !important; }
    .app-theme .animated-arrow span, .app-theme .animated-arrow span::before, .app-theme .animated-arrow span::after { background: var(--c-header-text) !important; }
    .app-theme .horizontal-main.hor-menu { border-bottom: 0 !important; }
    /* Bouton menu : dans le flux de l'en-tête, zone tactile de 44 px */
    .app-theme .header .hor-toggle.animated-arrow {
        position: relative !important; top: auto !important; flex: 0 0 44px; width: 44px; height: 44px;
        margin: 0 !important; padding: 0 !important; border-radius: var(--radius-sm);
    }
    .app-theme .header .animated-arrow span { left: 11px; top: 21px; }
    .app-header-tools { margin-left: auto !important; }
}
@media (min-width: 992px) {
    .app-theme .header .hor-toggle { display: none !important; }
}
@media (max-width: 575px) {
    .header .app-brand-name { display: none; }
}

/* ---------------------------------------------------------------- Mise en page */
.app-theme .side-app { padding-bottom: 32px; }
.app-page-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; margin: 28px 0 24px; }
.app-page-head h1 { margin: 0; font-size: 26px; font-weight: 600; line-height: 1.25; color: var(--c-text); }
.app-page-head .app-subtitle { margin: 4px 0 0; font-size: 14px; color: var(--c-text-3); }
.app-page-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.app-page-actions form { margin: 0; }
.app-theme .page-header { display: none !important; }
@media (max-width: 767px) {
    .app-page-head { margin: 18px 0; }
    .app-page-head h1 { font-size: 22px; }
    .app-page-actions { width: 100%; }
    .app-page-actions > .btn, .app-page-actions > form { flex: 1 1 auto; }
    .app-page-actions > form .btn { width: 100%; }
}

/* Cartes */
.app-theme .card {
    background: var(--c-surface) !important; border: 1px solid var(--c-border) !important; border-radius: var(--radius) !important;
    box-shadow: var(--c-card-shadow) !important; margin-bottom: 20px; overflow: hidden; color: var(--c-text);
}
.app-theme .card:hover { box-shadow: var(--c-card-shadow) !important; }
.app-theme .card-header {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
    padding: 16px 20px; background: transparent !important; border-bottom: 1px solid var(--c-border) !important; min-height: 0;
}
.app-theme .card-title { margin: 0 !important; font-size: 16px !important; font-weight: 600; color: var(--c-text) !important; line-height: 1.4; }
.app-theme .card-title .fa { color: var(--c-text-3); margin-right: 8px !important; }
.app-theme .card-body { padding: 20px; }
.app-theme .card-footer { padding: 14px 20px; background: transparent; border-top: 1px solid var(--c-border); }
.app-card-link { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 600; color: var(--c-highlight) !important; white-space: nowrap; }
.app-card-link:hover { color: var(--c-highlight-hover) !important; }
.app-card-link .fa { font-size: 11px; }
.app-section-title { font-size: 12px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--c-text-3); margin: 0 0 12px; }

/* ---------------------------------------------------------------- Boutons : une seule action principale, le reste neutre */
.app-theme .btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 40px; padding: 0 16px;
    font-size: 14px; font-weight: 600; border-radius: var(--radius-sm) !important; line-height: 1; box-shadow: none !important;
    transition: background-color .15s, border-color .15s, color .15s; white-space: nowrap;
}
.app-theme .btn .fa, .app-theme .btn .mr-1 { margin: 0 !important; }
.app-theme .btn-sm { height: 34px; padding: 0 12px; font-size: 13px; }
.app-theme .btn-lg { height: 48px; padding: 0 20px; font-size: 15px; }
.app-theme .btn-block { display: flex; width: 100%; }
.app-theme .btn:focus, .app-theme .btn.focus { box-shadow: 0 0 0 3px var(--c-focus) !important; outline: none; }

.app-theme .btn-primary, .app-theme .btn-primary:not(:disabled):not(.disabled):active {
    background: var(--c-action) !important; border: 1px solid var(--c-action) !important; color: var(--c-on-action) !important;
}
.app-theme .btn-primary:hover { background: var(--c-action-hover) !important; border-color: var(--c-action-hover) !important; color: var(--c-on-action) !important; }
.app-theme .btn-secondary, .app-theme .btn-outline-light, .app-theme .btn-light, .app-theme .btn-info, .app-theme .btn-outline-info,
.app-theme .btn-warning, .app-theme .btn-success, .app-theme .btn-default, .app-theme .btn-outline-secondary {
    background: var(--c-fill) !important; border: 1px solid var(--c-border-strong) !important; color: var(--c-text) !important;
}
.app-theme .btn-secondary:hover, .app-theme .btn-outline-light:hover, .app-theme .btn-light:hover, .app-theme .btn-info:hover,
.app-theme .btn-outline-info:hover, .app-theme .btn-warning:hover, .app-theme .btn-success:hover, .app-theme .btn-default:hover, .app-theme .btn-outline-secondary:hover {
    background: var(--c-fill-hover) !important; color: var(--c-text) !important;
}
.app-theme .btn-group-toggle .btn.active, .app-theme .btn-outline-light.active, .app-theme .btn-secondary.active {
    background: var(--c-chip) !important; border-color: var(--c-highlight) !important; color: var(--c-text) !important;
}
.app-theme .btn-danger, .app-theme .btn-outline-danger { background: transparent !important; border: 1px solid var(--c-danger) !important; color: var(--c-danger) !important; }
.app-theme .btn-danger:hover, .app-theme .btn-outline-danger:hover { background: var(--c-danger-soft) !important; }
.app-theme .btn-outline-success, .app-theme .btn-outline-warning, .app-theme .btn-outline-primary { background: transparent !important; border: 1px solid var(--c-border-strong) !important; color: var(--c-text-2) !important; }
.app-theme .btn-link { height: auto; padding: 0; background: none !important; border: 0 !important; color: var(--c-text-3) !important; }
.app-theme .btn-link:hover { color: var(--c-text) !important; }
.app-theme .btn-icon { width: 40px; padding: 0; }
.app-theme .btn-sm.btn-icon { width: 34px; }
.app-theme .btn-group > .btn { border-radius: 0 !important; }
.app-theme .btn-group > .btn:first-child { border-radius: var(--radius-sm) 0 0 var(--radius-sm) !important; }
.app-theme .btn-group > .btn:last-child { border-radius: 0 var(--radius-sm) var(--radius-sm) 0 !important; }
.app-theme .btn-group > .btn:only-child { border-radius: var(--radius-sm) !important; }
.app-theme .btn-group > .btn + .btn { margin-left: -1px; }
.app-theme .btn-group .btn.active { z-index: 1; }

/* ---------------------------------------------------------------- Pastilles de statut */
.app-theme .badge {
    display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 10px; border-radius: 999px !important;
    font-size: 12px; font-weight: 600; line-height: 1; white-space: nowrap; vertical-align: middle;
}
.app-theme .badge .fa { font-size: 11px; margin: 0 !important; }
.app-theme .badge-success { background: var(--c-success-soft) !important; color: var(--c-success) !important; }
.app-theme .badge-info, .app-theme .badge-primary { background: var(--c-info-soft) !important; color: var(--c-info) !important; }
.app-theme .badge-warning { background: var(--c-warning-soft) !important; color: var(--c-warning) !important; }
.app-theme .badge-danger { background: var(--c-danger-soft) !important; color: var(--c-danger) !important; }
.app-theme .badge-secondary, .app-theme .badge-light, .app-theme .badge-dark { background: var(--c-neutral-soft) !important; color: var(--c-neutral) !important; }
.app-theme .badge-pill { padding: 0 8px; }

/* ---------------------------------------------------------------- Formulaires */
.app-theme .form-label, .app-theme label.form-label { font-size: 13px; font-weight: 500; color: var(--c-text-2); margin-bottom: 6px; }
.app-theme .form-control, .app-theme .custom-select {
    height: 42px; padding: 0 12px; font-size: 14px; color: var(--c-text) !important;
    background-color: var(--c-input-bg) !important; border: 1px solid var(--c-input-border) !important; border-radius: var(--radius-sm) !important;
}
.app-theme textarea.form-control { height: auto; padding: 10px 12px; line-height: 1.5; }
.app-theme .form-control-sm, .app-theme .custom-select-sm { height: 34px; font-size: 13px; }
.app-theme .form-control:focus, .app-theme .custom-select:focus { border-color: var(--c-highlight) !important; box-shadow: 0 0 0 3px var(--c-focus) !important; outline: none; }
.app-theme .form-control::placeholder { color: var(--c-text-3); opacity: 1; }
.app-theme .form-control.is-invalid { border-color: var(--c-danger) !important; }
.app-theme .invalid-feedback { color: var(--c-danger); font-size: 13px; }
.app-theme .form-text { color: var(--c-text-3) !important; font-size: 12.5px; }
.app-theme select.form-control option, .app-theme .custom-select option { color: #1f2a44; background: #fff; }
.app-theme .custom-select {
    padding-right: 32px; -webkit-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath fill='%2393a2c8' d='M0 0h10L5 6z'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important; background-position: right 12px center !important; background-size: 10px 6px !important;
}
.app-theme .input-group-text { background: var(--c-fill-hover); border: 1px solid var(--c-input-border); color: var(--c-text-2); }
.app-theme .input-group > .form-control:not(:last-child) { border-radius: var(--radius-sm) 0 0 var(--radius-sm) !important; }
.app-theme .input-group-append .input-group-text { border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.app-theme .custom-control-label { color: var(--c-text); padding-top: 1px; }
.app-theme .custom-control-label::before { background: var(--c-input-bg); border: 1px solid var(--c-border-strong); }
.app-theme .custom-control-input:checked ~ .custom-control-label::before { background: var(--c-action) !important; border-color: var(--c-action) !important; }
.app-theme .custom-file-label { height: 42px; line-height: 28px; background: var(--c-input-bg); color: var(--c-text-2); border: 1px solid var(--c-input-border); border-radius: var(--radius-sm); overflow: hidden; }
.app-theme .custom-file-label::after { content: attr(data-browse); height: 40px; line-height: 28px; background: var(--c-fill-hover); color: var(--c-text); border-left: 1px solid var(--c-input-border); }
.app-theme .custom-range::-webkit-slider-runnable-track { background: var(--c-track); }
.app-theme .custom-range::-moz-range-track { background: var(--c-track); height: .5rem; border-radius: 1rem; }
.app-theme .custom-range::-moz-range-progress { background: var(--c-action); height: .5rem; border-radius: 1rem; }
.app-theme .custom-range::-webkit-slider-thumb { background: var(--c-action); }
.app-theme .custom-range::-moz-range-thumb { background: var(--c-action); }
.app-form-actions { display: flex; justify-content: flex-end; gap: 10px; margin-bottom: 32px; }
@media (max-width: 767px) {
    .app-theme .form-control, .app-theme .custom-select { height: 48px; font-size: 16px; }
    .app-theme textarea.form-control { height: auto; }
    .app-theme .btn { height: 48px; font-size: 15px; }
    .app-theme .btn-sm { height: 40px; }
    .app-form-actions .btn { flex: 1 1 0; }
}

/* Select2 */
.select2-container { width: 100% !important; }
.app-theme .select2-container--default .select2-selection--single,
.app-theme .select2-container--default .select2-selection--multiple {
    min-height: 42px; background: var(--c-input-bg) !important; border: 1px solid var(--c-input-border) !important; border-radius: var(--radius-sm);
}
.app-theme .select2-container--default.select2-container--focus .select2-selection--multiple,
.app-theme .select2-container--default.select2-container--open .select2-selection--single { border-color: var(--c-highlight) !important; box-shadow: 0 0 0 3px var(--c-focus); }
.app-theme .select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--c-text); line-height: 40px; padding-left: 12px; }
.app-theme .select2-container--default .select2-selection--single .select2-selection__arrow { height: 40px; right: 6px; }
.app-theme .select2-container--default .select2-selection--single .select2-selection__placeholder { color: var(--c-text-3); }
.app-theme .select2-container--default .select2-selection--multiple .select2-selection__rendered { padding: 3px 8px; }
.app-theme .select2-container--default .select2-selection--multiple .select2-selection__choice {
    background: var(--c-chip) !important; border: 1px solid var(--c-border-strong) !important; color: var(--c-text); border-radius: 6px; padding: 2px 8px; margin-top: 5px; font-size: 13px;
}
.app-theme .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { color: var(--c-text-3); margin-right: 5px; }
.app-theme .select2-container--default .select2-search--inline .select2-search__field { color: var(--c-text); margin-top: 6px; }
.app-theme .select2-container--default .select2-search--inline .select2-search__field::placeholder { color: var(--c-text-3); }
.app-theme .select2-dropdown { background: var(--c-surface-3) !important; border-color: var(--c-border-strong) !important; color: var(--c-text); border-radius: var(--radius-sm) !important; overflow: hidden; box-shadow: var(--c-pop-shadow); }
.app-theme .select2-container--default .select2-search--dropdown .select2-search__field { background: var(--c-input-bg); color: var(--c-text); border: 1px solid var(--c-input-border) !important; border-radius: 6px; height: 36px; }
.app-theme .select2-container--default .select2-results__option { padding: 9px 12px; color: var(--c-text); }
.app-theme .select2-container--default .select2-results__option[aria-selected=true] { background: var(--c-fill-hover); color: var(--c-text); }
.app-theme .select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--c-chip); color: var(--c-text); }
@media (max-width: 767px) {
    .app-theme .select2-container--default .select2-selection--single, .app-theme .select2-container--default .select2-selection--multiple { min-height: 48px; }
    .app-theme .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 46px; font-size: 16px; }
    .app-theme .select2-container--default .select2-selection--single .select2-selection__arrow { height: 46px; }
}

/* ---------------------------------------------------------------- Tableaux & listes */
.app-theme .table { color: var(--c-text); margin-bottom: 0; background: transparent; }
.app-theme .table thead th {
    font-size: 12px; font-weight: 600; color: var(--c-text-3) !important; text-transform: none; letter-spacing: 0;
    border-top: 0 !important; border-bottom: 1px solid var(--c-border) !important; padding: 12px 16px; white-space: nowrap; background: transparent;
}
.app-theme .table td { padding: 14px 16px; border-top: 1px solid var(--c-border) !important; vertical-align: middle; color: var(--c-text); }
.app-theme .table th:first-child, .app-theme .table td:first-child { padding-left: 20px; }
.app-theme .table th:last-child, .app-theme .table td:last-child { padding-right: 20px; }
.app-theme .table-bordered, .app-theme .table-bordered th, .app-theme .table-bordered td { border-color: var(--c-border) !important; }
.app-theme .table a:not(.btn) { color: var(--c-text); font-weight: 600; }
.app-theme .table a:not(.btn):hover { color: var(--c-highlight); }
.app-theme .table a[href^="mailto:"], .app-theme .table a[href^="tel:"] { font-weight: 400; color: var(--c-link); }
.app-theme .table-striped tbody tr:nth-of-type(odd) { background: transparent; }
.app-table-clickable tbody tr[data-href] { cursor: pointer; }
.app-table-clickable tbody tr[data-href]:hover { background: var(--c-hover); }
.app-theme .list-group-item { background: transparent; border-color: var(--c-border); color: var(--c-text); padding: 14px 20px; }
.app-theme .list-group-flush .list-group-item:first-child { border-top: 0; }
.app-theme .list-group-flush .list-group-item:last-child { border-bottom: 0; }
.app-theme .list-group-item-action { color: var(--c-text); }
.app-theme .list-group-item-action:hover, .app-theme .list-group-item-action:focus { background: var(--c-hover); color: var(--c-text); }
.table-responsive, .app-tabs-header, .app-scroll-x { scrollbar-width: thin; scrollbar-color: var(--c-border-strong) transparent; }
.table-responsive::-webkit-scrollbar, .app-tabs-header::-webkit-scrollbar, .app-scroll-x::-webkit-scrollbar { height: 6px; }
.table-responsive::-webkit-scrollbar-thumb, .app-tabs-header::-webkit-scrollbar-thumb, .app-scroll-x::-webkit-scrollbar-thumb { background: var(--c-border-strong); border-radius: 3px; }
.app-scroll-x { overflow-x: auto; }
.app-theme .pagination .page-link { background: transparent; border-color: var(--c-border-strong); color: var(--c-text-2); }
.app-theme .pagination .page-item.active .page-link { background: var(--c-action); border-color: var(--c-action); color: var(--c-on-action); }

/* ---------------------------------------------------------------- Menus, alertes, fenêtres */
.app-theme .dropdown-menu {
    background: var(--c-surface-3) !important; border: 1px solid var(--c-border-strong) !important; border-radius: var(--radius) !important;
    box-shadow: var(--c-pop-shadow) !important; padding: 6px; color: var(--c-text);
}
.app-theme .dropdown-item { color: var(--c-text) !important; border-radius: 6px; padding: 9px 12px; font-size: 14px; display: flex; align-items: center; gap: 10px; background: transparent; width: 100%; border: 0; text-align: left; }
.app-theme .dropdown-item .fa { width: 16px; text-align: center; color: var(--c-text-3); }
.app-theme .dropdown-item:hover, .app-theme .dropdown-item:focus { background: var(--c-fill-hover) !important; color: var(--c-text) !important; }
.app-theme .dropdown-divider { border-color: var(--c-border); margin: 6px 0; }
.app-theme .dropdown-menu-arrow::before, .app-theme .dropdown-menu-arrow::after { display: none; }
.app-dropdown-head { padding: 10px 12px 12px; border-bottom: 1px solid var(--c-border); margin: -6px -6px 6px; }
.app-dropdown-head strong { display: block; font-size: 14px; }
.app-dropdown-head span { display: block; font-size: 12px; color: var(--c-text-3); }
.app-notifications-menu { width: 360px; max-width: 92vw; }
.app-notifications-menu .dropdown-item { white-space: normal; align-items: flex-start; }
.app-notif-icon { width: 32px; height: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 14px; }
.app-notif-text strong { display: block; font-size: 13px; font-weight: 600; line-height: 1.35; }
.app-notif-text span { display: block; font-size: 12px; color: var(--c-text-3); margin-top: 2px; }
.app-tone-primary, .app-tone-info { background: var(--c-info-soft); color: var(--c-info); }
.app-tone-success { background: var(--c-success-soft); color: var(--c-success); }
.app-tone-warning { background: var(--c-warning-soft); color: var(--c-warning); }
.app-tone-danger { background: var(--c-danger-soft); color: var(--c-danger); }
.app-tone-secondary { background: var(--c-neutral-soft); color: var(--c-neutral); }
.app-read { opacity: .55; }

.app-theme .alert {
    display: flex; align-items: flex-start; gap: 10px; border-radius: var(--radius-sm); padding: 12px 44px 12px 16px; font-size: 14px;
    border: 1px solid transparent; color: var(--c-text) !important; position: relative;
}
.app-theme .alert .close { position: absolute; right: 0; top: 0; color: var(--c-text-2); opacity: .8; text-shadow: none; padding: 10px 14px; }
.app-theme .alert-success { background: var(--c-success-soft) !important; border-color: var(--c-success) !important; }
.app-theme .alert-danger { background: var(--c-danger-soft) !important; border-color: var(--c-danger) !important; }
.app-theme .alert-warning { background: var(--c-warning-soft) !important; border-color: var(--c-warning) !important; }
.app-theme .alert-info { background: var(--c-info-soft) !important; border-color: var(--c-info) !important; }
.app-theme .alert-success > .fa { color: var(--c-success); }
.app-theme .alert-danger > .fa { color: var(--c-danger); }
.app-theme .alert-warning > .fa { color: var(--c-warning); }
.app-theme .alert-info > .fa { color: var(--c-info); }
.app-theme .alert > .fa { margin-top: 3px; margin-right: 0 !important; }
.app-theme .alert a.alert-link { color: inherit; text-decoration: underline; }

.app-theme .modal-content { background: var(--c-surface-3); border: 1px solid var(--c-border-strong); border-radius: var(--radius); color: var(--c-text); }
.app-theme #lightbox .modal-content { background: transparent; border: 0; }
#lightbox .modal-dialog { max-width: 95vw; }
.app-lightbox-img { max-height: 85vh; border-radius: 6px; }
.app-lightbox-caption { color: #fff; margin-top: .5rem; }
.app-lightbox-close { position: absolute; right: 0; top: -40px; color: #fff !important; opacity: 1; font-size: 2rem; text-shadow: none; }

/* ---------------------------------------------------------------- Petits composants */
.app-avatar {
    display: inline-flex !important; align-items: center; justify-content: center; color: #fff !important; text-transform: uppercase;
    font-weight: 600; font-size: .75rem; border: 0; box-shadow: 0 0 0 2px var(--c-surface); flex-shrink: 0;
}
.avatar-sm.app-avatar { font-size: .62rem; }
.avatar-md.app-avatar { font-size: .8rem; }
.avatar-xxl.app-avatar { width: 5rem; height: 5rem; font-size: 1.7rem; line-height: 5rem; }
.avatar-list { display: inline-flex; flex-wrap: wrap; align-items: center; }
.avatar-list-stacked .app-avatar { margin-right: -.25rem !important; }
.app-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 10px; vertical-align: middle; flex-shrink: 0; }
.app-progress .progress { height: 6px; background: var(--c-track); border-radius: 3px; }
.app-progress .progress-bar { border-radius: 3px; }
.app-progress small { min-width: 36px; text-align: right; color: var(--c-text-2) !important; }
.app-access-info { display: flex; gap: 10px; background: var(--c-warning-soft); border-radius: var(--radius-sm); padding: 10px 12px; font-size: 13.5px; color: var(--c-text); }
.app-access-info > .fa { color: var(--c-warning); margin-top: 3px; }
.app-text-block { background: var(--c-hover); border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: 12px 14px; line-height: 1.6; }
.app-clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.app-meta { font-size: 12.5px; color: var(--c-text-3); }
.app-empty { padding: 28px 20px; text-align: center; color: var(--c-text-3); }
.app-empty > .fa { display: block; font-size: 26px; margin-bottom: 8px; opacity: .6; }
.app-summary-line { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 4px 10px; margin-bottom: 10px; color: var(--c-text); }
.app-summary-line > .fa { width: 16px; margin-top: 3px; color: var(--c-text-3); text-align: center; }

/* ---------------------------------------------------------------- Tableau de bord */
.app-kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); gap: 20px; margin-bottom: 20px; }
.app-kpi {
    display: block; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 18px 20px;
    box-shadow: var(--c-card-shadow); color: var(--c-text) !important; text-decoration: none !important; transition: border-color .15s, background-color .15s;
}
.app-kpi:hover { border-color: var(--c-border-strong); background: var(--c-surface-2); }
.app-kpi-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.app-kpi-label { font-size: 13px; font-weight: 500; color: var(--c-text-2); }
.app-kpi-value { font-size: 30px; font-weight: 600; line-height: 1.15; margin-top: 6px; color: var(--c-text); }
.app-kpi-sub { font-size: 12.5px; color: var(--c-text-3); margin-top: 4px; }
.app-kpi-icon { width: 40px; height: 40px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0; background: var(--c-chip); color: var(--c-highlight); }
.app-kpi--alert { border-color: var(--c-warning); }
.app-kpi--alert .app-kpi-icon { background: var(--c-warning-soft); color: var(--c-warning); }
.app-kpi--alert .app-kpi-value { color: var(--c-warning); }
@media (max-width: 767px) {
    .app-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .app-kpi { padding: 14px; }
    .app-kpi-value { font-size: 24px; }
    .app-kpi-icon { display: none; }
}
.app-home { display: flex; flex-direction: column; }
.app-dash { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-start; }
@media (max-width: 767px) {
    /* Sur téléphone : aujourd'hui -> actions rapides -> semaine -> demandes/journal -> indicateurs */
    .app-home .app-dash, .app-home .app-dash-main { display: contents; }
    .app-home #aujourdhui { order: 1; }
    .app-home .app-tiles { order: 2; }
    .app-home .app-week-card { order: 3; }
    .app-home .app-dash-side { order: 4; }
    .app-home .app-kpi-grid { order: 5; }
}
.app-dash-main { flex: 999 1 620px; min-width: 0; }
.app-dash-side { flex: 1 1 320px; min-width: 0; }
.app-alert-card { display: flex; gap: 12px; padding: 16px 20px; margin-bottom: 20px; border-radius: var(--radius); border: 1px solid var(--c-danger); background: var(--c-danger-soft); }
.app-alert-card > .fa { color: var(--c-danger); font-size: 18px; margin-top: 2px; }
.app-alert-card h3 { font-size: 14px; font-weight: 600; color: var(--c-danger) !important; margin: 0 0 4px; }
.app-alert-card ul { list-style: none; padding: 0; margin: 0; }
.app-alert-card li { font-size: 13.5px; margin-top: 4px; color: var(--c-text); }
.app-alert-card a { color: var(--c-text); font-weight: 600; }

.app-today-card { position: relative; }
.app-today-card .card-body { padding-top: 22px; }
.app-today-card::before { content: ''; position: absolute; left: 0; top: 0; right: 0; height: 4px; background: var(--app-chantier-color, var(--c-highlight)); }
.app-eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--c-text-3); }
.app-today-title { font-size: 20px; font-weight: 600; margin: 6px 0 12px; }
.app-today-title a { color: var(--c-text); }
.app-today-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.app-today-actions .btn { flex: 1 1 140px; }

.app-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 20px; }
.app-tile {
    display: flex; flex-direction: column; justify-content: space-between; gap: 14px; min-height: 100px; padding: 14px;
    border-radius: var(--radius); background: var(--c-surface); border: 1px solid var(--c-border); box-shadow: var(--c-card-shadow);
    color: var(--c-text) !important; text-decoration: none !important;
}
.app-tile:active { background: var(--c-surface-2); }
.app-tile .app-kpi-icon { display: inline-flex; width: 38px; height: 38px; }
.app-tile-label { font-size: 15px; font-weight: 600; line-height: 1.25; }

/* Frise de la semaine */
.app-gantt { min-width: 700px; }
.app-gantt-row { display: grid; grid-template-columns: 250px repeat(7, minmax(0, 1fr)); min-height: 60px; border-top: 1px solid var(--c-border); }
.app-gantt-head { min-height: 0; border-top: 0; }
.app-gantt-head > div { padding: 10px 0; text-align: center; font-size: 12px; font-weight: 600; color: var(--c-text-3); }
.app-gantt-head > div.is-today { color: var(--c-highlight); }
.app-gantt-label { grid-column: 1; grid-row: 1; display: flex; align-items: center; padding: 8px 14px 8px 20px; min-width: 0; }
.app-gantt-label > div { min-width: 0; }
.app-gantt-label a { display: block; color: var(--c-text); font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-gantt-label a:hover { color: var(--c-highlight); }
.app-gantt-label .app-meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-gantt-cell { grid-row: 1; border-left: 1px solid var(--c-border); }
.app-gantt-cell.is-weekend { background: var(--c-weekend); }
.app-gantt-cell.is-today, .app-gantt-head > div.is-today { background: var(--c-today); }
.app-gantt-bar {
    grid-row: 1; align-self: center; z-index: 1; margin: 0 4px; height: 30px; border-radius: 6px; padding: 0 6px 0 10px;
    display: flex; align-items: center; justify-content: space-between; gap: 8px; color: #fff !important; font-size: 12px; font-weight: 600 !important;
    text-decoration: none !important; overflow: hidden;
}
.app-gantt-bar:hover { filter: brightness(1.08); }
.app-gantt-bar.is-late { box-shadow: inset 0 0 0 2px #ff6b57; }
.app-gantt-bar .app-avatar { box-shadow: 0 0 0 2px rgba(0, 0, 0, .15); }
.app-week-item { display: flex; align-items: center; gap: 12px; min-height: 60px; }
.app-week-item .flex-grow-1 { min-width: 0; }
.app-week-item strong { display: block; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-feed-item { display: flex; gap: 12px; align-items: flex-start; }
.app-feed-item .flex-grow-1 { min-width: 0; }
.app-cat { font-weight: 600; }
.app-cat--primary { color: var(--c-info); }
.app-cat--success { color: var(--c-success); }
.app-cat--warning { color: var(--c-warning); }
.app-cat--danger { color: var(--c-danger); }

/* ---------------------------------------------------------------- Navigation mobile en bas d'écran */
.app-bottom-nav { display: none; }
@media (max-width: 767px) {
    .app-bottom-nav {
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030; display: flex;
        background: var(--c-surface); border-top: 1px solid var(--c-border-strong); box-shadow: 0 -4px 16px rgba(0, 0, 0, .12);
        padding: 4px 4px calc(6px + env(safe-area-inset-bottom));
    }
    .app-bottom-nav a {
        flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 54px;
        font-size: 11px; font-weight: 600; color: var(--c-text-3) !important; text-decoration: none !important; position: relative;
    }
    .app-bottom-nav a .fa { font-size: 20px; }
    .app-bottom-nav a.active { color: var(--c-highlight) !important; }
    .app-bottom-nav .app-nav-count { position: absolute; top: 4px; left: calc(50% + 6px); }
    body.app-theme { padding-bottom: 72px; }
    .app-theme .footer { display: none; }
    .app-theme #back-to-top { display: none !important; }
    .app-desktop-only { display: none !important; }
}
@media (min-width: 768px) {
    .app-mobile-only { display: none !important; }
}

/* ---------------------------------------------------------------- Fiche chantier */
.app-theme .app-tabs-header { padding: 0 8px !important; overflow-x: auto; flex-wrap: nowrap !important; }
.app-tabs { flex-wrap: nowrap; border-bottom: 0 !important; white-space: nowrap; margin: 0 !important; }
.app-theme .app-tabs .nav-link {
    width: auto !important; display: flex; align-items: center; gap: 8px; color: var(--c-text-2) !important; border: 0 !important;
    border-bottom: 3px solid transparent !important; background: none !important; padding: 15px 14px 12px; font-weight: 500; border-radius: 0 !important;
}
.app-tabs .nav-link .fa { margin: 0 !important; }
.app-theme .app-tabs .nav-link.active, .app-theme .app-tabs .nav-link:hover { color: var(--c-text) !important; border-bottom-color: var(--c-highlight) !important; }
.app-tabs .nav-link.active { font-weight: 600; }
.app-tabs .badge { height: 20px; padding: 0 7px; font-size: 11px; }
@media (max-width: 767px) {
    .app-tab-label { display: none; }
    .app-tabs .nav-link.active .app-tab-label { display: inline; }
}
.app-timeline { list-style: none; padding: 0; margin: 0; position: relative; }
.app-timeline::before { content: ''; position: absolute; left: 17px; top: 6px; bottom: 6px; width: 2px; background: var(--c-border); }
.app-timeline li { position: relative; padding-left: 52px; margin-bottom: 14px; }
.app-timeline-icon { position: absolute; left: 0; top: 0; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.app-timeline-body { background: var(--c-hover); border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: 10px 14px; }
.app-gallery-item { background: var(--c-surface-2); border: 1px solid var(--c-border); border-radius: var(--radius-sm); overflow: hidden; height: 100%; }
.app-gallery-item img { width: 100%; height: 170px; object-fit: cover; display: block; }
.app-gallery-caption { padding: 8px 10px; font-size: 13px; }
.app-color-picker { display: flex; flex-wrap: wrap; gap: 10px; }
.app-color-swatch { width: 34px; height: 34px; border-radius: 50%; cursor: pointer; position: relative; margin: 0; box-shadow: 0 0 0 2px var(--c-surface); }
.app-color-swatch input { position: absolute; opacity: 0; }
.app-color-swatch span { display: none; position: absolute; inset: 0; align-items: center; justify-content: center; color: #fff; }
.app-color-swatch input:checked + span { display: flex; }
.app-color-swatch:has(input:checked) { box-shadow: 0 0 0 2px var(--c-surface), 0 0 0 4px var(--c-text); }

/* ---------------------------------------------------------------- Demandes de matériel */
.app-item-row { border-bottom: 1px dashed var(--c-border-strong); margin-bottom: 12px; }
@media (min-width: 768px) {
    .app-item-row:not(:first-child) .form-label { display: none; }
    .app-item-row { border-bottom: 0; margin-bottom: 0; }
}
.app-status-choices { display: flex; flex-wrap: wrap; gap: 8px; }
.app-status-choice { margin: 0; cursor: pointer; position: relative; }
.app-status-choice input { position: absolute; opacity: 0; }
.app-status-choice .badge { height: 34px; padding: 0 12px; font-size: 13px; opacity: .55; border: 1px solid transparent; }
.app-status-choice input:checked + .badge { opacity: 1; border-color: currentColor; }
.app-status-choice input:focus-visible + .badge { box-shadow: 0 0 0 3px var(--c-focus); }
.app-steps { list-style: none; padding: 0; margin: 0; }
.app-steps li { display: flex; align-items: center; gap: 10px; padding: 7px 0; color: var(--c-text-3); }
.app-steps li .fa { width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; background: var(--c-neutral-soft); }
.app-steps li.done { color: var(--c-text); }
.app-steps li.done .fa { background: var(--c-success-soft); color: var(--c-success); }

/* ---------------------------------------------------------------- Calendrier */
.app-theme .fc { color: var(--c-text); }
.app-theme .fc-unthemed th, .app-theme .fc-unthemed td, .app-theme .fc-unthemed thead, .app-theme .fc-unthemed tbody, .app-theme .fc-unthemed .fc-divider,
.app-theme .fc-unthemed .fc-row, .app-theme .fc-unthemed .fc-content, .app-theme .fc-unthemed .fc-popover, .app-theme .fc-unthemed .fc-list-view,
.app-theme .fc-unthemed .fc-list-heading td { border-color: var(--c-border) !important; }
.app-theme .fc-unthemed td.fc-today { background: var(--c-today); }
.app-theme .fc-unthemed .fc-list-heading td, .app-theme .fc-unthemed .fc-popover .fc-header { background: var(--c-surface-2); }
.app-theme .fc-unthemed .fc-list-item:hover td { background: var(--c-hover); }
.app-theme .fc-unthemed .fc-popover { background: var(--c-surface-3); }
.app-theme .fc button {
    height: 36px; padding: 0 14px; background: var(--c-fill); color: var(--c-text); border: 1px solid var(--c-border-strong);
    text-shadow: none; box-shadow: none; font-size: 13px; font-weight: 600; text-transform: none;
}
.app-theme .fc button:hover { background: var(--c-fill-hover); }
.app-theme .fc-state-active, .app-theme .fc-state-down { background: var(--c-chip) !important; border-color: var(--c-highlight) !important; color: var(--c-text) !important; }
.app-theme .fc-state-disabled { opacity: .45; }
.app-theme .fc-toolbar { margin-bottom: 16px !important; }
.app-theme .fc-toolbar h2 { font-size: 18px; font-weight: 600; text-transform: capitalize; margin-top: 4px; color: var(--c-text); }
.app-theme .fc-day-header { text-transform: capitalize; padding: 10px 0 !important; font-size: 12px; font-weight: 600; color: var(--c-text-3); }
.app-theme .fc-day-number, .app-theme .fc-week-number { color: var(--c-text-3); font-size: 12px; }
.app-theme .fc-event { border-radius: 6px; padding: 3px 6px; cursor: pointer; border: 0 !important; font-weight: 600; font-size: 12.5px; }
.app-theme .fc-day-grid-event .fc-content { white-space: normal; }
.app-theme .fc-list-item-title a { color: var(--c-text); font-weight: 600; }
.app-cal-team { margin-top: 3px; display: flex; flex-wrap: wrap; gap: 3px; }
.app-cal-member { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 20px; border-radius: 10px; font-size: 10px; padding: 0 4px; color: #fff; font-weight: 700; box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .8); }
.app-cal-late { box-shadow: inset 0 0 0 2px #ff6b57; }
@media (max-width: 767px) {
    .app-theme .fc-toolbar { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; }
    .app-theme .fc-toolbar .fc-center { order: -1; width: 100%; text-align: center; }
    .app-theme .fc-toolbar .fc-left, .app-theme .fc-toolbar .fc-right { float: none; }
}

/* ---------------------------------------------------------------- Planning & heures */
.app-planning { table-layout: fixed; min-width: 860px; }
.app-planning-user { width: 200px; }
.app-planning-cell { vertical-align: top !important; padding: 8px 6px !important; }
.app-planning-pill { display: block; color: #fff !important; border-radius: 5px; padding: 3px 7px; margin-bottom: 4px; font-size: 12px; font-weight: 600 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-decoration: none !important; max-width: 100%; }
.app-planning-free { font-size: 12px; color: var(--c-text-3); opacity: .7; }
.app-weekend { background: var(--c-weekend); }
.app-today-col { background: var(--c-today) !important; }
th.app-today-col { color: var(--c-highlight) !important; }
.app-timesheet input.form-control { min-width: 54px; padding: 0 4px; text-align: center; -moz-appearance: textfield; }
.app-timesheet input::-webkit-outer-spin-button, .app-timesheet input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.app-timesheet input:disabled { background: transparent !important; border-color: transparent !important; color: var(--c-text) !important; opacity: 1; }
.app-ts-chantier { min-width: 160px; }
.app-ts-add { min-width: 260px; }
.app-subtotal td { background: var(--c-hover); }
@media (max-width: 767px) {
    .app-timesheet th:first-child, .app-timesheet td:first-child { position: sticky; left: 0; z-index: 1; background: var(--c-surface); min-width: 124px; max-width: 124px; font-size: 13px; }
}

/* ---------------------------------------------------------------- Pages hors connexion */
.app-auth { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 32px 16px; }
.app-auth-inner { width: 100%; max-width: 440px; }
.app-auth .app-brand-lg { display: flex; margin: 0 0 24px; text-align: center; }
.auth-page .access-container {
    width: 100%; margin: 0; padding: 32px; background: var(--c-surface) !important; border: 1px solid var(--c-border); border-radius: 16px; box-shadow: var(--c-card-shadow);
}
.auth-page .input-focus { display: none !important; }
.auth-page .access-input { position: relative; }
.auth-page .login-input { width: 100%; padding: 0 14px 0 44px !important; }
.auth-page .input-symbol { position: absolute; left: 0; top: 0; height: 48px; width: 44px; display: flex; align-items: center; justify-content: center; padding: 0 !important; }
.auth-page .text-primary { color: var(--c-highlight) !important; }
.auth-page .login-form, .auth-page form { width: 100% !important; max-width: none !important; }
.auth-page .input-symbol, .auth-page .input-symbol i { color: var(--c-text-3) !important; font-size: 17px; }
.auth-page .login-form-title { display: block; text-align: center; width: 100%; }
@media (max-width: 575px) { .auth-page .access-container { padding: 24px 20px; } }
.auth-page .login-form-title { color: var(--c-text); font-size: 22px; font-weight: 600; padding-bottom: 12px; }
.auth-page .login-input {
    height: 48px; font-size: 16px; color: var(--c-text) !important; background: var(--c-input-bg) !important;
    border: 1px solid var(--c-input-border) !important; border-radius: var(--radius-sm) !important;
}
.auth-page .login-input:focus { border-color: var(--c-highlight) !important; box-shadow: 0 0 0 3px var(--c-focus); }
.auth-page .login-input::placeholder { color: var(--c-text-3); }
.auth-page .input-symbol { color: var(--c-text-3) !important; }
.auth-page .access-input { margin-bottom: 14px; }
.auth-page .btn { height: 48px; font-size: 15px; }
.auth-page a { color: var(--c-highlight); }
.auth-page p, .auth-page .text-muted { color: var(--c-text-3) !important; }
.app-auth-theme { position: fixed; top: 12px; right: 12px; }
.app-auth-theme .app-icon-btn { color: var(--c-text) !important; }
.app-checks li { font-size: 14px; }

/* ---------------------------------------------------------------- Divers */
.app-error .display-1 { color: var(--c-text-3); opacity: .5; font-weight: 600; }
.app-theme .footer { background: transparent; border-top: 1px solid var(--c-border); color: var(--c-text-3); font-size: 13px; padding: 18px 0; }
.app-theme #back-to-top { background: var(--c-surface-3) !important; color: var(--c-text) !important; border: 1px solid var(--c-border-strong); border-radius: 50%; }

@media print {
    .header, .hor-menu, .horizontal-main, .app-page-actions, .footer, #back-to-top, .app-bottom-nav, form, .btn { display: none !important; }
    body, body.app-theme { background: #fff !important; color: #000 !important; padding: 0 !important; }
    .app-theme .card { background: #fff !important; border: 1px solid #ccc !important; color: #000 !important; box-shadow: none !important; }
    .app-theme .table td, .app-theme .table th, .app-planning th, .app-planning td { border-color: #999 !important; color: #000 !important; }
    .app-page-head h1 { color: #000; }
}
