/* ===================================
   CRUNCHY — CSS OPTIMISÉ
   Réduction : doublons supprimés,
   variables consolidées, règles regroupées
=================================== */

/* ===================================
   1. VARIABLES
=================================== */
:root {
    --primary-color:      #9a0d03f5; /* alias de crunchy_red */
    --primary-color-dark: #7a2103;   /* alias de crunchy_dark */
    --crunchy_red:        #c23d0a;
    --crunchy_brun:       #b56236;
    --crunchy_dark:       #973500;
    --crunchy_active:     #008000;
    --crunchy_activebg:   #008000;
    --crunchy_sec1:       hsl(141, 54%, 46%);
    --crunchy_sec2:       hsl(261, 54%, 46%);
}

/* ===================================
   2. FONTS
=================================== */
@font-face {
    font-family: 'musiquesregular';
    src: url('../webfonts/musiques-webfont.woff2') format('woff2'),
         url('../webfonts/musiques-webfont.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}
@font-face {
    font-family: 'caramel';
    src: url('../webfonts/Caramel.woff2') format('woff2');
          font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'dk_lemon_yellow_sunregular';
    src: url('../webfonts/dk_lemon_yellow_sun-webfont.woff2') format('woff2'),
         url('../webfonts/dk_lemon_yellow_sun-webfont.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'trends';
    src: url('../webfonts/Trends.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'Montserrat';
    src: url('../webfonts/Montserrat-VariableFont_wght.woff2') format('woff2');
    font-weight: 100 900;
    font-display: swap;
    font-style: normal;
}

/* ===================================
   3. RESET & GLOBAL
=================================== */
html {
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    font-family: 'Montserrat', Arial, Helvetica, sans-serif;
    margin: 0;
    line-height: 1.6;
    background-color: #ededed;
    display: flex;
    flex-direction: column;
    overflow-x: hidden;
}

ul {
    padding: 0;
    list-style: none;
}

media, audio, img {
    max-width: 100% !important;
}

iframe {
    max-width: 100% !important;
}

.TextformatterVideoEmbed {
    width: 100%;
    max-width: 100%;
    aspect-ratio: 16/9;
}

.hidden {
    display: none;
}

/* ===================================
   4. TYPOGRAPHIE DÉCORATIVE
=================================== */
.lys {
    font-family: 'dk_lemon_yellow_sunregular', sans-serif;
    font-size: 3rem;
    color: #fff;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}

.musiques {
    font-family: 'caramel', sans-serif;
    font-size: 9rem;
}

@media (max-width: 768px) {
    .musiques { font-size: 5rem; }
}

@media (max-width: 480px) {
    .musiques { font-size: 3.5rem; }
}

/* ===================================
   5. LAYOUT HELPERS
=================================== */
.container-fluid {
    width: 100%;
    padding: 0;
}

.container {
    width: 1200px;
    max-width: 100%;
}

.cont1200 {
    width: min(1200px, 100%);
    max-width: 1200px;
    margin: 0 auto;
    padding-top: 20px;
    padding-inline: 20px;
}

.cont900 {
    width: min(900px, 100%);
    max-width: 900px;
    margin: 0 auto;
    padding-top: 20px;
    padding-inline: 20px;
}

.en2cols {
    columns: 2 300px;
    column-gap: 2rem;
    margin-bottom: 40px;
}

.en3cols {
    columns: 3 300px;
    column-gap: 1rem;
    margin-bottom: 40px;

    li {
        break-inside: avoid;

        strong {
            font-weight: 600;
            color: var(--crunchy_active);
        }
    }
}

@media (min-width: 768px) {
    .figure {
        display: inline;
        width: 33%;
        padding-inline: 20px;
    }
}

/* ===================================
   6. LIENS & BOUTONS GLOBAUX
=================================== */
a {
    color: var(--crunchy_red);
    text-decoration: none;
    background: linear-gradient(0deg, #751e01, #751e01) no-repeat right bottom / 0 1px;
    transition: background-size 0.5s, color 0.3s ease;

    &:where(:hover, :focus-visible) {
        background-size: 100% 1px;
        background-position-x: left;
        color: #751e01;
    }
}

/* Note : la règle a:hover ci-dessous annule l'animation de soulignement.
   Garder l'une ou l'autre selon le rendu souhaité. */
a:hover {
    color: #751e01;
    background: none;
    text-decoration: underline;
}

/* Bouton générique */
.btn {
    padding: 12px 24px;
    border-radius: 6px;
    text-decoration: none;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    border: none;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.btn-primary {
    background: linear-gradient(135deg, #D21103 0%, #d87a55 100%);
    color: #fff;
    box-shadow: 0 3px 12px rgba(255,107,53,0.25);
}

.btn-primary:hover {
    transform: translateY(-1px);
    box-shadow: 0 5px 16px rgba(255,107,53,0.35);
    background: #973500;
}

.btn-secondary {
    background: #fff;
    color: #D21103;
    border: 1.5px solid #D21103;
}

.btn-secondary:hover {
    background: #ffe8dd;
    color: #000;
}

/* Bouton lien home */
.home-link-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 28px;
    background: var(--crunchy_red);
    color: #fff;
    border-radius: 3px;
    font-weight: 700;
    font-size: 0.88rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s;
}

.home-link-btn:hover {
    background: var(--crunchy_dark);
    transform: translateY(-2px);
    color: #fff;
}

.home-link-btn--light {
    background: rgba(255,255,255,0.15);
    border: 2px solid rgba(255,255,255,0.5);
}

.home-link-btn--light:hover {
    background: rgba(255,255,255,0.25);
}

.home-link-btn--outline {
    background: transparent;
    color: var(--crunchy_dark);
    border: 2px solid var(--crunchy_dark);
    border-radius: 6px;
    padding: 8px 20px;
    font-weight: 700;
    font-size: 0.85rem;
    text-decoration: none !important;
    background-image: none !important;
    transition: background 0.2s, color 0.2s;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.home-link-btn--outline:hover {
    background: var(--crunchy_dark);
    color: #fff;
}

/* Bouton retour en haut */
#totop {
    display: block;
    padding: 8px;
    font-size: 2rem;
    position: fixed;
    right: 20px;
    bottom: 20px;
    background: #000;
    color: #fff;
    z-index: 40;
    line-height: 1;
    border-radius: 6px;
    transition: opacity 0.3s;
    opacity: 0.4;
}

#totop:hover {
    opacity: 1;
}

/* ===================================
   7. ANIMATIONS
=================================== */
@keyframes titre {
    0%   { opacity: 0; transform: translateY(180px); }
    100% { opacity: 1; transform: translateY(0); }
}

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

@keyframes bounce {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(6px); }
}

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

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

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

@keyframes spin {
    to { transform: rotate(360deg); }
}

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

@keyframes repCountPop {
    0%   { transform: scale(1); }
    40%  { transform: scale(1.35); color: var(--crunchy_red); }
    100% { transform: scale(1); color: var(--crunchy_dark); }
}

.fade-in {
    opacity: 0;
    transform: translateY(20px);
    animation: fadeInUp 0.6s ease forwards;
}

/* ===================================
   8. SURHEADER (TOP BAR)
=================================== */
#surheader {
    background-color: #000000 !important;
    color: #fff;
    font-size: 0.86rem;
    padding: 10px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transform: translateZ(0);
    transition: background-color 0.3s ease;
}

#surheader ul {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    gap: 1.5rem;
}

#surheader li {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

#surheader i {
    color: white;
    font-weight: bold;
}

#surheader a {
    color: white;
    text-decoration: none;
    transition: color 0.3s ease;
    background: none;
}

#surheader a:hover {
    color: var(--crunchy_red);
    text-decoration: none;
}

#topsoc {
    display: flex;
    gap: 1rem;
}

#topsoc a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255,255,255,0.1);
    transition: all 0.3s ease;
}

#topsoc a:hover {
    background: var(--crunchy_red);
    transform: scale(1.1);
}

@media (max-width: 768px) {
    #surheader {
        font-size: 0.75rem;
        padding: 5px 10px;
    }

    #surheader .container {
        width: 100%;
        padding: 0 10px;
        flex-direction: row;
        justify-content: space-between;
        gap: 10px;
    }

    #surheader ul { gap: 0.3rem; }

    #surheader li {
        margin-right: 0;
        white-space: nowrap;
    }

    #topsoc {
        gap: 0;
        display: flex;
    }

    #topsoc li { margin-left: 0; }

    #topsoc a {
        width: 20px;
        height: 20px;
        font-size: 0.6rem;
        display: flex;
        align-items: center;
        justify-content: center;
    }
}

@media (max-width: 480px) {
    #surheader {
        font-size: 0.7rem;
        padding: 4px 5px;
        overflow: hidden;
    }

    #surheader .container {
        width: 100%;
        max-width: none;
        padding: 0 5px;
        margin: 0;
        display: flex;
        flex-direction: column;
        gap: 5px;
    }

    #surheader > div:first-child { order: 1; }

    #surheader > div:last-child {
        order: 2;
        text-align: center;
        width: 100%;
    }

    #surheader > div:first-child ul {
        gap: 0.3rem;
        margin: 0;
        justify-content: center;
    }

    #surheader li {
        white-space: nowrap;
        margin: 0;
    }

    #topsoc {
        gap: 8px;
        justify-content: center;
    }

    #topsoc a {
        width: 20px;
        height: 20px;
        font-size: 0.6rem;
    }
}

/* ===================================
   9. NAVIGATION PRINCIPALE
=================================== */
#nav {
    background-color: #000000;
    top: 0;
    z-index: 100;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: nowrap;
    padding-inline: 20px;
}

#top_logo {
    max-width: 120px;
    height: auto;
    transition: transform 0.3s ease;
}

#top_logo:hover {
    transform: scale(1.05);
}

#openmenu,
#closemenu {
    background: none;
    color: #ffffff;
    font-size: 1.5rem;
    cursor: pointer;
    transition: color 0.3s ease;
    padding: 0;
}

#openmenu:hover,
#closemenu:hover {
    color: var(--crunchy_red);
}

#mainnav {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, #f8f7f5 0%, #fff5f0 100%);
    z-index: 999;
    text-align: center;
    display: none;
    opacity: 0;
    transition: opacity 0.4s ease;
    text-transform: uppercase;
    font-weight: 600;
    padding-top: 50px;
    overflow-y: auto;
}

#mainnav.open {
    display: block;
    opacity: 1;
    color: black;
}

#mainnav ul {
    margin: 0;
    padding: 8px 0 20px;
    list-style: none;
    color: #1a1a1a;
}

#mainnav li {
    display: block;
    margin: 0;
    padding: 2px 0;
    color: #1a1a1a;
}

#mainnav li a {
    color: #ffffff;
    text-decoration: none;
    position: relative;
    font-size: 1rem;
    transition: color 0.3s ease;
    display: inline-block;
    padding: 6px 0;
}

#mainnav li a.activ {
    color: var(--crunchy_red);
    font-weight: 700;
}

#mainnav li a::after {
    content: '';
    position: absolute;
    width: 0;
    height: 3px;
    bottom: 2px;
    left: 0;
    background: linear-gradient(135deg, var(--crunchy_red), #ff8f4d);
    transition: width 0.3s ease;
}

#mainnav li a:hover::after,
#mainnav li a.activ::after {
    width: 100%;
}

#mainnav li a:hover {
    color: var(--crunchy_red);
}

#mainnav li a i {
    font-size: 1.3rem;
    margin: 0 10px;
}

/* Desktop nav ≥ 1200px */
@media (min-width: 1200px) {
    #openmenu,
    #closemenu {
        display: none !important;
    }

    #mainnav {
        position: static;
        width: auto;
        height: auto;
        background: none;
        padding: 0;
        flex: 1;
        display: flex;
        justify-content: center;
        opacity: 1;
        text-align: left;
        overflow-y: visible;
    }

    #mainnav ul {
        display: flex;
        flex-direction: row;
        gap: 2px;
        padding: 0;
        align-items: center;
        flex-wrap: nowrap;
    }

    #mainnav li {
        display: inline-flex;
        margin: 0;
        padding: 0;
        flex-shrink: 0;
    }

    #mainnav li a {
        font-size: 0.82rem;
        padding: 8px 10px;
        white-space: nowrap;
    }

    #mainnav li a::after {
        bottom: 4px;
        left: 10px;
        width: 0;
    }

    #mainnav li a:hover::after,
    #mainnav li a.activ::after {
        width: calc(100% - 20px);
    }

    #mainnav li a i {
        margin: 0;
        font-size: 1.2rem;
    }
}

