/* =====================================================================
   HERO
   ===================================================================== */
.gs-hero {
  position: relative;
  padding-top: calc(96px + var(--gs-space-6));
  padding-bottom: var(--gs-space-7);
  overflow: hidden;
  background: var(--gs-bg);
}

.gs-hero::before {
  content: '';
  position: absolute;
  top: -20%;
  right: -15%;
  width: 60vw;
  height: 60vw;
  max-width: 720px;
  max-height: 720px;
  background: var(--gs-gradient-go);
  opacity: 0.16;
  filter: blur(80px);
  border-radius: 50%;
  z-index: 0;
}

.gs-hero__inner {
  position: relative;
  z-index: 1;
  display: grid;
  gap: var(--gs-space-6);
  align-items: center;
}

@media (min-width: 1000px) {
  .gs-hero__inner {
    grid-template-columns: 1.05fr 0.95fr;
    gap: var(--gs-space-5);
  }
}

.gs-hero__copy {
  text-align: center;
}

@media (min-width: 1000px) {
  .gs-hero__copy {
    text-align: left;
  }
}

.gs-hero__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  border-radius: var(--gs-radius-pill);
  background: var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
  font-family: var(--gs-font-display);
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--gs-secondary);
}

.gs-hero__eyebrow .gs-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--gs-primary);
}

.gs-hero__title {
  margin-top: var(--gs-space-2);
}

.gs-hero__pitch {
  margin-top: var(--gs-space-2);
  max-width: 480px;
}

@media (min-width: 1000px) {
  .gs-hero__pitch {
    margin-inline: 0;
  }
}

.gs-hero__copy .gs-body-l {
  margin-inline: auto;
}

@media (min-width: 1000px) {
  .gs-hero__copy .gs-body-l {
    margin-inline: 0;
  }
}

.gs-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--gs-space-3);
  margin-top: var(--gs-space-4);
  justify-content: center;
}

@media (min-width: 1000px) {
  .gs-hero__ctas {
    justify-content: flex-start;
  }
}

.gs-hero__proof {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: var(--gs-space-4);
  justify-content: center;
}

@media (min-width: 1000px) {
  .gs-hero__proof {
    justify-content: flex-start;
  }
}

.gs-hero__proof-text {
  font-size: 0.9rem;
  color: var(--gs-text-secondary);
  font-weight: 600;
  text-align: left;
}

.gs-hero__proof-text strong {
  color: var(--gs-text);
}

/* ---- Visuel hero : téléphones + éléments flottants ---- */
.gs-hero__visual {
  position: relative;
  display: flex;
  justify-content: center;
  padding: var(--gs-space-5) 0 var(--gs-space-4);
}

.gs-hero__phone-wrap {
  position: relative;
  z-index: 2;
  animation: gs-float 7s ease-in-out infinite;
}

/* Second téléphone en profondeur : donne l'impression d'une vraie appli
   vivante (plusieurs écrans), pas d'un simple mockup isolé. Desktop only —
   sur mobile, un seul téléphone garde le hero lisible et léger. */
.gs-hero__phone-secondary {
  display: none;
  position: absolute;
  z-index: 1;
  top: 14%;
  left: -13%;
  transform: rotate(-11deg) scale(0.62);
  opacity: 0.9;
  filter: brightness(0.97);
}

@media (min-width: 1000px) {
  .gs-hero__phone-secondary {
    display: block;
  }
}

.gs-hero__float {
  z-index: 3;
}

.gs-hero__float--notif {
  top: 2%;
  left: -8%;
}

.gs-hero__float--going {
  bottom: 22%;
  right: -14%;
}

.gs-hero__float--fire {
  top: 50%;
  right: -16%;
}

@media (max-width: 480px) {
  .gs-hero__float--notif { top: 0; left: -2%; }
  .gs-hero__float--going { right: -2%; }
  .gs-hero__float--fire { display: none; }
}

/* Mini pile d'avatars stylisés (pas de vraies photos) pour la carte "y vont" */
.gs-mini-avatars {
  display: flex;
  flex-shrink: 0;
}

.gs-mini-avatar {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 2px solid var(--gs-surface);
  margin-left: -9px;
  display: block;
  object-fit: cover;
  background: var(--gs-surface-muted);
}

.gs-mini-avatar:first-child {
  margin-left: 0;
}

