/* ==========================================================================
   NEXUS BUILDING SOLUTIONS — Portail d'aiguillage
   Page unique : présenter la plateforme et diriger le visiteur vers l'une des
   trois marques (Build · Homes · Windows). S'appuie sur tokens.css + base.css ;
   n'ajoute ici que ce qui est propre au portail.
   ========================================================================== */

/* --- En-tête simplifié -------------------------------------------------
   Un portail n'a pas de menu : la page EST le menu. On garde donc l'en-tête
   de la charte, réduit au seul logo, centré sur mobile, à gauche au-delà. */
.hub-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--nx-line);
}
.hub-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--nx-6); min-height: 72px;
}
.hub-header .nx-logo img { height: 44px; }
/* Groupe de droite : sélecteur de langue + mention du groupe. */
.hub-header__right { display: flex; align-items: center; gap: var(--nx-4); }
.hub-header__tag {
  font-family: var(--nx-font-mono);
  font-size: var(--nx-text-xs); letter-spacing: 0.04em;
  color: var(--nx-ink-soft); white-space: nowrap;
  text-decoration: none;
  transition: color var(--nx-dur) var(--nx-ease);
}
a.hub-header__tag:hover, a.hub-header__tag:focus-visible { color: var(--nx-base); }
/* Sous ~520 px, la mention groupe cède la place ; le sélecteur de langue reste. */
@media (max-width: 520px) { .hub-header__tag { display: none; } }
@media (max-width: 560px) {
  .hub-header__tag { display: none; }
  .hub-header .nx-logo img { height: 38px; }
}

/* --- Hero — volontairement compact : les trois marques doivent apparaître
       le plus haut possible, juste sous ce titre. ------------------------- */
.hub-hero {
  background:
    radial-gradient(120% 120% at 85% -20%, var(--nx-neutre) 0%, transparent 55%),
    var(--nx-paper);
  padding-block: clamp(2.25rem, 4.5vw, 3.75rem) clamp(1.5rem, 3vw, 2.25rem);
  border-bottom: 1px solid var(--nx-line);
}
.hub-hero__inner { max-width: 62rem; }
.hub-hero h1 {
  margin-block: var(--nx-4) var(--nx-4);
  max-width: 20ch;
}
.hub-hero__pick {
  font-size: var(--nx-text-md);
  color: var(--nx-ink-soft);
  max-width: 60ch;
}

/* --- Aiguillage : les trois cartes ------------------------------------- */
.hub-choose { padding-block: clamp(2rem, 4vw, 3rem) clamp(3rem, 6vw, 5rem); }
.hub-cards {
  display: grid; gap: var(--nx-6);
  grid-template-columns: repeat(3, 1fr);
}
/* Les trois marques restent SUR UNE LIGNE aussi longtemps que possible :
   c'est le choix du visiteur, il doit se lire d'un seul regard. On resserre
   la carte dans la zone intermédiaire plutôt que de casser la ligne. */
@media (min-width: 601px) and (max-width: 1040px) {
  .hub-cards { gap: var(--nx-3); }
  .hub-card__body { padding: var(--nx-6) var(--nx-4) var(--nx-6); }
  .hub-card__logo { height: 34px; margin-bottom: var(--nx-4); }
  .hub-card__title { font-size: var(--nx-text-md); }
  .hub-card__go { padding: var(--nx-3) var(--nx-4); }
}
/* Sous ~600 px (téléphone), trois cartes pleines ne tiennent plus : on empile. */
@media (max-width: 600px) {
  .hub-cards { grid-template-columns: 1fr; max-width: 34rem; margin-inline: auto; }
}

/* La carte entière est cliquable (lien qui enveloppe le contenu). */
.hub-card {
  --card-accent: var(--nx-accent);
  --card-cta:    var(--nx-base);
  --card-cta-ink: var(--nx-white);
  display: flex; flex-direction: column;
  background: var(--nx-white);
  border: 1px solid var(--nx-line);
  border-radius: var(--nx-radius);
  overflow: hidden;
  text-decoration: none; color: var(--nx-ink);
  box-shadow: var(--nx-shadow-1);
  transition: transform var(--nx-dur) var(--nx-ease),
              box-shadow var(--nx-dur) var(--nx-ease),
              border-color var(--nx-dur) var(--nx-ease);
}
.hub-card::before {
  content: ""; display: block; height: 4px; background: var(--card-accent);
}
.hub-card:hover, .hub-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: var(--nx-shadow-2);
  border-color: var(--card-accent);
  color: var(--nx-ink);
}
.hub-card:focus-visible { outline: 2px solid var(--card-accent); outline-offset: 3px; }

/* --- Marque pas encore en ligne : carte non cliquable, texte atténué,
       mais LOGO et bandeau d'accent restent pleinement visibles. --------- */
.hub-card--soon { cursor: default; position: relative; }
.hub-card--soon:hover, .hub-card--soon:focus-visible {
  transform: none; box-shadow: var(--nx-shadow-1); border-color: var(--nx-line);
}
.hub-card--soon .hub-card__for,
.hub-card--soon .hub-card__title,
.hub-card--soon .hub-card__desc,
.hub-card--soon .hub-card__list { opacity: 0.45; }
/* Le logo reste net et AU-DESSUS du bandeau. */
.hub-card--soon .hub-card__logo { position: relative; z-index: 2; }
/* Bandeau « bientôt disponible » en diagonale, en travers de la carte.
   Fond = accent de la marque (ambre / bleu), texte ink (règle d'accent). */
