/* ============================================================
   Portfolio NBL — Styles spécifiques aux pages
   Dépend de : tokens.css, components.css
   ============================================================ */

/* ============================================================
   En-tête de page commun (sauf Accueil)
   ============================================================ */
.page-head {
  padding-inline: var(--gutter-x);
  padding-top: calc(76px + var(--s-11));
  padding-bottom: var(--s-9);
  max-width: var(--container-max);
  margin-inline: auto;
  display: grid;
  gap: var(--s-5);
}
.page-head__eyebrow {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
}
.page-head__eyebrow::before {
  content: "";
  width: 40px;
  height: 1px;
  background: var(--c-copper);
}
.page-head__title {
  font-family: var(--f-display);
  font-size: var(--t-d2);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: 0;
  max-width: 24ch;
  font-weight: 400;
}
.page-head__title em { font-style: italic; }
.page-head__lede {
  font-size: var(--t-lg);
  color: var(--c-bone-muted);
  max-width: var(--reading-max);
  margin: var(--s-3) 0 0;
  line-height: var(--lh-relaxed);
}

/* ============================================================
   PAGE — Accueil · hero refondu
   Logo en background détouré, manifeste mi-hauteur, teasers en fold
   ============================================================ */

/* ============================================================
   HERO Accueil — disposition selon la vision
   Manifeste EN HAUT à gauche
   Coordonnées EN HAUT à droite sous la nav
   Logo NBL EN MILIEU en arrière-plan
   Teasers EMPILÉS VERTICALEMENT à droite, dans la fold
   ============================================================ */
.hero--home {
  height: 100svh;
  min-height: 720px;
  position: relative;
  overflow: hidden;
  padding: 0;
  background: var(--c-ink);
}

/* Background : logo détouré + halo (toujours derrière, z-index 0)
   .hero__bg occupe toute la fold ; ses enfants se centrent en absolute */
.hero__bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}
.hero__bg .hero__halo {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 90vw;
  height: 90vw;
  max-width: 1400px;
  max-height: 1400px;
  transform: translate(-50%, -50%);
  background:
    radial-gradient(circle, var(--c-copper-glow) 0%, transparent 55%),
    radial-gradient(circle at 60% 40%, rgba(184, 115, 51, 0.08) 0%, transparent 70%);
  animation: hero-halo 14s var(--ease-in-out) infinite;
  filter: blur(4px);
}
.hero__bg-logo {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(80vw, 1200px);
  height: auto;
  max-height: 80vh;
  object-fit: contain;
  transform: translate(-50%, -50%);
  transform-origin: center center;
  opacity: 0.82;
  mix-blend-mode: screen;
  filter: brightness(1.1) saturate(1.2);
  animation: hero-breathe-centered 12s var(--ease-in-out) infinite;
  -webkit-mask-image: radial-gradient(ellipse 75% 70% at 50% 50%, #000 55%, transparent 92%);
          mask-image: radial-gradient(ellipse 75% 70% at 50% 50%, #000 55%, transparent 92%);
}
@keyframes hero-breathe-centered {
  0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.82; }
  50%      { transform: translate(-50%, -50%) scale(1.025); opacity: 0.9; }
}

/* Coordonnées en haut à droite, juste sous la navbar */
.hero__coords--top {
  position: absolute;
  top: calc(76px + var(--s-5));
  right: var(--gutter-x);
  display: grid;
  gap: var(--s-3);
  text-align: right;
  z-index: 3;
}
.hero__coords--top .hero__coords-block { display: grid; gap: 2px; }
.hero__coords--top .hero__coords-label {
  font-family: var(--f-mono);
  font-size: var(--t-mono-sm);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
}
.hero__coords--top .hero__coords-value {
  font-size: var(--t-sm);
  color: var(--c-bone);
  transition: color var(--d-1) var(--ease-in-out);
}
.hero__coords--top a.hero__coords-value:hover { color: var(--c-copper); }

/* Manifeste EN HAUT à gauche, sous la navbar */
.hero--home .hero__manifesto {
  position: absolute;
  top: calc(76px + var(--s-7));
  left: var(--gutter-x);
  font-family: var(--f-display);
  font-size: clamp(2rem, 4.5vw, 3.75rem);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  max-width: 18ch;
  margin: 0;
  font-weight: 400;
  z-index: 2;
  text-shadow: 0 4px 32px rgba(0, 0, 0, 0.7);
}
.hero--home .hero__manifesto em { font-style: italic; }

/* Teasers EMPILÉS À DROITE, à la mi-hauteur, alignés à droite */
.hero--home .home-teasers {
  position: absolute;
  right: var(--gutter-x);
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--s-3);
  margin: 0;
  padding: 0;
  width: clamp(360px, 38vw, 520px);
}

