/* ============================================================
   STUDIO DU GRAZEL — Design System
   Mobile-first : base 375px → 768px → 1280px
   ============================================================ */

/* ── 1. DESIGN TOKENS ─────────────────────────────────────── */
:root {
  /* Couleurs */
  --bleu-marine:   #0A3D62;
  --bleu-clair:    #1A6EA8;
  --or-sable:      #F5A623;
  --or-sable-dark: #D4891A;
  --turquoise:     #1ABC9C;
  --turquoise-dark:#16A085;
  --fond:          #FAFAFA;
  --fond-alt:      #F0F4F8;
  --texte:         #2C3E50;
  --texte-clair:   #5D6D7E;
  --gris-clair:    #ECF0F1;
  --blanc:         #FFFFFF;
  --rouge:         #E74C3C;
  --vert:          #27AE60;

  /* Calendrier */
  --cal-dispo:     #D5F5E3;
  --cal-dispo-bord:#27AE60;
  --cal-occupe:    #FADBD8;
  --cal-occupe-bord:#E74C3C;
  --cal-depart:    #FEF9E7;

  /* Typographie */
  --font-titre: 'Poppins', sans-serif;
  --font-corps: 'Inter', sans-serif;

  /* Échelle typo */
  --text-xs:   0.75rem;   /* 12px */
  --text-sm:   0.875rem;  /* 14px */
  --text-base: 1rem;      /* 16px */
  --text-lg:   1.125rem;  /* 18px */
  --text-xl:   1.375rem;  /* 22px */
  --text-2xl:  1.75rem;   /* 28px */
  --text-3xl:  2.25rem;   /* 36px */
  --text-4xl:  3rem;      /* 48px */

  /* Espacements */
  --space-xs:  0.5rem;
  --space-sm:  1rem;
  --space-md:  2rem;
  --space-lg:  4rem;
  --space-xl:  6rem;

  /* Composants */
  --radius:     12px;
  --radius-sm:  8px;
  --radius-lg:  20px;
  --shadow:     0 4px 20px rgba(10, 61, 98, 0.08);
  --shadow-md:  0 8px 32px rgba(10, 61, 98, 0.12);
  --shadow-lg:  0 16px 48px rgba(10, 61, 98, 0.16);

  /* Navigation */
  --nav-height: 64px;

  /* Transitions */
  --transition: 0.2s ease;
}

/* ── 2. RESET & BASE ──────────────────────────────────────── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  font-family: var(--font-corps);
  font-size: var(--text-base);
  color: var(--texte);
  background: var(--fond);
  line-height: 1.6;
  overflow-x: hidden;
}

img {
  max-width: 100%;
  height: auto;
  display: block;
}

a {
  color: inherit;
  text-decoration: none;
}

ul, ol {
  list-style: none;
}

button {
  cursor: pointer;
  font-family: inherit;
  border: none;
  background: none;
}

/* ── 3. TYPOGRAPHIE ──────────────────────────────────────── */
h1, h2, h3, h4 {
  font-family: var(--font-titre);
  font-weight: 700;
  line-height: 1.2;
  color: var(--bleu-marine);
}

h1 { font-size: var(--text-2xl); }
h2 { font-size: var(--text-xl); }
h3 { font-size: var(--text-lg); }
h4 { font-size: var(--text-base); }

p { margin-bottom: var(--space-sm); }
p:last-child { margin-bottom: 0; }

.text-sm    { font-size: var(--text-sm); }
.text-clair { color: var(--texte-clair); }

@media (min-width: 768px) {
  h1 { font-size: var(--text-3xl); }
  h2 { font-size: var(--text-2xl); }
  h3 { font-size: var(--text-xl); }
}

@media (min-width: 1280px) {
  h1 { font-size: var(--text-4xl); }
}

/* ── 4. LAYOUT ───────────────────────────────────────────── */
.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 var(--space-sm);
}

@media (min-width: 768px) {
  .container { padding: 0 var(--space-md); }
}

.section {
  padding: var(--space-lg) 0;
}

.section-alt {
  background: var(--fond-alt);
}

.section-titre {
  text-align: center;
  margin-bottom: var(--space-md);
}

.section-titre h2 {
  margin-bottom: var(--space-xs);
}

.section-titre p {
  color: var(--texte-clair);
  font-size: var(--text-lg);
  max-width: 600px;
  margin: 0 auto;
}

/* ── 5. NAVIGATION ───────────────────────────────────────── */
.nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--nav-height);
  background: var(--blanc);
  box-shadow: var(--shadow);
  z-index: 1000;
  transition: background var(--transition), box-shadow var(--transition);
}

.nav.transparent {
  background: transparent;
  box-shadow: none;
}

