/*
 * Skin « tunnel » — version CSS PUR (pages V1 legacy : @ConsoneoPublic/layout.html.twig
 * + Bootstrap 3 / jQuery / Knockout / AngularJS, AUCUN Tailwind chargé).
 *
 * Re-skin COSMÉTIQUE du DOM Bootstrap EXISTANT pour rapprocher le rendu du nouveau
 * layout tunnel (carte arrondie, header épuré, boutons espacés arrondis) SANS :
 *   - aucun Tailwind ;
 *   - aucun changement de DOM / JS (ng-app, Knockout, grille Bootstrap intacts) ;
 *   - aucune dépendance / script ajouté.
 *
 * OPT-IN STRICT : toutes les règles sont scopées sous `.tunnel-skin`. La classe est
 * ajoutée par la page elle-même, sur un ANCÊTRE de la carte, via :
 *     {% block main_container_classes %}{{ parent() }} tunnel-skin{% endblock %}
 * Tant qu'aucune page n'ajoute `.tunnel-skin`, le bloc opt-in est 100 % inerte → zéro
 * impact sur les ~140 autres pages V1 même si la feuille est chargée globalement.
 * EXCEPTION : le bloc « Nav haute V2 » en bas de fichier est volontairement GLOBAL
 * (hors `.tunnel-skin`) — il stylise toute nav `.button-group--condensed` (ESI v2).
 *
 * ⚠️ NE PAS activer `.tunnel-skin` sur les pages PLEINE LARGEUR génériques (exports CSV,
 *    questionnaires multi-sites) : la carte arrondie ne convient pas à ces gabarits.
 *    La page rapport CEE EST supportée explicitement (cf. bloc dédié en bas) : sa carte
 *    `.app-container` est contrainte en largeur + centrée (parité demande2).
 *
 * On évite volontairement d'ajouter du padding HORIZONTAL sur le conteneur : la grille
 * Bootstrap `.row` a des marges négatives (-15px) absorbées par le padding 15px de
 * `.container` ; un padding supplémentaire la casserait. On ne touche qu'au cosmétique
 * (arrondi, ombre, bordure, vertical).
 */

/* ── Carte : .container.table-bordered (fond blanc) → carte arrondie + ombre douce ── */
.tunnel-skin .container.table-bordered {
    border-radius: 16px;
    border: 1px solid #E0E0E0;          /* bordure adoucie (cold-grey-200) au lieu du gris Bootstrap */
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
    padding-top: 12px;                   /* respiration verticale (n'affecte pas les marges négatives des .row) */
    padding-bottom: 12px;
    margin: 20px 0;                      /* air au-dessus/dessous de la carte (parité demande2/rapport `.app-container`) */
}

/* Le fond blanc interne suit l'arrondi. On N'utilise PAS `overflow: hidden` sur la carte :
 * ça clipperait les dropdowns / tooltips / autocompletes des formulaires (simulateurs,
 * moteur dynamique React) qui débordent de la carte. Arrondir le fond suffit pour des
 * coins propres, car le contenu (rows) n'a pas de fond qui atteint les coins. */
.tunnel-skin .container.table-bordered > div {
    border-radius: 16px;
}

/* ── Header épuré : le gros filet gris sous l'en-tête devient une fine séparation ── */
.tunnel-skin header.row + .row[style*="border-style"] {
    border: 0 none !important;
    border-bottom: 1px solid #E0E0E0 !important;
    margin: 4px 0 12px;
}

/* ── Topbar PIXEL-PERFECT avec la TunnelTopBar React (Button DS « basic / small ») ──────
 * Le .btn-group Bootstrap (cartouche header par défaut : buttons.{public,private}.html.twig,
 * markup <a class="btn btn-sm v1">) est restylé en pills IDENTIQUES au Button DS, SANS charger
 * React/theme — choix délibéré pour les pages très dynamiques (ex. questionnaire s3p) où le
 * preflight Tailwind de l'entry theme casserait les layouts.
 * Valeurs EXACTES du DS (Button.tsx, size=small variant=basic, rounded=large) en px ABSOLUS :
 * la page reste en root 62.5% SANS zoom → un `rem` rendrait à 0.625× ; on fige donc le rendu
 * nominal du DS en px. Mapping : rounded-xl 12 · text-sm 14 · font-semibold 600 · p-2 8 ·
 * gap-2 8 (icône↔label) · gap-3 12 (entre pills) · bg #FFF · border warm-grey-200 #D2DDF4 ·
 * texte secondary-900 #144B66 · hover warm-grey-500 #909CB1 · icône 16.
 * `!important` requis : les <a> portent un style inline (border lightgrey / color #686868)
 * qui sinon l'emporte. ⚠️ Les ICÔNES/LIBELLÉS restent ceux des templates legacy partagés
 * (≠ React : Simulateur sans calculator, logout fa-power-off, « Mes Projets » vs « Votre espace »)
 * — non alignables sans toucher buttons.{public,private}.html.twig (≈40 pages) ou un override Twig. */
.tunnel-skin .btn-group {
    display: inline-flex !important;
    align-items: center;
    gap: 12px;                               /* cnsn-gap-3 entre pills */
}