.gs-float-card__body {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.gs-float-card__title {
  font-weight: 700;
  line-height: 1.2;
}

.gs-float-card__sub {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--gs-text-tertiary);
}

.gs-hero__blob {
  position: absolute;
  border-radius: 50%;
  z-index: 0;
}

.gs-hero__blob--a {
  top: -10%;
  left: -20%;
  width: 140px;
  height: 140px;
  background: var(--gs-accent);
  opacity: 0.35;
  filter: blur(30px);
}

.gs-hero__blob--b {
  bottom: -8%;
  right: -18%;
  width: 180px;
  height: 180px;
  background: var(--gs-secondary);
  opacity: 0.25;
  filter: blur(36px);
}

/* =====================================================================
   PROBLÈME → SOLUTION (mise en scène façon chat, pas un bloc de texte)
   ===================================================================== */
.gs-problem {
  padding-block: var(--gs-space-6);
}

.gs-problem__thread {
  max-width: 560px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--gs-space-2);
}

.gs-problem__bubble {
  max-width: 84%;
  padding: 16px 20px;
  border-radius: var(--gs-radius-xl);
  font-family: var(--gs-font-display);
  font-weight: 700;
  font-size: clamp(1.05rem, 1.6vw + 0.8rem, 1.4rem);
  line-height: 1.3;
}

.gs-problem__bubble--q {
  align-self: flex-start;
  background: var(--gs-surface-muted);
  color: var(--gs-text-secondary);
  border-bottom-left-radius: 6px;
}

.gs-problem__bubble--a {
  align-self: flex-end;
  background: var(--gs-gradient-go);
  color: #fff;
  border-bottom-right-radius: 6px;
  box-shadow: var(--gs-shadow-glow);
}

.gs-problem__typing {
  align-self: flex-end;
  display: flex;
  gap: 5px;
  padding: 16px 20px;
  border-radius: var(--gs-radius-xl);
  border-bottom-right-radius: 6px;
  background: var(--gs-surface-muted);
}

.gs-problem__typing span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--gs-text-tertiary);
  animation: gs-typing-dot 1.2s ease-in-out infinite;
}

.gs-problem__typing span:nth-child(2) { animation-delay: 0.15s; }
.gs-problem__typing span:nth-child(3) { animation-delay: 0.3s; }

@keyframes gs-typing-dot {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.5; }
  30% { transform: translateY(-4px); opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .gs-problem__typing span {
    animation: none;
  }
}

/* =====================================================================
   BANDE DE RÉASSURANCE
   ===================================================================== */
.gs-trust {
  padding-block: var(--gs-space-4);
  border-top: 1px solid var(--gs-border);
  border-bottom: 1px solid var(--gs-border);
  background: var(--gs-surface);
}

.gs-trust__row {
  display: grid;
  gap: var(--gs-space-3);
  grid-template-columns: repeat(1, 1fr);
  text-align: center;
}

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

.gs-trust__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}

.gs-trust__item svg {
  width: 24px;
  height: 24px;
  color: var(--gs-primary);
}

.gs-trust__item span {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--gs-text);
  max-width: 160px;
}

/* =====================================================================
   COMMUNAUTÉ — l'aspect social au centre : pas juste des événements,
   des gens. Deux écrans (profil + chat de groupe) + bande d'avatars.
   ===================================================================== */
.gs-community {
  padding-block: var(--gs-space-7);
  background: var(--gs-surface-muted);
  overflow: hidden;
}

.gs-community__layout {
  display: grid;
  gap: var(--gs-space-6);
  align-items: center;
}

@media (min-width: 960px) {
  .gs-community__layout {
    grid-template-columns: 1fr 1fr;
  }
}

.gs-community__copy .gs-h2 {
  margin-top: 8px;
}

.gs-community__copy .gs-body-l {
  margin-top: var(--gs-space-2);
  max-width: 460px;
}

.gs-community__points {
  margin-top: var(--gs-space-4);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.gs-community__point {
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 700;
  font-size: 0.95rem;
}

.gs-community__point-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gs-secondary);
  background: var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
}

.gs-community__point-icon svg {
  width: 18px;
  height: 18px;
}

.gs-community__phones {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 420px;
}

.gs-community__phone {
  position: absolute;
  width: 220px;
}

.gs-community__phone--profile {
  left: 6%;
  top: 6%;
  transform: rotate(-6deg);
  z-index: 1;
}

