/* ===================================
    Crafto - Freelancer
====================================== */
/* font */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap');
/* variable */
:root {
    --base-color: #1d1d1b !important;
    --light-medium-gray:#e9e9e9;
    --black:#1d1d1b;
    --accent: #E5A019;
    --primary-font: 'Inter', sans-serif;
    --alt-font: 'Inter', sans-serif;
}
/* accent or/ambre — touche subtile sur bichromie noir/blanc */
.text-accent { color: var(--accent) !important; }
.bg-accent { background-color: var(--accent) !important; }
.menu-item-list .nav-link:hover { color: var(--accent) !important; }
body { font-size: 17px; line-height: 30px; color:var(--dark-gray); }
section { padding-top: 90px; padding-bottom: 90px; }
/* bg sliding line */
.bg-sliding-line { background-image: linear-gradient(135deg, transparent 45%, #040404 45%, #040404 55%, transparent 0); background-size: 5px 5px; }
/* header */
.header-push-button .push-button { height: 12px; }
header .navbar-brand img { max-height: 68px; }
.header-push-button .push-button { width: 42px; }
.header-push-button .push-button span:first-child { width: 32px; margin-right: 0; }
.show-menu .header-push-button .push-button span:nth-child(1) { width: 15px; top: 0; }
.show-menu .header-push-button .push-button span:nth-child(2) { top: 6px; -webkit-transform: rotate(0deg); transform: rotate(0deg); }
.hamburger-logo img { max-height: 68px; }
.hamburger-nav { width: 50%; }
.bg-black { background-color: var(--black) !important; }
.menu-item-list .nav-link {
    font-size: 45px;
    line-height: 40px;
}
/* font size */
.fs-335 {
    font-size: 20.938rem;
    line-height: 18.75rem;
}
/* margin */
.mt-minus-40px {
    margin-top: -40px;
}
/* top left right bottom */
.top-20 {
    top: 20%;
}
.top-35 {
    top: 35%;
}
.gutter-medium {
    margin-left: -7px;
    margin-right: -7px;
}
.portfolio-transform .portfolio-box .caption {
  padding: 20px 20px 10px;
}
.progress-bar-style-01 .progress .progress-bar-percent:after {
    border-top-color: #000;
}
/* bg gradient color */
.bg-gradient-top-very-light-gray { 
    background-image:linear-gradient(to top, #ffffff, #ffffff, #fcfafa, #fcfafa, #f7f7f7);
}
/* text shadow large */
.text-shadow-large {
    text-shadow: 0 20px 60px rgb(0, 0, 0, 0.15);
}
.outside-box-bottom-2 {
    margin-bottom: -2vw; 
}
.text-animation { transition: all 0.5s ease-in-out; }
.fs-250 { font-size: 13.6rem !important; line-height: 25.7rem !important; }
/* Grand logo blanc AU-DESSUS du W doré : même parent → on hiérarchise par z-index.
   logo-slide (z:2) > logo-w (z:1) : le W passe derrière dès l'ouverture, et reste
   derrière pendant son vol (le lockup .fs-150 forme un contexte d'empilement à z:60,
   le W détaché sur <body> à z:1 repasse donc sous tout le logo). */
#logo-slide { height: 200px !important; position: relative; z-index: 2; }
#logo-w { transition: all 1.2s ease-in-out; transform-origin: top left; position:absolute; top: 0; left:0; z-index: 1; }
#home .fs-150 { position: relative; z-index: 60; }

/* ---- Menu sticky ---- */
/* Fond NOIR absolu de la barre sticky. */
header.sticky.sticky-active [data-header-hover=dark] { background-color: #000 !important; }
/* Garder le logo blanc visible sur la barre noire (le thème masque le default-logo). */
header.sticky.sticky-active .navbar-brand .default-logo,
header.we-home.we-stuck .navbar-brand .default-logo {
    visibility: visible !important;
    opacity: 1 !important;
    width: auto !important;
}
/* Accueil : le header défile avec le hero (pas de sticky), puis la barre noire
   n'apparaît qu'à partir de #about (classe we-stuck posée par JS). */
header.we-home .navbar { position: absolute; }
header.we-home.we-stuck .navbar {
    position: fixed;
    background-color: #000 !important;
    box-shadow: 0 8px 30px rgba(0,0,0,.45);
    animation: weSlideDown .45s cubic-bezier(.2,.7,.2,1);
}
header.we-home.we-stuck .icon .push-button span { background-color: #fff; }
@keyframes weSlideDown { from { transform: translateY(-100%); } to { transform: translateY(0); } }
/* Pages internes : même barre noire que l'accueil, déclenchée au défilement. */
header.we-inner .navbar { transition: background-color .35s ease, box-shadow .35s ease; }
header.we-inner.we-stuck .navbar {
    background-color: #000 !important;
    box-shadow: 0 8px 30px rgba(0,0,0,.45);
}
header.we-inner.we-stuck .icon .push-button span { background-color: #fff; }
header.we-inner.we-stuck .navbar-brand .default-logo {
    visibility: visible !important;
    opacity: 1 !important;
    width: auto !important;
}
/* Lueur boréale très fine — hero (noir dominant, fines touches d'or/ambre) */
.hero-aurora {
    position: absolute; inset: -25%;
    z-index: 0; pointer-events: none;
    background:
        radial-gradient(38% 50% at 24% 32%, rgba(229,160,25,.10), transparent 62%),
        radial-gradient(32% 42% at 76% 66%, rgba(229,160,25,.06), transparent 66%),
        radial-gradient(46% 58% at 62% 16%, rgba(0,0,0,.55), transparent 70%),
        radial-gradient(42% 54% at 28% 84%, rgba(0,0,0,.50), transparent 70%);
    filter: blur(48px);
    opacity: .75;
    animation: aurora-drift 28s ease-in-out infinite alternate;
    will-change: transform, opacity;
}
@keyframes aurora-drift {
    0%   { transform: translate3d(-3%, -2%, 0) scale(1.05); opacity: .60; }
    50%  { transform: translate3d(2%,  2%, 0)  scale(1.13); opacity: .85; }
    100% { transform: translate3d(4%, -1%, 0)  scale(1.07); opacity: .68; }
}
@media (prefers-reduced-motion: reduce) { .hero-aurora { animation: none; } }
.default-logo {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease-in-out, visibility 0s linear 0.3s;
}

@media only screen and (max-width: 1700px) {
    
}
@media only screen and (max-width: 1600px) {
    .fs-335 {
        font-size: 13.6rem;
        line-height: 25.7rem;
    }
    .left-img {
        width: 300px;
    }
}
@media only screen and (max-width: 1399px) {
    .left-img {
        width: 250px;
    }
    .hamburger-nav {
        width: 40%;
    }
}
@media only screen and (max-width: 1399px) {
    .fs-335 {
        font-size: 12.5rem;
        line-height: 12.5rem;
    }
}
@media only screen and (max-width: 1199px) {
    .fs-335 {
        font-size: 10.625rem;
        line-height: 10.625rem;
    }
    
}
@media only screen and (max-width: 991px) {
    section {
          padding-top: 75px;
          padding-bottom: 75px;  
    }
}
@media only screen and (max-width: 767px) {
    .fs-335 {
        font-size:6.25rem;
        line-height: 6.25rem;
    }
    section {
          padding-top: 50px;
          padding-bottom: 50px;
    }
}

/* ============================================================
   What Else — Premium layer (gold accent + micro-interactions)
   ============================================================ */
:root { --accent-soft: rgba(229,160,25,.10); --accent-light: #f6cd6b; }

/* Texte or à dégradé brillant (shimmer) */
.text-gold-gradient {
    background: linear-gradient(120deg, var(--accent) 0%, var(--accent-light) 25%, var(--accent) 50%, var(--accent-light) 75%, var(--accent) 100%);
    background-size: 200% auto;
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
    animation: gold-shimmer 6s linear infinite;
}
@keyframes gold-shimmer { to { background-position: 200% center; } }

/* Bouton or */
.btn-gold {
    display: inline-block; background: var(--accent); color: #1d1d1b !important;
    font-weight: 700; letter-spacing: .5px; padding: 16px 38px; border-radius: 50px;
    text-transform: uppercase; font-size: 13px; line-height: 1; border: 0; cursor: pointer;
    transition: transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease, background .35s ease;
    box-shadow: 0 10px 30px rgba(229,160,25,.22);
}
.btn-gold:hover { transform: translateY(-3px); background: #f0b13a; color: #1d1d1b !important; box-shadow: 0 18px 42px rgba(229,160,25,.42); }
.btn-gold .bi { vertical-align: middle; margin-left: 8px; transition: transform .35s ease; }
.btn-gold:hover .bi { transform: translateX(5px); }
.btn-gold-sm { padding: 12px 26px; font-size: 12px; }

/* ---- Rangées de services (intro accueil + page services) ---- */
.service-list { margin-top: -6px; }
.service-row {
    position: relative; display: flex; gap: 26px; align-items: flex-start;
    padding: 26px 22px; border-radius: 14px; text-decoration: none; color: inherit;
    transition: background .4s ease, transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s ease;
}
.service-row:hover, .service-row:focus { text-decoration: none; }
.service-row:not(:last-child) { border-bottom: 1px solid var(--light-medium-gray); }
.service-row::before {
    content: ""; position: absolute; left: 0; top: 50%; width: 3px; height: 0;
    background: var(--accent); border-radius: 3px; transform: translateY(-50%); transition: height .4s ease;
}
.service-row:hover {
    background: linear-gradient(90deg, var(--accent-soft), rgba(229,160,25,0));
    transform: translateX(6px); border-color: transparent;
    box-shadow: 0 24px 50px rgba(0,0,0,.06);
}
.service-row:hover::before { height: 64%; }
.service-row .service-index {
    font-size: 22px; font-weight: 700; color: var(--accent); line-height: 1.1;
    min-width: 40px; font-variant-numeric: tabular-nums;
}
.service-row .service-title { font-size: 18px; font-weight: 600; color: var(--black); margin-bottom: 8px; }
.service-row .service-title .arrow { display: inline-block; margin-left: 8px; opacity: 0; transform: translateX(-6px); color: var(--accent); transition: all .4s ease; }
.service-row:hover .service-title .arrow { opacity: 1; transform: translateX(0); }
.service-row p { margin-bottom: 0; }

/* ---- Page hero (pages internes) ---- */
body.inner-page .default-logo { opacity: 1 !important; visibility: visible !important; }
.page-hero { position: relative; background-color: var(--black); overflow: hidden; padding-top: 220px; padding-bottom: 110px; }
.page-hero::after { content: ""; position: absolute; top: -30%; right: -10%; width: 520px; height: 520px; background: radial-gradient(circle, rgba(229,160,25,.20), transparent 62%); pointer-events: none; }
.page-hero .breadcrumb-mini { font-size: 13px; letter-spacing: 2px; text-transform: uppercase; color: var(--accent); font-weight: 600; margin-bottom: 18px; }
.page-hero .page-hero-title { font-size: 84px; line-height: .96; font-weight: 700; letter-spacing: -4px; color: #fff; }
.page-hero .page-hero-sub { color: rgba(255,255,255,.7); font-size: 19px; line-height: 30px; max-width: 620px; margin-top: 22px; }
/* Lien « Retour » d'entête (fiche réalisation) : posé comme le sous-titre, sous le titre. */
.we-hero-back { display: inline-flex; align-items: center; gap: 10px; margin-top: 22px; font-size: 17px; font-weight: 600; letter-spacing: .3px; color: rgba(255,255,255,.7); transition: color .3s ease, gap .3s ease; }
.we-hero-back .bi { color: var(--accent); transition: transform .3s ease; }
.we-hero-back:hover { color: #fff; gap: 14px; }
.we-hero-back:hover .bi { transform: translateX(-4px); }
@media (max-width: 991px) { .page-hero { padding-top: 170px; padding-bottom: 70px; } .page-hero .page-hero-title { font-size: 54px; letter-spacing: -2px; } }
@media (max-width: 575px) { .page-hero .page-hero-title { font-size: 40px; } }

/* ---- Blocs détaillés services ---- */
.service-detail { position: relative; padding: 50px 0; border-bottom: 1px solid var(--light-medium-gray); transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.service-detail:hover { transform: translateY(-4px); }
.service-detail .sd-num { font-size: 70px; font-weight: 700; line-height: 1; color: var(--light-medium-gray); letter-spacing: -3px; transition: color .4s ease; }
.service-detail:hover .sd-num { color: var(--accent); }
.service-detail .sd-title { font-size: 30px; font-weight: 700; letter-spacing: -1px; color: var(--black); margin-bottom: 10px; }
.service-detail .sd-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
.service-detail .sd-tags span { font-size: 12px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 6px 14px; border-radius: 30px; }
/* Photo d'illustration par service (remplace l'ancien numéro). Images fictives
   pour l'instant — à remplacer par les vraies photos de Lucas. */
.service-detail .sd-photo { width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 14px; margin-bottom: 22px; display: block; box-shadow: 0 10px 30px rgba(0,0,0,.08); transition: transform .45s cubic-bezier(.2,.7,.2,1); }
.service-detail:hover .sd-photo { transform: scale(1.015); }

/* ---- Bandeau chiffres clés ---- */
.stat-num { font-size: 70px; font-weight: 700; letter-spacing: -3px; line-height: 1; color: var(--accent); }
.stat-label { font-size: 15px; letter-spacing: .5px; color: rgba(255,255,255,.65); margin-top: 6px; }

/* ---- Tuiles média (galerie équipe) ---- */
.media-tile { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; aspect-ratio: 4/3; border-radius: 14px; border: 1px dashed rgba(229,160,25,.45); background: var(--accent-soft); color: var(--accent); transition: background .4s ease, transform .4s ease; text-align: center; }
.media-tile:hover { background: rgba(229,160,25,.16); transform: translateY(-4px); }
.media-tile i { font-size: 34px; margin-bottom: 10px; }
.media-tile span { font-size: 13px; font-weight: 600; letter-spacing: .5px; }
/* Badge « lecture » pour une tuile vidéo dans une grille .we-job (galerie
   « coulisses » de la page Équipe, qui réutilise le survol de l'accueil). Reste
   visible au-dessus du voile ; vire à l'or au survol. */
.we-job-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2; width: 56px; height: 56px; border-radius: 50%; background: rgba(0,0,0,.45); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 24px; transition: background .3s ease, transform .3s ease; pointer-events: none; }
.we-job-link:hover .we-job-play { background: var(--accent); color: #1d1d1b; transform: translate(-50%, -50%) scale(1.08); }

/* ---- Témoignages ---- */
.testi-card { height: 100%; background: #fff; border: 1px solid var(--light-medium-gray); border-radius: 16px; padding: 38px 34px; transition: transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s ease, border-color .4s ease; }
.testi-card:hover { transform: translateY(-6px); box-shadow: 0 30px 60px rgba(0,0,0,.07); border-color: transparent; }
.testi-card .quote-mark { font-size: 46px; line-height: .6; color: var(--accent); font-weight: 700; }
.testi-card .testi-text { font-size: 17px; line-height: 28px; color: var(--black); margin: 18px 0 26px; }
.testi-card .testi-name { display: block; font-weight: 700; color: var(--black); }
.testi-card .testi-role { display: block; margin-top: 2px; font-size: 14px; color: var(--dark-gray); }

/* ---- Formulaire intelligent (contact) ---- */
.smart-form .field { position: relative; margin-bottom: 26px; }
.smart-form label { display: block; font-size: 13px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; color: var(--black); margin-bottom: 10px; }
.smart-form .req { color: var(--accent); }
.smart-form input, .smart-form select, .smart-form textarea {
    width: 100%; background: #fff; border: 1px solid var(--light-medium-gray); border-radius: 12px;
    padding: 15px 18px; font-size: 16px; color: var(--black); font-family: var(--primary-font);
    transition: border-color .3s ease, box-shadow .3s ease; appearance: none;
}
.smart-form textarea { min-height: 140px; resize: vertical; }
.smart-form input:focus, .smart-form select:focus, .smart-form textarea:focus {
    outline: none; border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft);
}
.smart-form select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='8' viewBox='0 0 14 8'%3E%3Cpath fill='%23E5A019' d='M7 8 0 1 1 0l6 6 6-6 1 1z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 18px center; padding-right: 44px; }
.smart-form .honeypot { position: absolute; left: -9999px; top: -9999px; }
.smart-form .consent { display: flex; align-items: flex-start; gap: 10px; margin-top: 18px; }
.smart-form .consent input[type="checkbox"] {
    width: 18px; height: 18px; min-width: 18px; margin-top: 3px; padding: 0;
    border: 1px solid var(--light-medium-gray); border-radius: 5px; cursor: pointer;
    accent-color: var(--accent); appearance: auto;
}
.smart-form .consent label { margin: 0; font-size: 14px; line-height: 1.5; color: var(--dark-gray); cursor: pointer; }
.smart-form .consent a { color: var(--accent); text-decoration: underline; }
.form-alert { border-radius: 12px; padding: 18px 22px; font-size: 15px; margin-bottom: 30px; }
.form-alert.success { background: var(--accent-soft); border: 1px solid rgba(229,160,25,.4); color: var(--black); }

/* ====================================================================
   RÉALISATIONS — intégration publique (grille masonry + fiche détail)
   Bichromie noir #1d1d1b / blanc + accent or #E5A019.
   La grille s'appuie sur Isotope (déjà chargé via vendors) : le conteneur
   .portfolio-wrapper.grid.grid-3col est auto-initialisé par main.js.
   ==================================================================== */

/* ---- Barre de filtres (statut / clients) ---- */
.we-filters { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-bottom: 55px; }
.we-filters button {
    border: 1px solid var(--light-medium-gray); background: #fff; color: var(--black);
    font-size: 13px; font-weight: 600; letter-spacing: .4px; text-transform: uppercase;
    padding: 10px 22px; border-radius: 30px; cursor: pointer;
    transition: background .3s ease, color .3s ease, border-color .3s ease, transform .3s ease;
}
.we-filters button:hover { transform: translateY(-2px); border-color: var(--accent); color: var(--accent); }
.we-filters button.is-active { background: var(--black); border-color: var(--black); color: #fff; }

/* ---- Tuile réalisation ---- */
.we-real-cell { margin-bottom: 0; }                 /* l'espacement vient du gutter Isotope */
.we-real-card {
    position: relative; display: block; overflow: hidden; border-radius: 16px;
    background: var(--black); text-decoration: none; isolation: isolate;
    box-shadow: 0 10px 30px rgba(0,0,0,.06);
    transition: transform .5s cubic-bezier(.2,.7,.2,1), box-shadow .5s ease;
}
.we-real-card:hover { transform: translateY(-6px); box-shadow: 0 34px 60px rgba(0,0,0,.18); }
.we-real-media { position: relative; width: 100%; overflow: hidden; background: #111; }
/* hauteur réservée selon le ratio de vignette (évite le saut de mise en page) */
.we-real-media.ratio-portrait { aspect-ratio: 3 / 4; }
.we-real-media.ratio-paysage  { aspect-ratio: 7 / 5; }
.we-real-media.ratio-carre    { aspect-ratio: 1 / 1; }
.we-real-media img {
    width: 100%; height: 100%; object-fit: cover; display: block;
    transition: transform .7s cubic-bezier(.2,.7,.2,1), filter .5s ease;
    filter: saturate(1.02);
}
.we-real-card:hover .we-real-media img { transform: scale(1.07); }
/* voile dégradé bas pour la lisibilité du texte */
.we-real-media::after {
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: linear-gradient(to top, rgba(8,8,8,.82) 0%, rgba(8,8,8,.30) 38%, rgba(8,8,8,0) 66%);
    transition: opacity .5s ease; opacity: .9;
}
.we-real-card:hover .we-real-media::after { opacity: 1; }

.we-real-body { position: absolute; left: 0; right: 0; bottom: 0; padding: 26px 26px 24px; z-index: 2; }
.we-real-client { display: block; font-size: 12px; font-weight: 700; letter-spacing: 1.4px; text-transform: uppercase; color: var(--accent); margin-bottom: 8px; }
.we-real-title { font-size: 23px; line-height: 1.18; font-weight: 700; letter-spacing: -.5px; color: #fff; margin: 0; }
.we-real-meta { font-size: 13px; color: rgba(255,255,255,.62); margin-top: 8px; }
.we-real-cta {
    display: inline-flex; align-items: center; gap: 7px; margin-top: 14px;
    font-size: 12px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: #fff;
    opacity: 0; transform: translateY(8px); transition: opacity .45s ease, transform .45s ease;
}
.we-real-cta .bi { color: var(--accent); transition: transform .35s ease; }
.we-real-card:hover .we-real-cta { opacity: 1; transform: translateY(0); }
.we-real-card:hover .we-real-cta .bi { transform: translateX(5px); }

/* badges (coin haut) */
.we-real-badges { position: absolute; top: 16px; left: 16px; z-index: 3; display: flex; gap: 8px; }
.we-badge { font-size: 11px; font-weight: 700; letter-spacing: .6px; text-transform: uppercase; padding: 6px 12px; border-radius: 30px; backdrop-filter: blur(4px); }
.we-badge.featured { background: var(--accent); color: #1d1d1b; }
.we-badge.encours  { background: rgba(255,255,255,.92); color: #1d1d1b; }
.we-real-card.is-featured { box-shadow: 0 0 0 2px var(--accent), 0 10px 30px rgba(0,0,0,.06); }
.we-real-card.is-featured:hover { box-shadow: 0 0 0 2px var(--accent), 0 34px 60px rgba(0,0,0,.20); }

/* état vide */
.we-empty { text-align: center; padding: 70px 20px; color: var(--dark-gray); }
.we-empty > i { font-size: 46px; color: var(--accent); display: block; margin-bottom: 18px; }

/* ---- Fiche détail réalisation ---- */
.we-detail-meta { display: flex; flex-wrap: wrap; gap: 26px 40px; margin-top: 26px; }
.we-detail-meta .item { color: rgba(255,255,255,.85); }
.we-detail-meta .k { display: block; font-size: 11px; font-weight: 700; letter-spacing: 1.2px; text-transform: uppercase; color: var(--accent); margin-bottom: 5px; }
.we-detail-meta .v { font-size: 17px; color: #fff; }
.we-detail-meta .v a { color: #fff; border-bottom: 1px solid rgba(229,160,25,.6); }
.we-detail-meta .v a:hover { color: var(--accent); }

.we-lead { font-size: 21px; line-height: 34px; font-weight: 500; color: var(--black); margin-bottom: 34px; }
.we-rte { font-size: 17px; line-height: 31px; color: var(--dark-gray); }
.we-rte h2, .we-rte h3 { color: var(--black); font-weight: 700; letter-spacing: -.5px; margin: 34px 0 14px; }
.we-rte h2 { font-size: 28px; } .we-rte h3 { font-size: 22px; }
.we-rte p { margin-bottom: 20px; }
.we-rte a { color: var(--accent); border-bottom: 1px solid rgba(229,160,25,.5); }
.we-rte ul, .we-rte ol { margin: 0 0 20px 22px; } .we-rte li { margin-bottom: 8px; }
.we-rte img { max-width: 100%; height: auto; border-radius: 12px; margin: 14px 0; }
.we-rte blockquote { border-left: 3px solid var(--accent); padding-left: 22px; margin: 26px 0; font-size: 20px; line-height: 31px; color: var(--black); font-style: italic; }

/* galerie photos — masonry CSS multi-colonnes (robuste tous navigateurs)
   + lightbox Magnific (liens [data-group] dans .gallery-box). */
.we-gallery { column-count: 3; column-gap: 18px; }
@media (max-width: 991px) { .we-gallery { column-count: 2; } }
@media (max-width: 575px) { .we-gallery { column-count: 1; } }
.we-gallery-item { break-inside: avoid; -webkit-column-break-inside: avoid; page-break-inside: avoid; margin-bottom: 18px; display: block; }
.we-gallery-link { position: relative; display: block; overflow: hidden; border-radius: 14px; background: #111; }
.we-gallery-link img { width: 100%; height: auto; display: block; transition: transform .7s cubic-bezier(.2,.7,.2,1); }
.we-gallery-link:hover img { transform: scale(1.06); }
.we-gallery-link::after { content: ""; position: absolute; inset: 0; background: rgba(8,8,8,0); transition: background .4s ease; }
.we-gallery-link:hover::after { background: rgba(8,8,8,.25); }
.we-gallery-zoom { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 2; opacity: 0; transform: scale(.85); transition: opacity .4s ease, transform .4s ease; pointer-events: none; }
.we-gallery-link:hover .we-gallery-zoom { opacity: 1; transform: scale(1); }
.we-gallery-zoom i { width: 56px; height: 56px; border-radius: 50%; background: var(--accent); color: #1d1d1b; display: flex; align-items: center; justify-content: center; font-size: 22px; }
.we-gallery-zoom.play i { background: rgba(255,255,255,.95); }

/* vidéos embarquées (YouTube/Vimeo) — ratio 16/9 responsive */
.we-video-embed { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 14px; overflow: hidden; background: #111; margin-bottom: 18px; }
.we-video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
@supports not (aspect-ratio: 16 / 9) { .we-video-embed { height: 0; padding-bottom: 56.25%; } } /* repli vieux navigateurs */
/* Showreel accueil — façade « clic pour lire » (RGPD : YouTube n'est contacté QUE
   sur clic, pas au chargement de la page). Embed via youtube-nocookie. Format 16/9
   homogène, intégration bichromie noir/or. */
.we-video { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border: 0; padding: 0; border-radius: 18px; overflow: hidden; cursor: pointer; background: #1d1d1b; box-shadow: 0 30px 60px rgba(0,0,0,.18); }
.we-video::before { content: ""; position: absolute; inset: 0; background:
  radial-gradient(circle at 50% 42%, rgba(229,160,25,.12), transparent 60%),
  linear-gradient(180deg, rgba(255,255,255,.04), rgba(0,0,0,.35)); transition: opacity .4s ease; z-index: 1; }
.we-video:hover::before { opacity: .82; }
.we-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; z-index: 3; }
.we-video.is-loaded::before, .we-video.is-loaded .we-video-play, .we-video.is-loaded .we-video-label { display: none; }
.we-video-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 86px; height: 86px; border-radius: 50%; background: var(--accent); color: #1d1d1b; display: flex; align-items: center; justify-content: center; font-size: 40px; z-index: 2; box-shadow: 0 12px 34px rgba(229,160,25,.5); transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.we-video:hover .we-video-play { transform: translate(-50%, -50%) scale(1.08); }
.we-video-label { position: absolute; left: 0; right: 0; bottom: 26px; text-align: center; color: #fff; font-size: 13px; font-weight: 600; letter-spacing: .6px; text-transform: uppercase; z-index: 2; }

/* image d'ouverture de la fiche (sous le hero) */
.we-detail-cover { width: 100%; border-radius: 18px; overflow: hidden; box-shadow: 0 30px 70px rgba(0,0,0,.16); margin-bottom: 0; background: #111; }
.we-detail-cover img { width: 100%; height: auto; display: block; }
/* Retour (fiche réalisation) : vers la liste ou l'accueil. */
/* Couverture réalisation : espace généreux entre le haut de la zone grise et la photo. */
.we-cover-sec { padding-top: 120px; }
@media (max-width: 991px) { .we-cover-sec { padding-top: 80px; } }

/* Couverture actualité : espace sous l'image (sinon elle est plaquée au bas de
   la section grise, et la jointure des deux dégradés tombe pile sous l'image). */
.we-cover-pb { padding-bottom: 60px; }
@media (max-width: 991px) { .we-cover-pb { padding-bottom: 40px; } }

/* Lightbox (Magnific) — bouton de fermeture : un seul X centré dans un rond.
   Centrage par line-height (= hauteur) + text-align:center : c'est la méthode
   robuste tous navigateurs, et celle qu'utilise déjà le thème pour son propre
   bouton centré. (Le flexbox décentrait le glyphe × verticalement à cause de
   ses métriques de police, d'où le « X toujours décentré ».)
   On neutralise au passage les règles de vendors qui le poussaient :
   width:100%, text-align:right, right:-6px, padding:0 0 18px 10px.
   IMPORTANT : pas de ::after — sinon une 2e croix se dessine à côté du glyphe
   natif. Survol sobre : léger assombrissement, ni doré ni agrandissement. */
.mfp-wrap .mfp-close,
.mfp-image-holder .mfp-close {
    box-sizing: border-box !important;
    display: block !important;
    width: 44px !important;
    height: 44px !important;
    line-height: 44px !important;
    top: 16px !important;
    right: 16px !important;
    left: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    font-family: Arial, sans-serif !important;
    font-size: 30px !important;
    font-weight: 400 !important;
    text-align: center !important;
    text-indent: 0 !important;
    color: #fff !important;
    background: rgba(0, 0, 0, .6) !important;
    border-radius: 50% !important;
    opacity: 1 !important;
    transition: background-color .25s ease;
}
.mfp-wrap .mfp-close:hover,
.mfp-image-holder .mfp-close:hover {
    background: rgba(0, 0, 0, .82) !important;
}
/* Le thème déclare un curseur personnalisé images/mfg-close.png (absent → 404)
   sur l'overlay du lightbox. On repasse en curseur standard pour supprimer la
   requête manquante. */
.mfp-wrap { cursor: auto !important; }
.we-section-label { font-size: 12px; font-weight: 700; letter-spacing: 1.6px; text-transform: uppercase; color: var(--accent); margin-bottom: 14px; }

/* bande "autres réalisations" */
.we-related-title { font-size: 40px; font-weight: 700; letter-spacing: -1.5px; color: var(--black); margin-bottom: 40px; }
@media (max-width: 575px) { .we-related-title { font-size: 30px; } }

/* CTA bas de fiche */
.we-cta-band { background: var(--black); border-radius: 22px; padding: 64px 50px; text-align: center; position: relative; overflow: hidden; }
.we-cta-band::after { content: ""; position: absolute; top: -40%; right: -8%; width: 460px; height: 460px; background: radial-gradient(circle, rgba(229,160,25,.18), transparent 62%); pointer-events: none; }
.we-cta-band h3 { font-size: 40px; line-height: 1.1; font-weight: 700; letter-spacing: -1.5px; color: #fff; margin-bottom: 24px; position: relative; }
@media (max-width: 575px) { .we-cta-band { padding: 46px 26px; } .we-cta-band h3 { font-size: 28px; } .we-real-title { font-size: 20px; } }

/* ============================================================
   ACCUEIL — « Derniers jobs » : réalisations dynamiques
   Tuiles masonry (alternance portrait/paysage pilotée par
   aspect-ratio) + survol : voile sombre, nom du client en or,
   et photo NETTE révélée au travers de la forme du W (What Else).
   Compatible tous navigateurs (préfixes -webkit-, replis @supports)
   et tous supports (état tactile sans survol).
   ============================================================ */
.we-job-link { display: block; text-decoration: none; }

/* le conteneur média pilote la hauteur de la tuile → alternance masonry */
.we-job-media {
    position: relative;
    overflow: hidden;
    border-radius: 6px;
    background: #111;
    aspect-ratio: 4 / 3; /* défaut (paysage) */
}
.we-job-media.ratio-portrait { aspect-ratio: 3 / 4; }
.we-job-media.ratio-paysage  { aspect-ratio: 4 / 3; }
.we-job-media.ratio-carre    { aspect-ratio: 1 / 1; }
@supports not (aspect-ratio: 1 / 1) { .we-job-media { height: 280px; } } /* repli vieux navigateurs */

.we-job-media img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
    transition: transform .6s cubic-bezier(.22,.61,.36,1);
}
.we-job-link:hover .we-job-media img { transform: scale(1.04); }

/* couche 1 : voile sombre, apparaît au survol */
.we-job-veil {
    position: absolute; inset: 0;
    background: rgba(15,15,14,.66);
    opacity: 0; transition: opacity .45s ease;
    pointer-events: none;
}
.we-job-link:hover .we-job-veil { opacity: 1; }

/* couche 2 : la MÊME photo, nette, masquée en forme de W (~50% de la largeur),
   posée au-dessus du voile → "fenêtre" claire en forme de W */
.we-job-reveal {
    position: absolute; inset: 0;
    background-size: cover; background-position: center; background-repeat: no-repeat;
    opacity: 0; transition: opacity .45s ease;
    pointer-events: none;
    -webkit-mask-image: url('../images/we-w-mask.png');
            mask-image: url('../images/we-w-mask.png');
    -webkit-mask-repeat: no-repeat;  mask-repeat: no-repeat;
    -webkit-mask-position: center;   mask-position: center;
    -webkit-mask-size: 62% auto;     mask-size: 62% auto;
}
.we-job-link:hover .we-job-reveal { opacity: 1; }
/* repli : si le masquage n'est pas supporté, on masque la couche reveal
   (on garde voile + nom plutôt qu'un rectangle de photo couvrant tout le voile) */
@supports not ((mask-image: url(x)) or (-webkit-mask-image: url(x))) {
    .we-job-reveal { display: none; }
}

/* légende en bas de la photo voilée : nom du client en or (majuscules,
   plus grand) + année en dessous (plus petit) */
.we-job-caption {
    position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
    padding: 16px 18px; text-align: center;
    opacity: 0; transform: translateY(8px);
    transition: opacity .45s ease, transform .45s ease;
    pointer-events: none;
}
.we-job-link:hover .we-job-caption { opacity: 1; transform: translateY(0); }
.we-job-name {
    display: block;
    color: var(--accent); font-weight: 700; font-size: 20px;
    text-transform: uppercase; letter-spacing: .6px; line-height: 1.15;
    text-shadow: 0 2px 12px rgba(0,0,0,.6);
}
.we-job-year {
    display: block; margin-top: 4px;
    color: rgba(255,255,255,.82); font-weight: 500; font-size: 13px;
    letter-spacing: .4px;
    text-shadow: 0 2px 10px rgba(0,0,0,.55);
}

/* supports tactiles (pas de survol) : légende toujours lisible (dégradé bas),
   pas de voile plein ni de reveal — la photo reste nette et cliquable */
@media (hover: none) {
    .we-job-veil, .we-job-reveal { display: none; }
    .we-job-caption {
        opacity: 1; transform: none; text-align: left;
        padding-top: 42px;
        background: linear-gradient(to top, rgba(0,0,0,.74), rgba(0,0,0,0));
    }
}

/* ---- ACCUEIL : grille déterministe à EMPLACEMENTS FORCÉS (gabarit 8 slots) ----
   4 colonnes fixes ; chaque colonne empile son slot du haut puis du bas.
   Portrait (3/4) + paysage (4/3) par colonne → hauteurs de colonnes égales :
   bas alignés, hauts décalés. Pas d'Isotope → positions strictement respectées. */
.we-hp { display: flex; gap: 30px; align-items: flex-start; }
.we-hp-col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 30px; }
.we-hp .we-job { width: 100%; }
/* cale invisible : réserve la place d'un slot haut vide quand le bas est occupé */
.we-hp-spacer { width: 100%; }
.we-hp-spacer.ratio-portrait { aspect-ratio: 3 / 4; }
.we-hp-spacer.ratio-paysage  { aspect-ratio: 4 / 3; }
@supports not (aspect-ratio: 1 / 1) { .we-hp-spacer { height: 280px; } }
/* tablette : 2 colonnes (les 4 colonnes passent sur deux rangées) */
@media (max-width: 991px) {
    .we-hp { flex-wrap: wrap; gap: 22px; }
    .we-hp-col { flex: 1 1 calc(50% - 11px); gap: 22px; }
}
/* mobile : 1 colonne, on supprime les cales (plus d'emplacement vide à réserver) */
@media (max-width: 575px) {
    .we-hp { gap: 18px; }
    .we-hp-col { flex: 1 1 100%; gap: 18px; }
    .we-hp-spacer { display: none; }
}
.form-alert.error { background: #fdecec; border: 1px solid #f3b4b4; color: #8a2020; }

/* ============================================================
   RESPONSIVE — correctifs « affichage irréprochable » (tous supports)
   ============================================================ */
/* FOOTER : l'adresse e-mail est un jeton INSÉCABLE (info@whatelse-agency.be).
   À fs-50 / sm-fs-40, elle dépasse la largeur d'un mobile → un scroll
   horizontal apparaît sur TOUT le site (hero + contenu paraissent « coupés »
   à droite). On borne la taille au viewport et on autorise un repli propre,
   sans toucher au rendu desktop (≥ 768px inchangé). */
@media (max-width: 767px) {
    footer .d-inline-block { max-width: 100%; }
    footer a[href^="mailto:"] {
        font-size: clamp(1.05rem, 6vw, 2rem) !important;
        line-height: 1.2;
        overflow-wrap: break-word;
        word-break: break-word;
    }
    footer .bi-envelope { font-size: 1.7rem !important; }
    /* Le grand titre du footer suit la largeur dispo (jamais de débordement). */
    footer .fs-70 { overflow-wrap: break-word; }
}
/* Filet : aucun titre de hero ne doit pouvoir élargir la page sur très petit
   écran (repli mot-à-mot uniquement si un mot ne tient pas). */
@media (max-width: 575px) {
    .page-hero .page-hero-title { overflow-wrap: break-word; }
}

/* ============================================================
   PAGES LÉGALES — colonne de lecture confortable + typographie sobre
   ============================================================ */
.we-legal {
    max-width: 820px;
    margin: 0 auto;
    color: #2b2b29;
    font-size: 16px;
    line-height: 1.75;
}
.we-legal h2 {
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -.01em;
    color: #1d1d1b;
    margin: 42px 0 14px;
}
.we-legal h2:first-of-type { margin-top: 0; }
.we-legal p { margin-bottom: 18px; }
.we-legal ul { margin: 0 0 18px; padding-left: 22px; }
.we-legal li { margin-bottom: 8px; }
.we-legal a { color: #b9791a; text-decoration: underline; text-underline-offset: 2px; }
.we-legal a:hover { color: #E5A019; }
.we-legal .we-legal-intro { font-size: 17px; color: #444; }
.we-legal code {
    background: #f1efe9; padding: 1px 6px; border-radius: 4px;
    font-size: .92em; color: #1d1d1b;
}
.we-legal-table {
    width: 100%; border-collapse: collapse; margin: 8px 0 18px; font-size: 15px;
}
.we-legal-table th, .we-legal-table td {
    border: 1px solid #e3e0d8; padding: 12px 14px; text-align: left; vertical-align: top;
}
.we-legal-table th { background: #1d1d1b; color: #fff; font-weight: 600; }
.we-legal-table tbody tr:nth-child(odd) { background: #faf9f6; }
@media (max-width: 575px) {
    .we-legal-table, .we-legal-table thead, .we-legal-table tbody,
    .we-legal-table th, .we-legal-table td, .we-legal-table tr { display: block; }
    .we-legal-table thead { display: none; }
    .we-legal-table td { border: none; border-bottom: 1px solid #e3e0d8; padding: 8px 0; }
    .we-legal-table tr { border: 1px solid #e3e0d8; border-radius: 8px; padding: 6px 12px; margin-bottom: 12px; }
}

/* ============================================================
   FOOTER — menu des pages légales (gauche), police plus petite
   ============================================================ */
.we-legal-menu {
    list-style: none; margin: 0; padding: 0;
    display: flex; flex-wrap: wrap; align-items: center;
    gap: 8px 22px;
    font-size: 13px; font-weight: 500; letter-spacing: .2px;
}
.we-legal-menu a { color: #8a8a86; transition: color .25s ease; }
.we-legal-menu a:hover { color: #E5A019; }
@media (max-width: 767px) {
    .we-legal-menu { justify-content: flex-start; gap: 6px 18px; }
}

/* ============================================================
   BANDEAU COOKIES — informatif (cookies strictement nécessaires)
   ============================================================ */
.we-cookie-banner {
    position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 1080;
    max-width: 920px; margin: 0 auto;
    display: flex; align-items: center; gap: 18px;
    background: #1d1d1b; color: #f3f3f1;
    border: 1px solid rgba(229,160,25,.35);
    border-radius: 14px;
    padding: 16px 20px;
    box-shadow: 0 14px 40px rgba(0,0,0,.38);
    opacity: 0; transform: translateY(14px);
    transition: opacity .3s ease, transform .3s ease;
}
.we-cookie-banner.is-visible { opacity: 1; transform: translateY(0); }
.we-cookie-text { margin: 0; font-size: 13.5px; line-height: 1.55; flex: 1 1 auto; }
.we-cookie-text a { color: #E5A019; text-decoration: underline; text-underline-offset: 2px; }
.we-cookie-btn {
    flex: 0 0 auto; cursor: pointer; white-space: nowrap;
    background: #E5A019; color: #1d1d1b;
    border: none; border-radius: 9px;
    padding: 11px 22px; font-size: 14px; font-weight: 600;
    transition: background .25s ease, transform .15s ease;
}
.we-cookie-btn:hover { background: #f2b232; }
.we-cookie-btn:active { transform: translateY(1px); }
@media (max-width: 575px) {
    .we-cookie-banner { flex-direction: column; align-items: stretch; text-align: left; gap: 12px; padding: 16px; }
    .we-cookie-btn { width: 100%; }
}