/* Responsive ≤ 991px */
@media (max-width: 991px) {
    #closemenu {
        position: absolute;
        top: 20px;
        right: 20px;
        font-size: 2rem;
    }

    #mainnav li a i {
        display: block;
        font-size: 2rem;
        margin: 10px 0;
        color: black;
    }

    #mainnav li a {
                color: black;
    }

    #mainnavbas {
        text-align: center;
    }

    #mainnavbas li {
        display: block;
        margin: 5px 0;
        font-size: 0.9rem;
    }
}

/* ===================================
   10. NAVIGATION BAS DE PAGE
=================================== */
.surfootnav {
    background-color: #973500 !important;
    color: white;
    padding: 0;
    width: 100%;
    border-top: 3px solid var(--crunchy_red);
}

#navbas {
    background-color: #000000 !important;
    padding: 24px 0;
    width: 100%;
}

#mainnavbas { width: 100%; }

#mainnavbas ul {
    margin: 0;
    padding: 0;
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 20px;
    row-gap: 8px;
}

#mainnavbas li {
    display: inline-block;
    margin: 0;
    padding: 0;
}

#mainnavbas li a {
    color: #fff;
    text-decoration: none;
    position: relative;
    font-size: 0.9rem;
    font-weight: 500;
    padding: 6px 0;
    transition: color 0.3s ease;
    display: inline-block;
    background: none;
}

#mainnavbas li a:hover {
    color: #ffd280;
    background: none;
}

#mainnavbas li a.activ {
    color: #ffd280;
    font-weight: 700;
}

#mainnavbas li a::after {
    content: '';
    position: absolute;
    width: 0;
    height: 2px;
    bottom: 0;
    left: 0;
    background-color: #ffd280;
    transition: width 0.3s ease;
}

#mainnavbas li a:hover::after,
#mainnavbas li a.activ::after {
    width: 100%;
}

#mainnavbas img {
    height: 35px;
    transition: transform 0.3s ease;
}

#mainnavbas img:hover {
    transform: scale(1.05);
}

@media (min-width: 992px) {
    #mainnavbas {
        position: static;
        width: auto;
        height: auto;
        display: block;
        opacity: 1;
    }

    #mainnavbas li {
        display: inline-block;
        margin: 0 10px;
    }
}

/* ===================================
   11. HEADER / HERO
=================================== */
header {
    background: url(../img/darons_accueil.jpg) no-repeat 50% 50%;
    background-size: cover;
    background-attachment: fixed;
    height: calc(100vh - 100px);
    margin: 0 0 40px 0;
    padding: 0 0 10% 10%;
    position: relative;
    width: 100%;
    transform: translateZ(0);
    will-change: transform;
}

header::before {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.3);
    z-index: 1;
}

header h1 {
    font-size: 3rem;
    color: var(--crunchy_red);
    position: relative;
    z-index: 2;
    animation: titre ease 2s;
}

@media (min-width: 768px) {
    header h1 { font-size: 4rem; }
}

/* Hero home */
/* .hero {
    background: url(../img/darons_accueil.jpg) no-repeat 50% 50%;
    background-size: cover;
    background-attachment: fixed;
    min-height: calc(100vh - 100px);
    margin: 0;
    padding: 0;
    position: relative;
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
} */

.hero {
    background: #000 url(../img/darons_accueil.jpg) no-repeat center top;
    background-size: contain;
    min-height: calc(100vh - 100px);
    margin: 0;
    padding: 0;
    position: relative;
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}

@media (max-width: 900px) {
    .hero {
        background-attachment: scroll;
        aspect-ratio: 905 / 1280;
        min-height: auto;
    }

    .hero-content {
        margin-top: -50px;
    }
}

.hero::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom,
        rgba(0,0,0,0.1) 0%,
        rgba(0,0,0,0.15) 50%,
        rgba(0,0,0,0.7) 100%);
    z-index: 1;
}

.hero-content {
    position: relative;
    z-index: 2;
    padding: 0 8% 6% 8%;
    width: 100%;
}

.hero-text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
}

.hero-title {
    font-family: 'caramel', sans-serif;
    font-size: clamp(3rem, 12vw, 5rem);
    color: #c91e24;
    line-height: 1;
    animation: heroTitleIn 1s ease both;
    display: block;
    text-shadow: 3px 3px 12px rgba(0,0,0,0.5);
}

.hero-subtitle {
    font-family: 'dk_lemon_yellow_sunregular', sans-serif;
    font-size: clamp(1.6rem, 4vw, 3rem);
    color: #fff;
    text-shadow: 2px 2px 6px rgba(0,0,0,0.6);
    animation: heroSubIn 1s 0.3s ease both;
    display: block;
}

.hero-ctas {
    display: flex;
    gap: 1rem;
    margin-top: 1.5rem;
    flex-wrap: wrap;
    animation: heroCTAsIn 1s 0.6s ease both;
}

.hero-btn {
    display: inline-block;
    padding: 12px 28px;
    border-radius: 3px;
    font-weight: 700;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    text-decoration: none !important;
    transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
    background: none;
}

.hero-btn--primary {
    background: var(--crunchy_red);
    color: #fff;
    border: 2px solid var(--crunchy_red);
    box-shadow: 0 4px 20px rgba(219,18,3,0.4);
}

.hero-btn--primary:hover {
    background: var(--crunchy_dark);
    border-color: var(--crunchy_dark);
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(219,18,3,0.5);
    color: #fff;
}

.hero-btn--secondary {
    background: transparent;
    color: #fff;
    border: 2px solid rgba(255,255,255,0.7);
}

.hero-btn--secondary:hover {
    background: rgba(255,255,255,0.15);
    border-color: white;
    transform: translateY(-2px);
    color: #fff;
}

.hero-scroll-hint {
    position: relative;
    z-index: 2;
    text-align: center;
    padding: 20px;
    color: rgba(255,255,255,0.6);
    font-size: 0.75rem;
    letter-spacing: 2px;
    text-transform: uppercase;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    animation: bounce 2s 2s infinite;
}

@media (max-width: 768px) {
    .hero-content { padding: 0 6% 8% 6%; }

    .hero-ctas {
        flex-direction: column;
        align-items: flex-start;
    }

    .hero-btn {
        width: 100%;
        text-align: center;
    }
}

@media (max-width: 480px) {
    .hero {
        background-attachment: scroll;
        aspect-ratio: 905 / 1280;
        min-height: auto;
    }

    .hero-content {
        margin-top: -50px;
    }
}

/* ===================================
   12. FOOTER
=================================== */
#linkblink {
    display: block;
    margin-top: auto;
}

#headpart {
    display: flex;
    flex-direction: column;
    flex: 1 0 auto;   /* prend toute la hauteur restante dans body */
}

#main {
    flex: 1 0 auto;   /* le contenu de la page pousse le footer vers le bas */
}

footer {
    }

footer {
    background-color: #000000;
    color: rgba(255,255,255,0.8);
    font-size: 0.9rem;
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;   /* le footer garde sa taille naturelle, ne s'écrase pas */

}

footer a {
    color: rgba(255,255,255,0.8);
    text-decoration: none;
}

footer a:hover {
    text-decoration: none;
    color: yellow;
}

footer .bigfoot {
    background-color: var(--crunchy_dark);
    color: #000;
}

.surfoot {
    background: #F7F3F0;
    color: #1a1a1a;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
}

.surfootnav {
    display: flex;
}

/* ===================================
   13. SECTION STRUCTURE COMMUNE
=================================== */
.home-main {
    background: #ededed;
}

.home-section {
    padding-block: 50px;
}

.home-section--dark {
    background: var(--crunchy_dark);
}

.section-header {
    margin-bottom: 40px;
    text-align: center;
}

.section-title {
    font-family: 'caramel', 'Montserrat', sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    color: var(--crunchy_dark);
    margin-bottom: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.section-header--light .section-title {
    color: #fff;
}

.section-line {
    width: 60px;
    height: 3px;
    background: var(--crunchy_red);
    margin: 0 auto;
    border-radius: 2px;
}

.section-line--light {
    background: rgba(255,255,255,0.5);
}

.section-footer {
    text-align: center;
    margin-top: 40px;
}

/* Heros de pages (contact, blog, vidéos…) — base commune */
.contact-hero,
.lieux-hero,
.videos-hero,
.blog-hero,
.rep-hero,
.dates-hero,
.avis-hero,
.interactive-hero,
.cd-hero,
.presse-hero,
.photos-hero {
    background: #000;
    padding-block: 10px 36px;
    position: relative;
    overflow: hidden;
}

/* Trait décoratif bas */
.contact-hero::after,
.lieux-hero::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 3px;
    background: linear-gradient(90deg, var(--crunchy_red), var(--crunchy_brun), transparent);
}

/* Cercle décoratif haut-droite */
.contact-hero::before,
.lieux-hero::before {
    content: '';
    position: absolute;
    top: -60px;
    right: -60px;
    width: 300px;
    height: 300px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(219,18,3,0.12) 0%, transparent 70%);
    pointer-events: none;
}

/* ===================================
   14. INTRO HOME
=================================== */
.home-intro {
    background: linear-gradient(135deg, #d7cec8 0%, #d2b8ab 100%);
    padding: 50px 20px;
    position: relative;
    overflow: hidden;
}

.home-intro::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -5%;
    width: 400px;
    height: 400px;
    background: radial-gradient(circle, rgba(255,107,53,0.08) 0%, transparent 70%);
    border-radius: 50%;
    z-index: 0;
}

.intro-content {
    max-width: 900px;
    margin: 0 auto;
    position: relative;
    z-index: 1;
    animation: fadeInUp 0.5s ease-out;
}

.intro-header {
    margin-bottom: 30px;
}

.intro-badge {
    display: inline-block;
    background: #fff;
    color: #c23d0a;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    margin-bottom: 12px;
    box-shadow: 0 2px 8px rgba(255,107,53,0.1);
}

.intro-title {
    font-size: 38px;
    font-weight: 700;
    color: #1a1a1a;
    line-height: 1.2;
}

.intro-title strong {
    color: #c23d0a;
}

.intro-body {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 30px;
    align-items: start;
    margin-top: 28px;
    font-size: 1.05rem;
    line-height: 1.8;
    color: #444;
}

.intro-text {
    font-size: 15px;
    line-height: 1.7;
    color: #555;
}

.intro-text p { margin-bottom: 14px; }
.intro-text p:last-child { margin-bottom: 0; }
.intro-text strong { color: #c23d0a; }

.intro-side {
    background: #fff;
    padding: 24px;
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.1);
    border: 1px solid #f0e8e0;
}

.musicians {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.musician {
    padding-bottom: 16px;
    border-bottom: 1px solid #f0f0f0;
}

.musician:last-child {
    padding-bottom: 0;
    border-bottom: none;
}

.musician-name {
    font-weight: 700;
    color: #1a1a1a;
    font-size: 14px;
    margin-bottom: 4px;
}

.musician-role {
    font-size: 13px;
    color: #999;
    font-style: italic;
}

.intro-footer {
    display: flex;
    gap: 16px;
    margin-top: 28px;
    flex-wrap: wrap;
    align-items: center;
}

.intro-footer-text {
    font-size: 13px;
    color: #000;
    font-style: italic;
}

.social-links {
    display: flex;
    gap: 10px;
}

.social-link {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: #D21103;
    font-weight: 600;
    font-size: 14px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.08);
    transition: all 0.3s ease;
    border: 1px solid #f0f0f0;
}

.social-link:hover {
    background: #D21103;
    color: #fff;
    transform: scale(1.1);
    border-color: #D21103;
}

.intro-cta {
    display: flex;
    gap: 12px;
    margin-top: 24px;
    flex-wrap: wrap;
    align-items: flex-start;
}

@media (max-width: 640px) {
    .home-intro { padding: 40px 20px; }
    .intro-title { font-size: 28px; }

    .intro-body {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .intro-footer {
        flex-direction: column;
        align-items: flex-start;
    }

    .intro-footer-text {
        order: 2;
        margin-top: 8px;
    }

    .social-links { order: 1; }

    .intro-cta { flex-direction: column; }

    .btn {
        width: 100%;
        justify-content: center;
    }
}

/* ===================================
   15. FORMULAIRES
=================================== */
#form_wrapper {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 20px;
}