.gs-community__phone--chat {
  right: 4%;
  bottom: 0;
  transform: rotate(5deg);
  z-index: 2;
}

@media (max-width: 560px) {
  .gs-community__phones {
    min-height: 360px;
  }
  .gs-community__phone {
    width: 180px;
  }
  .gs-community__phone--profile {
    left: 2%;
  }
  .gs-community__phone--chat {
    right: 2%;
  }
}

.gs-community__avatars {
  margin-top: var(--gs-space-6);
  text-align: center;
}

.gs-community__avatars-row {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: var(--gs-space-2);
}

.gs-community__avatar {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: block;
  object-fit: cover;
  background: var(--gs-surface-muted);
  border: 2px solid var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
  transition: transform 0.3s var(--gs-ease-snap);
}

.gs-community__avatar:hover {
  transform: translateY(-4px) scale(1.08);
}

.gs-community__avatars-caption {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--gs-text-secondary);
}

/* =====================================================================
   APP SHOWCASE (storytelling avec téléphone sticky)
   ===================================================================== */
.gs-showcase {
  padding-block: var(--gs-space-7);
  background: var(--gs-surface-muted);
}

.gs-showcase__layout {
  display: grid;
  gap: var(--gs-space-5);
}

@media (min-width: 960px) {
  .gs-showcase__layout {
    grid-template-columns: 0.85fr 1.15fr;
    gap: var(--gs-space-6);
  }
}

.gs-showcase__phone-col {
  display: flex;
  justify-content: center;
}

@media (min-width: 960px) {
  .gs-showcase__phone-col {
    position: sticky;
    top: 110px;
    align-self: start;
    height: fit-content;
  }
}

.gs-showcase__screen {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.5s var(--gs-ease);
}

.gs-showcase__screen.is-active {
  opacity: 1;
}

.gs-showcase__steps {
  display: flex;
  flex-direction: column;
  gap: var(--gs-space-6);
}

.gs-showcase__step {
  opacity: 0.4;
  transition: opacity 0.4s var(--gs-ease);
  padding-block: var(--gs-space-2);
  border-left: 3px solid var(--gs-border);
  padding-left: var(--gs-space-3);
}

.gs-showcase__step.is-active {
  opacity: 1;
  border-left-color: var(--gs-primary);
}

.gs-showcase__step-index {
  font-family: var(--gs-font-display);
  font-weight: 700;
  color: var(--gs-primary);
  font-size: 0.85rem;
  letter-spacing: 0.06em;
}

.gs-showcase__step h3 {
  margin-top: 6px;
}

.gs-showcase__step p {
  margin-top: 8px;
  color: var(--gs-text-secondary);
  max-width: 420px;
}

/* Contenus factices à l'intérieur des écrans du téléphone */
.gs-mockscreen {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  background: var(--gs-bg);
  padding: 18px 14px 14px;
  overflow: hidden;
}

.gs-mockscreen__topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.gs-mockscreen__title {
  font-family: var(--gs-font-display);
  font-weight: 700;
  font-size: 1rem;
}

.gs-mockscreen__pin {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--gs-surface-muted);
}

.gs-mockcard-mini {
  background: var(--gs-surface);
  border-radius: var(--gs-radius-md);
  box-shadow: var(--gs-shadow-card);
  overflow: hidden;
  margin-bottom: 10px;
}

.gs-mockcard-mini__img {
  height: 64px;
  background-size: cover;
  background-position: center;
}

.gs-mockcard-mini__body {
  padding: 8px 10px;
}

.gs-mockcard-mini__title {
  font-weight: 700;
  font-size: 0.78rem;
}

.gs-mockcard-mini__meta {
  font-size: 0.65rem;
  color: var(--gs-text-secondary);
  margin-top: 2px;
}

/* Bascule "Sorties / Dispo" du vrai écran Découvrir (segmented control,
   cf. app/(tabs)/index.tsx — Feed et Dispo fusionnés en un seul écran). */
.gs-mocksegment {
  display: flex;
  gap: 6px;
  margin-bottom: 10px;
}

.gs-mocksegment__item {
  padding: 5px 12px;
  border-radius: var(--gs-radius-pill);
  background: var(--gs-surface);
  font-size: 0.66rem;
  font-weight: 800;
  color: var(--gs-text-secondary);
}

