/**
 * Pertuade — FAB Liquid Glass · Capsule (variante B)
 * Requiert <filter id="pp-refract"> dans header.php après <body>.
 */

/* ============================================
   WRAPPER FIXE — superpose capsule + orbe via grid (toggle data-collapsed)
   ============================================ */
.pp-fab-wrapper {
    position: fixed;
    right: clamp(1rem, 2vw, 2rem);
    top: 50%;
    transform: translateY(-50%);
    z-index: 200;
    pointer-events: none;
    display: grid;
    place-items: center;
    color: var(--cream);  /* hérité par les <a> via body.pertuade-v3 a { color: inherit } */
}
.pp-fab-wrapper > * { pointer-events: auto; }
.pp-fab-wrapper > .pp-fab-capsule,
.pp-fab-wrapper > .pp-fab-orb {
    grid-area: 1 / 1;
}

/* ============================================
   ÉTAT OUVERT — CAPSULE GLASS
   ============================================ */
.pp-fab-capsule {
    position: relative;
    padding: 0.625rem;
    border-radius: 38px;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;

    /* Background quasi transparent — secret du Liquid Glass */
    background: rgba(255, 255, 255, 0.06);

    /* Refraction via SVG filter + blur léger + saturation */
    backdrop-filter: url(#pp-refract) blur(3px) saturate(150%) brightness(1.1);
    -webkit-backdrop-filter: url(#pp-refract) blur(3px) saturate(150%) brightness(1.1);

    /* Edge rim light */
    border: 1px solid rgba(255, 255, 255, 0.32);

    /* Multi-layer shadows pour l'épaisseur du verre */
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.6),
        inset 0 -1px 0.5px rgba(255, 255, 255, 0.08),
        inset 0 0 14px rgba(255, 255, 255, 0.05),
        0 0.5px 0 rgba(255, 255, 255, 0.3),
        0 14px 38px rgba(0, 0, 0, 0.2),
        0 3px 8px rgba(0, 0, 0, 0.12);

    transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1),
                transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
    isolation: isolate;
}

/* Specular sweep — reflet lumineux côté haut-gauche */
.pp-fab-capsule::before {
    content: '';
    position: absolute;
    top: 0;
    left: 10%;
    width: 32%;
    height: 40%;
    background: linear-gradient(180deg,
        rgba(255, 255, 255, 0.55) 0%,
        rgba(255, 255, 255, 0.1) 60%,
        transparent 100%);
    border-radius: 50% 50% 50% 50% / 70% 70% 30% 30%;
    filter: blur(2px);
    pointer-events: none;
    z-index: 1;
}

/* ============================================
   BOUTONS ACTION (téléphone, mail, boutique, instagram)
   ============================================ */
.pp-fab-btn {
    position: relative;
    z-index: 2;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    border: none;
    background: transparent;
    color: var(--cream);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    text-decoration: none;
}
.pp-fab-btn > svg {
    width: 22px;
    height: 22px;
    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.4));
}
.pp-fab-btn:hover {
    background: rgba(255, 255, 255, 0.12);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
    transform: scale(1.06);
}
.pp-fab-btn:focus-visible {
    outline: 2px solid var(--lime);
    outline-offset: 4px;
}

/* ============================================
   BOUTON COLLAPSE (croix TOP-LEFT — sœur de la capsule, plus dedans)
   ============================================ */
.pp-fab-collapse-btn {
    position: absolute;
    top: -14px;
    left: -14px;
    right: auto;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(10px) saturate(180%);
    -webkit-backdrop-filter: blur(10px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.25);
    color: var(--cream);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.2),
        0 3px 10px rgba(0, 0, 0, 0.35);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 20;
}
.pp-fab-collapse-btn svg {
    width: 13px;
    height: 13px;
}
.pp-fab-collapse-btn:hover {
    transform: scale(1.15) rotate(90deg);
    background: var(--lime);
    color: var(--text);
    border-color: var(--lime);
}
.pp-fab-collapse-btn:focus-visible {
    outline: 2px solid var(--lime);
    outline-offset: 2px;
}

/* ============================================
   ÉTAT RANGÉ — ORBE LIME (breath subtle)
   ============================================ */
