/**
 * fgmusicagency.com — feuille du template cassiopeia_fgmusic (enfant de Cassiopeia)
 *
 * @version 1.0.0 (07/10/2026) sortie de Helix Ultimate et de SP Page Builder.
 *
 * Valeurs reprises de l'ancien template (réglages du style Helix et son custom.scss) :
 * texte Lato 16 px #252525, titres et menu Italiana (graisse 600), liens #1b263b
 * (survol #01497c, souligné), boutons #012a4a, en-tête blanc de 100 px avec ombre,
 * bandeau du bas bleu nuit #1b263b / noir.
 *
 * Plan :
 *   1. Polices hébergées
 *   2. Base : texte, titres, liens, boutons
 *   3. En-tête : logo, menu, icône de contact, langue
 *   4. Contenu
 *   5. Accueil : carrousel, présentation, cartes des musiciens
 *   6. L'agence : portrait et texte
 *   7. Pages Artistes : présentation des quatuors, liste des musiciens
 *   8. Articles (biographies, quatuors)
 *   9. Bandeau du bas
 *  10. Divers
 */

/* ---------------------------------------------------------------------------------------------
   1. Polices hébergées (Google Fonts, licence OFL) : latin et latin étendu (« œ » de « œuvres »)
   --------------------------------------------------------------------------------------------- */