.home-teaser {
  position: relative;
  width: 100%;
}
/* Teasers : lignes éditoriales horizontales, pas des cards */
.home-teaser__link {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-3) 0;
  border-top: 1px solid var(--c-line);
  text-decoration: none;
  color: var(--c-bone);
  transition: padding-right var(--d-3) var(--ease-out-quart);
  text-align: right;
}
.home-teaser:last-child .home-teaser__link { border-bottom: 1px solid var(--c-line); }
.home-teaser__link:hover { padding-right: var(--s-3); }

.home-teaser__num {
  font-family: var(--f-mono);
  font-size: var(--t-mono-sm);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  white-space: nowrap;
}
.home-teaser__text {
  font-family: var(--f-display);
  font-size: clamp(1.25rem, 1.6vw, 1.625rem);
  line-height: 1.15;
  letter-spacing: var(--ls-snug);
  margin: 0;
  font-weight: 400;
  text-align: right;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.7);
}
.home-teaser__text em { font-style: italic; color: var(--c-copper); }

.home-teaser__cta {
  display: none; /* libellé "Voir les projets" : on l'enlève, on garde la flèche */
}
.home-teaser__cta-label { display: none; }

/* Conteneur flèche : la sortante s'en va à droite, la suivante arrive de gauche */
.home-teaser__arrow {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 24px;
  overflow: hidden;
  color: var(--c-copper);
  flex-shrink: 0;
}
.home-teaser__arrow-glyph {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--f-mono);
  font-size: 1.1rem;
  line-height: 1;
  transition: transform var(--d-3) var(--ease-out-quart);
  will-change: transform;
}
.home-teaser__arrow-glyph--in {
  transform: translate(calc(-50% - 200%), -50%);
}
.home-teaser__link:hover .home-teaser__arrow-glyph:not(.home-teaser__arrow-glyph--in) {
  transform: translate(calc(-50% + 200%), -50%);
}
.home-teaser__link:hover .home-teaser__arrow-glyph--in {
  transform: translate(-50%, -50%);
}

/* Tablette : 2 colonnes */
@media (max-width: 1024px) {
  .hero__coords--top { display: none; }
  .hero--home .home-teasers {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--s-4);
  }
  .home-teaser { width: 100%; }
}
/* Mobile : 1 colonne + manifeste plus haut */
@media (max-width: 768px) {
  .hero--home {
    grid-template-rows: 1fr auto;
  }
  .hero--home .hero__manifesto {
    position: relative;
    top: auto;
    transform: none;
    margin: calc(76px + var(--s-7)) var(--gutter-x) 0;
    font-size: var(--t-d3);
  }
  .hero--home .home-teasers {
    grid-template-columns: 1fr;
    gap: var(--s-3);
    padding-bottom: var(--s-9);
  }
  .home-teaser__text { font-size: 1.25rem; }
}

@keyframes hero-breathe {
  0%, 100% { transform: scale(1); opacity: 0.55; }
  50%      { transform: scale(1.03); opacity: 0.65; }
}

/* ============================================================
   PAGE — Accomplissements
   ============================================================ */
.projets-filters {
  padding-inline: var(--gutter-x);
  padding-bottom: var(--s-8);
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3);
  max-width: var(--container-max);
  margin-inline: auto;
}
.projets-grid {
  padding-inline: var(--gutter-x);
  max-width: var(--container-max);
  margin-inline: auto;
}
.projets-table-wrap {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-11);
  max-width: var(--container-max);
  margin-inline: auto;
}
.projets-table-wrap h2 {
  font-family: var(--f-display);
  font-size: var(--t-d3);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
  margin: 0 0 var(--s-7);
  max-width: 22ch;
  font-weight: 400;
}
.projets-table-wrap h2 em { font-style: italic; }

/* ============================================================
   PAGE — À propos
   ============================================================ */
.about-intro {
  padding-inline: var(--gutter-x);
  padding-top: calc(76px + var(--s-12));
  padding-bottom: var(--s-10);
  max-width: var(--container-max);
  margin-inline: auto;
  text-align: center;
}
.about-intro__eyebrow {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  margin: 0 0 var(--s-5);
}
.about-intro h1 {
  font-family: var(--f-display);
  font-size: var(--t-d2);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: 0 auto;
  max-width: 22ch;
  font-weight: 400;
}
.about-intro h1 em { font-style: italic; color: var(--c-copper); }

.about-portrait {
  margin: 0 auto;
  padding-inline: var(--gutter-x);
  max-width: var(--container-max);
  position: relative;
}
.about-portrait img {
  width: 100%;
  height: auto;
  border-radius: var(--r-4);
  box-shadow: var(--sh-card);
}
.about-portrait::after {
  content: "";
  position: absolute;
  inset: 60% 0 -40px 0;
  background: radial-gradient(ellipse at center, var(--c-copper-glow), transparent 70%);
  pointer-events: none;
  z-index: -1;
}