.pp-fab-orb {
    position: relative;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    overflow: hidden;
    isolation: isolate;
    border: 1px solid rgba(255, 255, 255, 0.45);

    background: rgba(191, 255, 0, 0.18);
    backdrop-filter: url(#pp-refract) blur(3px) saturate(180%) brightness(1.1);
    -webkit-backdrop-filter: url(#pp-refract) blur(3px) saturate(180%) brightness(1.1);

    color: var(--text);
    box-shadow:
        inset 0 1.5px 0 rgba(255, 255, 255, 0.85),
        inset 0 0 14px rgba(255, 255, 255, 0.12),
        0 1px 0 rgba(255, 255, 255, 0.4),
        0 0 30px rgba(191, 255, 0, 0.35),
        0 8px 22px rgba(0, 0, 0, 0.2);

    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    animation: pp-fab-orb-breath 2.4s ease-in-out infinite;
}
.pp-fab-orb::before {
    content: '';
    position: absolute;
    top: 10%;
    left: 22%;
    width: 42%;
    height: 28%;
    background: radial-gradient(ellipse 100% 100% at 50% 50%,
        rgba(255, 255, 255, 0.85) 0%,
        rgba(255, 255, 255, 0.25) 50%,
        transparent 80%);
    border-radius: 50%;
    filter: blur(1.5px);
    pointer-events: none;
    z-index: 1;
}
.pp-fab-orb svg {
    position: relative;
    z-index: 2;
    width: 22px;
    height: 22px;
    filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.2));
}
.pp-fab-orb:hover {
    transform: scale(1.12);
    animation-play-state: paused;
    box-shadow:
        inset 0 1.5px 0 rgba(255, 255, 255, 0.95),
        0 0 50px rgba(191, 255, 0, 0.55),
        0 12px 30px rgba(0, 0, 0, 0.25);
}
.pp-fab-orb:focus-visible {
    outline: 2px solid var(--text);
    outline-offset: 4px;
}

@keyframes pp-fab-orb-breath {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.04); }
}

/* ============================================
   TOGGLE COLLAPSED
   ============================================ */
.pp-fab-wrapper[data-collapsed="false"] .pp-fab-capsule {
    opacity: 1;
    pointer-events: auto;
    transform: scale(1);
}
.pp-fab-wrapper[data-collapsed="false"] .pp-fab-orb {
    opacity: 0;
    pointer-events: none;
    transform: scale(0.5);
}
.pp-fab-wrapper[data-collapsed="true"] .pp-fab-capsule {
    opacity: 0;
    pointer-events: none;
    transform: scale(0.8);
}
.pp-fab-wrapper[data-collapsed="true"] .pp-fab-orb {
    opacity: 1;
    pointer-events: auto;
    transform: scale(1);
}

/* ============================================
   BACK TO TOP (préservé)
   ============================================ */
.pp-fab-back {
    position: fixed;
    right: 24px;
    bottom: 24px;
    z-index: 50;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(10, 10, 10, 0.92);
    backdrop-filter: blur(16px) saturate(180%);
    -webkit-backdrop-filter: blur(16px) saturate(180%);
    border: 1px solid rgba(245, 241, 234, 0.18);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    opacity: 0;
    pointer-events: none;
    transform: translateY(10px);
    transition: opacity 0.3s, transform 0.3s, background 0.3s;
    box-shadow:
        0 12px 24px rgba(0, 0, 0, 0.30),
        inset 0 1px 0 rgba(245, 241, 234, 0.12);
    padding: 0;
}
.pp-fab-back.is-visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}
.pp-fab-back svg {
    width: 16px;
    height: 16px;
    stroke: var(--cream);
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke 0.3s, transform 0.3s;
}
.pp-fab-back:hover svg,
.pp-fab-back:focus-visible svg {
    stroke: var(--lime);
    transform: translateY(-2px);
}

/* ============================================
   MOBILE — Bottom-center + capsule horizontale (style dock iOS)
   ============================================ */
@media (max-width: 768px) {
    .pp-fab-wrapper {
        top: auto;
        right: auto;
        bottom: 1.25rem;
        left: 50%;
        transform: translateX(-50%);
    }
    /* Capsule passe en horizontale */
    .pp-fab-capsule {
        flex-direction: row;
        padding: 0.5rem 0.625rem;
        gap: 0.25rem;
        border-radius: 32px;
    }
    /* Specular sweep adapté à la capsule horizontale */
    .pp-fab-capsule::before {
        top: 10%;
        left: 0;
        width: 40%;
        height: 50%;
        background: linear-gradient(90deg,
            rgba(255, 255, 255, 0.55) 0%,
            rgba(255, 255, 255, 0.10) 60%,
            transparent 100%);
        border-radius: 50% 50% 50% 50% / 30% 30% 70% 70%;
    }
    .pp-fab-btn { width: 44px; height: 44px; }
    .pp-fab-btn > svg { width: 20px; height: 20px; }
    /* Croix repositionnée en top-right de la capsule horizontale (capsule centrée → space dispo) */
    .pp-fab-collapse-btn {
        top: -12px;
        right: -12px;
        left: auto;
    }
    .pp-fab-orb { width: 52px; height: 52px; }
    /* Back-to-top reste bottom-right, pas en concurrence */
    .pp-fab-back { right: 12px; bottom: 12px; width: 40px; height: 40px; }
    .pp-fab-back svg { width: 14px; height: 14px; }
}