.gs-mocksegment__item.is-active {
  background: var(--gs-primary);
  color: var(--gs-on-primary);
}

.gs-mockchip-row {
  display: flex;
  gap: 6px;
  overflow: hidden;
  margin-bottom: 12px;
}

.gs-mockchip {
  flex-shrink: 0;
  padding: 6px 12px;
  border-radius: var(--gs-radius-pill);
  background: var(--gs-surface);
  font-size: 0.68rem;
  font-weight: 700;
  box-shadow: var(--gs-shadow-card);
}

.gs-mockchip.is-active {
  /* Aplat citron + texte noir, comme les chips de l'app (jamais un dégradé —
     cf. src/components/ui.tsx : "Chip actif = aplat vert citron, jamais un
     dégradé, les chips de filtre sont nombreux à l'écran"). */
  background: var(--gs-primary);
  color: var(--gs-on-primary);
}

.gs-mockscreen--detail .gs-mockscreen__cover {
  height: 42%;
  border-radius: var(--gs-radius-lg);
  background-size: cover;
  background-position: center;
  position: relative;
  margin: -18px -14px 12px;
  border-radius: 0;
}

.gs-mockbtn {
  margin-top: auto;
  height: 40px;
  border-radius: var(--gs-radius-pill);
  /* Même aplat citron que le vrai bouton CTA de l'app (Button, ui.tsx). */
  background: var(--gs-primary);
  color: var(--gs-on-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 0.78rem;
}

.gs-mockgrid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}

.gs-mockgrid__tile {
  aspect-ratio: 1;
  border-radius: var(--gs-radius-md);
  background: var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  font-size: 1.1rem;
}

.gs-mockgrid__tile span {
  font-size: 0.6rem;
  font-weight: 700;
}

.gs-mockgrid__tile.is-active {
  background: var(--gs-primary);
  color: var(--gs-on-primary);
  box-shadow: var(--gs-shadow-glow);
}

.gs-mockprofile__avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  margin-inline: auto;
  /* Un des vrais anneaux dégradés d'avatar de l'app (avatarRings, theme.ts) —
     stable par personne dans l'app, ici juste un des 6 possibles pour l'exemple. */
  background: linear-gradient(135deg, #34d399, #5ac8fa);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-weight: 700;
  font-size: 1.4rem;
  border: 3px solid var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
}

.gs-mockprofile__avatar--photo {
  object-fit: cover;
}

.gs-mockprofile__name {
  text-align: center;
  font-weight: 700;
  margin-top: 8px;
  font-size: 0.85rem;
}

.gs-mockprofile__badge {
  display: block;
  text-align: center;
  margin: 4px auto 12px;
  font-size: 0.62rem;
  font-weight: 700;
  color: var(--gs-success);
  background: rgba(52, 211, 153, 0.16);
  padding: 3px 10px;
  border-radius: var(--gs-radius-pill);
  width: fit-content;
}

.gs-mockprofile__stats {
  display: flex;
  justify-content: space-around;
  margin-bottom: 12px;
}

.gs-mockprofile__stat {
  text-align: center;
}

.gs-mockprofile__stat b {
  display: block;
  font-family: var(--gs-font-display);
  font-size: 1rem;
}

.gs-mockprofile__stat span {
  font-size: 0.6rem;
  color: var(--gs-text-secondary);
}

.gs-mockchat {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.gs-mockchat__bubble {
  max-width: 78%;
  padding: 8px 12px;
  border-radius: var(--gs-radius-md);
  font-size: 0.72rem;
  background: var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
}

.gs-mockchat__bubble.is-me {
  align-self: flex-end;
  background: var(--gs-secondary);
  color: #fff;
}

/* =====================================================================
   FAUSSE INTERFACE DE SORTIE + POURQUOI GOSORTIR
   ===================================================================== */
.gs-why {
  padding-block: var(--gs-space-7);
  overflow: hidden;
}

.gs-why__layout {
  display: grid;
  gap: var(--gs-space-6);
  align-items: center;
}

@media (min-width: 960px) {
  .gs-why__layout {
    grid-template-columns: 1fr 1fr;
  }
}

.gs-why__args {
  display: flex;
  flex-direction: column;
  gap: var(--gs-space-3);
}

.gs-why__arg {
  display: flex;
  gap: var(--gs-space-2);
  padding: var(--gs-space-2) 0;
  border-bottom: 1px solid var(--gs-border);
}

.gs-why__arg:last-child {
  border-bottom: none;
}

.gs-why__arg-mark {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--gs-surface-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-family: var(--gs-font-display);
  color: var(--gs-primary);
}

.gs-why__arg h3 {
  font-size: 1.1rem;
}

.gs-why__arg p {
  margin-top: 4px;
  color: var(--gs-text-secondary);
  font-size: 0.95rem;
}

.gs-why__visual {
  position: relative;
  display: flex;
  justify-content: center;
}

.gs-why__note {
  position: absolute;
  top: -6%;
  left: -4%;
  z-index: 3;
}

.gs-why__note--right {
  left: auto;
  right: -6%;
  top: auto;
  bottom: 6%;
}

.gs-why__example-tag {
  position: absolute;
  bottom: -14px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--gs-text-tertiary);
  background: var(--gs-bg);
  padding: 2px 10px;
  white-space: nowrap;
}

