/*
Theme Name: SAFI SURF EXPERIENCE
Theme URI: https://convertic.ma/safi-surf-experience
Author: CONVERTIC
Description: Thème WordPress One Page pour Safi Surf Camp. Toutes les sections défilantes sur une seule page (Accueil, Hébergement, École de Surf, Offres & Tarifs, Expériences, Galerie, Calendrier, Avis, FAQ, À propos, Contact & Réservation) avec navigation fluide entre sections. Conçu pour accueillir les extensions "Safi Surf Camp" (Réservation, Calendrier, Expériences, Hébergements, Galerie, Avis, FAQ, Offres, Slider) via shortcodes.
Version: 2.1.11
Requires at least: 6.2
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: safi-surf-experience
*/

/* =========================================================
   TOKENS — fidèles au HTML de référence
   ========================================================= */
:root {
  --ocean:       #0E4D6E;
  --ocean-dk:    #0a3550;
  --sky:         #E08A5B;
  --sky-dk:      #C96B3E;
  --sand:        #F3ECE1;
  --white:       #FAF7F2;
  --dark:        #23201C;
  --gray:        #5A5347;
  --light-blue:  #E7DCC8;
  --terracotta:  #C1592D;
  --terracotta-dk:#9C441F;
  --teal:        #0F6E56;
  --r-sm:  8px;
  --r-md:  14px;
  --r-lg:  20px;
  --r-pill:2rem;
  --max-w: 1000px;
  --font-d:'Fraunces',Georgia,serif;
  --font-b:'Work Sans',-apple-system,sans-serif;
}

