@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');

body {
    font-family: 'Inter', sans-serif;
    background-color: #000000;
    color: white;
    margin: 0;
}

/* Override sections fonds gris pour un look full black */
section.bg-slate-900\/50 {
    background-color: #000000 !important;
}

.glass {
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(16px);
    border: 1px solid rgb(187, 187, 187);
}

/* ==========================================================================
   CORRECTION WATERMARK SPLINE
   ========================================================================== */
spline-viewer {
    width: 100% !important;
    height: 100% !important;
    transform: scale(1.15);
    transform-origin: center center;
}

@media (max-width: 768px) {
    spline-viewer {
        transform: scale(1.50) translateY(5%);
    }
}

spline-viewer::part(watermark) {
    display: none !important;
}
/* ========================================================================== */

/* Bouton menu : mobile uniquement */
#menuBtn {
    display: block;
}

@media (min-width: 768px) {
    #menuBtn {
        display: none !important;
    }
}

/* ==========================================================================
   ANIMATIONS DE SCROLL — conditionnées à la présence de JS (js-loaded)
   Sans JS : les éléments [data-reveal] restent pleinement visibles,
   ce qui permet aux crawlers et LLMs de lire tout le contenu.
   Avec JS : la classe 'reveal' est ajoutée par le script, déclenchant l'animation.
   ========================================================================== */

/* État de départ : caché — UNIQUEMENT quand JS est actif */
.js-loaded .reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s ease-out;
}

/* État d'arrivée : visible après intersection */
.js-loaded .reveal.active {
    opacity: 1;
    transform: translateY(0);
}

/* Fallback sans JS : toujours visible (pas de transition) */
.reveal {
    opacity: 1;
    transform: none;
}

/* ========================================================================== */

/* Facebook Pixel noscript — remplace le style en ligne display:none */
.fb-noscript-pixel {
    display: none !important;
    visibility: hidden;
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}