.about-manifesto {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-11);
  max-width: var(--container-max);
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: var(--s-9);
}
.about-manifesto__eyebrow {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  position: sticky;
  top: 120px;
}
.about-manifesto__body { display: grid; gap: var(--s-5); }
.about-manifesto__body p {
  font-size: var(--t-lg);
  line-height: var(--lh-relaxed);
  margin: 0;
  max-width: var(--reading-max);
  color: var(--c-bone);
}
.about-manifesto__body p:first-of-type {
  font-family: var(--f-display);
  font-size: var(--t-d4);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
  color: var(--c-bone);
}
.about-manifesto__body p:first-of-type em { font-style: italic; color: var(--c-copper); }

@media (max-width: 768px) {
  .about-manifesto { grid-template-columns: 1fr; gap: var(--s-5); }
  .about-manifesto__eyebrow { position: static; }
}

.about-stats {
  padding-inline: var(--gutter-x);
  max-width: var(--container-max);
  margin-inline: auto;
}
.about-tools {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-11);
  max-width: var(--container-max);
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-9);
}
.about-tools h3 {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  margin: 0 0 var(--s-5);
  font-weight: 500;
}
.about-tools ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.about-tools li {
  font-family: var(--f-display);
  font-size: var(--t-d5);
  letter-spacing: var(--ls-snug);
  padding: var(--s-4) 0;
  border-bottom: 1px solid var(--c-line);
  transition: padding var(--d-2) var(--ease-out-quart), color var(--d-1) var(--ease-in-out);
}
.about-tools li:hover { padding-left: var(--s-3); color: var(--c-copper); }
@media (max-width: 768px) {
  .about-tools { grid-template-columns: 1fr; gap: var(--s-7); }
}

.about-quote {
  padding-inline: var(--gutter-x);
  max-width: var(--container-max);
  margin-inline: auto;
}
.about-table {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-11);
  max-width: var(--container-max);
  margin-inline: auto;
}
.about-table h2 {
  font-family: var(--f-display);
  font-size: var(--t-d3);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
  margin: 0 0 var(--s-7);
  max-width: 22ch;
  font-weight: 400;
}
.about-table h2 em { font-style: italic; }

/* ============================================================
   PAGE — Compétences
   ============================================================ */
.skills-intro {
  padding-inline: var(--gutter-x);
  padding-top: calc(76px + var(--s-12));
  padding-bottom: var(--s-10);
  text-align: center;
  max-width: var(--container-max);
  margin-inline: auto;
}
.skills-intro h1 {
  font-family: var(--f-display);
  font-size: var(--t-d2);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: var(--s-5) auto 0;
  max-width: 24ch;
  font-weight: 400;
}
.skills-intro h1 em { font-style: italic; color: var(--c-copper); }

.skills-table {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-10);
  max-width: var(--container-max);
  margin-inline: auto;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid var(--c-line);
  border-bottom: 1px solid var(--c-line);
}
.skill-col {
  padding: var(--s-7) var(--s-5);
  border-right: 1px solid var(--c-line);
  display: grid;
  align-content: start;
  gap: var(--s-3);
  transition: background var(--d-2) var(--ease-in-out);
}
.skill-col:last-child { border-right: 0; }
.skill-col:hover { background: var(--c-copper-faint); }
.skill-col__num {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
}
.skill-col h3 {
  font-family: var(--f-display);
  font-size: 1.625rem;
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
  margin: 0 0 var(--s-5);
  font-weight: 500;
}
.skill-col h3 em { font-style: italic; color: var(--c-copper); }
.skill-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.skill-col li {
  font-size: var(--t-sm);
  color: var(--c-bone);
  padding: var(--s-3) 0;
  border-bottom: 1px solid var(--c-line);
  line-height: var(--lh-normal);
}
.skill-col li:last-child { border-bottom: 0; }
.skill-col__tool {
  margin-top: var(--s-5);
  font-family: var(--f-mono);
  font-size: var(--t-mono-md);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--c-copper);
}
@media (max-width: 1024px) {
  .skills-table { grid-template-columns: repeat(2, 1fr); }
  .skill-col { border-right: 0; border-bottom: 1px solid var(--c-line); }
  .skill-col:nth-child(odd) { border-right: 1px solid var(--c-line); }
  .skill-col:last-child,
  .skill-col:nth-last-child(2) { border-bottom: 0; }
}
@media (max-width: 768px) {
  .skills-table { grid-template-columns: 1fr; }
  .skill-col { border-right: 0; }
  .skill-col:nth-child(odd) { border-right: 0; }
  .skill-col:not(:last-child) { border-bottom: 1px solid var(--c-line); }
}

