/* ==========================================================================
   K-AREA STUDIO — feuille de style
   --------------------------------------------------------------------------
   1. RÉGLAGE DES LETTRES   ← tout ce qui concerne la lettre de fond est ici
   2. Palette & typographie
   3. Chrome (barre, repère K A R E A)
   4. Chapitres et mises en page
   5. Emplacements média
   6. Pied de page, apparitions, accessibilité
   ========================================================================== */


/* ==========================================================================
   1. RÉGLAGE DES LETTRES
   ==========================================================================
   --letter-size   : taille de base. 100vh = une hauteur d'écran.
                     420vh ≈ la lettre fait 4 écrans de haut.
                     Baisser pour rendre la lettre lisible,
                     monter pour aller vers l'abstraction pure.
   --letter-floor  : plancher exprimé en largeur d'écran. Empêche la lettre
                     de devenir trop petite sur un écran large et bas.
   --letter-tone   : la valeur du gris. Plus c'est clair, plus c'est discret.
   --letter-tone-final : le dernier A (Kenya).

   Puis, pour chaque lettre :
   --lf  facteur de taille propre à la lettre (1 = taille de base)
   --ox  décalage horizontal, en % de la lettre elle-même
   --oy  décalage vertical
   Ces trois valeurs servent à CADRER : à cette échelle on ne voit qu'un
   fragment, et c'est le décalage qui décide si on tombe sur une arête,
   une contreforme, ou une masse pleine (à éviter).
   -------------------------------------------------------------------------- */

:root{
  --letter-size:  420vh;
  --letter-floor: 220vw;
  --letter-tone:       #F0EEEA;
  --letter-tone-final: #9e3e2a;

  /* Largeur maximale du contenu. Au-delà, la page reste centrée et les
     marges latérales grandissent. Sur un écran très large, monter cette
     valeur pour éviter la bande morte à gauche. */
  --page-max: 1680px;

  /* Largeur utile réelle, une fois les marges retirées. Sert de référence
     à tous les emplacements d'image : ils restent proportionnels quelle
     que soit la taille de l'écran. */
  --content: calc(min(var(--page-max), 100vw) - 2 * var(--pad));

  /* ÉCHELLE DES EMPLACEMENTS — part de la largeur utile.
     C'est ici qu'on grossit ou qu'on réduit toutes les images d'un coup. */
  --fig-s:  .28;
  --fig-m:  .42;
  --fig-l:  .56;
  --fig-xl: .66;

  --letter-fade:  1s;      /* durée du fondu entre deux lettres */
  --letter-slide: 1.2s;    /* durée du glissement de cadrage    */
  --letter-rise:  22px;    /* amorce du glissement              */
}

.stage span[data-l="0"]{ --lf:1.00; --ox:  9%; --oy:  1%; } /* K — le fût et l'amorce des bras */
.stage span[data-l="1"]{ --lf:1.00; --ox:  0%; --oy:-14%; } /* A — l'écart des jambages        */
.stage span[data-l="2"]{ --lf:1.30; --ox: -2%; --oy:  4%; } /* R — la panse, plein plus épais   */
.stage span[data-l="3"]{ --lf:1.20; --ox: 10%; --oy: -2%; } /* E — le fût et les trois barres   */
.stage span[data-l="4"]{ --lf:1.55; --ox:  0%; --oy: 0%; } /* A — le sommet seul               */


/* ==========================================================================
   2. PALETTE & TYPOGRAPHIE
   ========================================================================== */

:root{
  --paper:#FFFFFF;
  --ink:#101010;
  --soft:#3A3A3A;
  --grey:#8E8E8E;
  --hair:#E4E2DE;
  --red:#D8402F;

  --serif:"Bodoni Moda", Didot, "Times New Roman", serif;
  --sans:"Jost", system-ui, sans-serif;

  --pad: clamp(20px, 4vw, 64px);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--sans);font-weight:300;
  font-size:clamp(15px,1.02vw,17px);line-height:1.75;
  overflow-x:hidden;
}
img,video{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--red);color:#fff}
:focus-visible{outline:1px solid var(--red);outline-offset:4px}

.micro{
  font-family:var(--sans);font-weight:400;
  font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--grey);
  margin:0;
}


/* ==========================================================================
   3. LETTRE DE FOND & CHROME
   ========================================================================== */