.nav.transparent .nav-logo,
.nav.transparent .nav-link {
  color: var(--blanc);
}

.nav.transparent .nav-toggle span {
  background: var(--blanc);
}

.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
}

.nav-logo {
  font-family: var(--font-titre);
  font-size: var(--text-lg);
  font-weight: 700;
  color: var(--bleu-marine);
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  transition: color var(--transition);
}

.nav-logo .logo-icon {
  width: 36px;
  height: 36px;
}

.nav-menu {
  display: none;
  flex-direction: column;
  position: fixed;
  top: var(--nav-height);
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--blanc);
  padding: var(--space-md);
  gap: var(--space-sm);
  z-index: 999;
}

.nav-menu.open {
  display: flex;
}

.nav-link {
  font-size: var(--text-base);
  font-weight: 500;
  color: var(--texte);
  padding: var(--space-xs) 0;
  border-bottom: 1px solid var(--gris-clair);
  transition: color var(--transition);
}

.nav-link:hover,
.nav-link.active {
  color: var(--bleu-marine);
}

.nav-actions {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.nav-toggle {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 8px;
  background: none;
  border: none;
  cursor: pointer;
  min-height: 44px;
  min-width: 44px;
  justify-content: center;
  align-items: center;
}

.nav-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--bleu-marine);
  transition: transform var(--transition), opacity var(--transition);
}

.nav-toggle.open span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }
.nav-toggle.open span:nth-child(2) { opacity: 0; }
.nav-toggle.open span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }

.lang-selector {
  font-size: var(--text-sm);
  color: var(--texte-clair);
  border: 1px solid var(--gris-clair);
  border-radius: var(--radius-sm);
  padding: 4px 8px;
  background: var(--blanc);
  cursor: pointer;
  min-height: 44px;
}

@media (min-width: 768px) {
  .nav-menu {
    display: flex;
    flex-direction: row;
    position: static;
    background: none;
    padding: 0;
    gap: var(--space-md);
  }

  .nav-link {
    border-bottom: none;
    font-size: var(--text-sm);
  }

  .nav-toggle {
    display: none;
  }
}

/* ── 6. BOUTONS ──────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-xs);
  font-family: var(--font-titre);
  font-weight: 600;
  font-size: var(--text-base);
  padding: 0.75rem 1.5rem;
  border-radius: var(--radius);
  min-height: 44px;
  transition: background var(--transition), transform var(--transition), box-shadow var(--transition);
  text-decoration: none;
  white-space: nowrap;
}

.btn-primaire {
  background: var(--or-sable);
  color: var(--blanc);
  box-shadow: 0 4px 16px rgba(245, 166, 35, 0.35);
}

.btn-primaire:hover {
  background: var(--or-sable-dark);
  transform: translateY(-1px);
  box-shadow: 0 6px 24px rgba(245, 166, 35, 0.45);
}

.btn-primaire:active {
  transform: translateY(0);
}

.btn-secondaire {
  background: var(--blanc);
  color: var(--bleu-marine);
  border: 2px solid var(--bleu-marine);
}

.btn-secondaire:hover {
  background: var(--bleu-marine);
  color: var(--blanc);
}

.btn-turquoise {
  background: var(--turquoise);
  color: var(--blanc);
}

.btn-turquoise:hover {
  background: var(--turquoise-dark);
}

.btn-lg {
  font-size: var(--text-lg);
  padding: 1rem 2rem;
}

.btn-sm {
  font-size: var(--text-sm);
  padding: 0.5rem 1rem;
  min-height: 36px;
}

/* ── 7. CARTES ───────────────────────────────────────────── */
.card {
  background: var(--blanc);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: var(--space-md);
  transition: box-shadow var(--transition), transform var(--transition);
}

.card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.card-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: var(--fond-alt);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--space-sm);
}

.card-icon svg {
  width: 24px;
  height: 24px;
  color: var(--bleu-marine);
}

/* Grille de cartes */
.grid-3 {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-md);
}

.grid-2 {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-md);
}

@media (min-width: 768px) {
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .grid-2 { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1280px) {
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
}

/* ── 8. HERO ─────────────────────────────────────────────── */
.hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: center;
  overflow: hidden;
  padding-top: var(--nav-height);
}

.hero-bg {
  position: absolute;
  inset: 0;
  object-fit: cover;
  width: 100%;
  height: 100%;
  z-index: 0;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 61, 98, 0.55) 0%,
    rgba(10, 61, 98, 0.35) 50%,
    rgba(10, 61, 98, 0.65) 100%
  );
  z-index: 1;
}

.hero-content {
  position: relative;
  z-index: 2;
  color: var(--blanc);
  text-align: center;
  padding: var(--space-md) 0;
}