/* =====================================================================
   SECTION IMMERSIVE
   ===================================================================== */
.gs-immersive {
  position: relative;
  padding-block: var(--gs-space-7);
  background: var(--gs-gradient-night);
  color: #fff;
  overflow: hidden;
}

.gs-immersive__glow {
  position: absolute;
  width: 60vw;
  height: 60vw;
  max-width: 640px;
  max-height: 640px;
  border-radius: 50%;
  background: var(--gs-primary);
  opacity: 0.35;
  filter: blur(90px);
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.gs-immersive__head {
  position: relative;
  z-index: 1;
  text-align: center;
  max-width: 620px;
  margin-inline: auto;
  margin-bottom: var(--gs-space-6);
}

.gs-immersive__head .gs-eyebrow {
  color: var(--gs-accent);
}

.gs-immersive__head .gs-h2 {
  color: #fff;
  margin-top: 8px;
}

.gs-immersive__head p {
  color: rgba(255, 255, 255, 0.75);
  margin-top: 12px;
}

/* Ticker d'activité — signaux FOMO illustratifs, clairement identifiés
   comme tels (voir légende), jamais présentés comme des stats réelles. */
.gs-ticker {
  position: relative;
  z-index: 1;
  margin-top: var(--gs-space-4);
  -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
  mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);
}

.gs-ticker__item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  margin-right: 12px;
  border-radius: var(--gs-radius-pill);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.92);
  font-size: 0.85rem;
  font-weight: 700;
  white-space: nowrap;
}

.gs-ticker__caption {
  position: relative;
  z-index: 1;
  text-align: center;
  margin-top: 10px;
  font-size: 0.72rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.45);
}

.gs-immersive__stage {
  position: relative;
  z-index: 1;
  display: flex;
  justify-content: center;
  padding-block: var(--gs-space-4);
  perspective: 1400px;
}

.gs-immersive__phone {
  transform: rotateY(var(--gs-rot-y, 0deg)) rotateX(var(--gs-rot-x, 0deg));
  /* Pas de transition ici : la rotation est déjà réécrite à chaque frame de
     scroll (requestAnimationFrame côté JS) — une transition par-dessus ferait
     repartir/interrompre l'interpolation en continu et donnerait un rendu
     saccadé au lieu d'un mouvement fluide. will-change isole le téléphone
     dans sa propre couche pour éviter de repeindre le halo flouté voisin. */
  will-change: transform;
}

.gs-immersive__cards {
  position: relative;
  z-index: 1;
  display: flex;
  gap: var(--gs-space-3);
  overflow-x: auto;
  padding: var(--gs-space-4) var(--gs-space-3) var(--gs-space-2);
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  cursor: grab;
  /* Piste glissable à la souris (voir main.js) : sans ça, le drag sélectionne
     le texte et les images des cartes au lieu de faire défiler la piste. */
  user-select: none;
  -webkit-user-select: none;
}

.gs-immersive__cards.is-dragging {
  cursor: grabbing;
  scroll-snap-type: none;
}

.gs-immersive__cards::-webkit-scrollbar {
  display: none;
}

.gs-immersive__cards img {
  -webkit-user-drag: none;
  user-drag: none;
}

.gs-immersive__cards .gs-event-card {
  scroll-snap-align: center;
  flex-shrink: 0;
  width: 250px;
}

