/* ==========================================================================
   Studio La Plage / Mano a Mano — Design system « Mer & Terre »
   Deux univers, une base claire et joyeuse.
   - Thème par défaut (:root) = MER  → Studio La Plage (pilates / yoga)
   - body.theme-ceramique       = TERRE → Mano a Mano (céramique)
   ========================================================================== */

/* ----- Univers MER (Studio La Plage) — défaut --------------------------- */
:root {
    --primary: #3aa6b9;            /* bleu mer */
    --primary-container: #2c8595;  /* hover */
    --on-primary: #ffffff;
    --on-primary-container: #04323b;
    --primary-fixed: #cdeef4;
    --primary-fixed-dim: #9bdbe6;

    --secondary: #f0a93f;          /* sable / soleil */
    --secondary-container: #ffe2b0;
    --on-secondary: #3a2607;

    --background: #fff6ec;         /* crème clair */
    --surface: #fff6ec;
    --surface-dim: #f3e6d4;
    --surface-bright: #fffaf3;
    --surface-container-lowest: #ffffff;
    --surface-container-low: #fdf0e1;
    --surface-container: #f8e7d3;
    --surface-container-high: #f2ddc4;
    --surface-container-highest: #ecd4b6;
    --surface-variant: #ecd9c2;

    --on-surface: #1f4e5f;         /* encre profonde */
    --on-surface-variant: #4d6a74;
    --on-background: #1f4e5f;

    --outline: #9bb1b7;
    --outline-variant: #e3d2bb;

    /* accents décoratifs / placeholders */
    --accent-soft: #ffd9a0;        /* sable doux */
    --ph-1: #3aa6b9;
    --ph-2: #7fd0d8;
    --focus-ring: rgba(58, 166, 185, 0.40);
    --radius: 1.5rem;
    --radius-sm: 0.9rem;
    --shadow: 0 18px 40px -22px rgba(31, 78, 95, 0.45);
    --shadow-soft: 0 10px 30px -18px rgba(31, 78, 95, 0.35);
    --nav-bg: rgba(255, 250, 243, 0.78);
    --nav-border: rgba(58, 166, 185, 0.18);
}

/* ----- Univers TERRE (Mano a Mano — céramique) -------------------------- */
body.theme-ceramique {
    --primary: #c4704b;            /* terracotta */
    --primary-container: #a85636;
    --on-primary: #ffffff;
    --on-primary-container: #2e1206;
    --primary-fixed: #f6d9c6;
    --primary-fixed-dim: #e9b89c;

    --secondary: #8aa17f;          /* sauge */
    --secondary-container: #d9e4d1;
    --on-secondary: #14210f;

    --background: #fbf4ea;         /* crème chaud */
    --surface: #fbf4ea;
    --surface-dim: #efe1cd;
    --surface-bright: #fff9f1;
    --surface-container-lowest: #ffffff;
    --surface-container-low: #f7ecdc;
    --surface-container: #f1e1cb;
    --surface-container-high: #ecd7bd;
    --surface-container-highest: #e8c9a0;  /* argile clair */
    --surface-variant: #e8c9a0;

    --on-surface: #3f2a1c;         /* brun terre */
    --on-surface-variant: #715844;
    --on-background: #3f2a1c;

    --outline: #b59a7d;
    --outline-variant: #ddc7a9;

    --accent-soft: #e8c9a0;
    --ph-1: #c4704b;
    --ph-2: #e0a06e;
    --focus-ring: rgba(196, 112, 75, 0.40);
    --nav-bg: rgba(255, 249, 241, 0.80);
    --nav-border: rgba(196, 112, 75, 0.18);
}

/* ----- Typographie ------------------------------------------------------ */
body {
    font-family: 'Nunito', system-ui, sans-serif;
    background: var(--background);
    color: var(--on-surface);
}

h1, h2, h3, h4,
.serif-font, .font-headline, .font-serif {
    font-family: 'Fraunces', 'Georgia', serif;
    letter-spacing: -0.01em;
}

.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

/* ----- Navigation ------------------------------------------------------- */
.glass-nav {
    background: var(--nav-bg);
    backdrop-filter: blur(16px) saturate(1.4);
    -webkit-backdrop-filter: blur(16px) saturate(1.4);
    border-bottom: 1px solid var(--nav-border);
}