.hero-content h1 {
  color: var(--blanc);
  margin-bottom: var(--space-sm);
  text-shadow: 0 2px 8px rgba(0,0,0,0.3);
}

.hero-content .hero-sub {
  font-size: var(--text-lg);
  opacity: 0.92;
  margin-bottom: var(--space-md);
  max-width: 560px;
  margin-left: auto;
  margin-right: auto;
}

.hero-prix {
  display: inline-block;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.3);
  backdrop-filter: blur(8px);
  border-radius: var(--radius-lg);
  padding: var(--space-xs) var(--space-md);
  font-size: var(--text-lg);
  font-weight: 600;
  margin-bottom: var(--space-md);
}

.hero-prix span {
  color: var(--or-sable);
}

.hero-actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-sm);
  align-items: center;
}

@media (min-width: 768px) {
  .hero-actions {
    flex-direction: row;
    justify-content: center;
  }
}

/* Badges confiance */
.hero-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-sm);
  justify-content: center;
  margin-top: var(--space-md);
}

.badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255,255,255,0.2);
  border: 1px solid rgba(255,255,255,0.35);
  backdrop-filter: blur(6px);
  border-radius: 999px;
  padding: 6px 14px;
  font-size: var(--text-sm);
  font-weight: 500;
}

/* ── 9. ARGUMENTS / USP ──────────────────────────────────── */
.usp-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-sm);
}

.usp-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-sm);
  padding: var(--space-sm);
  background: var(--blanc);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.usp-icon {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  background: var(--fond-alt);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.usp-icon svg {
  width: 22px;
  height: 22px;
  color: var(--turquoise);
}

.usp-item h3 {
  font-size: var(--text-base);
  margin-bottom: 4px;
}

.usp-item p {
  font-size: var(--text-sm);
  color: var(--texte-clair);
  margin: 0;
}

@media (min-width: 768px) {
  .usp-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1280px) {
  .usp-grid { grid-template-columns: repeat(4, 1fr); }
}

/* ── 10. FOOTER ──────────────────────────────────────────── */
.footer {
  background: var(--bleu-marine);
  color: rgba(255,255,255,0.85);
  padding: var(--space-lg) 0 var(--space-md);
}

.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-md);
  margin-bottom: var(--space-md);
}

@media (min-width: 768px) {
  .footer-grid { grid-template-columns: 2fr 1fr 1fr; }
}

.footer-brand h3 {
  color: var(--blanc);
  font-size: var(--text-xl);
  margin-bottom: var(--space-xs);
}

.footer-brand p {
  font-size: var(--text-sm);
  opacity: 0.8;
  margin-bottom: var(--space-sm);
}

.footer-note-directe {
  display: inline-block;
  background: var(--or-sable);
  color: var(--blanc);
  font-size: var(--text-xs);
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 999px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.footer-nav h4 {
  color: var(--blanc);
  font-size: var(--text-sm);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: var(--space-sm);
}

.footer-nav li {
  margin-bottom: 8px;
}

.footer-nav a {
  font-size: var(--text-sm);
  opacity: 0.8;
  transition: opacity var(--transition);
}

.footer-nav a:hover {
  opacity: 1;
}

.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.12);
  padding-top: var(--space-sm);
  display: flex;
  flex-direction: column;
  gap: var(--space-xs);
  font-size: var(--text-xs);
  opacity: 0.6;
}

@media (min-width: 768px) {
  .footer-bottom {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }
}

/* ── 11. STICKY CTA ──────────────────────────────────────── */
.sticky-cta {
  display: none;
  position: fixed;
  bottom: var(--space-md);
  left: 50%;
  transform: translateX(-50%);
  z-index: 900;
  animation: slideUp 0.3s ease;
}

.sticky-cta.visible {
  display: flex;
}