.gs-immersive__hint {
  position: relative;
  z-index: 1;
  text-align: center;
  margin-top: var(--gs-space-2);
  font-size: 0.85rem;
  color: rgba(255, 255, 255, 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

/* =====================================================================
   FAQ
   ===================================================================== */
.gs-faq {
  padding-block: var(--gs-space-7);
}

.gs-faq__list {
  max-width: 760px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: var(--gs-space-2);
}

.gs-faq__item {
  background: var(--gs-surface);
  border-radius: var(--gs-radius-lg);
  box-shadow: var(--gs-shadow-card);
  overflow: hidden;
}

.gs-faq__q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--gs-space-2);
  padding: var(--gs-space-2) var(--gs-space-3);
  text-align: left;
  font-family: var(--gs-font-display);
  font-weight: 700;
  font-size: 1rem;
}

.gs-faq__q-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--gs-surface-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.3s var(--gs-ease), background 0.3s var(--gs-ease);
}

.gs-faq__item.is-open .gs-faq__q-icon {
  transform: rotate(45deg);
  background: var(--gs-gradient-go);
  color: #fff;
}

.gs-faq__a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s var(--gs-ease);
}

.gs-faq__a-inner {
  padding: 0 var(--gs-space-3) var(--gs-space-3);
  color: var(--gs-text-secondary);
  font-size: 0.95rem;
  line-height: 1.6;
}

/* =====================================================================
   DOWNLOAD CTA
   ===================================================================== */
.gs-download {
  position: relative;
  padding-block: var(--gs-space-7);
  /* Toujours sombre, dans les deux thèmes — --gs-text s'inverserait avec le
     thème (presque blanc en sombre) et casserait le contraste avec le texte
     blanc ci-dessous. Section "coup de contraste" volontairement fixe,
     comme .gs-immersive / .gs-support-cta__box juste à côté. */
  background: #0a0a0f;
  color: #fff;
  overflow: hidden;
}

.gs-download::before {
  content: '';
  position: absolute;
  inset: -20% -10%;
  background: var(--gs-gradient-go);
  opacity: 0.22;
  filter: blur(100px);
}

.gs-download__layout {
  position: relative;
  z-index: 1;
  display: grid;
  gap: var(--gs-space-5);
  align-items: center;
  text-align: center;
}

@media (min-width: 960px) {
  .gs-download__layout {
    grid-template-columns: 1.1fr 0.9fr;
    text-align: left;
  }
}

.gs-download__title {
  color: #fff;
}

.gs-download__text {
  margin-top: var(--gs-space-2);
  color: rgba(255, 255, 255, 0.72);
  max-width: 480px;
  margin-inline: auto;
}

@media (min-width: 960px) {
  .gs-download__text {
    margin-inline: 0;
  }
}

.gs-download__actions {
  margin-top: var(--gs-space-4);
  display: flex;
  flex-direction: column;
  gap: var(--gs-space-3);
  align-items: center;
}

@media (min-width: 960px) {
  .gs-download__actions {
    align-items: flex-start;
  }
}

.gs-download__store-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gs-space-2);
  align-items: center;
  justify-content: center;
}

@media (min-width: 960px) {
  .gs-download__store-row {
    justify-content: flex-start;
  }
}


.gs-download__visual {
  display: flex;
  justify-content: center;
}

/* =====================================================================
   FOOTER
   ===================================================================== */
.gs-footer {
  padding-top: var(--gs-space-7);
  background: var(--gs-surface);
  border-top: 1px solid var(--gs-border);
}

.gs-footer__grid {
  display: grid;
  gap: var(--gs-space-5) var(--gs-space-4);
  grid-template-columns: 1fr;
  padding-bottom: var(--gs-space-6);
}

@media (min-width: 560px) {
  .gs-footer__grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .gs-footer__brand {
    grid-column: span 2;
  }
}

@media (min-width: 1080px) {
  .gs-footer__grid {
    grid-template-columns: 1.3fr 0.85fr 0.85fr 0.85fr 0.85fr;
  }
  .gs-footer__brand {
    grid-column: span 1;
  }
}

.gs-footer__tagline {
  margin-top: 10px;
  color: var(--gs-text-secondary);
  font-size: 0.9rem;
  max-width: 260px;
}

.gs-footer__social {
  display: flex;
  gap: 10px;
  margin-top: var(--gs-space-2);
}

.gs-footer__social-link {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--gs-surface-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--gs-text);
  transition: background 0.2s var(--gs-ease), color 0.2s var(--gs-ease);
}