/* Petit mobile — Compacter pour 320-380px */
@media (max-width: 380px) {
    .pp-fab-capsule {
        padding: 0.4rem 0.5rem;
        gap: 0.125rem;
    }
    .pp-fab-btn { width: 40px; height: 40px; }
    .pp-fab-btn > svg { width: 18px; height: 18px; }
}

/* ============================================
   FALLBACK — Browsers sans backdrop-filter url()
   ============================================ */
@supports not (backdrop-filter: url(#pp-refract)) {
    .pp-fab-capsule,
    .pp-fab-orb {
        backdrop-filter: blur(16px) saturate(180%);
        -webkit-backdrop-filter: blur(16px) saturate(180%);
        background: rgba(255, 255, 255, 0.15);
    }
    .pp-fab-orb { background: rgba(191, 255, 0, 0.35); }
}

/* ============================================
   ACCESSIBILITY — Prefers reduced motion
   ============================================ */
@media (prefers-reduced-motion: reduce) {
    .pp-fab-orb { animation: none; }
    .pp-fab-capsule,
    .pp-fab-orb,
    .pp-fab-btn,
    .pp-fab-collapse-btn { transition: opacity 0.2s; }
}

/* ============================================
   PRINT — Masqué
   ============================================ */
@media print {
    .pp-fab-wrapper,
    .pp-fab-back { display: none !important; }
}

/* ============================================================================
   FAB · COUCHE HYBRIDE (rework 2026-05-11) — détection auto fond + croix masquée
   ============================================================================ */

/* ----- TRANSITION DOUCE entre modes light ↔ dark (avant les règles mode) ----- */
.pp-fab-capsule,
.pp-fab-btn,
.pp-fab-orb {
    transition:
        background 0.5s cubic-bezier(0.4, 0, 0.2, 1),
        border-color 0.5s cubic-bezier(0.4, 0, 0.2, 1),
        box-shadow 0.5s cubic-bezier(0.4, 0, 0.2, 1),
        color 0.5s cubic-bezier(0.4, 0, 0.2, 1),
        transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
        opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ----- CROIX X TOUJOURS VISIBLE mais discrète (Lucas ne découvrait pas le hover-reveal) ----- */
.pp-fab-collapse-btn {
    opacity: 0.55;
    transform: scale(0.92);
    pointer-events: auto;
    transition:
        opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1),
        transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
        background 0.3s,
        color 0.3s,
        border-color 0.3s;
}
/* Hover wrapper #pp-fab : la croix s'éclaircit légèrement (signale qu'elle est interactive) */
#pp-fab:hover .pp-fab-collapse-btn,
#pp-fab:focus-within .pp-fab-collapse-btn {
    opacity: 0.85;
    transform: scale(1);
}
/* Hover direct sur la croix : pleine opacité + rotation lime */
.pp-fab-collapse-btn:hover {
    opacity: 1 !important;
    transform: scale(1.15) rotate(90deg) !important;
    background: var(--lime);
    color: var(--text);
    border-color: var(--lime);
}
/* Mode collapsed (orbe visible) : croix forcée invisible quel que soit le hover */
#pp-fab[data-collapsed="true"] .pp-fab-collapse-btn {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: scale(0.5) !important;
}
/* Mobile : croix plus visible au repos (pas de hover possible sur tactile) */
@media (hover: none) {
    .pp-fab-collapse-btn {
        opacity: 0.7;
        transform: scale(0.95);
        pointer-events: auto;
    }
    #pp-fab:focus-within .pp-fab-collapse-btn,
    .pp-fab-collapse-btn:active {
        opacity: 1;
        transform: scale(1.1);
    }
}

/* ----- MODE SAFE par défaut (avant exécution du JS détection) ----- */
#pp-fab:not([data-glass-mode]) .pp-fab-capsule {
    background: rgba(50, 50, 50, 0.14);
    border: 1px solid rgba(80, 80, 80, 0.40);
}
#pp-fab:not([data-glass-mode]) .pp-fab-btn {
    color: rgba(40, 40, 40, 0.85);
}