@keyframes slideUp {
  from { opacity: 0; transform: translateX(-50%) translateY(20px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* ── 12. BOUTON WHATSAPP ─────────────────────────────────── */
.whatsapp-btn {
  position: fixed;
  bottom: var(--space-md);
  right: var(--space-sm);
  z-index: 950;
  width: 56px;
  height: 56px;
  background: #25D366;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(37, 211, 102, 0.45);
  transition: transform var(--transition), box-shadow var(--transition);
  aria-label: "Contacter par WhatsApp";
}

.whatsapp-btn:hover {
  transform: scale(1.08);
  box-shadow: 0 6px 24px rgba(37, 211, 102, 0.55);
}

.whatsapp-btn svg {
  width: 28px;
  height: 28px;
  fill: var(--blanc);
}

/* Tooltip WhatsApp */
.whatsapp-btn::before {
  content: "Contactez-nous";
  position: absolute;
  right: calc(100% + 12px);
  background: var(--texte);
  color: var(--blanc);
  font-size: var(--text-xs);
  padding: 4px 10px;
  border-radius: 6px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition);
}

.whatsapp-btn:hover::before {
  opacity: 1;
}

/* ── 13. AVIS / TÉMOIGNAGES ──────────────────────────────── */
.avis-card {
  background: var(--blanc);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: var(--space-md);
}

.avis-etoiles {
  color: var(--or-sable);
  font-size: var(--text-lg);
  margin-bottom: var(--space-xs);
  letter-spacing: 2px;
}

.avis-texte {
  font-style: italic;
  color: var(--texte);
  margin-bottom: var(--space-sm);
}

.avis-auteur {
  font-size: var(--text-sm);
  color: var(--texte-clair);
  font-weight: 600;
}

.avis-source {
  font-size: var(--text-xs);
  color: var(--texte-clair);
}

/* ── 14. BADGES & LABELS ─────────────────────────────────── */
.label {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: var(--text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.label-vert    { background: #D5F5E3; color: #1E8449; }
.label-or      { background: #FEF3CD; color: #9A6A00; }
.label-bleu    { background: #D6EAF8; color: #1A5276; }
.label-rouge   { background: #FADBD8; color: #922B21; }

/* ── 15. UTILITAIRES ─────────────────────────────────────── */
.text-center   { text-align: center; }
.text-left     { text-align: left; }
.flex-center   { display: flex; align-items: center; justify-content: center; }
.gap-sm        { gap: var(--space-sm); }
.gap-md        { gap: var(--space-md); }
.mt-sm         { margin-top: var(--space-sm); }
.mt-md         { margin-top: var(--space-md); }
.mb-sm         { margin-bottom: var(--space-sm); }
.mb-md         { margin-bottom: var(--space-md); }
.hidden        { display: none !important; }
.sr-only       { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }

/* ── 16. ANIMATIONS AU SCROLL ────────────────────────────── */
.fade-in {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}

.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── 17. PAGE WRAPPER ────────────────────────────────────── */
.page-content {
  padding-top: var(--nav-height);
  min-height: calc(100svh - var(--nav-height));
}

/* ── 18. BREADCRUMB ──────────────────────────────────────── */
.breadcrumb {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  font-size: var(--text-sm);
  color: var(--texte-clair);
  padding: var(--space-sm) 0;
}

.breadcrumb a:hover { color: var(--bleu-marine); }
.breadcrumb .sep    { opacity: 0.4; }

/* ── 19. FORMULAIRE ──────────────────────────────────────── */
.form-group {
  margin-bottom: var(--space-sm);
}

.form-label {
  display: block;
  font-size: var(--text-sm);
  font-weight: 600;
  margin-bottom: 6px;
  color: var(--texte);
}

.form-input,
.form-select,
.form-textarea {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 1.5px solid var(--gris-clair);
  border-radius: var(--radius-sm);
  font-family: var(--font-corps);
  font-size: var(--text-base);
  color: var(--texte);
  background: var(--blanc);
  transition: border-color var(--transition), box-shadow var(--transition);
  min-height: 44px;
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus {
  outline: none;
  border-color: var(--bleu-marine);
  box-shadow: 0 0 0 3px rgba(10, 61, 98, 0.12);
}

.form-textarea { resize: vertical; min-height: 120px; }

/* ── 20. ALERTE / NOTIFICATION ───────────────────────────── */
.alerte {
  border-radius: var(--radius-sm);
  padding: var(--space-sm) var(--space-md);
  font-size: var(--text-sm);
  display: flex;
  align-items: flex-start;
  gap: var(--space-xs);
}

.alerte-info    { background: #EBF5FB; color: #1A5276; border-left: 4px solid #3498DB; }
.alerte-succes  { background: #EAFAF1; color: #1E8449; border-left: 4px solid #27AE60; }
.alerte-avertissement { background: #FEF9E7; color: #7D6608; border-left: 4px solid var(--or-sable); }
.alerte-erreur  { background: #FDEDEC; color: #922B21; border-left: 4px solid var(--rouge); }

/* ── 21. SECTION HERO INTERNE (pages secondaires) ────────── */
.page-hero {
  background: var(--bleu-marine);
  color: var(--blanc);
  padding: calc(var(--nav-height) + var(--space-lg)) 0 var(--space-lg);
  text-align: center;
}

.page-hero h1 { color: var(--blanc); }

.page-hero p {
  opacity: 0.85;
  font-size: var(--text-lg);
  max-width: 600px;
  margin: var(--space-sm) auto 0;
}