.gs-footer__social-link:hover {
  background: var(--gs-gradient-go);
  color: #fff;
}

.gs-footer__col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.gs-footer__col-title {
  font-family: var(--gs-font-display);
  font-weight: 700;
  font-size: 0.85rem;
  margin-bottom: 4px;
}

.gs-footer__col a {
  color: var(--gs-text-secondary);
  font-size: 0.92rem;
  transition: color 0.2s var(--gs-ease);
}

.gs-footer__col a:hover {
  color: var(--gs-primary);
}

.gs-footer__store {
  font-weight: 700;
  color: var(--gs-text) !important;
}

.gs-footer__bottom {
  padding-block: var(--gs-space-3);
  border-top: 1px solid var(--gs-border);
  text-align: center;
}

.gs-footer__bottom p {
  font-size: 0.82rem;
  color: var(--gs-text-tertiary);
}

/* =====================================================================
   PAGES LÉGALES
   ===================================================================== */
.gs-legal {
  padding-block: calc(96px + var(--gs-space-5)) var(--gs-space-7);
}

.gs-legal__inner {
  max-width: 760px;
}

.gs-legal__inner h2 {
  margin-top: var(--gs-space-4);
  margin-bottom: var(--gs-space-1);
}

.gs-legal__inner a {
  color: var(--gs-secondary);
  font-weight: 700;
}

/* Rétablit les puces que le reset global retire (base.css) : sur une page
   légale, les listes énumèrent des droits et des durées — sans marqueur ni
   interligne, elles se lisent comme un bloc de texte indistinct. */
.gs-legal__inner ul {
  list-style: disc;
  padding-left: 1.35em;
  margin-block: var(--gs-space-1);
}

.gs-legal__inner li + li {
  margin-top: 8px;
}

/* =====================================================================
   FIL D'ARIANE
   ===================================================================== */
.gs-breadcrumbs {
  padding-block: calc(96px + var(--gs-space-2)) 0;
}

/* Quand le fil d'Ariane précède .gs-legal, c'est LUI qui compense le nav
   fixe (padding-top ci-dessus) : sans ce correctif, .gs-legal ajouterait sa
   propre compensation par-dessus et doublerait l'espace en haut de page. */
.gs-breadcrumbs + main > .gs-legal {
  padding-block-start: var(--gs-space-5);
}

.gs-breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  list-style: none;
  padding: 0;
  margin: 0;
  max-width: 760px;
  margin-inline: auto;
  padding-inline: var(--gs-space-2);
}

.gs-breadcrumbs li {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--gs-text-secondary);
}

.gs-breadcrumbs li:not(:first-child)::before {
  content: '/';
  color: var(--gs-text-secondary);
  opacity: 0.5;
}

.gs-breadcrumbs a {
  color: var(--gs-text-secondary);
  font-weight: 600;
  text-decoration: none;
}

.gs-breadcrumbs a:hover {
  color: var(--gs-secondary);
}

.gs-breadcrumbs span[aria-current] {
  color: var(--gs-text);
  font-weight: 700;
}

/* =====================================================================
   GUIDES (contenu éditorial)
   ===================================================================== */
.gs-guides__hero {
  padding-block: var(--gs-space-3) var(--gs-space-5);
}

.gs-guides__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: var(--gs-space-3);
  max-width: 760px;
  margin-inline: auto;
}

.gs-guide-card {
  display: block;
  background: var(--gs-surface);
  border-radius: var(--gs-radius-xl);
  padding: var(--gs-space-3);
  box-shadow: var(--gs-shadow-card);
  text-decoration: none;
  color: inherit;
}

.gs-guide-card__eyebrow {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--gs-secondary);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.gs-guide-card__title {
  margin-top: 6px;
  font-family: var(--gs-font-display);
  font-weight: 800;
  font-size: 1.15rem;
  color: var(--gs-text);
}

.gs-guide-card__desc {
  margin-top: 8px;
  font-size: 0.92rem;
  color: var(--gs-text-secondary);
  line-height: 1.5;
}

/* Tableau comparatif (guide "se faire des amis") : bordures légères,
   lisible sans framework de tableau dédié — un seul usage ne le justifie
   pas. */
/* `display:block` + `overflow-x:auto` sur un `<table>` : le tableau garde son
   rendu normal (largeur pleine, colonnes alignées) mais devient défilable
   horizontalement sur mobile plutôt que de déborder de l'écran. */