.stage{
  position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  display:grid;place-items:center;
}
.stage span{
  position:absolute;
  --lf:1; --ox:0%; --oy:0%; --rise:var(--letter-rise);
  font-family:var(--serif);font-weight:400;
  font-size:calc(max(var(--letter-size), var(--letter-floor)) * var(--lf));
  line-height:.74;
  color:var(--letter-tone);
  opacity:0;
  transform:translate(var(--ox), calc(var(--oy) + var(--rise)));
  transition:opacity var(--letter-fade) cubic-bezier(.4,0,.2,1),
             transform var(--letter-slide) cubic-bezier(.4,0,.2,1);
  will-change:opacity,transform;
  user-select:none;
}
.stage span.on{opacity:1;--rise:0px}
.stage span[data-final]{color:var(--letter-tone-final)}

.bar{
  position:fixed;top:0;left:0;right:0;z-index:3;
  display:flex;align-items:baseline;gap:16px;
  padding:clamp(16px,2.2vw,28px) var(--pad);
  pointer-events:none;
}
.bar > *{pointer-events:auto}

/* Plaque blanche : le logotype ne doit jamais reposer sur la lettre de fond.
   --wm-plate règle la marge du blanc autour du texte. */
.bar .wm{
  --wm-plate: clamp(10px,1vw,16px);
  font-family:var(--serif);font-size:clamp(15px,1.25vw,19px);
  letter-spacing:.02em;text-decoration:none;
  background:var(--paper);
  padding:var(--wm-plate) calc(var(--wm-plate) * 1.5);
  margin:calc(var(--wm-plate) * -1) calc(var(--wm-plate) * -1.5);
}
.bar .right{background:var(--paper);padding:10px 14px;margin:-10px -14px}
.bar .wm i{font-style:normal;font-family:var(--sans);font-weight:200;letter-spacing:.24em;font-size:.62em;margin-left:.55em}
.bar .right{margin-left:auto;display:flex;gap:clamp(12px,1.6vw,24px)}
.bar a.lnk{text-decoration:none;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--grey)}
.bar a.lnk:hover{color:var(--ink)}
@media (max-width:560px){ .bar .right a.lnk:first-child{display:none} }

.tracker{
  position:fixed;left:var(--pad);bottom:clamp(18px,2.4vw,32px);z-index:3;
  display:flex;gap:.85em;
  font-family:var(--sans);font-weight:400;
  font-size:11px;letter-spacing:.2em;color:var(--hair);
}
.tracker b{font-weight:400;color:var(--grey);transition:color .5s ease}
.tracker b.on{color:var(--ink)}
@media (max-width:560px){.tracker{display:none}}


/* ==========================================================================
   4. CHAPITRES
   ========================================================================== */

main{position:relative;z-index:1}

/* Le texte est toujours sur le calque le plus haut : une image qui
   s'approche ne peut jamais passer par-dessus et gêner la lecture. */
.chap h1, .chap h2, .chap h3,
.chap p, .chap ul, .chap ol,
.chap .prose, .chap .nom, .chap .mail{
  position:relative; z-index:2;
}
.chap figure figcaption{z-index:auto}
.chap{
  min-height:100vh;
  padding:clamp(96px,14vh,190px) var(--pad) clamp(72px,11vh,150px);
  display:flex;flex-direction:column;justify-content:center;
  max-width:var(--page-max);margin:0 auto;
}
.chap .inner{width:100%}
.col-c{max-width:min(680px,92%);margin:0 auto}

.claim{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(34px,6.2vw,88px);line-height:1.02;letter-spacing:-.015em;margin:0;
}
.claim em{font-style:italic}
.k-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(24px,4vw,64px);align-items:center}
.k-grid figure{margin-left:auto}
.k-grid .lede{max-width:40ch;color:var(--soft);font-size:clamp(15px,1.12vw,18px)}
@media (max-width:860px){
  .k-grid{grid-template-columns:1fr}
  .k-grid figure{margin-left:0;margin-top:clamp(28px,4vw,56px)}
}

.h2{font-family:var(--serif);font-weight:400;font-size:clamp(26px,3.6vw,50px);line-height:1.06;margin:0 0 clamp(20px,2.4vw,34px)}
.prose p{margin:0;color:var(--soft)}
.prose p + p{margin-top:1.15em}
.prose .first{color:var(--ink);font-family:var(--serif);font-size:clamp(18px,1.7vw,23px);line-height:1.38}
.prose b{font-weight:400;color:var(--ink)}
.devise{
  margin-top:clamp(28px,3.2vw,48px);
  font-family:var(--serif);font-style:italic;font-weight:400;
  font-size:clamp(18px,1.9vw,27px);line-height:1.28;
  color:var(--ink);max-width:24ch;
}
.a-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(28px,5vw,84px);align-items:start}
@media (max-width:860px){.a-grid{grid-template-columns:1fr}}