/* =========================================================
   RESET
   ========================================================= */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;font-size:112.5%} /* 18px de base (au lieu de 16px) : tous les textes du site (thème + extensions) sont en rem, donc ce réglage les agrandit tous proportionnellement, en gardant la hiérarchie des tailles intacte */
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
body{font-family:var(--font-b);background:var(--white);color:var(--dark);overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}
h1,h2,h3,h4{font-family:var(--font-d);font-weight:700;line-height:1.08}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit}
:focus-visible{outline:2px solid var(--sky);outline-offset:3px}
.skip-link{position:absolute;left:-9999px;top:1rem;background:var(--ocean);color:#fff;padding:.75em 1.25em;z-index:9999;border-radius:var(--r-sm)}
.skip-link:focus{left:1rem}

/* =========================================================
   LAYOUT COMMUN
   ========================================================= */
.section-inner{max-width:var(--max-w);margin:0 auto;padding:0 2.5rem}
section{padding:5rem 0}
.section-label{font-size:.73rem;font-weight:600;letter-spacing:.2em;color:var(--terracotta);text-transform:uppercase;margin-bottom:.8rem;display:block}
.section-title{font-family:var(--font-d);font-size:clamp(1.8rem,4vw,2.7rem);color:var(--dark);margin-bottom:1rem}
.section-sub{font-size:.97rem;color:var(--gray);line-height:1.75;max-width:540px;margin-bottom:2.8rem}
.fade-in{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}
.fade-in.visible{opacity:1;transform:none}

/* =========================================================
   BOUTONS
   ========================================================= */
.btn-primary{background:var(--terracotta);color:#fff;border:none;padding:.85rem 2.2rem;border-radius:var(--r-pill);font-size:.95rem;font-weight:600;cursor:pointer;transition:all .25s;display:inline-block}
.btn-primary:hover{background:var(--terracotta-dk);transform:translateY(-2px)}
.btn-outline{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.4);padding:.85rem 2.2rem;border-radius:var(--r-pill);font-size:.95rem;font-weight:500;cursor:pointer;transition:all .25s;display:inline-block}
.btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.btn-ocean{background:var(--ocean);color:#fff;border:none;padding:.82rem 2rem;border-radius:var(--r-sm);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s;display:inline-block}
.btn-ocean:hover{background:var(--ocean-dk)}
.btn-teal{background:var(--teal);color:#fff;border:none;padding:.82rem 2rem;border-radius:var(--r-sm);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s;display:inline-block}
.btn-teal:hover{background:#065f46}

/* =========================================================
   NAVIGATION — fixe, transparente → opaque au scroll
   ========================================================= */
.site-nav{position:fixed;top:0;width:100%;z-index:200;padding:1rem 2.5rem;display:flex;justify-content:space-between;align-items:center;transition:all .35s;background:transparent}
.site-nav.scrolled{background:rgba(14,77,110,.97);backdrop-filter:blur(10px)}
.nav-logo{font-family:var(--font-d);font-size:1.4rem;color:#fff;letter-spacing:.03em;display:flex;align-items:center}
.nav-logo span{color:var(--terracotta)}
.nav-logo img{max-height:42px;width:auto;max-width:160px;object-fit:contain}
@media(max-width:480px){.nav-logo img{max-height:34px;max-width:120px}}
.nav-links{display:flex;gap:1.6rem;align-items:center}
.nav-links a{color:rgba(255,255,255,.85);font-size:.82rem;font-weight:500;letter-spacing:.04em;transition:color .2s,transform .2s;display:inline-block}
.nav-links a:hover,.nav-links .current-menu-item a,.nav-links a.active{color:var(--terracotta);transform:translateY(-2px)}
.nav-cta{background:var(--terracotta);color:#fff;border:none;padding:.55rem 1.4rem;border-radius:var(--r-pill);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}
.nav-cta:hover{background:var(--terracotta-dk);transform:translateY(-1px)}
.nav-hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;padding:4px}
.nav-hamburger span{display:block;width:22px;height:2px;background:#fff;border-radius:2px;transition:all .3s}

/* Sous-menus (menu principal) */
.nav-links li.has-children{position:relative}
.nav-links li.has-children > a{display:flex;align-items:center;gap:.3rem}
.nav-links li.has-children > a .caret{font-size:.6em;transition:transform .2s}
.nav-links .submenu{
  list-style:none;margin:0;padding:.4rem 0;position:absolute;top:100%;left:50%;transform:translate(-50%,6px);
  background:#fff;min-width:190px;border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.16);
  opacity:0;visibility:hidden;transition:opacity .2s,transform .2s;z-index:250;
}
.nav-links li.has-children:hover > .submenu{opacity:1;visibility:visible;transform:translate(-50%,2px)}
.nav-links .submenu li{width:100%}
.nav-links .submenu a{display:block;padding:.55rem 1.2rem;color:var(--dark);font-size:.82rem;font-weight:500;white-space:nowrap}
.nav-links .submenu a:hover{background:rgba(91,175,214,.08);color:var(--ocean)}

@media(max-width:900px){
  .nav-links{
    display:none;position:fixed;top:0;left:0;width:100%;height:100vh;height:100dvh;background:var(--ocean);
    flex-direction:column;align-items:center;justify-content:flex-start;gap:1.8rem;z-index:300;
    overflow-y:auto;padding:6rem 1.2rem 2.5rem;box-sizing:border-box;
  }
  .nav-links.open{display:flex}
  .nav-links a{font-size:1.2rem}
  .nav-hamburger{display:flex;z-index:400}
  .nav-cta{display:none}
  .site-nav{padding:1rem 1.5rem}

  /* Sous-menus en accordéon (repliés par défaut, dépliés au clic) */
  .nav-links li.has-children{display:flex;flex-direction:column;align-items:center}
  .nav-links li.has-children > .submenu{
    position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;background:transparent;
    max-height:0;overflow:hidden;padding:0;transition:max-height .25s ease;text-align:center;
  }
  .nav-links li.has-children.submenu-open > .submenu{max-height:400px;padding:.6rem 0 0}
  .nav-links li.has-children.submenu-open > a .caret{transform:rotate(180deg)}
  .nav-links .submenu a{font-size:.95rem;color:rgba(255,255,255,.75);padding:.5rem 0}
  .nav-links .submenu a:hover{background:transparent;color:#fff}
}

/* =========================================================
   ACCUEIL — section #accueil : slider plein écran (extension Slider)
   ========================================================= */
.accueil-slider-section{padding:0}
.accueil-slider-section .sscs-slider{margin:0}

/* =========================================================
   STATS BAR
   ========================================================= */
.stats-bar{background:var(--ocean);padding:2.2rem 2.5rem;border-bottom:none}
.stats-inner{max-width:900px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;text-align:center}
.stat-val{font-family:var(--font-d);font-size:2rem;font-weight:700;color:var(--white)}
.stat-val span{font-size:1.3rem}
.stat-label{font-size:.76rem;color:rgba(250,247,242,.72);letter-spacing:.06em;text-transform:uppercase;margin-top:.2rem}
@media(max-width:600px){.stats-inner{grid-template-columns:repeat(2,1fr)}}

/* =========================================================
   L'ESPRIT DU CAMP — section #esprit (photo plein-cadre, éditorial)
   ========================================================= */
.esprit-bg{
  position:relative; background:var(--ocean-dk); background-size:cover; background-position:center;
  color:#fff; overflow:hidden;
}
.esprit-bg::before{
  content:''; position:absolute; inset:0;
  background:linear-gradient(0deg,rgba(10,53,80,.88) 0%,rgba(10,53,80,.55) 45%,rgba(10,53,80,.35) 100%);
}
.esprit-inner{position:relative;z-index:1;max-width:640px}
.esprit-bg .section-label{color:#E08A5B}
.esprit-bg .section-title{color:#fff}
.esprit-bg .section-sub{color:rgba(250,247,242,.82)}

/* =========================================================
   HÉBERGEMENT — #hebergement
   ========================================================= */
.heberg-bg{background:var(--light-blue)}
.tabs-row{display:flex;gap:.5rem;margin-bottom:2rem;flex-wrap:wrap}
.htab{padding:.5rem 1.2rem;border-radius:var(--r-pill);border:1.5px solid #cde4f0;font-size:.82rem;font-weight:500;cursor:pointer;background:#fff;color:var(--gray);transition:all .2s}
.htab.active{background:var(--ocean);color:#fff;border-color:var(--ocean)}
.htab:hover:not(.active){border-color:var(--sky);color:var(--ocean)}
.heberg-panel{display:none}
.heberg-panel.show{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:start}
@media(max-width:720px){.heberg-panel.show{grid-template-columns:1fr}}
.heberg-visual{border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(135deg,var(--ocean),var(--sky));height:320px;display:flex;align-items:center;justify-content:center;font-size:5rem}
.heberg-visual img{width:100%;height:100%;object-fit:cover}
.chambre-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1.2rem}
.chambre-card{background:#fff;border-radius:var(--r-md);padding:1.2rem;border:1px solid #d6eaf5;transition:border-color .2s}
.chambre-card:hover{border-color:var(--sky)}
.chambre-card h4{font-size:.95rem;color:var(--dark);margin-bottom:.4rem}
.chambre-card p{font-size:.8rem;color:var(--gray);line-height:1.55}
.equip-list{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:1rem}
.equip-item{font-size:.83rem;color:var(--gray);display:flex;gap:.4rem;align-items:flex-start}

/* Le CSS de la section École de Surf (#ecole) est désormais fourni par
   l'extension "Safi Surf Camp – École & À propos" (classes ssea-*). */

/* =========================================================
   OFFRES & TARIFS — #offres
   ========================================================= */
.offres-bg{background:var(--sand)}
.offres-tabs{display:flex;gap:.5rem;margin-bottom:2.5rem;flex-wrap:wrap}
.otab{padding:.45rem 1.1rem;border-radius:var(--r-pill);border:1.5px solid #cde4f0;font-size:.8rem;font-weight:500;cursor:pointer;background:#fff;color:var(--gray);transition:all .2s}
.otab.active{background:var(--ocean);color:#fff;border-color:var(--ocean)}
.otab:hover:not(.active){border-color:var(--sky);color:var(--ocean)}
.offres-panel{display:none}
.offres-panel.show{display:block}

/* Grille de séjours/formules */
.pkg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.3rem}
.pkg-card{background:#fff;border-radius:var(--r-lg);overflow:hidden;border:1.5px solid var(--ocean);transition:transform .25s,box-shadow .25s;display:flex;flex-direction:column;position:relative}
.pkg-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(14,77,110,.12)}
.pkg-card.featured{border:2px solid var(--sky)}
.featured-badge{position:absolute;top:1rem;right:1rem;background:var(--sky);color:#fff;font-size:.68rem;font-weight:700;padding:.22rem .65rem;border-radius:1rem;letter-spacing:.05em}
.pkg-header{padding:1.4rem 1.4rem .8rem;background:linear-gradient(135deg,var(--ocean),var(--sky));color:#fff}
.pkg-badge{display:inline-block;background:rgba(255,255,255,.2);color:#fff;font-size:.68rem;font-weight:700;padding:.18rem .6rem;border-radius:1rem;margin-bottom:.5rem;letter-spacing:.05em}
.pkg-title{font-family:var(--font-d);font-size:1.1rem;margin-bottom:.25rem}
.pkg-duree{font-size:.8rem;opacity:.8}
.pkg-body{padding:1.2rem 1.4rem;flex:1;display:flex;flex-direction:column}
.pkg-includes{flex:1;margin-bottom:1rem}
.pkg-includes li{font-size:.82rem;color:var(--gray);padding:.25rem 0;display:flex;gap:.5rem;align-items:flex-start}
.pkg-includes li::before{content:'✓';color:var(--teal);font-weight:700;flex-shrink:0}
.pkg-price{font-family:var(--font-d);font-size:1.5rem;font-weight:700;color:var(--ocean);margin-bottom:1rem}
.pkg-price small{font-size:.78rem;font-weight:400;color:var(--gray);font-family:var(--font-b)}
.pkg-btn{display:block;text-align:center;background:var(--ocean);color:#fff;border:none;padding:.72rem;border-radius:.7rem;font-size:.86rem;font-weight:600;cursor:pointer;transition:background .2s}
.pkg-btn:hover{background:var(--ocean-dk)}

/* Table tarifs */
.tarifs-table{width:100%;border-collapse:collapse;margin-bottom:2rem}
.tarifs-table th{background:var(--ocean);color:#fff;padding:.85rem 1.1rem;font-size:.8rem;font-weight:600;text-align:left;letter-spacing:.04em}
.tarifs-table td{padding:.8rem 1.1rem;border-bottom:1px solid #e0ecf4;font-size:.85rem;color:var(--dark)}
.tarifs-table tr:nth-child(even) td{background:rgba(91,175,214,.05)}
.tarifs-table tr:hover td{background:rgba(91,175,214,.1)}
.prix-tag{font-weight:700;color:var(--ocean);white-space:nowrap}

/* =========================================================
   EXPÉRIENCES — #experiences
   ========================================================= */
.exp-bg{background:var(--white)}
.filter-bar{display:flex;gap:.55rem;flex-wrap:wrap;margin-bottom:2rem;align-items:center}
.filter-label{font-size:.72rem;font-weight:600;color:var(--gray);letter-spacing:.1em;text-transform:uppercase;margin-right:.3rem}
.ftab{padding:.4rem 1rem;border-radius:var(--r-pill);border:1.5px solid #dde4ea;font-size:.8rem;font-weight:500;cursor:pointer;background:#fff;color:var(--gray);transition:all .2s}
.ftab.active{background:var(--ocean);color:#fff;border-color:var(--ocean)}
.ftab:hover:not(.active){border-color:var(--sky);color:var(--ocean)}
.exp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.3rem}
.exp-card{background:#fff;border-radius:var(--r-lg);overflow:hidden;border:1.5px solid var(--ocean);transition:transform .25s,box-shadow .25s;cursor:pointer;display:flex;flex-direction:column}
.exp-card:hover{transform:translateY(-4px);box-shadow:0 14px 36px rgba(14,77,110,.12)}
.exp-visual{height:155px;display:flex;align-items:center;justify-content:center;font-size:3.5rem;position:relative;flex-shrink:0}
.exp-visual img{width:100%;height:100%;object-fit:cover}
.exp-cat{position:absolute;top:.7rem;left:.7rem;font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.2rem .6rem;border-radius:1rem}
.exp-dur{position:absolute;top:.7rem;right:.7rem;font-size:.68rem;font-weight:600;background:rgba(0,0,0,.42);color:#fff;padding:.18rem .55rem;border-radius:1rem}
.cat-surf{background:rgba(91,175,214,.88);color:#fff}
.cat-culture{background:rgba(193,99,58,.88);color:#fff}
.cat-aventure{background:rgba(14,77,110,.88);color:#fff}
.cat-bienetre{background:rgba(124,58,237,.88);color:#fff}
.cat-decouverte{background:rgba(15,110,86,.88);color:#fff}
.exp-body{padding:1rem 1.1rem;display:flex;flex-direction:column;flex:1}
.exp-name{font-family:var(--font-d);font-size:1rem;color:var(--dark);margin-bottom:.35rem;line-height:1.3}
.exp-desc{font-size:.82rem;color:var(--gray);line-height:1.6;flex:1;margin-bottom:.8rem}
.exp-footer{display:flex;align-items:center;justify-content:space-between;padding-top:.8rem;border-top:1px solid #f0f4f8}
.exp-price{font-family:var(--font-d);font-size:1.1rem;font-weight:700;color:var(--ocean)}
.exp-price small{font-size:.72rem;font-weight:400;color:var(--gray);font-family:var(--font-b)}
.exp-add{background:var(--ocean);color:#fff;border:none;padding:.42rem .85rem;border-radius:.5rem;font-size:.78rem;font-weight:600;cursor:pointer;transition:all .2s}
.exp-add:hover{background:var(--ocean-dk)}
.exp-add.added{background:var(--teal)}

/* Modal expérience */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(10,30,50,.6);z-index:500;align-items:center;justify-content:center;padding:1.5rem}
.modal-overlay.open{display:flex}
.modal-box{background:#fff;border-radius:var(--r-lg);max-width:540px;width:100%;overflow:hidden;max-height:90vh;overflow-y:auto}
.modal-vis{height:190px;display:flex;align-items:center;justify-content:center;font-size:5rem;position:relative}
.modal-vis img{width:100%;height:100%;object-fit:cover}
.modal-close{position:absolute;top:.8rem;right:.8rem;background:rgba(0,0,0,.4);color:#fff;border:none;width:30px;height:30px;border-radius:50%;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
.modal-content{padding:1.4rem}
.modal-cat-label{font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sky);margin-bottom:.35rem}
.modal-title{font-family:var(--font-d);font-size:1.4rem;color:var(--dark);margin-bottom:.65rem;line-height:1.2}
.modal-desc{font-size:.88rem;color:var(--gray);line-height:1.72;margin-bottom:1.1rem}
.modal-row{display:flex;gap:.7rem;margin-bottom:1.1rem}
.modal-info{flex:1;background:#f8fafc;border-radius:var(--r-sm);padding:.75rem;text-align:center}
.modal-info-val{font-size:1.05rem;font-weight:700;color:var(--ocean);font-family:var(--font-d)}
.modal-info-label{font-size:.68rem;color:var(--gray);margin-top:.12rem;letter-spacing:.04em}
.modal-tags{display:flex;flex-wrap:wrap;gap:.38rem;margin-bottom:1.2rem}
.modal-tag{background:var(--light-blue);color:var(--ocean);font-size:.73rem;padding:.22rem .6rem;border-radius:1rem;border:1px solid #bae0f5}
.modal-btn{width:100%;background:var(--ocean);color:#fff;border:none;padding:.85rem;border-radius:var(--r-sm);font-size:.92rem;font-weight:600;cursor:pointer;transition:background .2s}
.modal-btn:hover{background:var(--ocean-dk)}

/* Panier flottant */
.basket{position:fixed;bottom:0;left:0;right:0;background:var(--ocean);color:#fff;padding:.9rem 2.5rem;display:none;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;z-index:400;border-top:2px solid var(--sky)}
.basket.show{display:flex}
.basket-info{font-size:.85rem;opacity:.8}
.basket-total{font-family:var(--font-d);font-size:1.25rem;font-weight:600}
.basket-btns{display:flex;gap:.55rem;align-items:center}
.basket-clear{background:transparent;border:1px solid rgba(255,255,255,.3);color:rgba(255,255,255,.7);padding:.48rem .85rem;border-radius:var(--r-pill);font-size:.78rem;cursor:pointer}
.basket-go{background:var(--sky);color:#fff;border:none;padding:.62rem 1.4rem;border-radius:var(--r-pill);font-size:.85rem;font-weight:600;cursor:pointer;transition:background .2s}
.basket-go:hover{background:var(--sky-dk)}

/* =========================================================
   CALENDRIER — #calendrier
   ========================================================= */
.cal-bg{background:var(--light-blue)}
.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.4rem}
.cal-month{font-family:var(--font-d);font-size:1.3rem;font-weight:600;color:var(--dark)}
.cal-sub{font-size:.8rem;color:var(--gray);margin-top:.15rem}
.cal-nav-btns{display:flex;gap:.45rem}
.cal-nav-btn{background:#fff;border:1px solid #dde4ea;border-radius:var(--r-sm);width:34px;height:34px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:all .2s;color:var(--dark)}
.cal-nav-btn:hover{border-color:var(--sky);color:var(--sky)}
.formule-tabs{display:flex;gap:.5rem;margin-bottom:1.3rem;flex-wrap:wrap}
.ctab{padding:.42rem 1rem;border-radius:var(--r-pill);border:1.5px solid #dde4ea;font-size:.8rem;font-weight:500;cursor:pointer;background:#fff;color:var(--gray);transition:all .2s}
.ctab.active{background:var(--ocean);color:#fff;border-color:var(--ocean)}
.cal-legend{display:flex;gap:1.2rem;margin-bottom:1.1rem;flex-wrap:wrap}
.cal-leg{display:flex;align-items:center;gap:.4rem;font-size:.77rem;color:var(--gray)}
.cal-leg-dot{width:11px;height:11px;border-radius:3px}
.ld-dispo{background:#d1fae5}.ld-partial{background:#fef3c7}.ld-full{background:#fee2e2}
.day-labels{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:3px}
.dlabel{text-align:center;font-size:.7rem;font-weight:600;color:var(--gray);letter-spacing:.05em;padding:.28rem 0}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-cell{border-radius:var(--r-sm);padding:.4rem .2rem;min-height:58px;cursor:pointer;transition:all .2s;border:1.5px solid transparent;display:flex;flex-direction:column;align-items:center}
.cal-cell.empty,.cal-cell.past{cursor:default}
.cal-cell.empty{background:transparent}
.cal-cell.past{background:#f3f4f6;opacity:.45}
.cal-cell.dispo{background:#d1fae5}
.cal-cell.partial{background:#fef3c7}
.cal-cell.full{background:#fee2e2}
.cal-cell.selected{border-color:var(--ocean);box-shadow:0 0 0 2px rgba(14,77,110,.22)}
.cal-cell:not(.empty):not(.past):hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(0,0,0,.09)}
.cell-day{font-size:.85rem;font-weight:600;color:var(--dark);margin-bottom:.2rem}
.cell-spots{font-size:.65rem;font-weight:500;line-height:1.3;text-align:center}
.dispo .cell-spots{color:#065f46}.partial .cell-spots{color:#92400e}.full .cell-spots{color:#991b1b}.past .cell-spots{color:#9ca3af}
.cal-detail{margin-top:1.4rem;background:#fff;border-radius:var(--r-md);border:1px solid #d6eaf5;padding:1.3rem;display:none}
.cal-detail.show{display:block}
.cd-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}
.cd-date{font-family:var(--font-d);font-size:1.1rem;font-weight:600;color:var(--dark)}
.cd-form{font-size:.78rem;color:var(--gray);margin-top:.18rem}
.status-badge{padding:.28rem .75rem;border-radius:var(--r-pill);font-size:.76rem;font-weight:600}
.bd{background:#d1fae5;color:#065f46}.bp{background:#fef3c7;color:#92400e}.bf{background:#fee2e2;color:#991b1b}
.cd-infos{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1.1rem}
.cd-info{background:var(--light-blue);border-radius:var(--r-sm);padding:.75rem;text-align:center}
.cd-val{font-size:1.1rem;font-weight:700;color:var(--ocean);font-family:var(--font-d)}
.cd-label{font-size:.68rem;color:var(--gray);margin-top:.12rem;letter-spacing:.04em}
.cd-tags{display:flex;flex-wrap:wrap;gap:.38rem;margin:.5rem 0 1.1rem}
.cd-tag{background:#f0f9ff;border:1px solid #bae0f5;color:#0369a1;font-size:.73rem;padding:.22rem .58rem;border-radius:1rem}
.resa-btn{width:100%;background:var(--ocean);color:#fff;border:none;padding:.82rem;border-radius:var(--r-sm);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s}
.resa-btn:hover{background:var(--ocean-dk)}
.resa-btn:disabled{background:#9ca3af;cursor:not-allowed}

/* =========================================================
   GALERIE — #galerie
   ========================================================= */
.galerie-bg{background:var(--sand)}
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:200px 200px;gap:.9rem}
.g-cell{border-radius:var(--r-md);overflow:hidden;background:linear-gradient(135deg,var(--ocean),var(--sky));cursor:pointer;transition:opacity .2s;position:relative;display:flex;align-items:center;justify-content:center;font-size:2.5rem}
.g-cell img{width:100%;height:100%;object-fit:cover;opacity:.85;transition:opacity .2s}
.g-cell:hover img,.g-cell:hover{opacity:1}
.g-cell.tall{grid-row:span 2}
@media(max-width:600px){.gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}.g-cell.tall{grid-row:auto}}
.lightbox{display:none;position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:600;align-items:center;justify-content:center}
.lightbox.open{display:flex}
.lightbox img{max-width:90vw;max-height:90vh;border-radius:var(--r-sm)}
.lightbox-close{position:absolute;top:1.5rem;right:1.5rem;background:rgba(255,255,255,.15);border:none;color:#fff;width:40px;height:40px;border-radius:50%;font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center}

/* =========================================================
   TÉMOIGNAGES / AVIS — #avis
   ========================================================= */
.temos-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1.4rem}
.temo{background:#fff;border-radius:var(--r-md);padding:1.5rem;border:1px solid #e5e7eb}
.stars{color:#F59E0B;font-size:.88rem;margin-bottom:.75rem}
.temo-text{font-size:.9rem;color:var(--gray);line-height:1.72;font-style:italic;margin-bottom:1.1rem}
.temo-author{display:flex;align-items:center;gap:.7rem}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--ocean),var(--sky));display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:#fff;flex-shrink:0;overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.author-name{font-weight:600;font-size:.86rem;color:var(--dark)}
.author-origin{font-size:.76rem;color:var(--gray)}

/* =========================================================
   À PROPOS — #about
   ========================================================= */
.about-bg{background:var(--ocean);color:#fff}
/* Le reste du CSS de cette section est désormais fourni par
   l'extension "Safi Surf Camp – École & À propos" (classes ssea-*). */

/* =========================================================
   FAQ — #faq
   ========================================================= */
.faq-bg{background:var(--sand)}
.faq-list{display:flex;flex-direction:column;gap:.7rem;max-width:760px}
.faq-item{background:#fff;border-radius:var(--r-md);border:1px solid #d6eaf5;overflow:hidden}
.faq-q{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 1.3rem;cursor:pointer;font-weight:600;font-size:.92rem;color:var(--dark);gap:1rem;transition:background .2s;user-select:none}
.faq-q:hover{background:var(--light-blue)}
.faq-q .faq-arrow{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--light-blue);display:flex;align-items:center;justify-content:center;font-size:.7rem;transition:transform .25s;color:var(--ocean)}
.faq-item.open .faq-arrow{transform:rotate(180deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .3s ease,padding .3s ease}
.faq-item.open .faq-a{max-height:400px}
.faq-a-inner{padding:0 1.3rem 1.1rem;font-size:.88rem;color:var(--gray);line-height:1.72}

/* =========================================================
   CONTACT & RÉSERVATION — #contact / #reservation
   ========================================================= */
.contact-bg{background:var(--ocean);color:#fff}
.contact-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:3.5rem;align-items:start}
@media(max-width:800px){.contact-grid{grid-template-columns:1fr}}
.contact-bg .section-title{color:#fff}
.contact-infos{display:flex;flex-direction:column;gap:1rem;margin-top:1.5rem}
.contact-info-item{display:flex;gap:.85rem;align-items:flex-start}
.contact-info-icon{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.contact-info-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:rgba(255,255,255,.55);margin-bottom:.15rem}
.contact-info-val{font-size:.9rem;color:#fff;line-height:1.5}
.contact-info-val a{color:var(--sky)}
.social-row{display:flex;gap:.7rem;margin-top:1.5rem;flex-wrap:wrap}
.social-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);color:#fff;padding:.45rem 1rem;border-radius:var(--r-pill);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.4rem}
.social-btn:hover{background:rgba(255,255,255,.22)}

/* Bandeau d'appel affiché tant que le formulaire de réservation n'a
   pas été ouvert (via un lien/bouton "Réserver" du site) */
.ssx-resa-teaser{background:#fff;border:1.5px dashed #d6c9b6;border-radius:var(--r-lg);padding:2.4rem 2rem;text-align:center}
.ssx-resa-teaser-text{color:var(--gray);margin-bottom:1.2rem;max-width:40ch;margin-left:auto;margin-right:auto}
[hidden]{display:none!important}

/* Formulaire de réservation complet */
.resa-form{background:#fff;border-radius:var(--r-lg);padding:2rem;color:var(--dark)}
.resa-form h3{font-family:var(--font-d);font-size:1.35rem;color:var(--dark);margin-bottom:1.5rem}
.form-section-title{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ocean);margin:1.5rem 0 .75rem;padding-bottom:.4rem;border-bottom:2px solid var(--light-blue)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}
.form-grid.cols3{grid-template-columns:1fr 1fr 1fr}
.form-field{display:flex;flex-direction:column;gap:.32rem}
.form-field.full{grid-column:1/-1}
.form-field label{font-size:.75rem;font-weight:600;color:var(--dark);letter-spacing:.03em}
.form-field input,.form-field select,.form-field textarea{padding:.65rem .9rem;border:1.5px solid #d6eaf5;border-radius:var(--r-sm);font-size:.86rem;color:var(--dark);background:#fff;outline:none;transition:border-color .2s;width:100%}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--sky)}
.form-field textarea{height:90px;resize:vertical}

/* Checkboxes groupées */
.checkbox-group{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;margin-top:.2rem}
.checkbox-group.cols3{grid-template-columns:1fr 1fr 1fr}
.ck-item{display:flex;align-items:center;gap:.5rem;font-size:.82rem;color:var(--gray);cursor:pointer}
.ck-item input[type=checkbox]{width:15px;height:15px;accent-color:var(--ocean);flex-shrink:0;cursor:pointer}
.ck-item input[type=radio]{width:15px;height:15px;accent-color:var(--ocean);flex-shrink:0;cursor:pointer}

/* Bouton submit */
.resa-submit{width:100%;margin-top:1.5rem;background:var(--ocean);color:#fff;border:none;padding:1rem;border-radius:var(--r-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s;letter-spacing:.02em}
.resa-submit:hover{background:var(--ocean-dk)}
.form-notice{padding:.9em 1.1em;border-radius:var(--r-sm);font-size:.88rem;margin-bottom:1rem;display:none}
.form-notice.success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0;display:block}
.form-notice.error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;display:block}
@media(max-width:600px){.form-grid,.form-grid.cols3{grid-template-columns:1fr}.checkbox-group,.checkbox-group.cols3{grid-template-columns:1fr 1fr}}

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer{background:var(--ocean-dk);color:rgba(255,255,255,.58);padding:3rem 2.5rem 2rem;font-size:.83rem}
.footer-inner{max-width:var(--max-w);margin:0 auto;display:grid;grid-template-columns:1.7fr 1.6fr 1fr 1fr;gap:2.5rem}
@media(max-width:720px){.footer-inner{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.footer-inner{grid-template-columns:1fr}}
.footer-logo{font-family:var(--font-d);font-size:1.25rem;color:#fff;margin-bottom:.65rem}
.footer-logo span{color:var(--terracotta)}
.footer-desc{line-height:1.72;color:rgba(255,255,255,.42);font-size:.8rem;max-width:28ch}
.footer-col h4{color:#fff;font-size:.8rem;font-weight:700;margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.06em}
.footer-col ul{display:flex;flex-direction:column;gap:.48rem}
.footer-col a{color:rgba(255,255,255,.45);transition:color .2s}
.footer-col a:hover{color:var(--sky)}
.footer-bottom{max-width:var(--max-w);margin:2rem auto 0;padding-top:1.4rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;font-size:.76rem;flex-wrap:wrap;gap:.5rem;color:rgba(255,255,255,.32)}

/* Icônes réseaux sociaux (SVG, plus d'emoji ni de texte) */
.footer-social{display:flex;gap:.55rem;margin-top:1.1rem;flex-wrap:wrap}
.footer-social-icon{
  display:flex;align-items:center;justify-content:center;width:34px;height:34px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:50%;
  color:rgba(255,255,255,.65);transition:all .2s;
}
.footer-social-icon:hover{color:#fff;background:var(--sky);border-color:var(--sky)}
.footer-social-icon svg{width:16px;height:16px}

/* Colonne Navigation du footer répartie sur 2 colonnes (peut contenir plus
   de liens que les autres colonnes une fois les sous-menus mis à plat).
   Sélecteur renforcé (.footer-col ul.footer-nav-2col) pour l'emporter sur
   la règle générale ".footer-col ul{display:flex}" ci-dessus — sans quoi
   le display:flex héritait et column-count n'avait plus aucun effet. */
.footer-col ul.footer-nav-2col{display:block;column-count:2;column-gap:1.3rem}
.footer-nav-2col li{break-inside:avoid;margin-bottom:.48rem}
@media(max-width:720px){.footer-col ul.footer-nav-2col{column-count:1}}

/* =========================================================
   NAVIGATION PAR POINTS — déplacement rapide entre sections
   ========================================================= */
.ssc-dotnav{
  position:fixed; top:50%; right:1.4rem; transform:translateY(-50%);
  z-index:150; display:flex; flex-direction:column; gap:.85rem;
}
.ssc-dotnav-item{
  position:relative; display:flex; align-items:center; justify-content:center;
  width:14px; height:14px; text-decoration:none;
}
.ssc-dotnav-dot{
  width:9px; height:9px; border-radius:50%;
  background:rgba(14,77,110,.28); border:1.5px solid transparent;
  transition:all .25s ease; display:block;
}
.ssc-dotnav-item:hover .ssc-dotnav-dot{ background:var(--sky); transform:scale(1.15); }
.ssc-dotnav-item.active .ssc-dotnav-dot{ background:var(--ocean); border-color:var(--sky); transform:scale(1.35); }
.ssc-dotnav-tip{
  position:absolute; right:22px; top:50%; transform:translateY(-50%) translateX(6px);
  background:var(--ocean); color:#fff; font-size:.72rem; font-weight:600;
  padding:.3rem .7rem; border-radius:6px; white-space:nowrap;
  opacity:0; pointer-events:none; transition:opacity .2s, transform .2s;
}
.ssc-dotnav-item:hover .ssc-dotnav-tip{ opacity:1; transform:translateY(-50%) translateX(0); }
@media(max-width:1100px){ .ssc-dotnav{ display:none; } } /* trop de place prise sur écrans moyens/mobile */

/* =========================================================
   BOUTON RETOUR EN HAUT
   ========================================================= */
.ssc-back-to-top{
  position:fixed; bottom:1.6rem; right:1.6rem; z-index:150;
  width:44px; height:44px; border-radius:50%; border:none;
  background:var(--ocean); color:#fff; font-size:1.15rem; cursor:pointer;
  box-shadow:0 6px 18px rgba(14,77,110,.35);
  opacity:0; visibility:hidden; transform:translateY(10px);
  transition:opacity .25s, transform .25s, visibility .25s, background .2s;
}
.ssc-back-to-top:hover{ background:var(--ocean-dk); }
.ssc-back-to-top.show{ opacity:1; visibility:visible; transform:translateY(0); }
@media(max-width:600px){ .ssc-back-to-top{ width:38px; height:38px; bottom:1rem; right:1rem; font-size:1rem; } }

/* =========================================================
   RESPONSIVE GLOBAL
   ========================================================= */
@media(max-width:480px){
  .section-inner{padding:0 1.2rem}
  section{padding:3.5rem 0}
  .stats-bar{padding:1.8rem 1.2rem}
  .cal-cell{min-height:44px;padding:.25rem .1rem}
  .cell-day{font-size:.75rem}
  .cell-spots{font-size:.55rem}
  .cd-infos{grid-template-columns:1fr 1fr}
}

/* Protection des images (clic droit / glisser) — voir main.js.
   Exclusion volontaire de la Galerie photo (#ssg-root). */
img:not(#ssg-root img){
  -webkit-user-drag:none;
  -webkit-touch-callout:none;
  user-select:none;
  -webkit-user-select:none;
}