.tunnel-skin .btn-group > .btn,
.tunnel-skin .btn-group > .btn.v1 {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 8px;                                /* cnsn-gap-2 icône↔label */
    margin: 0 !important;                    /* neutralise le margin-left:-1px du .btn-group Bootstrap */
    padding: 8px !important;                 /* cnsn-p-2 */
    font-size: 14px !important;              /* cnsn-text-sm */
    font-weight: 600 !important;             /* cnsn-font-semibold */
    line-height: 20px !important;            /* cnsn-text-sm impose line-height 1.25rem=20px (≠ 1) → hauteur pill 38px = DS React */
    border-radius: 12px !important;          /* cnsn-rounded-xl */
    border: 1px solid #D2DDF4 !important;    /* warm-grey-200 */
    color: #144B66 !important;               /* secondary-900 */
    background-color: #FFFFFF !important;
    box-shadow: none !important;
    transition: border-color .15s ease-in-out;
}

.tunnel-skin .btn-group > .btn:hover,
.tunnel-skin .btn-group > .btn.v1:hover {
    border-color: #909CB1 !important;        /* warm-grey-500 */
    background-color: #FFFFFF !important;
    color: #144B66 !important;
}

/* Icône calibrée sur l'icône DS : 16px (pills « small ») / 20px (« Précédent » = previous medium).
 * FontAwesome remplace <i class="fa"> par <svg class="svg-inline--fa"> (JS) → cibler les DEUX, et
 * FIGER width/height comme le SVG React (w-4=16 / w-5=20) pour une largeur de pill identique
 * (sinon le SVG prend height:1em = la police du bouton ≈ 14px → pills ~4px trop étroits). */
.tunnel-skin .btn-group > .btn .fa,
.tunnel-skin .btn-group > .btn svg.svg-inline--fa {
    width: 16px !important;
    height: 16px !important;
    font-size: 16px;
}

.tunnel-skin header .btn-group > .btn:first-child .fa,
.tunnel-skin header .btn-group > .btn:first-child svg.svg-inline--fa {
    width: 20px !important;
    height: 20px !important;
    font-size: 20px;
}

/* ── Nav haute en HEADER : disposition façon TunnelTopBar React (Précédent à gauche, pills à
 * droite), uniquement quand la nav est pleine largeur (page ayant élargi le cartouche en
 * col-sm-12, ex. simulateur3p). Scopé `header` → n'affecte pas les .btn-group de formulaire
 * dans le corps. Le .btn-group devient flex pleine largeur ; le 2e bouton pousse le reste à
 * droite (margin-left:auto) ; le 1er bouton (Précédent / retour) devient un lien plain souligné
 * (parité React `previous` : plain + underline, pas de pill). */
.tunnel-skin header .btn-group {
    display: flex !important;
    width: 100%;
    flex-wrap: nowrap !important;
}

.tunnel-skin header .btn-group > .btn:nth-child(2) {
    margin-left: auto !important;   /* Précédent reste à gauche, Simulateur + pills filent à droite */
}

.tunnel-skin header .btn-group > .btn:first-child,
.tunnel-skin header .btn-group > .btn.v1:first-child {
    border: 0 !important;
    background: transparent !important;
    padding: 0 !important;
    font-size: 16px !important;      /* text-base (previous React = size medium) */
    line-height: 24px !important;    /* text-base = line-height 1.5rem=24px (parité hauteur previous React) */
    color: #144B66 !important;       /* secondary-900 */
    text-decoration: underline !important;
    gap: 4px;                        /* cnsn-gap-1 (plain) */
}

.tunnel-skin header .btn-group > .btn:first-child:hover,
.tunnel-skin header .btn-group > .btn.v1:first-child:hover {
    border: 0 !important;
    background: transparent !important;
    color: #0F3A50 !important;
}

/* ── Nav haute AU-DESSUS du titre (header layout.html.twig PAR DÉFAUT + cartouche legacy) ──
 * Le header par défaut empile titre (col-sm-8) → cartouche → sous-titre : le gros titre
 * (« Merci, »…) s'affiche AU-DESSUS de la nav. On flex-ifie le header (col-onnes en colonne)
 * et on remonte le bloc contenant le .btn-group, en pleine largeur (parité demande2/categories :
 * nav EN PREMIER). Scopé `:has(.btn-group, .tunnel-nav)` (nav legacy `.btn-group` OU nav
 * unifiée `.tunnel-nav` du peintre `_tunnel-nav.html.twig`) : les pages qui ont remplacé le cartouche par un
 * îlot React (categories/index : nav = <div> SANS .btn-group) ne matchent pas → header inchangé.
 * S'applique aussi à simulateur3p (même header par défaut + cartouche) → nav en haut, cohérent. */
.tunnel-skin header.row:has(.btn-group, .tunnel-nav) {
    display: flex;
    flex-direction: column;
}

/* Neutralise le clearfix Bootstrap (`.row:before/:after`) qui, en contexte flex, deviendrait
 * deux items vides parasites (filet/espace). */