/* ----- Menu mobile ------------------------------------------------------ */
/* Le bouton n'existe qu'en dessous de 900px ; au-dessus, .main-nav est la
   barre de liens classique. */
.hamburger {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 44px;
    height: 44px;
    padding: 11px;
    border: 1px solid var(--nav-border);
    border-radius: 999px;
    background: transparent;
    cursor: pointer;
}
.hamburger span {
    display: block;
    width: 100%;
    height: 2px;
    border-radius: 2px;
    background: var(--on-surface);
    transition: transform .3s ease, opacity .2s ease;
}
.hamburger[aria-expanded='true'] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger[aria-expanded='true'] span:nth-child(2) { opacity: 0; }
.hamburger[aria-expanded='true'] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.main-nav { display: flex; }

@media (max-width: 900px) {
    .hamburger { display: flex; }

    /* la barre respire moins sur petit écran */
    nav.glass-nav { padding-left: 1rem; padding-right: 1rem; }
    .brand-group a { font-size: 1rem; }
    .brand-group span { font-size: 1rem; }
    nav a.bg-primary { padding-left: 1.25rem; padding-right: 1.25rem; font-size: .9rem; }

    /* Panneau déroulant sous la barre.
       Sélecteurs préfixés par `nav` : le bloc de liens porte encore les classes
       Tailwind `items-center gap-10`, qu'il faut battre en spécificité. */
    nav .main-nav {
        position: fixed;
        top: 4.25rem;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: .25rem 1.25rem 1.25rem;
        /* fond opaque : le panneau passe au-dessus du hero, la transparence
           rendait les liens illisibles */
        background: var(--surface-bright);
        border-bottom: 1px solid var(--nav-border);
        box-shadow: var(--shadow);
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transform: translateY(-10px);
        transition: opacity .25s ease, transform .25s ease, visibility .25s;
    }
    nav .main-nav.open {
        opacity: 1;
        visibility: visible;
        pointer-events: auto;
        transform: none;
    }
    nav .main-nav a {
        padding: .95rem .25rem;
        font-size: 1.05rem;
        text-align: left;
        border-bottom: 1px solid var(--outline-variant);
    }
    nav .main-nav a:last-child { border-bottom: none; }
    /* l'état actif reste lisible sans le soulignement plein largeur */
    nav .main-nav a.border-b-2 { border-bottom-color: var(--primary); }
}

/* Coins arrondis joyeux sur les boutons / CTA */
nav a.bg-primary,
main a.bg-primary,
main a.bg-secondary,
a.bg-primary,
a.bg-secondary,
button[type='submit'] {
    border-radius: 999px !important;
    box-shadow: var(--shadow-soft);
}

/* Photos & blocs arrondis */
main img,
header img {
    border-radius: var(--radius);
}
/* images qui remplissent une carte/conteneur : on suit l'arrondi du conteneur */
.card-tile > img,
.overflow-hidden > img {
    border-radius: inherit;
}

/* ----- Placeholders « photo » (blocs couleur + dégradés) ---------------- */
.ph {
    position: relative;
    overflow: hidden;
    border-radius: var(--radius);
    background: linear-gradient(135deg, var(--ph-1), var(--ph-2));
    display: flex;
    align-items: flex-end;
    padding: 1.25rem 1.5rem;
    color: #fff;
    isolation: isolate;
}
/* bulles décoratives */
.ph::before,
.ph::after {
    content: '';
    position: absolute;
    border-radius: 50%;
    z-index: -1;
}
.ph::before {
    width: 46%;
    padding-bottom: 46%;
    top: -12%;
    right: -8%;
    background: rgba(255, 255, 255, 0.22);
}
.ph::after {
    width: 30%;
    padding-bottom: 30%;
    bottom: -10%;
    left: 8%;
    background: rgba(255, 255, 255, 0.14);
}
.ph__label {
    font-family: 'Fraunces', serif;
    font-weight: 600;
    font-size: 1.15rem;
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.25);
    z-index: 1;
}