.skills-showcase {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-9);
  max-width: var(--container-max);
  margin-inline: auto;
}
.skills-showcase .mosaic { grid-template-columns: repeat(4, 1fr); }
.skills-showcase .mosaic__item { grid-column: span 1; aspect-ratio: 1 / 1; }
@media (max-width: 1024px) {
  .skills-showcase .mosaic { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .skills-showcase .mosaic { grid-template-columns: 1fr; }
  .skills-showcase .mosaic__item { aspect-ratio: 4 / 3; }
}

.skills-stats {
  padding-inline: var(--gutter-x);
  max-width: var(--container-max);
  margin-inline: auto;
}

.skills-partners { padding-block: var(--s-10); }
.skills-partners__title {
  padding-inline: var(--gutter-x);
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  margin: 0 auto var(--s-6);
  max-width: var(--container-max);
  text-align: center;
}

/* ============================================================
   PAGE — Contact
   ============================================================ */
.contact-hero {
  padding-inline: var(--gutter-x);
  padding-top: calc(76px + var(--s-12));
  padding-bottom: var(--s-10);
  max-width: var(--container-max);
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: var(--s-10);
  align-items: end;
}
.contact-hero h1 {
  font-family: var(--f-display);
  font-size: var(--t-d1);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: var(--s-5) 0 0;
  max-width: 12ch;
  font-weight: 400;
}
.contact-hero h1 em { font-style: italic; color: var(--c-copper); }
.contact-info { display: grid; gap: var(--s-6); }
.contact-info__row {
  display: grid;
  gap: var(--s-2);
  padding-block: var(--s-4);
  border-bottom: 1px solid var(--c-line);
}
.contact-info__row:last-child { border-bottom: 0; }
.contact-info__label {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
}
.contact-info__value { font-size: var(--t-lg); color: var(--c-bone); }
.contact-info__value a {
  position: relative;
  transition: color var(--d-1) var(--ease-in-out);
}
.contact-info__value a::after {
  content: "";
  position: absolute;
  left: 0; right: 100%;
  bottom: -2px; height: 1px;
  background: var(--c-copper);
  transition: right var(--d-2) var(--ease-out-quart);
}
.contact-info__value a:hover { color: var(--c-copper); }
.contact-info__value a:hover::after { right: 0; }
@media (max-width: 1024px) {
  .contact-hero { grid-template-columns: 1fr; gap: var(--s-7); }
}

.contact-form-wrap {
  padding-inline: var(--gutter-x);
  padding-block: var(--s-11);
  max-width: var(--container-max);
  margin-inline: auto;
  border-top: 1px solid var(--c-line);
}
.contact-form-wrap h2 {
  font-family: var(--f-display);
  font-size: var(--t-d3);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-snug);
  margin: 0 0 var(--s-8);
  max-width: 24ch;
  font-weight: 400;
}
.contact-form-wrap h2 em { font-style: italic; }
.form-status {
  margin-top: var(--s-5);
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
}
.form-status[data-status="success"] { color: var(--c-success); }
.form-status[data-status="error"]   { color: var(--c-error); }

/* ============================================================
   PAGE — Détail projet
   ============================================================ */
.project-page {
  padding-inline: var(--gutter-x);
  padding-top: calc(76px + var(--s-8));
  max-width: var(--container-max);
  margin-inline: auto;
}
.project-page__back {
  font-family: var(--f-mono);
  font-size: var(--t-mono-md);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  margin-bottom: var(--s-8);
  transition: color var(--d-1) var(--ease-in-out);
}
.project-page__back:hover { color: var(--c-copper); }
.project-page__back .back-arrow {
  display: inline-block;
  transition: transform var(--d-2) var(--ease-out-quart);
}
.project-page__back:hover .back-arrow { transform: translateX(-4px); }
.project-page__eyebrow {
  font-family: var(--f-mono);
  font-size: var(--t-eyebrow);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--c-bone-muted);
  margin: 0 0 var(--s-3);
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
}
.project-page__eyebrow::before {
  content: "";
  width: 40px;
  height: 1px;
  background: var(--c-copper);
}
.project-block__inline-img {
  width: 100%;
  height: auto;
  border-radius: var(--r-4);
  box-shadow: var(--sh-card);
}

/* ============================================================
   PAGE — 404
   ============================================================ */
.error-page {
  min-height: 100svh;
  display: grid;
  place-items: center;
  text-align: center;
  padding: var(--s-12) var(--gutter-x);
}
.error-page__inner { display: grid; gap: var(--s-5); justify-items: center; }
.error-page h1 {
  font-family: var(--f-display);
  font-size: var(--t-d1);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: var(--s-3) 0;
  max-width: 14ch;
  font-weight: 400;
}
.error-page h1 em { font-style: italic; color: var(--c-copper); }
.error-page p {
  font-size: var(--t-lg);
  color: var(--c-bone-muted);
  margin: 0 0 var(--s-5);
  max-width: 48ch;
}