input,
textarea {
    font: 1em sans-serif;
    width: 100%;
    box-sizing: border-box;
    border: 1px solid #999;
    padding: 10px;
    border-radius: 5px;
    transition: color 0.3s ease, background-color 0.3s ease, transform 0.3s ease;
    background-color: #f8f8f8;
}

input:focus,
textarea:focus {
    border-color: var(--crunchy_red);
    box-shadow: 0 4px 6px rgba(251,67,10,0.1);
    outline: none;
    background-color: #fff;
}

button,
input[type="submit"] {
    background-color: var(--crunchy_red);
    color: white;
    border: none;
    padding: 12px 24px;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

button:hover,
input[type="submit"]:hover {
    background-color: #7a2103;
}

input[type=text],
input[type=email],
textarea,
label {
    width: 100%;
}

#CommentForm {
    padding-top: 1.5rem;
    max-width: 100%;
    overflow-x: hidden;
}

#CommentForm input,
#CommentForm textarea,
#CommentForm select {
    max-width: 100% !important;
    width: 100%;
    box-sizing: border-box;
}

.CommentFormHP {
    position: absolute;
    left: -10000px;
}

/* Audios */
.lesaudios {
    display: flex;
    flex-wrap: wrap;
}

.unaudio { padding: 20px; }

@media (min-width: 768px) {
    .unaudio { width: 33%; }
}

audio::-webkit-media-controls-enclosure   { overflow: hidden; }
audio::-webkit-media-controls-download-button,
audio::-webkit-media-controls-rate-button { display: none; }

/* Commentaires */
.pending.success {
    padding: 1rem;
    color: #0f5132;
    background-color: #d1e7dd;
    border-color: #badbcc;
    margin-bottom: 1rem;
    border-radius: 0.25rem;
}

.CommentList { margin: 1em 0 0 0; }

.CommentListItem {
    list-style: none;
    margin: 0;
    border-top: 1px dotted #aaa;
    padding: 1em 0 1px 0;
    background: #fff;
}

.CommentListItem ul { padding-left: 1.5em; }

.CommentListItem ul li {
    padding-left: 1.5rem;
    border-left: 3px solid var(--crunchy_brun);
}

.CommentListItem p { margin-top: 0; }

.CommentHeader {
    margin: 0 0 0.4rem 0;
    font-weight: bold;
    font-size: 0.85rem;
    color: #325068;
}

.CommentText { color: #666; }

a.CommentActionReply {
    color: #325068;
    text-decoration: none;
    font-family: 'Montserrat', cursive;
    display: inline-block;
}

a.CommentActionReply::before {
    content: "";
    font-family: "Font Awesome 5 Pro";
    padding-right: 6px;
}

/* Newsletter bas de page */
#bottom_news label { padding-top: 10px; }

#bottom_news h3 {
    font-family: 'caramel', sans-serif;
    font-size: 1.6rem;
    font-weight: 400;
    color: var(--crunchy_dark);
    margin-bottom: 8px;
    line-height: 1.2;
}

#bottom_news p {
    color: #555;
    font-size: 0.9rem;
    line-height: 1.6;
}

#bottom_news label {
    color: #444;
    font-size: 0.82rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding-top: 0;
    margin-bottom: 6px;
    display: block;
}

#bottom_news .form-control {
    background: #fff;
    border: 1px solid #ccc;
    color: #1a1a1a;
    border-radius: 4px;
    padding: 10px 14px;
    font-size: 0.9rem;
    transition: border-color 0.2s, background 0.2s;
}

#bottom_news .form-control::placeholder { color: #aaa; }

#bottom_news .form-control:focus {
    background: #fff;
    border-color: var(--crunchy_dark);
    outline: none;
    box-shadow: none;
}

#bottom_news .button {
    background: var(--crunchy_dark);
    color: #fff;
    border: none;
    padding: 12px 28px;
    border-radius: 4px;
    font-weight: 700;
    font-size: 0.88rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    cursor: pointer;
    transition: background 0.2s, transform 0.2s;
    white-space: nowrap;
}

#bottom_news .button:hover {
    background: var(--crunchy_red);
    transform: translateY(-2px);
}

/* ===================================
   16. DATES & CONCERTS
=================================== */
.imgdate {
    width: 200px;
    object-fit: contain;
}

.pdate {
    font-weight: bold;
    font-size: 1.1rem;
    width: 100%;
    border-bottom: #b10f04f5 solid 2px;
}

.plieu {
    text-transform: uppercase;
    text-decoration: underline;
}

.unedate {
    box-shadow: 0 0 10px #878787;
    padding: 20px;
}

.gpsbutton {
    display: block;
    text-align: center;
    background: #32a421;
    border: black 1px solid;
    color: #fff;
    margin-bottom: 10px;
    border-radius: 3px;
    width: 30%;
    margin-inline: auto;
    padding-block: 5px;
    box-shadow: 0 0 10px #878787;
    transition: background 0.3s, color 0.3s;
}

.vid_home .gpsbutton,
.dates_home .gpsbutton,
.avis .gpsbutton {
    width: 70%;
    margin-inline: auto;
    margin-top: 15px;
}

.gpsbutton:hover {
    background: #e67e22;
    color: #000;
    text-decoration: none !important;
}

.gpsbutton a:hover { text-decoration: none; }

@media (min-width: 768px) {
    .unedate {
        display: flex;
        margin-block: 20px;
        background: #fff;
    }

    .dateinfos {
        padding-inline: 30px;
        padding-top: 20px;
        width: 100%;
    }
}

.row_dates_home { display: block; }

@media (min-width: 768px) {
    .row_dates_home { display: flex; }
}

.unedatehome {
    padding-inline: 12px;
    background-color: white;
    box-shadow: 0 4px 6px rgba(251,67,10,0.1);
    margin-inline: 6px;
}

.imgdatehome {
    width: 100%;
    padding-top: 20px;
}

.vid_home  { padding-block: 40px; margin-inline: auto; }
.dates_home { padding-block: 40px; padding-inline: auto; }

/* Home dates section */
.home-dates { background: var(--crunchy_dark); }

.dates-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 20px;
}

.date-card {
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(0,0,0,0.08);
    transition: transform 0.25s, box-shadow 0.25s;
    display: flex;
    flex-direction: column;
}

.date-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 28px rgba(151,53,0,0.15);
}

.date-card-img {
    width: 100%;
    height: 220px;
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.date-card-img img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

.date-card-body {
    display: flex;
    padding: 20px;
    gap: 16px;
    flex: 1;
}

.date-cal {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    border-right: 2px solid #f0ebe6;
    padding-right: 16px;
    font-family: 'caramel', sans-serif;
    line-height: 1.1;
    color: var(--crunchy_dark);
    gap: 2px;
}

.date-cal-joursem {
    font-size: 0.7rem;
    text-transform: uppercase;
    color: #999;
    letter-spacing: 0.5px;
}

.date-cal-jour {
    font-size: 2.4rem;
    font-weight: 700;
    color: var(--crunchy_red);
    line-height: 1;
}

.date-cal-mois {
    font-size: 1rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.date-cal-annee {
    font-size: 0.8rem;
    color: #aaa;
}

.date-infos { flex: 1; }

.date-lieu {
    font-weight: 700;
    font-size: 1rem;
    color: var(--crunchy_dark);
    text-transform: uppercase;
    margin-bottom: 6px;
    letter-spacing: 0.5px;
}

.date-desc {
    font-size: 0.88rem;
    color: #666;
    margin-bottom: 0;
    line-height: 1.5;
}

.no-dates {
    text-align: center;
    color: rgba(255,255,255,0.6);
    font-style: italic;
    padding: 30px 0;
}

.home-dates .section-title  { color: #fff; }
.home-dates .section-line   { background: rgba(255,255,255,0.5); }
.home-dates .home-link-btn  { background: rgba(255,255,255,0.15); border: 2px solid rgba(255,255,255,0.5); }
.home-dates .home-link-btn:hover { background: rgba(255,255,255,0.25); }

/* Dates calendar (composant ccdate) */
.uneccdate {
    margin-block-end: 1.1rem;
    padding: 1.2rem;
    border: 1px solid #ededed;
    border-radius: 0.75rem;
    background: white;
    box-shadow: 0 0 10px oklch(from black l c h / .5);
    display: grid;
    grid-template-columns: 120px 1fr;
    transition: background-color 0.3s, box-shadow 0.3s;

    @media (width > 800px) {
        grid-template-columns: 120px 1fr 150px;
        padding-inline: 1.5rem;
    }
}

@media (hover: hover) {
    .uneccdate:hover {
        background-color: hsl(20, 60%, 97%);
        box-shadow: 0 0 10px oklch(from var(--crunchy_brun) l c h / .9);
    }
}

.ccpdate {
    padding-inline-end: 1.2rem;
    text-align: center;
    line-height: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-content: center;
    gap: 0.2rem;
    font-family: 'caramel';

    span {
        &.p_joursem { font-size: 1.1rem; }
        &.p_jour    { font-size: 1.9rem; }
        &.p_mois    { font-size: 1.2rem; }
        &.p_annee   { font-size: 1.1rem; }
    }
}

.ccdate_infos {
    position: relative;
    padding-inline: 1.2rem;

    &::before {
        content: '';
        position: absolute;
        z-index: 5;
        left: 0;
        top: 0;
        height: 100%;
        width: 2px;
        background-image: linear-gradient(to bottom,
            hsl(from var(--crunchy_brun) h s l / 0),
            var(--crunchy_brun),
            hsl(from var(--crunchy_brun) h s l / 0));
        background-size: cover;
    }

    h2 {
        font-size: clamp(1.1rem, 0.92rem + 0.91vw, 1.5rem);
        margin-bottom: 0.4rem;
        color: red;
        font-family: 'caramel';
    }

    p { margin-bottom: 0.3rem; }
}

/* Image du concert (champ img_date) : sous les infos en mobile, à droite en PC */
.ccdate_img {
    grid-column: 1 / -1;
    margin-block-start: 1rem;
    display: flex;
    justify-content: center;

    img {
        width: 100%;
        max-width: 320px;
        max-height: 180px;
        object-fit: cover;
        border-radius: 0.6rem;
        display: block;
        box-shadow: 0 0 8px oklch(from black l c h / .3);
    }
}

@media (width > 800px) {
    .ccdate_img {
        grid-column: 3;
        grid-row: 1;
        margin-block-start: 0;
        justify-content: flex-end;
        align-self: center;
    }

    .ccdate_img img {
        max-width: 150px;
        max-height: 110px;
    }
}

.ccdate_butts {
    grid-area: 2 / 1 / 3 / 3;
    padding-inline: 1.5rem;
    padding-block-start: 1rem;
    display: flex;
    align-content: center;
    justify-content: center;
    justify-items: center;
    align-items: center;

    a,
    button {
        display: inline-block;
        height: fit-content;
        width: auto;
        padding-inline: 1rem;
        margin: 0;

        svg {
            width: 30px;
            height: 30px;
            fill: black;
            display: block;
            margin-inline: auto;
        }
    }

    @media (width > 800px) {
        grid-area: 1 / 3 / 2 / 4;
        gap: 0.8rem;
        flex-direction: column;
        padding-block-start: 0;
        padding-inline: 1.2rem 0;
    }
}

/* Page dates dédiée */
.dates-section {
    background: #ededed;
    padding-block: 50px;
}

.dates-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.dates-card-anim {
    opacity: 0;
    animation: dateCardIn 0.45s ease forwards;
}

.dates-gps-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 18px;
    background: var(--crunchy_dark);
    color: #fff;
    border-radius: 6px;
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s;
    background-image: none !important;
    white-space: nowrap;
}

.dates-gps-btn svg {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.dates-gps-btn:hover {
    background: var(--crunchy_red);
    transform: translateY(-2px);
    color: #fff;
    text-decoration: none !important;
}

.dates-empty {
    text-align: center;
    padding: 60px 20px;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.06);
}

.dates-empty-icon {
    font-size: 3rem;
    color: #ccc;
    margin-bottom: 20px;
}

.dates-empty-title {
    font-family: 'caramel', sans-serif;
    font-size: 1.6rem;
    color: var(--crunchy_dark);
    margin-bottom: 12px;
}

.dates-empty-text {
    color: #888;
    font-size: 0.95rem;
    margin-bottom: 28px;
}

.dates-empty-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 28px;
    background: var(--crunchy_dark);
    color: #fff;
    border-radius: 6px;
    font-weight: 700;
    font-size: 0.88rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s;
    background-image: none !important;
}

.dates-empty-btn:hover {
    background: var(--crunchy_red);
    transform: translateY(-2px);
    color: #fff;
}

.dates-body-note {
    margin-top: 40px;
    padding: 24px 28px;
    background: #fff;
    border-radius: 8px;
    border-left: 4px solid var(--crunchy_brun);
    font-size: 0.92rem;
    color: #555;
    line-height: 1.7;
    box-shadow: 0 2px 12px rgba(0,0,0,0.05);
}

@media (max-width: 575px) {
    .dates-section { padding-block: 32px; }

    .date-card-body {
        flex-direction: column;
        align-items: flex-start;
    }

    .date-cal {
        flex-direction: row;
        border-right: none;
        border-bottom: 2px solid #f0ebe6;
        padding-right: 0;
        padding-bottom: 12px;
        margin-bottom: 12px;
        gap: 8px;
        width: 100%;
        align-items: center;
    }

    .date-cal-joursem { display: none; }

    .date-cal-jour {
        font-size: 1.8rem;
        min-width: 45px;
        line-height: 1;
    }

    .date-cal-mois {
        font-size: 0.85rem;
        min-width: 40px;
        line-height: 1.2;
    }

    .date-cal-annee {
        font-size: 0.75rem;
        margin-left: auto;
    }
}

/* ===================================
   17. VIDÉOS
=================================== */
.videos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1.2rem;
}