.hub-card__soon {
  position: absolute; top: 50%; left: 50%; z-index: 1;
  transform: translate(-50%, -50%) rotate(-16deg);
  width: 150%; padding: var(--nx-2) 0;
  background: var(--card-accent); color: var(--nx-on-accent);
  text-align: center; text-transform: uppercase;
  letter-spacing: var(--nx-tracking-label);
  font-size: var(--nx-text-sm); font-weight: 700;
  box-shadow: var(--nx-shadow-2); pointer-events: none;
}

.hub-card__body {
  display: flex; flex-direction: column; flex: 1;
  padding: var(--nx-8) var(--nx-6) var(--nx-6);
}
.hub-card__logo {
  height: 46px; width: auto; margin-bottom: var(--nx-6);
  align-self: flex-start; object-fit: contain;
}
.hub-card__for {
  font-family: var(--nx-font-body);
  font-size: var(--nx-text-xs); font-weight: 600;
  letter-spacing: var(--nx-tracking-label); text-transform: uppercase;
  color: var(--nx-ink-soft); margin-bottom: var(--nx-3);
}
.hub-card__title {
  font-family: var(--nx-font-display); font-weight: 600;
  font-size: var(--nx-text-lg); line-height: var(--nx-leading-snug);
  letter-spacing: var(--nx-tracking-tight);
  margin-bottom: var(--nx-3);
}
.hub-card__desc { color: var(--nx-ink-soft); font-size: var(--nx-text-sm); }
.hub-card__list {
  list-style: none; padding: 0; margin: var(--nx-4) 0 var(--nx-6);
  display: grid; gap: var(--nx-2);
}
.hub-card__list li {
  position: relative; padding-left: var(--nx-6);
  font-size: var(--nx-text-sm); color: var(--nx-ink);
}
.hub-card__list li::before {
  content: ""; position: absolute; left: 0; top: 0.55em;
  width: 12px; height: 2px; background: var(--card-accent);
}
/* Fausse-action visuelle : ce n'est pas un vrai <button> (toute la carte est
   le lien), mais l'affordance d'un bouton pleine largeur en pied de carte. */
.hub-card__go {
  /* auto : pousse le bouton en bas de carte, quel que soit le volume de texte.
     Les cartes étant de hauteur égale (grille), les trois boutons s'alignent
     donc sur une même ligne — celle de Nexus Build, la plus basse. */
  margin-top: auto;
  /* Hauteur identique garantie + pas de retour à la ligne : les trois boutons
     ont exactement la même taille, quelle que soit la longueur du libellé. */
  min-height: 3rem;
  white-space: nowrap;
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--nx-3);
  padding: var(--nx-3) var(--nx-6);
  background: var(--card-cta); color: var(--card-cta-ink);
  border-radius: var(--nx-radius);
  font-size: var(--nx-text-sm); font-weight: 600;
  transition: background var(--nx-dur) var(--nx-ease);
}
.hub-card__go svg { width: 18px; height: 18px; transition: transform var(--nx-dur) var(--nx-ease); }
.hub-card:hover .hub-card__go svg, .hub-card:focus-visible .hub-card__go svg {
  transform: translateX(4px);
}
.hub-card__ext {
  margin-top: var(--nx-3);
  font-family: var(--nx-font-mono); font-size: 0.7rem;
  color: var(--nx-ink-soft); letter-spacing: 0.02em;
  text-align: center;
}

/* Déclinaison par marque : bandeau d'accent + couleur du bouton.
   Homes utilise l'ambre en aplat sous du texte ink (7.14:1, cf. tokens.css) —
   sa signature chaude. Build et Windows gardent un aplat de base sous du blanc. */
.hub-card--build   { --card-accent: #55B97B; --card-cta: #507068; --card-cta-ink: #FFFFFF; }
.hub-card--homes   { --card-accent: #D99A4E; --card-cta: #D99A4E; --card-cta-ink: #1A1A1A; }
.hub-card--windows { --card-accent: #4FB0C4; --card-cta: #3F6070; --card-cta-ink: #FFFFFF; }

/* --- Phrase de présentation, déplacée SOUS les cartes ------------------
   Le visiteur voit d'abord les trois marques ; l'explication de la
   plateforme vient ensuite, une fois le choix posé sous les yeux. */
.hub-intro {
  padding-block: clamp(2rem, 4vw, 3rem);
  background: var(--nx-paper);
  border-top: 1px solid var(--nx-line);
}
.hub-intro__inner { max-width: 60rem; }
.hub-intro p {
  font-size: var(--nx-text-md);
  color: var(--nx-ink);
  max-width: 68ch;
}

/* --- Pourquoi une seule plateforme ------------------------------------- */
.hub-why { background: var(--nx-cream); }
.hub-why__grid {
  display: grid; gap: var(--nx-8);
  grid-template-columns: repeat(3, 1fr);
  margin-top: var(--nx-12);
}
@media (max-width: 820px) { .hub-why__grid { grid-template-columns: 1fr; gap: var(--nx-8); } }
.hub-pillar__icon {
  width: 44px; height: 44px; color: var(--nx-base);
  margin-bottom: var(--nx-4);
}
.hub-pillar h3 { font-size: var(--nx-text-lg); margin-bottom: var(--nx-3); }
.hub-pillar p { color: var(--nx-ink-soft); font-size: var(--nx-text-sm); }

/* --- Bandeau contact / groupe (fond ink) ------------------------------- */
.hub-cta .nx-container { text-align: center; }
.hub-cta h2 { max-width: 24ch; margin-inline: auto; }
.hub-cta .nx-lede { margin: var(--nx-4) auto var(--nx-8); }

/* --- Pied : pile des trois marques, cliquables ------------------------- */
.hub-footer__pile .nx-pile__item a { opacity: 0.7; }
.hub-footer__pile .nx-pile__item a:hover { opacity: 1; }