.tunnel-skin header.row:has(.btn-group, .tunnel-nav)::before,
.tunnel-skin header.row:has(.btn-group, .tunnel-nav)::after {
    display: none !important;
}

/* Le bloc du cartouche (nav) passe avant le titre, en pleine largeur (le col-sm-4 par défaut
 * ne fait que 33% → trop étroit pour la nav). */
.tunnel-skin header.row:has(.btn-group, .tunnel-nav) > div:has(.btn-group, .tunnel-nav) {
    order: -1;
    width: 100%;
}

/* ── Nav haute V2 (GLOBAL, hors `.tunnel-skin`) ────────────────────────────────────
 * Aligne la nav haute des pages V2 publiques (ESI `buttons.{public,private}.v2`,
 * markup `.button-group--condensed`) sur les pills du tunnel React (TunnelTopBar),
 * en miroir du `.btn-group` ci-dessus. Volontairement GLOBAL : aujourd'hui seule la
 * page rapport rend cette nav ; toute future page V2 publique en hérite.
 * `!important` requis : app.css (`.header .header__nav > .button-group > *`, spéc. 0,3,0)
 * est chargé APRÈS cette feuille (bloc `stylesheets` rendu après le head). */
.button-group--condensed {
    gap: 8px !important;                      /* décolle les pills (app.css : gap 0) */
}

.button-group--condensed > * {
    border: 1px solid #D2DDF4 !important;     /* warm-grey-200 */
    border-radius: 10px !important;           /* écrase aussi les coins 4px first/last-child */
    color: #144B66 !important;                /* secondary-900 */
    background-color: #FFFFFF !important;
    box-shadow: none !important;
    transition: border-color .15s ease-in-out;
}

.button-group--condensed > *:hover {
    border-color: #909CB1 !important;         /* warm-grey-500 */
}

/* ── Page rapport CEE (opt-in `.tunnel-skin` sur `.wrapper`) ────────────────────────
 * La page rapport a une coquille PROPRE (`.wrapper > .col > .app-container`), PAS le
 * `.container.table-bordered` Bootstrap → ces règles la ciblent spécifiquement.
 * Spécificité 0,2,0 / 0,3,0 > app.css (0,1,0) chargé après → pas besoin de `!important`.
 * Scopées via `.app-container` (présent UNIQUEMENT sur rapport) → aucun effet sur les
 * autres pages `.tunnel-skin` (simulateur, etc.). */

/* #3 — Carte arrondie, centrée, contrainte en largeur (parité demande2 : max-w 1080, mx-auto) */
.tunnel-skin .app-container {
    max-width: 1080px;
    margin: 20px auto;                        /* petit air haut/bas comme demande2 (py-5), pas collée au top */
    border: 1px solid #DDDDDD;                /* neutrals-cold-grey-100 (demande2) */
    border-radius: 16px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
}

/* #1 — Bouton submit : vert DS neo (primary-500/700) au lieu du turquoise legacy #13C4A3.
 * On surcharge la variable consommée par `.btn` (fond + bordure) ; le texte reste blanc. */
.tunnel-skin .app-container .btn--primary {
    --consoneo-btn-background: #24B283;       /* primary-500 (demande2) */
}

.tunnel-skin .app-container .btn--primary:hover {
    --consoneo-btn-background: #177F89;       /* primary-700 (demande2) */
}

/* ── Fix échelle rem des îlots DS React — SOURCE UNIQUE (pages V1 legacy `.tunnel-skin`) ─
 * Les pages V1 imposent `html { font-size: 62.5% }` (base 10px, ancien système de typo en
 * rem). Les composants DS neo/projectBundle (Button, FaIcon…) sont basés sur `rem` → un îlot
 * React monté sur ces pages rend à 0.625× (texte/padding/icônes/rayons riquiqui). `rem` ne se
 * rebase PAS par sous-arbre (toujours relatif à <html>) ; flipper le root casserait toute la
 * typo legacy. On restaure l'échelle nominale via `zoom` (16/10 = 1.6).
 *
 * Classe UNIQUE et PARTAGÉE par tous les îlots de la page (au lieu d'un `zoom` inline recopié) :
 *   - nav haute : <div> hôte de `react_component('Tunnel/TunnelTopBarStandard')` (rapport.html.twig) ;
 *   - boutons secondaires : conteneur dans `RapportSecondaryActions` ;
 *   - modale : la CARTE de `TunnelModal` (PAS l'overlay) ;
 *   - CTA accord : le bouton de `RapportContractAction`.
 *
 * Gatée sous `.tunnel-skin` → s'applique UNIQUEMENT sur les pages V1 concernées ; sur une page
 * V2 (root déjà 16px) la classe est inerte → les mêmes composants (ex. TunnelModal) y restent
 * nominaux automatiquement, sans double zoom.
 * ⚠️ La poser sur l'élément À METTRE À L'ÉCHELLE, jamais sur un overlay `fixed` (qui doit rester
 *    en unités viewport), ni deux fois sur des éléments imbriqués (le zoom se cumulerait). */
.tunnel-skin .tunnel-skin-rem-fix {
    zoom: 1.6;
}