@font-face {
    font-family: 'Lato';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lato-400-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Lato';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lato-400-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Lato';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lato-400-italic-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Lato';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/lato-400-italic-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Lato';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/lato-700-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Lato';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/lato-700-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Italiana n'existe qu'en graisse 400 : la graisse 600 des titres est épaissie par le
   navigateur, comme sous l'ancien template. */
@font-face {
    font-family: 'Italiana';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/italiana-400-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Roboto est une police variable : un seul fichier couvre les graisses 400 à 700. */
@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/roboto-variable-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/roboto-variable-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------------------------------------------------------------------------------------------
   2. Base
   --------------------------------------------------------------------------------------------- */

/* Le carrousel de l'accueil occupe toute la largeur de la fenêtre (100vw) : « clip » et non
   « hidden », qui créerait un conteneur de défilement et casserait l'en-tête collant. */
html,
body {
    overflow-x: clip;
}

body {
    font-family: 'Lato', sans-serif;
    font-size: 16px;
    font-weight: 400;
    color: #252525;
    background-color: #ffffff;
}

h1, h2, h3,
.h1, .h2, .h3 {
    font-family: 'Italiana', sans-serif;
    font-weight: 600;
    line-height: 1.2;
}

h1, .h1 {
    font-size: 30px;
    color: #1b263b;
}

h2, .h2 {
    font-size: 26px;
}

h3, .h3 {
    font-size: 20px;
}

h4, .h4 {
    font-family: 'Roboto', sans-serif;
    font-size: 14px;
}

h5, .h5 {
    font-family: 'Roboto', sans-serif;
}

h1 a,
h2 a,
h3 a {
    color: #1b263b;
}

a,
a:focus,
a:active {
    color: #1b263b;
}

a:hover {
    color: #01497c;
    text-decoration: underline;
}

.btn-primary,
.btn-primary:focus,
.btn-primary:active,
.btn-secondary,
.btn-secondary:focus,
.btn-secondary:active {
    color: #ffffff;
    background-color: #012a4a;
    border-color: #012a4a;
}

.btn-primary:hover,
.btn-secondary:hover {
    color: #ffffff;
    background-color: #01497c;
    border-color: #01497c;
    text-decoration: none;
}

/* ---------------------------------------------------------------------------------------------
   3. En-tête : une rangée blanche de 100 px — logo, menu centré, icône de contact, langue
   --------------------------------------------------------------------------------------------- */

.container-header.fg-entete {
    background: #ffffff;
    box-shadow: 29px 0 30px 0 rgba(0, 0, 0, .4);
    z-index: 1020;
}

.container-header .fg-entete__rangee {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 1rem;
    min-height: 100px;
    padding-top: 0;
    padding-bottom: 0;
}

.container-header .fg-entete__marque {
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
}

.fg-entete__logo {
    display: block;
    width: auto;
    height: 45px;
}

.container-header .fg-entete__nav {
    display: flex;
    flex: 1 1 auto;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 20px;
    margin: 0;
    padding: 0;
}

/* Module de menu principal : en premier quel que soit l'ordre des modules, il prend la place
   libre et centre ses entrées ; l'icône de contact et la langue suivent, à droite. */
.fg-entete__nav > .fg-mod {
    order: 1;
}

.fg-entete__nav > .fg-mod--mod_menu {
    order: 0;
    flex: 1 1 auto;
    display: flex;
    justify-content: center;
}

.fg-entete__nav .fg-mod__contenu > * {
    margin: 0;
}

.container-header .fg-entete__nav nav {
    margin: 0;
}

.container-header .fg-entete__nav .mod-menu {
    flex-wrap: nowrap;
    align-items: center;
    gap: 0;
    margin: 0;
    color: #000000;
}

.container-header .fg-entete__nav .mod-menu > li > a,
.container-header .fg-entete__nav .metismenu > li > a,
.container-header .fg-entete__nav .metismenu > li > button {
    padding: .5rem 10px;
    font-family: 'Italiana', sans-serif;
    font-size: 16px;
    font-weight: 600;
    color: #000000;
    text-decoration: none;
}

.container-header .fg-entete__nav .mod-menu > li > a:hover,
.container-header .fg-entete__nav .mod-menu > li > a:focus {
    color: grey;
    text-decoration: none;
}

.container-header .fg-entete__nav .mod-menu > li.active > a,
.container-header .fg-entete__nav .mod-menu > li.current > a {
    color: #1b263b;
    font-weight: 600;
}

/* Cassiopeia souligne l'entrée active d'un trait : l'ancien menu ne l'avait pas. */
.container-header .fg-entete__nav .metismenu.mod-menu .metismenu-item::after,
.container-header .fg-entete__nav .metismenu.mod-menu .metismenu-item.active::after {
    display: none;
}

/* Icône de contact (modules 142 / 143) et drapeau de langue (module 130) */
.fg-entete__nav .contact h2 {
    margin: 0;
    font-size: 1rem;
    line-height: 1;
}

.fg-entete__nav .contact a {
    color: #1b263b;
    text-decoration: none;
}

.fg-entete__nav .contact .fa-envelope {
    padding-top: 0 !important;
    font-size: 33px !important;
}

.fg-entete__nav .mod-languages ul {
    margin: 0;
}

.fg-entete__nav .mod-languages img {
    display: block;
}

/* Bouton du menu (téléphone et tablette) */
.container-header .fg-entete__nav .navbar-toggler {
    color: #000000;
    border: 0;
    background: transparent;
    font-size: 1.5rem;
}

/* Sous 992 px, le gabarit de menu de Cassiopeia (navbar-expand-lg) remplace les entrées par
   un bouton : même seuil ici. */
@media (max-width: 991.98px) {
    /* Le bouton du menu passe en dernier, à droite des icônes. */
    .fg-entete__nav > .fg-mod--mod_menu {
        order: 9;
        flex: 0 0 auto;
    }

    /* Menu déplié : un panneau blanc sous l'en-tête, sur toute sa largeur. Le repère est
       l'en-tête (collant, donc positionné) : le .navbar de Bootstrap, positionné lui aussi,
       réduirait le panneau à la largeur du bouton. */
    .container-header .fg-entete__nav .navbar {
        position: static;
    }

    .container-header .fg-entete__nav .navbar-collapse {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        padding: .5rem 1.25rem 1rem;
        background: #ffffff;
        box-shadow: 0 12px 20px -10px rgba(0, 0, 0, .3);
    }

    .container-header .fg-entete__nav .navbar-collapse .mod-menu {
        flex-direction: column;
        align-items: flex-start;
    }

    .container-header .fg-entete__nav .navbar-collapse .mod-menu > li > a {
        display: block;
        padding: .75rem 0;
        font-size: 18px;
    }
}

@media (max-width: 767.98px) {
    .container-header .fg-entete__rangee {
        min-height: 60px;
        gap: .5rem;
    }

    .fg-entete__logo {
        height: 36px;
    }

    .container-header .fg-entete__nav {
        gap: 18px;
    }

    .fg-entete__nav .contact .fa-envelope {
        font-size: 25px !important;
    }
}

/* ---------------------------------------------------------------------------------------------
   4. Contenu
   --------------------------------------------------------------------------------------------- */

/* Espace sous l'en-tête : 25 px, comme l'ancien template. Cassiopeia ajoute 1em au-dessus de
   <main>, retiré ici (il décollait aussi le carrousel de l'accueil de l'en-tête). */
.container-component {
    padding-top: 25px;
}

.container-component > main {
    margin-top: 0;
}

.page-header h1,
.item-page h1 {
    color: #1b263b;
}

/* ---------------------------------------------------------------------------------------------
   5. Accueil
   --------------------------------------------------------------------------------------------- */

/* Le carrousel commence juste sous l'en-tête. */
.page-accueil .container-component {
    padding-top: 0;
}

/* --- Carrousel : défilement CSS (scroll-snap), il marche sans JavaScript ; user.js ajoute les
       flèches, les points et l'avance automatique. Pleine largeur de la fenêtre ; --barre est la
       largeur de la barre de défilement, posée par user.js (100vw la compte). */
.fg-carrousel {
    position: relative;
    width: calc(100vw - var(--barre, 0px));
    margin-left: calc(50% - (100vw - var(--barre, 0px)) / 2);
    margin-bottom: 2rem;
}

.fg-carrousel__piste {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
}

.fg-carrousel__piste::-webkit-scrollbar {
    display: none;
}

.fg-diapo {
    position: relative;
    flex: 0 0 100%;
    height: clamp(420px, calc(100vh - 100px), 900px);
    scroll-snap-align: start;
    overflow: hidden;
    background: #000000;
}

.fg-diapo__photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Voile du bas : le texte reste lisible quelle que soit la photo. */
.fg-diapo::after {
    content: "";
    position: absolute;
    inset: 40% 0 0 0;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .55));
    pointer-events: none;
}