/* ----- MODE LIGHT (fond clair uni cream / paille / cream-2) ----- */
#pp-fab[data-glass-mode="light"] .pp-fab-capsule {
    background: rgba(50, 50, 50, 0.16);
    border: 1px solid rgba(80, 80, 80, 0.42);
    box-shadow:
        inset 0 1.5px 0 rgba(255, 255, 255, 0.85),
        inset 0 -1px 1px rgba(0, 0, 0, 0.08),
        inset 0 0 18px rgba(255, 255, 255, 0.08),
        0 1px 0 rgba(255, 255, 255, 0.55),
        0 14px 38px rgba(0, 0, 0, 0.22),
        0 3px 8px rgba(0, 0, 0, 0.15);
}
#pp-fab[data-glass-mode="light"] .pp-fab-capsule::before {
    background: linear-gradient(180deg,
        rgba(255, 255, 255, 0.70) 0%,
        rgba(255, 255, 255, 0.10) 60%,
        transparent 100%);
}
#pp-fab[data-glass-mode="light"] .pp-fab-btn {
    color: rgba(40, 40, 40, 0.88);
}
#pp-fab[data-glass-mode="light"] .pp-fab-btn:hover {
    background: rgba(255, 255, 255, 0.55);
    color: var(--text);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
#pp-fab[data-glass-mode="light"] .pp-fab-orb {
    /* Orbe lime reste lime, glow ajusté pour fond clair */
    box-shadow:
        inset 0 1.5px 0 rgba(255, 255, 255, 0.85),
        inset 0 0 14px rgba(255, 255, 255, 0.12),
        0 1px 0 rgba(255, 255, 255, 0.40),
        0 0 30px rgba(191, 255, 0, 0.45),
        0 8px 22px rgba(0, 0, 0, 0.18);
}

/* ----- MODE DARK (fond foncé ou photo lifestyle) ----- */
#pp-fab[data-glass-mode="dark"] .pp-fab-capsule {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.35);
    box-shadow:
        inset 0 1.5px 0 rgba(255, 255, 255, 0.75),
        inset 0 -1px 1px rgba(255, 255, 255, 0.10),
        inset 0 0 18px rgba(255, 255, 255, 0.08),
        0 1px 0 rgba(255, 255, 255, 0.40),
        0 14px 38px rgba(0, 0, 0, 0.22),
        0 3px 8px rgba(0, 0, 0, 0.14);
}
#pp-fab[data-glass-mode="dark"] .pp-fab-capsule::before {
    background: linear-gradient(180deg,
        rgba(255, 255, 255, 0.55) 0%,
        rgba(255, 255, 255, 0.10) 60%,
        transparent 100%);
}
#pp-fab[data-glass-mode="dark"] .pp-fab-btn {
    color: rgba(245, 241, 234, 0.95);
}
#pp-fab[data-glass-mode="dark"] .pp-fab-btn:hover {
    background: rgba(255, 255, 255, 0.18);
    color: var(--cream);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.40);
}

/* ============================================================
   MOBILE FAB ORB-FIRST + POPOVER CAPSULE (FABMOBILE 2026-05-20)
   Override des règles @media (max-width: 768px) plus haut.
   - Orbe seule 40×40 à droite (right:12px, bottom:60px)
   - Au-dessus du back-to-top (right:12px bottom:12px 40×40)
   - Tap orbe → data-collapsed="false" → capsule en popover au-dessus
   ============================================================ */
@media (max-width: 768px) {
    .pp-fab-wrapper {
        top: auto;
        left: auto;
        right: 12px;
        bottom: 60px;
        transform: none;
        width: 40px;
        height: 40px;
    }
    .pp-fab-wrapper .pp-fab-orb {
        width: 40px;
        height: 40px;
        position: relative;
        z-index: 2;
    }
    .pp-fab-wrapper .pp-fab-orb svg {
        width: 18px;
        height: 18px;
    }

    /* État FERMÉ : capsule cachée + close button caché */
    .pp-fab-wrapper[data-collapsed="true"] .pp-fab-capsule,
    .pp-fab-wrapper[data-collapsed="true"] .pp-fab-collapse-btn {
        display: none;
    }

    /* État OUVERT : capsule en popover absolu au-dessus de l'orbe */
    .pp-fab-wrapper[data-collapsed="false"] .pp-fab-capsule {
        display: flex;
        flex-direction: row;
        position: absolute;
        bottom: calc(100% + 12px);
        right: 0;
        left: auto;
        transform: none;
        width: max-content;
        animation: ppFabPopover 0.28s cubic-bezier(0.4, 0, 0.2, 1);
    }

    /* Close button en top-right de la capsule popover.
       Wrapper=40px, capsule au-dessus avec gap 12px et hauteur ~62px.
       Top de capsule = 100% + 12 + 62 = 114px du bottom du wrapper.
       On veut close-btn dépasser légèrement le top → bottom ≈ 104px. */
    .pp-fab-wrapper[data-collapsed="false"] .pp-fab-collapse-btn {
        display: flex;
        position: absolute;
        top: auto;
        bottom: calc(100% + 60px);
        right: -8px;
        left: auto;
        z-index: 3;
    }

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