/* variantes de teintes pour varier les blocs */
.ph--sea  { background: linear-gradient(135deg, #3aa6b9, #7fd0d8); }
.ph--sun  { background: linear-gradient(135deg, #f0a93f, #ffd9a0); color: #3a2607; }
.ph--sky  { background: linear-gradient(135deg, #5fb5c6, #cdeef4); color: #04323b; }
.ph--clay { background: linear-gradient(135deg, #c4704b, #e0a06e); }
.ph--sage { background: linear-gradient(135deg, #8aa17f, #c4d3b8); color: #14210f; }
.ph--argile { background: linear-gradient(135deg, #d99a63, #e8c9a0); color: #3f2a1c; }

/* ----- Animations d'apparition ------------------------------------------ */
.fade-in {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}
.fade-in.visible {
    opacity: 1;
    transform: none;
}

/* ----- Carrousels ------------------------------------------------------- */
.hide-scrollbar::-webkit-scrollbar { display: none; }
.hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* ----- Lien d'évitement ------------------------------------------------- */
.skip-link {
    position: absolute;
    top: -100%;
    left: 1rem;
    background: var(--on-surface);
    color: #fff;
    padding: 0.75rem 1.5rem;
    border-radius: 0 0 12px 12px;
    font-size: 0.85rem;
    font-weight: 700;
    z-index: 9999;
}
.skip-link:focus { top: 0; }

/* ----- Focus visible ---------------------------------------------------- */
*:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--focus-ring);
    border-radius: 6px;
}

/* ----- Composants & finitions ------------------------------------------ */

/* Respiration des titres */
h1, h2 { line-height: 1.08; }
h1 { letter-spacing: -0.02em; }

/* Boutons : pilule + petit élan au survol */
nav a.bg-primary,
main a.bg-primary,
main a.bg-secondary,
main a.border,
a.bg-primary,
a.bg-secondary,
button[type='submit'] {
    border-radius: 999px !important;
}
a.bg-primary, a.bg-secondary, button[type='submit'] {
    box-shadow: var(--shadow-soft);
    transition: transform .25s ease, box-shadow .25s ease, background-color .25s ease, opacity .25s ease;
}
a.bg-primary:hover, a.bg-secondary:hover, button[type='submit']:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow);
}

/* Cartes : arrondi généreux, relief doux, survol qui se soulève */
main .bg-surface-container-lowest,
main .bg-primary-container {
    border-radius: var(--radius);
    box-shadow: var(--shadow-soft);
    transition: transform .3s ease, box-shadow .3s ease;
}
main .bg-surface-container-lowest:hover,
main .bg-primary-container:hover {
    box-shadow: var(--shadow);
}
/* visuel en tête de carte : coins hauts arrondis */
main .bg-surface-container-lowest > .overflow-hidden:first-child {
    border-radius: var(--radius) var(--radius) 0 0;
}

/* Tuiles « pratiques » (liens-images) */
.card-tile {
    border-radius: var(--radius);
    box-shadow: var(--shadow-soft);
    transition: transform .35s ease, box-shadow .35s ease;
}
.card-tile:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow);
}

/* Cartes tarifs (page céramique) */
.rate-card {
    background: var(--surface-container-lowest);
    border-radius: var(--radius);
    padding: 1.5rem 1.75rem;
    box-shadow: var(--shadow-soft);
    transition: transform .3s ease, box-shadow .3s ease;
}
.rate-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.rate-card h3 { color: var(--primary); }

/* Formes organiques décoratives */
.blob {
    position: absolute;
    border-radius: 42% 58% 63% 37% / 41% 44% 56% 59%;
    opacity: .55;
    z-index: 0;
    pointer-events: none;
    filter: blur(1px);
}
.blob--primary   { background: var(--primary-fixed); }
.blob--secondary { background: var(--secondary-container); }
.blob--accent    { background: var(--accent-soft); }

/* Pied de page : filet d'accent coloré + douceur */
footer { border-top: 4px solid var(--primary); }

/* ----- Mouvement réduit ------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .fade-in { opacity: 1; transform: none; }
}

/* Champ piège du formulaire de contact : invisible pour l'humain, rempli par
   les robots. On l'écarte de l'écran plutôt que de le masquer — un display:none
   est un signal que les robots savent lire. */
.champ-piege {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