.fg-diapo__texte {
    position: absolute;
    z-index: 1;
    left: 50%;
    bottom: 7%;
    width: min(900px, 86%);
    transform: translateX(-50%);
    color: #ffffff;
    text-align: center;
}

.fg-diapo__titre {
    margin: 0 0 1rem;
    font-size: 46px;
    color: #ffffff;
}

.fg-diapo__texte p {
    margin-bottom: .75rem;
    font-size: 17px;
    line-height: 1.5;
}

.fg-diapo__texte .fg-diapo__action {
    margin: 1.25rem 0 0;
}

.fg-diapo__action .btn {
    text-transform: uppercase;
    letter-spacing: .05em;
}

/* Flèches et points (créés par user.js) */
.fg-carrousel__fleche {
    position: absolute;
    z-index: 2;
    top: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 55px;
    height: 55px;
    padding: 0;
    color: #ffffff;
    background: rgba(0, 0, 0, .15);
    border: 2px solid #ffffff;
    border-radius: 50%;
    transform: translateY(-50%);
    cursor: pointer;
}

.fg-carrousel__fleche:hover,
.fg-carrousel__fleche:focus-visible {
    background: rgba(0, 0, 0, .45);
}

.fg-carrousel__fleche--precedent {
    left: 30px;
}

.fg-carrousel__fleche--suivant {
    right: 30px;
}

.fg-carrousel__fleche svg {
    width: 20px;
    height: 20px;
}

.fg-carrousel__points {
    position: absolute;
    z-index: 2;
    left: 50%;
    bottom: 2%;
    display: flex;
    gap: 0;
    transform: translateX(-50%);
}

/* Zone touchable de 24 px, point dessiné de 12 px. */
.fg-carrousel__point {
    position: relative;
    width: 24px;
    height: 24px;
    padding: 0;
    background: transparent;
    border: 0;
    cursor: pointer;
}

.fg-carrousel__point::before {
    content: "";
    position: absolute;
    inset: 6px;
    border: 2px solid #ffffff;
    border-radius: 50%;
}

.fg-carrousel__point[aria-current="true"]::before {
    background: #ffffff;
}

@media (max-width: 767.98px) {
    .fg-diapo {
        height: 420px;
    }

    /* Comme sous l'ancien template : sur téléphone, le titre et le bouton seulement. */
    .fg-diapo__texte p:not(.fg-diapo__action) {
        display: none;
    }

    .fg-diapo__titre {
        font-size: 24px;
    }

    .fg-carrousel__fleche {
        display: none;
    }
}

/* --- Présentation de l'agence */
.fg-presentation {
    margin-bottom: 2.5rem;
}

/* --- Cartes des musiciens : quatre par rangée, une rangée par formation */
.fg-cartes {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 30px;
    margin-bottom: 30px;
}

.fg-carte {
    padding-bottom: 5px;
    background: #ffffff;
    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .15);
}

.fg-carte__photo {
    display: block;
    aspect-ratio: 2 / 3;
    overflow: hidden;
}

.fg-carte__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.fg-carte__nom {
    margin: 20px 0 8px;
    padding: 0 20px;
}

.fg-carte__nom a {
    font-size: 18px;
    font-weight: 700;
    text-decoration: none;
}

.fg-carte__role {
    margin-bottom: 30px;
    padding: 0 20px;
    font-size: 12px;
}