.unevideo {
    width: 100%;
    aspect-ratio: 16/9;
}

.unevideo iframe {
    width: 100%;
    height: 100%;
    aspect-ratio: 16/9;
}

.home-videos .section-title { color: #fff; }

.video-main {
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 8px 40px rgba(0,0,0,0.4);
    margin-bottom: 20px;
}

.videos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 16px;
    margin-top: 16px;
}

.videos-grid .ratio {
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 16px rgba(0,0,0,0.3);
}

/* Page vidéos */
.videos-page { background: #1a1a1a; min-height: 60vh; }

.videos-intro {
    background: var(--crunchy_dark);
    padding-block: 40px;
}

.videos-intro-text {
    display: flex;
    align-items: flex-start;
    gap: 20px;
    color: rgba(255,255,255,0.9);
}

.videos-intro-icon {
    font-size: 3rem;
    color: var(--crunchy_red);
    line-height: 1;
    flex-shrink: 0;
    margin-top: 4px;
}

.videos-intro-lead {
    font-family: 'caramel', sans-serif;
    font-size: 1.4rem;
    color: #fff;
    margin-bottom: 6px;
}

.videos-intro-text p {
    margin: 0 0 4px 0;
    font-size: 0.95rem;
    line-height: 1.6;
    color: rgba(255,255,255,0.75);
}

.videos-grid-wrap {
    padding-block: 40px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.vid-item {
    position: relative;
    cursor: pointer;
    border-radius: 6px;
    overflow: hidden;
    background: #000;
}

.vid-item--featured {
    grid-column: span 2;
    grid-row: span 2;
}

.vid-thumb {
    position: relative;
    width: 100%;
    aspect-ratio: 16/9;
    overflow: hidden;
}

.vid-item--featured .vid-thumb {
    aspect-ratio: 16/9;
    height: 100%;
}

.vid-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease, filter 0.4s ease;
    filter: brightness(0.85);
}

.vid-item:hover .vid-thumb img {
    transform: scale(1.04);
    filter: brightness(0.6);
}

.vid-play-btn {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.vid-play-btn svg {
    width: 56px;
    height: 40px;
    transition: transform 0.2s, opacity 0.2s;
    opacity: 0.85;
    filter: drop-shadow(0 2px 8px rgba(0,0,0,0.5));
}

.vid-item--featured .vid-play-btn svg {
    width: 80px;
    height: 56px;
}

.vid-play-bg   { fill: var(--crunchy_red); }
.vid-play-arrow { fill: #fff; }

.vid-item:hover .vid-play-btn svg {
    transform: scale(1.12);
    opacity: 1;
}

.vid-featured-badge {
    position: absolute;
    top: 12px;
    left: 12px;
    background: var(--crunchy_red);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    padding: 4px 10px;
    border-radius: 3px;
}

.vid-lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.vid-lightbox.open {
    opacity: 1;
    pointer-events: all;
}

.vid-lightbox-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.92);
}

.vid-lightbox-content {
    position: relative;
    z-index: 1;
    width: min(900px, 95vw);
}

.vid-lightbox-close {
    position: absolute;
    top: -44px;
    right: 0;
    background: none;
    border: none;
    color: #fff;
    font-size: 2.4rem;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    opacity: 0.7;
    transition: opacity 0.2s;
}

.vid-lightbox-close:hover {
    opacity: 1;
    background: none;
}

.videos-page-wrap {
    background: #1a1a1a;
    padding-block: 30px 50px;
}

.videos-page-wrap .videos-grid-wrap { padding-block: 0; }

@media (max-width: 900px) {
    .videos-grid-wrap { grid-template-columns: repeat(2, 1fr); }
    .vid-item--featured { grid-column: span 2; grid-row: span 1; }
}

@media (max-width: 768px) {
    .home-section { padding-block: 50px; }
    .dates-grid   { grid-template-columns: 1fr; }
    .videos-grid  { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
    .videos-grid-wrap { grid-template-columns: 1fr; gap: 8px; }
    .vid-item--featured { grid-column: span 1; }
    .videos-intro-icon { display: none; }
}

/* ===================================
   18. AVIS / REVIEWS
=================================== */
/* Slider avis */
.tiny_wrap {
    display: grid;
    grid-template-columns: 45px 1fr 45px;
}

.tiny_butt_wrap {
    width: 45px;
    display: grid;
    place-content: center;
}

.slider-container { overflow: hidden; }

.review-slider {
    display: flex;
    background-color: #ededed;
}

.review-card.tns-item {
    flex: 0 1 auto;
    background: #ededed;
    padding: 10px;
}

.review_card_content {
    padding: 24px;
    height: 100%;
    background-color: white;
    box-shadow: 0 4px 12px rgba(0,0,0,0.07);
    border-radius: 8px;
    border-top: 3px solid var(--crunchy_brun);
}

.review-card:hover {
    transform: scale(1.03);
    transition: transform 0.3s ease, box-shadow 0.3s;
}

.review-header {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
}

.review-header img {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--crunchy_brun);
}

.review-header h4 {
    margin: 0 0 3px 0;
    font-size: 0.95rem;
    color: #333;
    font-weight: 700;
}

.stars { margin: 0; }

.star { font-size: 1.2rem; }
.star.filled { color: #ffd700; }
.star.empty  { color: #e0e0e0; }

.review-text {
    font-size: 0.9rem;
    line-height: 1.6;
    color: #555;
    margin: 0 0 12px 0;
    font-style: italic;
}

.review-text.has-text::before {
    content: '"';
    color: var(--crunchy_brun);
    font-size: 1.4rem;
    line-height: 0;
    vertical-align: -0.3em;
    margin-right: 4px;
}

.review-content { text-align: left; margin-bottom: 15px; }

.review-date {
    font-size: 0.78rem;
    color: #bbb;
    margin: 0;
    text-align: right;
}

.toggle-text {
    background: none;
    border: none;
    color: #2196f3;
    cursor: pointer;
    padding: 5px 0;
    font-size: 0.9rem;
    text-decoration: underline;
}

.toggle-text:hover { color: #1976d2; }

.nav-button {
    background: rgb(197,193,193);
    border: none;
    padding: 0;
    width: 45px;
    height: 45px;
    aspect-ratio: 1/1;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    cursor: pointer;
    font-size: 1.2rem;
    margin-block: auto;
    transition: background-color 0.3s ease;
}

.nav-button[disabled]              { opacity: 3; cursor: default; }
.nav-button:not([disabled]):hover  { background-color: #f3ce94; }
.nav-button[disabled]:hover        { background: rgb(197,193,193); }

/* Moyenne étoiles */
.avis-moyenne {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 14px;
}

.avis-moyenne-stars { display: flex; gap: 2px; }
.avis-moyenne-stars .star { font-size: 1.6rem; }
.avis-moyenne-stars .star.filled { color: #ffd700; }
.avis-moyenne-stars .star.empty  { color: #e0e0e0; }
.avis-moyenne-stars .star.half {
    background: linear-gradient(90deg, #ffd700 50%, #e0e0e0 50%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

.avis-moyenne-note {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--crunchy_dark);
    font-family: 'trends', sans-serif;
}

.avis-moyenne-count { font-size: 0.85rem; color: #888; }

/* Teaser home avis */
.home-avis        { background: #f7f3f0; }
.home-avis-teaser { background: #fff; padding-block: 60px; }

.avis-teaser-header {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 40px;
}

.avis-teaser-title-wrap .section-title { margin-bottom: 8px; }

.avis-teaser-score {
    display: flex;
    align-items: center;
    gap: 14px;
    background: #f8f8f8;
    border-radius: 10px;
    padding: 14px 20px;
    border: 1px solid #eee;
}

.avis-score-note {
    font-family: 'trends', sans-serif;
    font-size: 2.8rem;
    color: var(--crunchy_dark);
    line-height: 1;
}

.avis-score-right {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* Étoiles mutualisées (teaser, card, hero) */
.avis-score-stars .star.filled,
.avis-card-stars .star.filled,
.avis-hero-stars .star.filled  { color: #f5a623; }

.avis-score-stars .star.half,
.avis-hero-stars .star.half    { color: #f5a623; opacity: 0.6; }

.avis-score-stars .star.empty,
.avis-card-stars .star.empty   { color: #ddd; }
.avis-hero-stars .star.empty   { color: rgba(255,255,255,0.3); }

.avis-score-stars .star { font-size: 1.1rem; }
.avis-card-stars .star  { font-size: 0.85rem; }
.avis-hero-stars .star  { font-size: 1.4rem; }

.avis-score-count { font-size: 0.78rem; color: #888; font-weight: 600; }

.avis-teaser-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 24px;
    margin-bottom: 36px;
}

.avis-teaser-card {
    background: #fafafa;
    border-radius: 10px;
    padding: 24px;
    border: 1px solid #efefef;
    display: flex;
    flex-direction: column;
    gap: 12px;
    transition: box-shadow 0.2s, transform 0.2s;
}

.avis-teaser-card:hover {
    box-shadow: 0 6px 24px rgba(0,0,0,0.08);
    transform: translateY(-2px);
}

.avis-card-header { display: flex; align-items: center; gap: 12px; }

.avis-card-avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}

.avis-card-name { font-weight: 700; font-size: 0.9rem; color: #1a1a1a; }

.avis-card-text,
.avis-card-text--full {
    font-size: 0.88rem;
    color: #555;
    line-height: 1.6;
    flex: 1;
    margin: 0;
    font-style: italic;
}

.avis-card-text--full { line-height: 1.65; }

.avis-card-text--empty {
    font-size: 0.8rem;
    color: #bbb;
    font-style: italic;
    margin: 0;
}

.avis-card-date { font-size: 0.75rem; color: #aaa; margin: 0; }

.avis-teaser-footer {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: center;
}

/* Hero page avis */
.avis-hero { padding-block: 40px 36px; }

.avis-hero-score {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 16px;
    flex-wrap: wrap;
}

.avis-hero-note {
    font-family: 'trends', sans-serif;
    font-size: 3rem;
    color: #fff;
    line-height: 1;
}

.avis-hero-count { font-size: 0.9rem; color: rgba(255,255,255,0.75); font-weight: 600; }

/* Page dédiée avis */
.avis-page-section { background: #ededed; padding-block: 50px; }

.avis-page-top {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 32px;
}

.avis-page-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
}

.avis-page-card {
    background: #fff;
    border-radius: 10px;
    padding: 22px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.05);
    transition: box-shadow 0.2s, transform 0.2s;
}

.avis-page-card:hover {
    box-shadow: 0 6px 20px rgba(0,0,0,0.1);
    transform: translateY(-2px);
}

/* ===================================
   19. BLOG
=================================== */
.introblog {
    font-weight: bold;
    color: var(--crunchy_brun);
    padding-bottom: 0.5rem;
}

.type_content.container {
    background: #fff;
    padding: 50px;
    box-shadow: 0 0 20px 6px rgba(0,0,0,0.12);
}

.type_content h1 {
    color: var(--crunchy_red);
    font-weight: bolder;
}

.unhpost {
    padding-block: 0.8rem 2.5rem;

    img {
        display: block;
        width: min(430px, 100%);
        margin-bottom: 0.6rem;
    }

    p:last-of-type { padding-bottom: 0; }

    & + .unhpost {
        background: linear-gradient(to right, #751e01, rgba(117,30,1,.5) 30%, rgba(117,30,1,0) 50%) no-repeat left top / 100% 2px;
    }
}

.post_title {
    color: #325068;
    font-size: 2rem;
    font-weight: bold;
}

@media screen and (min-width: 992px) {
    .unhpost img { width: 60%; }
}

.unhpost:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
}

.zipost {
    position: relative;
    z-index: 0;
}

.zipost h1 { margin-bottom: 0.1em; color: #325068; }
.zipost h2,
.zipost h3 { color: #325068; }

.zipost .pbg,
.unhpost .pbg {
    position: absolute;
    left: -30px;
    top: -60px;
    width: 100%;
    height: 100%;
    font-family: "Montserrat", cursive;
    z-index: -1;
    font-size: 15em;
    line-height: 1em;
    font-weight: bold;
    color: rgba(232,176,4,0.3);
    overflow: hidden;
}

.hpost_data {
    color: #999;
    font-size: 0.95rem;
    background: rgba(255,255,255,0.6);
}

.hpost_data a { color: #999; text-decoration: none; }
.hpost_data a:hover { color: #325068; }
.zipost .hpost_data { margin-bottom: 1rem; }

p.lire_suitep { margin-bottom: 0; }

a.liresuite {
    display: inline-block;
    color: #325068;
    padding: 5px 15px;
    border: 1px solid #325068;
    text-decoration: none;
    font-size: 1rem;
    font-weight: 400;
    letter-spacing: 1px;
    position: relative;
    z-index: 10;
    transition: all 0.3s;
    overflow: hidden;
}

a.liresuite::after {
    content: "";
    position: absolute;
    background: var(--crunchy_brun);
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    transform: scaleX(0);
    transform-origin: right;
    transition: transform 0.3s;
}

a.liresuite:hover,
a.liresuite:focus { color: #fff; box-shadow: 0 8px 15px rgba(0,0,0,0.26); }

a.liresuite:hover::after,
a.liresuite:focus::after { transform: scaleX(1); transform-origin: left; }

.page_inter {
    background: #fff;
    box-shadow: 0 0 20px 6px rgba(0,0,0,0.12);
    font-size: calc(1rem + 1.5vw);
    color: #325068;
    font-family: "Montserrat", cursive;
    padding: 1.5rem 1rem;
}

.page_inter p { margin: 0; }

@media screen and (min-width: 992px) {
    .page_inter { font-size: 2rem; }
}

.sharesocs {
    font-family: "Montserrat", cursive;
    color: #888;
    background: rgba(255,255,255,0.6);
}

.sharesocs span {
    display: inline-block;
    padding-left: 6px;
    vertical-align: middle;
}

.sharesocs span a {
    font-size: 0.75rem;
    border-radius: 50%;
}

lite-youtube { margin: 2rem auto; }

.recent_title {
    display: inline-block;
    color: #325068;
    text-decoration: none !important;
    padding-bottom: 4px;
    font-weight: 500;
    position: relative;
    z-index: 0;
}

.recent_title::after {
    content: "";
    position: absolute;
    background: var(--crunchy_brun);
    bottom: 0;
    left: 0;
    width: 20%;
    height: 2px;
    z-index: -1;
    transition: all 0.3s;
}

.recent_title:hover::after { width: 100%; }

.recentdata {
    color: #325068;
    font-family: "Montserrat", cursive;
    font-size: 1rem;
    margin: 0;
    letter-spacing: 1px;
}

.recentcats { font-size: 0.95rem; color: #9a9a9a; }
.recentcats a { color: #9a9a9a; text-decoration: none; }
.recentcats a:hover { text-decoration: underline; }

.launch_newsletter:hover { text-decoration-color: var(--crunchy_brun); }

.right_launch {
    display: block;
    position: relative;
    margin-bottom: 1.5rem;
    font-size: 1.5rem;
    line-height: 1.5rem;
    font-family: "Montserrat", cursive;
    margin-top: 2.5rem;
    padding-left: 35px;
}

@media screen and (min-width: 992px) {
    .right_launch { margin-top: 3px; }
}

.right_launch::after {
    content: "";
    font-family: "Font Awesome 5 Pro";
    font-weight: 700;
    color: var(--crunchy_brun);
    position: absolute;
    left: 0;
    top: 0;
}

.right_pave h3 { margin-bottom: 0.8rem; }
.right_pave li { list-style: none; }

#right_cats li {
    padding: 3px 0 3px 10px;
    border-left: 8px solid var(--crunchy_brun);
    margin-bottom: 4px;
    position: relative;
    z-index: 0;
    overflow: hidden;
}

#right_cats li a { color: #325068; text-decoration: none; font-weight: 500; }
#right_cats li a:hover { text-decoration: underline; text-decoration-color: var(--crunchy_brun); }

#right_cats li::after {
    content: "";
    position: absolute;
    left: -100%;
    top: 0;
    width: 100%;
    height: 100%;
    background-image: linear-gradient(to right, var(--crunchy_brun), rgba(232,176,4,0.5) 100%);
    z-index: -1;
    clip-path: polygon(0% 0%, 97% 0%, 100% 50%, 97% 100%, 0% 100%);
    transition: all 0.4s ease-out;
}

#right_cats li:hover::after { left: 0; }
#right_cats li.current a { color: #1a1a1a; font-weight: 700; }
#right_cats li.current::after { left: 0; }

#pagination li {
    display: inline-block;
    margin: 0 3px;
    border: 1px solid #ddd;
}

#pagination li a {
    display: inline-block;
    padding: 2px 12px;
    color: #ddd;
    text-decoration: none !important;
    font-weight: 500;
}

#pagination li:hover,
#pagination li:focus,
#pagination li.current {
    border: 1px solid var(--crunchy_brun);
    background: var(--crunchy_brun);
}

#pagination li:hover a,
#pagination li:focus a,
#pagination li.current a { color: #fff; }

/* Section blog home */
.blog-section { background: #ededed; padding-block: 50px; }

.blog-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 40px;
    align-items: start;
}

@media (min-width: 992px) {
    .blog-layout { grid-template-columns: 1fr 300px; gap: 50px; }
}

.blog-main { min-width: 0; overflow-x: hidden; }

.blog-post {
    background: #fff;
    border-radius: 8px;
    padding: 24px 20px;
    margin-bottom: 24px;
    box-shadow: 0 2px 16px rgba(0,0,0,0.06);
    position: relative;
    transition: box-shadow 0.25s, transform 0.25s;
    overflow-x: hidden;
    word-wrap: break-word;
}

@media (min-width: 600px) {
    .blog-post { padding: 32px 36px; }
}

.blog-post:hover {
    box-shadow: 0 6px 28px rgba(151,53,0,0.12);
    transform: translateY(-2px);
}

.blog-post-cats {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
}

.blog-post-cats a {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--crunchy_brun);
    background: rgba(181,98,54,0.1);
    padding: 3px 10px;
    border-radius: 50px;
    text-decoration: none !important;
    background-image: none !important;
    transition: background 0.2s, color 0.2s;
}

.blog-post-cats a:hover {
    background: var(--crunchy_brun);
    color: #fff;
}

.blog-post-title {
    font-family: 'trends', 'Montserrat', sans-serif;
    font-size: clamp(1.2rem, 2.5vw, 1.7rem);
    margin-bottom: 10px;
    line-height: 1.2;
}

.blog-post-title a {
    color: #325068;
    text-decoration: none !important;
    background-image: none !important;
    transition: color 0.2s;
}

.blog-post-title a:hover {
    color: var(--crunchy_red);
    text-decoration: none !important;
}

.blog-post-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    font-size: 0.8rem;
    color: #aaa;
    margin-bottom: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid #f0f0f0;
}

.blog-post-date,
.blog-post-author {
    display: flex;
    align-items: center;
    gap: 6px;
}

.blog-post-meta i { color: var(--crunchy_brun); }

.blog-post-excerpt {
    font-size: 0.95rem;
    line-height: 1.75;
    color: #555;
    margin-bottom: 24px;
}

.blog-post-excerpt p { margin: 0; }

.blog-post-footer { display: flex; justify-content: flex-start; }

.blog-pagination {
    display: flex;
    justify-content: center;
    padding-top: 16px;
    padding-bottom: 8px;
}

.blog-sidebar { position: sticky; top: 20px; }

.blog-sidebar-block {
    background: #fff;
    border-radius: 8px;
    padding: 24px;
    margin-bottom: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}

.blog-sidebar-title {
    font-family: 'trends', sans-serif;
    font-size: 1.1rem;
    color: var(--crunchy_dark);
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 2px solid var(--crunchy_red);
    display: flex;
    align-items: center;
    gap: 8px;
}

.blog-sidebar-title i { color: var(--crunchy_brun); font-size: 0.95rem; }

/* Article individuel */
.blog-post-hero-title {
    font-size: clamp(1.6rem, 4vw, 2.8rem);
    line-height: 1.15;
}

.blog-post-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    margin-top: 14px;
    font-size: 0.82rem;
    color: rgba(255,255,255,0.7);
    word-break: break-word;
    overflow-wrap: break-word;
}

.blog-post-hero-meta span { min-width: 0; overflow-wrap: break-word; }
.blog-post-hero-meta i { color: rgba(255,255,255,0.5); margin-right: 4px; }

.blog-post-hero-meta a {
    color: rgba(255,255,255,0.85);
    text-decoration: none !important;
    background-image: none !important;
}

.blog-post-hero-meta a:hover { color: #fff; }

.blog-post--single {
    padding: 36px 40px;
    overflow-x: hidden;
}

.blog-post-content {
    font-size: 1rem;
    line-height: 1.85;
    color: #444;
    overflow-x: hidden;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.blog-post-content img,
.blog-post-content video,
.blog-post-content iframe,
.blog-post-content table {
    max-width: 100% !important;
    height: auto;
}

.blog-post-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.blog-post-content pre {
    overflow-x: auto;
    white-space: pre-wrap;
    word-break: break-all;
}

.blog-post-content h2,
.blog-post-content h3 { color: #325068; margin-top: 2rem; }

.blog-post-content img {
    max-width: 100%;
    border-radius: 6px;
    height: auto;
}

.blog-post-share {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-block: 14px;
    border-top: 1px solid #f0f0f0;
    margin-bottom: 24px;
    font-size: 0.82rem;
    color: #aaa;
}

.blog-post-share--bottom {
    border-top: 1px solid #f0f0f0;
    border-bottom: none;
    margin-top: 24px;
    margin-bottom: 0;
}

.blog-share-label {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.75rem;
}

.blog-post-nav {
    margin-top: 28px;
    padding-top: 20px;
    border-top: 1px solid #f0f0f0;
}

.blog-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--crunchy_dark);
    text-decoration: none !important;
    background-image: none !important;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: color 0.2s, gap 0.2s;
}

.blog-back-btn:hover { color: var(--crunchy_red); gap: 12px; }

.blog-comments { margin-top: 32px; }

.blog-comments-title {
    font-family: 'trends', sans-serif;
    font-size: 1.2rem;
    color: var(--crunchy_dark);
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.blog-comments-list,
.blog-comment-form {
    background: #fff;
    border-radius: 8px;
    padding: 28px 32px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    margin-bottom: 24px;
}

.blog-comment-form { margin-bottom: 0; }

.blog-comments-sep {
    border: none;
    border-top: 1px solid #eee;
    margin: 24px 0;
}

@media (max-width: 600px) {
    .blog-post        { padding: 22px 18px; }
    .blog-section     { padding-block: 32px; }
    .blog-post--single { padding: 18px 14px; }

    .blog-comments-list,
    .blog-comment-form { padding: 18px 14px; }

    .blog-post-share { flex-wrap: wrap; }
}

/* ===================================
   20. RÉPERTOIRE
=================================== */
#rep_buutswrap {
    display: none;

    &.opened { display: block; }

    @media (width > 800px) { display: block; }
}

#replistul li {
    position: relative;
    margin-bottom: 0;
    padding: 0.6rem 0 0.6rem 1.5ch;
    border-bottom: 1px solid rgba(0,0,0,0.06);
    transition: background 0.15s;

    &::before {
        content: '♫';
        position: absolute;
        left: 0;
        top: 0.7rem;
        color: var(--crunchy_activebg);
        font-size: 0.8rem;
    }

    &:last-child { border-bottom: none; }

    h3 {
        font-size: 1rem;
        font-weight: 600;
        margin: 0 0 2px 0;
        color: #1a1a1a;
        line-height: 1.3;
    }

    p {
        font-size: 0.8rem;
        margin: 0;
        padding: 0;
        font-style: italic;
        color: var(--crunchy_brun);
        opacity: 0.85;
    }
}

#replistul li:hover {
    background: rgba(255,255,255,0.6);
    border-radius: 4px;
}

#filtrer_wrap {
    padding-bottom: 0.5rem;
    text-align: center;

    @media (width > 800px) { display: none; }

    button {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        background: var(--crunchy_dark);
        border: none;
        color: #fff;
        font-size: 0.88rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 1px;
        padding: 10px 22px;
        border-radius: 6px;
        cursor: pointer;
        transition: background 0.2s, transform 0.2s;
        box-shadow: 0 3px 10px rgba(0,0,0,0.15);
    }

    button:hover {
        background: var(--crunchy_red);
        transform: translateY(-1px);
        color: #fff;
    }
}

#rep_search_wrap {
    position: relative;
    width: min(650px, 98%);
    margin-inline: auto;

    input {
        width: 100%;
        padding: 14px 18px 14px 46px;
        border-radius: 50rem;
        border: 2px solid #e0e0e0;
        font-size: 1rem;
        background: #fafafa;
        transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
        box-shadow: none;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23aaaaaa' fill-rule='evenodd' d='m16.622 15.172l4.244 4.244l-1.414 1.415l-4.24-4.24a7 7 0 1 1 1.41-1.42zM16 11a5 5 0 1 0-10 0a5 5 0 0 0 10 0'/%3E%3C/svg%3E");
        background-position: right 12px center;
        background-size: auto 80%;
        background-repeat: no-repeat;
    }

    input:focus,
    input:focus-visible {
        border-color: var(--crunchy_active);
        background: #fff;
        box-shadow: 0 0 0 3px rgba(0,128,0,0.08);
        outline: none;
    }

    input::placeholder { color: #bbb; }
}

.rep-search-icon {
    position: absolute;
    left: 18px;
    top: 50%;
    transform: translateY(-50%);
    color: #bbb;
    font-size: 1rem;
    pointer-events: none;
    z-index: 1;
}

#repcatbutts {
    position: relative;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: center;
    padding-block: 0.5rem 1rem;
    display: flex;

    .catbutt { position: relative; }

    input[type=checkbox] {
        position: absolute;
        z-index: -1;
        visibility: hidden;
    }

    a, button, label {
        display: block;
        background: none;
        color: #5a3010;
        font-size: 1rem;
        font-weight: 700;
        border: none;
        text-align: center;
        padding: 0 0.3rem;

        svg {
            display: block;
            fill: #5a3010;
            width: 25px;
            height: 25px;
        }
    }

    input[type="checkbox"]:checked + label     { color: var(--crunchy_activebg); }
    input[type="checkbox"]:not(:checked) + label { color: #5a3010; }

    @media (width > 800px) {
        display: flex;
        gap: 1rem;
        padding-block: 1.5rem;

        a, button, label {
            display: grid;
            place-content: center;
            background-color: var(--crunchy_dark);
            background-image: radial-gradient(40% 70% at 10% 20%, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0.1) 25%, rgba(255,255,255,0) 100%);
            color: white;
            line-height: 1;
            font-weight: 600;
            border-radius: 6px;
            border: none;
            text-align: center;
            padding: 0 1rem;
            height: 36px;
            transition: background-color 0.3s, transform 0.2s;

            svg {
                display: block;
                fill: white;
                width: 23px;
                height: 23px;
            }
        }

        input[type="checkbox"]:not(:checked) + label {
            color: white;
        }

        input[type="checkbox"]:checked + label {
            background: #e8b004;
            color: #1a1a1a;
            transform: translateY(-1px);
            box-shadow: 0 3px 10px rgba(232,176,4,0.4);
            font-weight: 700;
        }

        @media (hover: hover) {
            a:hover,
            input[type="checkbox"]:not(:checked) + label:hover {
                background-color: var(--crunchy_red);
                transform: translateY(-1px);
            }
        }

        :focus-visible,
        input[type="checkbox"]:not(:checked) + label:focus-visible {
            background-color: var(--crunchy_red);
        }
    }
}

/* Page répertoire */
.rep-search-section {
    background: #fff;
    padding-block: 28px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
    position: relative;
    z-index: 10;
}

.rep-filters-section {
    background: #ededed;
    padding-block: 16px 20px;
    border-bottom: 1px solid #ddd;
}

.rep-filter-label { font-size: 0.85rem; }

.rep-list-section { background: #ededed; padding-block: 30px 50px; }

.rep-count-bar {
    text-align: center;
    margin-bottom: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid rgba(0,0,0,0.08);
}

.rep-count-found {
    font-family: 'caramel', sans-serif;
    font-size: 2rem;
    color: var(--crunchy_dark);
    line-height: 1;
    display: inline-block;
}

.rep-count-pop { animation: repCountPop 0.35s ease both; }
.rep-count-label { font-size: 0.85rem; color: #888; margin-left: 6px; }

.rep-empty { text-align: center; padding: 50px 20px; color: #aaa; }
.rep-empty i { font-size: 2.5rem; margin-bottom: 14px; display: block; opacity: 0.4; }
.rep-empty p { font-size: 0.95rem; font-style: italic; }

.dates_home h1, .vid_home h1, .avis h1, .cd h1 {
    text-align: center;
    padding-bottom: 20px;
    color: #325068;
    font-weight: bold;
}

@media (max-width: 575px) {
    .rep-hero-meta     { flex-direction: column; align-items: flex-start; gap: 10px; }
    .rep-filters-section { padding-block: 12px 16px; }
    .photos-hero-meta  { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* ===================================
   21. PAGE CONTACT
=================================== */
.contact-hero-label {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 3px;
    color: rgba(255,255,255,0.55);
    margin-bottom: 10px;
}

.contact-hero-title {
    font-family: 'caramel', 'Montserrat', sans-serif;
    font-size: clamp(2rem, 5vw, 3.2rem);
    color: #fff;
    line-height: 1.1;
    margin-bottom: 14px;
}

.contact-hero-sub {
    color: rgba(255,255,255,0.88);
    font-size: 1rem;
    margin: 0;
    max-width: 520px;
}

/* Forcer couleur blanche sur contenu richtext dans les heros */
.contact-hero p, .contact-hero h1, .contact-hero h2,
.contact-hero h3, .contact-hero li, .contact-hero span,
.contact-hero a { color: rgba(255,255,255,0.88); }

.contact-hero strong,
.contact-hero b { color: #fff; }

.contact-section { background: #ededed; padding-block: 60px; }

.contact-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
    align-items: start;
}

@media (min-width: 900px) {
    .contact-layout { grid-template-columns: 360px 1fr; gap: 40px; }
}

.contact-infos-inner {
    background: linear-gradient(135deg, var(--primary-color-dark), var(--crunchy_dark));
    color: #fff;
    border-radius: 10px;
    padding: 36px 32px;
    position: sticky;
    top: 20px;
}

.contact-infos-title {
    font-family: 'caramel', sans-serif;
    font-size: 1.6rem;
    color: #fff;
    margin-bottom: 14px;
}

.contact-infos-text {
    font-size: 0.92rem;
    color: rgba(255,255,255,0.85);
    line-height: 1.7;
    margin-bottom: 28px;
}

.contact-infos-list {
    list-style: none;
    padding: 0;
    margin: 0 0 28px 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.contact-infos-list li {
    display: flex;
    align-items: center;
    gap: 14px;
    font-size: 0.9rem;
    color: rgba(255,255,255,0.85);
}

.contact-info-icon {
    width: 36px;
    height: 36px;
    background: rgba(255,255,255,0.15);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    flex-shrink: 0;
    font-size: 0.85rem;
}

.contact-infos-divider { height: 1px; background: rgba(255,255,255,0.1); margin-bottom: 24px; }

.contact-infos-soc-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: rgba(255,255,255,0.6);
    margin-bottom: 14px;
}

.contact-infos-soc { display: flex; gap: 10px; margin-bottom: 28px; }

.contact-soc-btn {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: rgba(255,255,255,0.08);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s;
    background-image: none !important;
}

.contact-soc-btn:hover {
    background: var(--crunchy_red);
    transform: scale(1.1);
    color: #fff;
    text-decoration: none !important;
}

.contact-infos-note {
    font-size: 0.8rem;
    color: rgba(255,255,255,0.6);
    display: flex;
    align-items: center;
    gap: 8px;
}

.contact-form-wrap {
    background: #fff;
    border-radius: 10px;
    padding: 40px 36px;
    box-shadow: 0 4px 24px rgba(0,0,0,0.08);
}

@media (max-width: 600px) {
    .contact-form-wrap { padding: 24px 18px; }
}

.contact-required-hint { font-size: 0.82rem; color: #999; margin-bottom: 24px; }

.contact-field-group {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
    margin-bottom: 20px;
}

@media (min-width: 600px) {
    .contact-field-group { grid-template-columns: 1fr 1fr; }
}

.contact-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 20px;
}

.contact-field-group .contact-field { margin-bottom: 0; }

.contact-label {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: #444;
    width: auto;
}

.contact-input {
    font-family: 'Montserrat', sans-serif;
    font-size: 0.95rem;
    width: 100%;
    box-sizing: border-box;
    border: 1.5px solid #ddd;
    padding: 11px 14px;
    border-radius: 6px;
    background: #fafafa;
    color: #222;
    transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
    outline: none;
}

.contact-input:focus {
    border-color: var(--crunchy_red);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(219,18,3,0.08);
}

.contact-input--error { border-color: var(--crunchy_red); background: #fff5f5; }
.contact-textarea { resize: vertical; min-height: 140px; }

.contact-field-error {
    font-size: 0.8rem;
    color: var(--crunchy_red);
    display: flex;
    align-items: center;
    gap: 5px;
}

.contact-alert {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    border-radius: 6px;
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 24px;
}

.contact-alert--error {
    background: #fff0ef;
    border-left: 4px solid var(--crunchy_red);
    color: var(--crunchy_red);
}

.contact-submit-wrap { display: flex; justify-content: flex-end; margin-top: 8px; }

.contact-submit-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 13px 30px;
    background: linear-gradient(135deg, var(--primary-color-dark), var(--crunchy_dark));
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: 'Montserrat', sans-serif;
    font-size: 0.88rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s, background 0.2s;
    box-shadow: 0 4px 16px rgba(219,18,3,0.3);
    position: relative;
    overflow: hidden;
    width: auto;
}

.contact-submit-btn:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 6px 22px rgba(219,18,3,0.45);
    background: var(--crunchy_dark);
}

.contact-submit-btn:disabled { opacity: 0.7; cursor: not-allowed; transform: none; }
.contact-submit-icon { transition: transform 0.3s; font-size: 0.9rem; }

.contact-submit-btn:hover:not(:disabled) .contact-submit-icon {
    transform: translateX(3px) rotate(-15deg);
}

.contact-submit-loader {
    display: none;
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255,255,255,0.3);
    border-top-color: #fff;
    border-radius: 50%;
    animation: spin 0.7s linear infinite;
    flex-shrink: 0;
}

.contact-submit-btn.is-loading .contact-submit-loader { display: inline-block; }
.contact-submit-btn.is-loading .contact-submit-icon { display: none; }

.contact-success {
    display: flex;
    align-items: flex-start;
    gap: 24px;
    background: #fff;
    border-radius: 10px;
    padding: 48px 40px;
    box-shadow: 0 4px 24px rgba(0,0,0,0.08);
    max-width: 680px;
    margin: 0 auto;
    border-left: 5px solid var(--crunchy_dark);
}

@media (max-width: 600px) {
    .contact-success { flex-direction: column; padding: 32px 20px; gap: 16px; }
}

.contact-success-icon { font-size: 3rem; color: #27ae60; line-height: 1; flex-shrink: 0; }

.contact-success-title {
    font-family: 'caramel', sans-serif;
    font-size: 1.6rem;
    color: var(--crunchy_dark);
    margin-bottom: 10px;
}

.contact-success-body p { color: #555; font-size: 0.95rem; line-height: 1.7; margin: 0; }

.contact-char-counter {
    display: block;
    text-align: right;
    font-size: 0.75rem;
    color: #bbb;
    margin-top: 4px;
}

/* ===================================
   22. PAGE CD / BOUTIQUE
=================================== */
.achatcd { text-align: center; padding-top: 40px; }

.imagecd,
.imagearticle { width: 400px; max-width: 100%; }

#paypal_form { margin-inline: auto; max-width: 100%; }

.cd-section { background: #fff; padding-block: 60px; }

.cd-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 48px;
    align-items: start;
}

@media (min-width: 800px) {
    .cd-layout { grid-template-columns: 1fr 1fr; gap: 60px; align-items: center; }
}

.cd-cover-wrap { position: relative; display: flex; justify-content: center; }
.cd-cover-inner { position: relative; display: inline-block; }

.cd-cover-img {
    width: 100%;
    max-width: 380px;
    display: block;
    border-radius: 6px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.2), 0 4px 16px rgba(151,53,0,0.15);
    transition: transform 0.4s ease, box-shadow 0.4s ease;
}

.cd-cover-img:hover {
    transform: translateY(-6px) rotate(1deg);
    box-shadow: 0 28px 70px rgba(0,0,0,0.25), 0 8px 24px rgba(151,53,0,0.2);
}

.cd-cover-badge {
    position: absolute;
    top: -12px;
    right: -12px;
    background: var(--crunchy_red);
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    padding: 6px 14px;
    border-radius: 50px;
    display: flex;
    align-items: center;
    gap: 6px;
    box-shadow: 0 4px 12px rgba(219,18,3,0.4);
}

.cd-info-label {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 3px;
    color: var(--crunchy_brun);
    margin-bottom: 8px;
}

.cd-info-title {
    font-family: 'trends', 'Montserrat', sans-serif;
    font-size: clamp(1.8rem, 4vw, 2.6rem);
    color: var(--crunchy_dark);
    line-height: 1.1;
    margin-bottom: 20px;
}

.cd-info-body { font-size: 0.95rem; line-height: 1.75; color: #555; margin-bottom: 24px; }

.cd-info-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 32px;
    font-size: 0.82rem;
    color: #888;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.cd-info-meta i { color: var(--crunchy_brun); margin-right: 5px; }

.cd-buy-block {
    background: #f8f4f1;
    border-radius: 10px;
    padding: 28px;
    border-left: 4px solid var(--crunchy_red);
}

.cd-buy-label { font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #888; margin-bottom: 16px; }

.cd-buy-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 28px;
    background: linear-gradient(135deg, #003087, #009cde);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: 'Montserrat', sans-serif;
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.5px;
    cursor: pointer;
    transition: transform 0.2s, box-shadow 0.2s;
    box-shadow: 0 4px 16px rgba(0,48,135,0.3);
    width: 100%;
    justify-content: center;
    margin-bottom: 12px;
}

.cd-buy-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 22px rgba(0,48,135,0.4);
    background: linear-gradient(135deg, #002070, #0080b8);
}

.cd-btn-arrow { margin-left: auto; transition: transform 0.2s; }
.cd-buy-btn:hover .cd-btn-arrow { transform: translateX(4px); }

.cd-buy-note { font-size: 0.78rem; color: #aaa; display: flex; align-items: center; gap: 6px; justify-content: center; margin: 0; }
.cd-buy-note i { color: #27ae60; }

/* En-têtes de section CD */
.cd-section-header { text-align: center; margin-bottom: 40px; }

.cd-section-title {
    font-family: 'trends', 'Montserrat', sans-serif;
    font-size: clamp(1.4rem, 3vw, 2rem);
    color: var(--crunchy_dark);
    margin-bottom: 12px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.cd-section-title--light { color: #fff; }

.cd-section-line,
.section-line {
    width: 50px;
    height: 3px;
    background: var(--crunchy_red);
    margin: 0 auto;
    border-radius: 2px;
}

.cd-section-line--light { background: rgba(255,255,255,0.4); }

.cd-press-section { background: #ededed; padding-block: 60px; }

.cd-press-wrap {
    max-width: 720px;
    margin: 0 auto;
    background: #fff;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(0,0,0,0.08);
}

.cd-press-badge {
    background: var(--crunchy_dark);
    color: rgba(255,255,255,0.85);
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    padding: 10px 20px;
    display: flex;
    align-items: center;
    gap: 8px;
}

.cd-press-img { width: 100%; display: block; height: auto; }

.cd-spotify-section { background: var(--crunchy_dark); padding-block: 60px; }
.cd-spotify-sub { color: rgba(255,255,255,0.6); font-size: 0.9rem; margin-top: 10px; }

.cd-spotify-wrap,
.spotify-wrap {
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 8px 32px rgba(0,0,0,0.3);
}

@media (max-width: 600px) {
    .cd-section { padding-block: 40px; }
    .cd-cover-img { max-width: 260px; }
    .cd-buy-block { padding: 20px 16px; }
}

/* ===================================
   23. PAGE PHOTOS
=================================== */
.photos-hero-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 20px;
    margin-top: 4px;
}

.photos-hero-meta .contact-hero-sub { margin: 0; }

.photos-hero-count {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    color: rgba(255,255,255,0.9);
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    padding: 6px 16px;
    border-radius: 50px;
    white-space: nowrap;
    flex-shrink: 0;
}

.photos-hero-count i { color: #fff; }

.photos-section { background: #111; padding-block: 40px; }

.photos-item {
    display: block;
    position: relative;
    overflow: hidden;
    background: #000;
    background-image: none !important;
    line-height: 0;
    border-radius: 3px;
}

.photos-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.45s ease, filter 0.45s ease;
    filter: brightness(0.92);
}

.photos-item:hover img {
    transform: scale(1.06);
    filter: brightness(0.5);
}

.photos-item-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    opacity: 0;
    transition: opacity 0.35s ease;
    pointer-events: none;
    padding: 16px;
}

.photos-item:hover .photos-item-overlay { opacity: 1; }

.photos-item-overlay > i {
    font-size: 2rem;
    color: #fff;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,0.5));
}

.photos-item-caption {
    font-size: 0.78rem;
    color: rgba(255,255,255,0.85);
    text-align: center;
    font-style: italic;
    line-height: 1.4;
    max-width: 200px;
    text-shadow: 0 1px 4px rgba(0,0,0,0.8);
}

.photos-grid .grid_item { padding: 4px !important; }

.photos-item--hidden  { opacity: 0; transform: translateY(16px); transition: opacity 0.5s ease, transform 0.5s ease; }
.photos-item--visible { opacity: 1; transform: translateY(0); }

/* ===================================
   24. PAGE LIEUX
=================================== */
.lieux-page { background: #f5f1ee; min-height: 60vh; }

.lieux-hero::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 3px;
    background: linear-gradient(90deg, var(--crunchy_red), var(--crunchy_brun), transparent);
}

.lieux-hero-title {
    font-family: 'trends', sans-serif;
    font-size: clamp(2rem, 5vw, 3.2rem);
    color: white;
    margin-bottom: 16px;
    line-height: 1;
}

.lieux-compteur {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.15);
    border-radius: 50px;
    padding: 10px 24px;
    margin-bottom: 24px;
}

.lieux-compteur-nb {
    font-family: 'trends', sans-serif;
    font-size: 2.2rem;
    font-weight: 700;
    color: rgb(243,216,10);
    line-height: 1;
}

.lieux-compteur-label { font-size: 0.95rem; color: rgba(255,255,255,0.75); }

.lieux-intro-text {
    color: rgba(255,255,255,0.8);
    font-size: 0.95rem;
    max-width: 600px;
    margin: 0 auto;
    line-height: 1.7;
}

.lieux-intro-text p { margin-bottom: 6px; }

.lieux-map-wrap {
    position: relative;
    width: 100%;
    border-bottom: 4px solid var(--crunchy_red);
}

.lieux-map-wrap iframe { display: block; }

.lieux-map-fullscreen {
    position: absolute;
    bottom: 16px;
    right: 16px;
    background: var(--crunchy_dark);
    color: #fff;
    padding: 8px 16px;
    border-radius: 4px;
    font-size: 0.8rem;
    text-decoration: none !important;
    font-weight: 600;
    letter-spacing: 0.5px;
    transition: background 0.2s;
    z-index: 1000;
}

.lieux-map-fullscreen:hover { background: var(--crunchy_red); color: #fff; }

.lieux-section { padding-block: 50px; }

.lieux-filtres {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    margin-bottom: 36px;
}

.lieux-filtre {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: 50px;
    border: 2px solid #ddd;
    background: #fff;
    color: #555;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}

.lieux-filtre:hover { border-color: var(--cat-color, var(--crunchy_red)); color: white; }

.lieux-filtre.active {
    background: var(--cat-color, var(--crunchy_dark));
    border-color: var(--cat-color, var(--crunchy_dark));
    color: #fff;
}

.lieux-filtre-count { background: rgba(0,0,0,0.15); border-radius: 50px; padding: 1px 7px; font-size: 0.75rem; }
.lieux-filtre.active .lieux-filtre-count { background: rgba(255,255,255,0.25); }

.lieux-grid { display: flex; flex-wrap: wrap; gap: 10px; }

.lieu-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff;
    border: 1.5px solid #e0d8d2;
    border-left: 4px solid var(--cat-color, #999);
    border-radius: 6px;
    padding: 10px 14px;
    transition: transform 0.15s, box-shadow 0.15s;
    cursor: default;
}

.lieu-badge:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,0.1); }
.lieu-badge.hidden { display: none !important; }
.lieu-badge-icon { color: var(--cat-color, #999); font-size: 0.85rem; flex-shrink: 0; }

.lieu-badge-nom { font-weight: 600; font-size: 0.88rem; color: var(--crunchy_dark); line-height: 1.2; }

.lieu-badge-loc { font-size: 0.78rem; color: #999; white-space: nowrap; }
.lieu-badge-loc em { font-style: normal; color: #bbb; }

.lieux-empty { text-align: center; color: #999; font-style: italic; padding: 40px 0; width: 100%; }

.lieux-cta-wrap { background: var(--crunchy_dark); padding-block: 50px; text-align: center; }

.lieux-cta-text { font-family: 'trends', sans-serif; font-size: 1.6rem; color: #fff; margin-bottom: 20px; }

@media (max-width: 768px) {
    .lieux-map-wrap iframe { height: 320px; }
    .lieux-filtres { gap: 6px; }
    .lieux-filtre { font-size: 0.78rem; padding: 6px 12px; }
    .lieu-badge { width: 100%; }
}

/* ===================================
   25. CARTE & LINKABAND
=================================== */
#map { height: 600px; }

.leaflet-ctrl-hint {
    position: absolute;
    top: 16px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0,0,0,0.75);
    color: #fff;
    padding: 8px 14px;
    border-radius: 4px;
    font-size: 0.85rem;
    font-weight: 500;
    pointer-events: none;
    z-index: 1000;
    opacity: 0;
    transition: opacity 0.2s ease;
}

/* Plein écran via classe JS — fiable sur tous navigateurs */
body.map-fullscreen-active { overflow: hidden; }

.lieux-map-wrap.map-fullscreen {
    position: fixed !important;
    top: 0; left: 0;
    width:  100vw !important;
    height: 100vh !important;
    z-index: 9999;
    background: #fff;
}

.lieux-map-wrap.map-fullscreen #map {
    height: 100vh !important;
}

#linkaband-badge {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 16px 0 0;
    border-top: 1px solid #ddd;
    margin-top: 24px;
}

#linkaband-badge img { width: 80px; height: auto; opacity: 0.9; transition: opacity 0.2s; }
#linkaband-badge img:hover { opacity: 1; }

/* ===================================
   26. CONCERT INTERACTIF
=================================== */
.interactive-hero { padding-block: 40px 36px; }

.interactive-hero-title {
    font-size: clamp(2rem, 5vw, 3.2rem);
}

.interactive-hero-title em { font-style: normal; color: #e8b004; }

.interactive-hero-sub { font-size: 1.15rem; opacity: 0.92; max-width: 580px; }

.interactive-hero-cta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-top: 28px;
    padding: 14px 32px;
    background: #e8b004;
    color: #1a1a1a;
    border-radius: 6px;
    font-weight: 800;
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-decoration: none !important;
    background-image: none !important;
    transition: background 0.2s, transform 0.2s;
    box-shadow: 0 4px 20px rgba(232,176,4,0.4);
}

.interactive-hero-cta:hover {
    background: #fff !important;
    transform: translateY(-2px);
    color: #1a1a1a;
}

.interactive-section { padding-block: 60px; }

.interactive-section-title {
    font-family: 'trends', sans-serif;
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    color: var(--crunchy_dark);
    text-align: center;
    margin-bottom: 8px;
}

.interactive-section-title--left { text-align: left; }

.interactive-section-sub { text-align: center; color: #777; font-size: 1rem; margin-bottom: 48px; }

.interactive-steps-section { background: #fff; }

.interactive-steps {
    display: flex;
    align-items: flex-start;
    gap: 0;
    justify-content: center;
    flex-wrap: wrap;
}

.interactive-step {
    flex: 1;
    min-width: 220px;
    max-width: 300px;
    text-align: center;
    padding: 32px 24px;
    position: relative;
}

.interactive-step-num {
    position: absolute;
    top: 20px;
    left: 20px;
    width: 28px;
    height: 28px;
    background: var(--crunchy_red);
    color: #fff;
    border-radius: 50%;
    font-size: 0.8rem;
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
}

.interactive-step-icon {
    width: 80px;
    height: 80px;
    background: linear-gradient(135deg, var(--crunchy_dark), var(--crunchy_brun));
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
    box-shadow: 0 8px 24px rgba(151,53,0,0.25);
}

.interactive-step-icon i { font-size: 2rem; color: #fff; }

.interactive-step h3 {
    font-family: 'trends', sans-serif;
    font-size: 1.2rem;
    color: var(--crunchy_dark);
    margin-bottom: 12px;
}

.interactive-step p { font-size: 0.9rem; color: #666; line-height: 1.7; }

.interactive-step-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #ccc;
    font-size: 1.5rem;
    padding-top: 40px;
    flex-shrink: 0;
}

@media (max-width: 768px) {
    .interactive-step-arrow { display: none; }
    .interactive-steps { flex-direction: column; align-items: center; }
    .interactive-step { max-width: 100%; width: 100%; }
}

.interactive-preview-section { background: #ededed; }

.interactive-preview-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 50px;
    align-items: center;
}

@media (min-width: 900px) {
    .interactive-preview-layout { grid-template-columns: 1fr 320px; }
}

.interactive-features {
    list-style: none;
    padding: 0;
    margin-top: 24px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.interactive-features li { display: flex; align-items: center; gap: 10px; font-size: 0.92rem; color: #444; }
.interactive-features li i { color: var(--crunchy_dark); font-size: 0.85rem; flex-shrink: 0; }

.interactive-preview-phone { display: flex; justify-content: center; }

/* Mockup téléphone */
.phone-mockup {
    width: 280px;
    background: #1a1a1a;
    border-radius: 32px;
    padding: 12px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.3), 0 0 0 1px rgba(255,255,255,0.05);
}

.phone-screen { background: #fff; border-radius: 22px; overflow: hidden; }

.phone-header {
    background: linear-gradient(135deg, #B2602D 0%, #c0392b 100%);
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.phone-logo { font-family: 'musiquesregular', serif; color: #fff; font-size: 1.4rem; letter-spacing: 1px; }

.phone-badge { background: rgba(255,255,255,0.2); color: #fff; font-size: 0.72rem; padding: 2px 10px; border-radius: 20px; font-weight: 600; }

.phone-body { padding: 12px; display: flex; flex-direction: column; gap: 8px; }

.phone-instruction { font-size: 0.72rem; color: var(--crunchy_red); font-weight: 700; padding: 0 4px 4px; }

.phone-song {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #fafafa;
    border-radius: 10px;
    padding: 8px 10px;
    border: 2px solid transparent;
    transition: border-color 0.2s;
}

.phone-song--voted { border-color: #e74c3c; background: #fff8f6; }

.phone-song-info { display: flex; flex-direction: column; gap: 2px; flex: 1; overflow: hidden; }

.phone-song-title { font-size: 0.78rem; font-weight: 700; color: #2c3e50; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.phone-song-cat { font-size: 0.65rem; color: #999; font-style: italic; }

.phone-song-vote { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 40px; }

.phone-heart {
    width: 32px;
    height: 32px;
    border: 2px solid #ddd;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    color: #ccc;
}

.phone-heart--voted { background: linear-gradient(135deg, #e74c3c, #c0392b); border-color: #e74c3c; color: #fff; box-shadow: 0 2px 8px rgba(231,76,60,0.4); }
.phone-vote-count { font-size: 0.68rem; font-weight: 700; color: #e74c3c; }

.interactive-stage-section { background: var(--crunchy_dark); color: #fff; }
.interactive-stage-section .interactive-section-title { color: #fff; }
.interactive-stage-section .interactive-section-sub { color: rgba(255,255,255,0.65); }

.interactive-stage-features {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 32px;
    margin-top: 48px;
}

.interactive-stage-feat {
    text-align: center;
    padding: 32px 24px;
    background: rgba(255,255,255,0.06);
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,0.08);
    transition: background 0.2s;
}

.interactive-stage-feat:hover { background: rgba(255,255,255,0.1); }
.interactive-stage-feat > i { font-size: 2rem; color: #e8b004; margin-bottom: 16px; display: block; }

.interactive-stage-feat h3 { font-family: 'trends', sans-serif; font-size: 1.2rem; color: #fff; margin-bottom: 12px; }
.interactive-stage-feat p  { font-size: 0.88rem; color: rgba(255,255,255,0.65); line-height: 1.7; margin: 0; }

/* Home section interactive */
.home-interactive-section { background: #f7f3f0; padding-block: 60px; }

.home-interactive-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 40px;
    align-items: center;
}

@media (min-width: 900px) {
    .home-interactive-layout { grid-template-columns: 1fr 280px; gap: 60px; }
}

.home-interactive-visual { display: flex; justify-content: center; }
.home-interactive-visual .phone-mockup { width: 240px; }
.home-interactive-visual .phone-logo { font-size: 1.1rem; }

.home-interactive-label {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--crunchy_dark);
    margin-bottom: 10px;
}

.home-interactive-title {
    font-family: 'trends', sans-serif;
    font-size: clamp(2rem, 4vw, 3rem);
    color: var(--crunchy_dark);
    line-height: 1.1;
    margin-bottom: 18px;
}

.home-interactive-title em { font-style: normal; color: var(--crunchy_red); }

.home-interactive-desc { color: #555; font-size: 1rem; line-height: 1.75; margin-bottom: 28px; max-width: 480px; }

.home-interactive-icons {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    flex-wrap: wrap;
}

.hii-step { display: flex; flex-direction: column; align-items: center; gap: 10px; }

.hii-icon {
    width: 72px;
    height: 72px;
    background: rgba(151,53,0,0.08);
    border: 2px solid rgba(151,53,0,0.15);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.8rem;
    color: var(--crunchy_dark);
    transition: background 0.2s, transform 0.2s;
}

.hii-step:hover .hii-icon { background: var(--crunchy_dark); color: #fff; transform: translateY(-4px); }

.hii-step span { font-size: 0.8rem; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #888; }

.hii-arrow { color: #ccc; font-size: 1.2rem; margin-top: -20px; }

/* CTA section interactive */
.interactive-cta-section { background: #ededed; padding-block: 70px; text-align: center; }

.interactive-cta-section h2 {
    font-family: 'trends', sans-serif;
    font-size: clamp(1.5rem, 3vw, 2.2rem);
    color: var(--crunchy_dark);
    margin-bottom: 14px;
}

.interactive-cta-section p { color: #666; font-size: 1rem; max-width: 560px; margin: 0 auto 36px; line-height: 1.7; }

.interactive-cta-buttons { display: flex; flex-wrap: wrap; gap: 16px; justify-content: center; }

.interactive-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 32px;
    border-radius: 6px;
    font-weight: 700;
    font-size: 0.92rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-decoration: none !important;
    background-image: none !important;
    transition: background 0.2s, transform 0.2s;
}

.interactive-cta-btn--primary {
    background: var(--crunchy_dark);
    color: #fff;
    box-shadow: 0 4px 16px rgba(151,53,0,0.3);
}

.interactive-cta-btn--primary:hover {
    background: var(--crunchy_red);
    transform: translateY(-2px);
    color: #fff;
}

.interactive-cta-btn--secondary {
    background: transparent;
    color: var(--crunchy_dark);
    border: 2px solid var(--crunchy_dark);
}

.interactive-cta-btn--secondary:hover {
    background: var(--crunchy_dark);
    color: #fff;
    transform: translateY(-2px);
}

/* ===================================
   22. PAGE KIT PRESSE
=================================== */

.presse-section { padding-block: 60px; }
.presse-bio-section { background: #fff; }
.presse-downloads-section { background: #ededed; }
.presse-photos-section { background: #fff; }
.presse-quotes-section { background: #ededed; }
.presse-video-section { background: #fff; }

/* Bio */
.presse-bio-courte { font-size: 1.05rem; color: #444; line-height: 1.8; text-align: center; }

.presse-bio-toggle {
    margin-top: 24px;
    text-align: center;
}

.presse-bio-toggle summary {
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--crunchy_dark);
    padding: 10px 22px;
    border: 2px solid var(--crunchy_dark);
    border-radius: 6px;
    transition: background 0.2s, color 0.2s;
    list-style: none;
}

.presse-bio-toggle summary::-webkit-details-marker { display: none; }

.presse-bio-toggle summary:hover { background: var(--crunchy_dark); color: #fff; }

.presse-bio-toggle[open] summary { background: var(--crunchy_dark); color: #fff; margin-bottom: 20px; }

.presse-bio-longue { font-size: 0.95rem; color: #555; line-height: 1.8; text-align: left; }

/* Grille de téléchargements */
.presse-downloads-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 20px;
    margin-top: 40px;
}

.presse-download-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 10px;
    padding: 32px 20px;
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.06);
    text-decoration: none !important;
    background-image: none !important;
    transition: transform 0.2s, box-shadow 0.2s;
}

.presse-download-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 28px rgba(0,0,0,0.12);
}

.presse-download-card > i {
    font-size: 2.2rem;
    color: var(--crunchy_dark);
    margin-bottom: 6px;
}

.presse-download-card h3 {
    font-family: 'trends', sans-serif;
    font-size: 1.05rem;
    color: var(--crunchy_dark);
    margin: 0;
}

.presse-download-card span {
    font-size: 0.82rem;
    color: #888;
}

.presse-download-card--all {
    background: var(--crunchy_dark);
}

.presse-download-card--all > i,
.presse-download-card--all h3 { color: #fff; }

.presse-download-card--all span { color: rgba(255,255,255,0.7); }

.presse-download-card--all:hover { background: var(--crunchy_red); }

/* Citations presse */
.presse-quotes-list {
    display: flex;
    flex-direction: column;
    gap: 18px;
    margin-top: 32px;
}

.presse-quote {
    margin: 0;
    padding: 20px 26px;
    background: #fff;
    border-left: 4px solid var(--crunchy_red);
    border-radius: 4px;
    font-size: 1rem;
    font-style: italic;
    color: #555;
    box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}

/* CTA contact presse (même esprit que .lieux-cta-wrap) */
.presse-cta-wrap { background: var(--crunchy_dark); padding-block: 50px; text-align: center; }

/* Lecteur vidéo intégré, ratio 16:9 conservé à toutes les tailles */
.presse-video-wrap {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
    margin-top: 32px;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.12);
}

.presse-video-wrap iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

@media (max-width: 575px) {
    .presse-downloads-grid { grid-template-columns: 1fr; }
    .presse-bio-toggle { text-align: left; }
}