.list{list-style:none;margin:clamp(16px,2vw,28px) 0 0;padding:0;border-top:1px solid var(--hair)}
.list li{
  display:flex;align-items:baseline;gap:clamp(14px,2vw,32px);
  padding:clamp(9px,1.05vw,15px) 0;border-bottom:1px solid var(--hair);
  font-family:var(--serif);font-size:clamp(19px,2.15vw,30px);line-height:1.2;
}
.list li i{font-style:normal;font-family:var(--sans);font-weight:400;font-size:10.5px;letter-spacing:.18em;color:var(--grey);flex:none;width:2.2em}
.list li:last-child{font-style:italic}
.r-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(28px,5vw,80px);align-items:center}
.r-grid figure{margin-left:auto}
@media (max-width:860px){
  .r-grid{grid-template-columns:1fr}
  .r-grid figure{margin-left:0;margin-top:clamp(28px,4vw,56px)}
}

.e-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:clamp(20px,3vw,56px)}
.e-row + .e-row{margin-top:clamp(28px,4vw,72px)}
.e-push{margin-left:auto}

.z-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(28px,5vw,80px);align-items:center}
.z-grid figure{margin-left:auto}
@media (max-width:860px){.z-grid{grid-template-columns:1fr}.z-grid figure{margin-left:0;margin-top:clamp(28px,4vw,56px)}}

.nom p{margin:0;color:var(--soft);max-width:52ch}
.nom p + p{margin-top:1.15em}
.nom b{font-weight:400;color:var(--ink)}
.nom .kenya{color:var(--red)}
.mail{
  display:inline-block;margin-top:clamp(28px,3.4vw,52px);
  font-family:var(--serif);font-size:clamp(21px,2.8vw,38px);
  text-decoration:none;border-bottom:1px solid var(--hair);padding-bottom:5px;word-break:break-word;
}
.mail:hover{color:var(--red);border-color:var(--red)}


/* ==========================================================================
   5. EMPLACEMENTS MÉDIA
   --------------------------------------------------------------------------
   Trois échelles : .fig-s .fig-m .fig-l, plus .fig-bleed (pleine largeur).
   Quatre formats : .r45 (4/5) .r11 (1/1) .r32 (3/2) .r219 (21/9)
   Le script remplit .ph — ne rien mettre d'autre dedans.
   ========================================================================== */

figure{margin:0;max-width:100%;position:relative;z-index:0}
figure figcaption{margin-top:9px;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--grey)}
.fig-s{ width:calc(var(--content) * var(--fig-s))  }
.fig-m{ width:calc(var(--content) * var(--fig-m))  }
.fig-l{ width:calc(var(--content) * var(--fig-l))  }
.fig-xl{width:calc(var(--content) * var(--fig-xl)) }

/* Plein format : déborde de la colonne centrée pour occuper toute la largeur.
   DOIT être un enfant direct de .inner — jamais dans une .e-row, sinon le
   calcul du débord se fait sur la rangée et l'image part de travers. */
.fig-bleed{
  width:auto;max-width:none;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  margin-top:clamp(28px,4vw,72px);
  margin-bottom:clamp(28px,4vw,72px);
}

.ph{position:relative;overflow:hidden;background:var(--hair)}
.r45{aspect-ratio:4/5}.r34{aspect-ratio:3/4}.r11{aspect-ratio:1/1}
.r43{aspect-ratio:4/3}.r32{aspect-ratio:3/2}.r219{aspect-ratio:21/9}

.ph .media{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;
  opacity:1;transition:opacity .7s ease;
}
.ph .media.enter{opacity:0}          /* état d'entrée, retiré une fois chargé */
.ph .media.leave{opacity:0}          /* le média sortant s'efface puis est retiré */
figure:hover .ph .media{transform:scale(1.02)}
.ph .media{transition:opacity .7s ease, transform 1.2s cubic-bezier(.2,.7,.2,1)}


/* ==========================================================================
   6. PIED DE PAGE, APPARITIONS, ACCESSIBILITÉ
   ========================================================================== */

footer{
  position:relative;z-index:1;border-top:1px solid var(--hair);
  padding:22px var(--pad) 40px;max-width:var(--page-max);margin:0 auto;
  display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:space-between;
}

.rv{opacity:0;transform:translateY(20px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}

@media (max-width:860px){
  :root{ --fig-s:.62; --fig-m:.82; --fig-l:1; --fig-xl:1; }
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .stage span{transition:none}
  .rv{opacity:1;transform:none;transition:none}
  .ph .media,figure:hover .ph .media{transition:none;transform:none}
}