@media (max-width: 991.98px) {
    .fg-cartes {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .fg-cartes {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ---------------------------------------------------------------------------------------------
   6. L'agence : portrait à gauche, texte justifié à droite
   --------------------------------------------------------------------------------------------- */

.fg-portrait {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 2.5rem;
    align-items: start;
}

.fg-portrait__photo {
    margin: 0;
}

.fg-portrait__photo img {
    width: 100%;
    height: auto;
}

.fg-portrait__texte p {
    text-align: justify;
}

@media (max-width: 767.98px) {
    .fg-portrait {
        grid-template-columns: minmax(0, 1fr);
        gap: 1.5rem;
    }
}

/* ---------------------------------------------------------------------------------------------
   7. Pages Artistes
   --------------------------------------------------------------------------------------------- */

/* Présentation des deux quatuors (modules 148 / 150, position « content-top ») */
.fg-mod--content-top {
    margin-bottom: 2.5rem;
}

.fg-mod--content-top .fg-mod__titre {
    margin-bottom: 1.5rem;
    font-size: 26px;
    color: #1b263b;
}

.fg-quatuors {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 30px;
}

.fg-quatuor__photo {
    display: block;
}

.fg-quatuor__photo img {
    width: 100%;
    height: auto;
}

.fg-quatuor__titre {
    margin: 12px 0 1.25rem;
    font-size: 1.375rem;
    letter-spacing: 2px;
}

.fg-quatuor__titre a {
    color: #252525;
    text-decoration: none;
}

.fg-quatuor .btn {
    font-size: 90%;
}

.fg-quatuor__suite a,
.page-artistes .readmore a {
    font-size: 120%;
    font-weight: 600;
    font-style: italic;
    color: #012a4a;
}

@media (max-width: 767.98px) {
    .fg-quatuors {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Liste des musiciens (blog de catégorie) : grille de Cassiopeia, sans cadre */
.blog-items .blog-item {
    border: 0;
    box-shadow: none;
}

.blog-item .item-image,
.blog-item figure.left,
.blog-item figure.float-start {
    float: none;
    max-width: 460px;
    margin: 0 0 1rem;
}

/* Toutes les photos dans le même cadre 4:3, quel que soit le format du fichier (portrait, 3:2,
   16:9) : la rangée garde une hauteur unique. La photo remplit le cadre, recadrée vers le haut
   pour garder les visages. */
.blog-item .item-image img {
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    object-position: 50% 25%;
}

/* Le lien « Lire la suite » de Joomla est un bouton : l'ancien site en faisait un lien
   (gras, italique, bleu nuit). */
.page-artistes .readmore .btn,
.page-artistes .readmore .btn:hover {
    padding: 0;
    color: #012a4a;
    background: none;
    border: 0;
}

/* ---------------------------------------------------------------------------------------------
   8. Articles : grande photo à gauche, texte autour
   --------------------------------------------------------------------------------------------- */

.item-page .item-image.left,
.item-page .item-image.float-start {
    float: left;
    max-width: 460px;
    margin: 0 2rem 1rem 0;
}

.item-page .item-image img {
    width: 100%;
    height: auto;
}

@media (max-width: 767.98px) {
    .item-page .item-image.left,
    .item-page .item-image.float-start {
        float: none;
        max-width: 100%;
        margin-right: 0;
    }
}

/* ---------------------------------------------------------------------------------------------
   9. Bandeau du bas (modules 141 / 153, position « bottom1 ») : contact, nom de l'agence
   --------------------------------------------------------------------------------------------- */

.fg-bas {
    margin-top: 2rem;
}

.fg-bas .fg-mod,
.fg-bas .fg-mod__contenu {
    margin: 0;
}

.fg-bandeau {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fg-bandeau__col {
    min-height: 140px;
    padding: 20px 30px;
    color: #ffffff;
    background-color: #1b263b;
}

.fg-bandeau__col p {
    margin-bottom: 3px;
}

.fg-bandeau__col a,
.fg-bandeau__col a:hover,
.fg-bandeau__col a:focus {
    color: #ffffff;
}

.fg-bandeau__col--nom {
    background-color: #000000;
    text-align: center;
}

.fg-bandeau__col--nom p {
    margin: 0;
    font-family: 'Italiana', sans-serif;
    font-size: 32px;
    font-weight: 600;
    line-height: 1.5;
}

@media (max-width: 767.98px) {
    .fg-bandeau {
        grid-template-columns: minmax(0, 1fr);
    }

    .fg-bandeau__col {
        min-height: 0;
        text-align: center;
    }

    .fg-bandeau__col--vide {
        display: none;
    }
}

/* ---------------------------------------------------------------------------------------------
   10. Divers
   --------------------------------------------------------------------------------------------- */

/* Badge du reCAPTCHA de RSForm : masqué comme sur l'ancien site. */
.grecaptcha-badge {
    visibility: hidden;
}