.gs-legal__inner table {
  display: block;
  overflow-x: auto;
  width: 100%;
  border-collapse: collapse;
  margin-block: var(--gs-space-2);
  font-size: 0.92rem;
}

.gs-legal__inner th,
.gs-legal__inner td {
  text-align: left;
  padding: 10px 12px;
  border-bottom: 1px solid var(--gs-border);
  vertical-align: top;
  white-space: normal;
}

.gs-legal__inner th {
  font-family: var(--gs-font-display);
  color: var(--gs-text);
  white-space: nowrap;
}

/* =====================================================================
   SUPPORT
   ===================================================================== */
.gs-support-hero {
  padding-block: calc(96px + var(--gs-space-5)) var(--gs-space-6);
  text-align: center;
}

.gs-support-hero__inner {
  max-width: 640px;
  margin-inline: auto;
}

.gs-support-hero .gs-h1 {
  margin-top: var(--gs-space-2);
}

.gs-support-hero__pitch {
  margin-top: var(--gs-space-2);
}

.gs-support-search {
  margin-top: var(--gs-space-4);
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
}

.gs-support-search a {
  padding: 8px 16px;
  border-radius: var(--gs-radius-pill);
  background: var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--gs-text);
  transition: transform 0.25s var(--gs-ease-snap), color 0.2s var(--gs-ease);
}

.gs-support-search a:hover {
  transform: translateY(-2px);
  color: var(--gs-primary);
}

.gs-support-contact {
  padding-bottom: var(--gs-space-7);
}

.gs-support-contact__grid {
  display: grid;
  gap: var(--gs-space-3);
  grid-template-columns: 1fr;
}

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

.gs-support-card {
  padding: var(--gs-space-3);
  border-radius: var(--gs-radius-xl);
  background: var(--gs-surface);
  box-shadow: var(--gs-shadow-card);
  text-align: center;
  transition: transform 0.35s var(--gs-ease), box-shadow 0.35s var(--gs-ease);
}

.gs-support-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--gs-shadow-elevated);
}

.gs-support-card__icon {
  width: 52px;
  height: 52px;
  margin-inline: auto;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
  margin-bottom: var(--gs-space-2);
}

.gs-support-card:nth-child(1) .gs-support-card__icon { background: linear-gradient(135deg, #c4ff3d, #ffc857); }
.gs-support-card:nth-child(2) .gs-support-card__icon { background: linear-gradient(135deg, #ff3d77, #9d4edd); }
.gs-support-card:nth-child(3) .gs-support-card__icon { background: linear-gradient(135deg, #7b2cbf, #c599f5); }

.gs-support-card__title {
  font-family: var(--gs-font-display);
  font-weight: 700;
  font-size: 1.05rem;
}

.gs-support-card__text {
  margin-top: 6px;
  font-size: 0.88rem;
  color: var(--gs-text-secondary);
  line-height: 1.5;
}

.gs-support-card__link {
  display: inline-block;
  margin-top: var(--gs-space-2);
  font-weight: 700;
  color: var(--gs-secondary);
  font-size: 0.9rem;
}

.gs-support-topics {
  padding-bottom: var(--gs-space-7);
}

.gs-support-topic {
  max-width: 760px;
  margin: 0 auto var(--gs-space-6);
  scroll-margin-top: 110px;
}

.gs-support-topic__head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: var(--gs-space-2);
}

.gs-support-topic__icon {
  width: 38px;
  height: 38px;
  border-radius: var(--gs-radius-md);
  background: var(--gs-surface-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
}

.gs-support-topic__head h2 {
  font-size: 1.3rem;
}

.gs-support-cta {
  padding-bottom: var(--gs-space-7);
  text-align: center;
}

.gs-support-cta__box {
  max-width: 640px;
  margin-inline: auto;
  padding: var(--gs-space-5) var(--gs-space-3);
  border-radius: var(--gs-radius-xl);
  background: var(--gs-gradient-night);
  color: #fff;
}

.gs-support-cta__box .gs-h2 {
  color: #fff;
}

.gs-support-cta__box p {
  margin-top: 8px;
  color: rgba(255, 255, 255, 0.75);
}

.gs-support-cta__box .gs-btn {
  margin-top: var(--gs-space-3);
}
