/* ============================================================
   KAYA — PAGE D'ACCUEIL
   Hero plein ecran, grille des residences, la journee,
   panneaux empiles, index des prestations, section « arriver ».
   Utilise par : index, amahoro (qui reprend le hero).
   Depend de base.css.
   ============================================================ */
/* --- HERO ACCUEIL --- */
.hero{position:relative;height:100svh;min-height:580px;overflow:hidden;background:var(--basalt)}
.hero .plate{position:absolute;inset:0;z-index:0}
/* La scene dessinee sert de repli AVANT que la video demarre.
   Des qu'un calque video est pret, .hero.playing la masque :
   on ne voit donc jamais le dessin par transparence pendant
   le fondu. Si aucune video ne demarre, elle reste affichee. */
.hero.playing .plate{opacity:0;transition:opacity .5s var(--ease)}
/* Video de fond du hero : couvre toute la section, sous les calques
   (voile, brume, crete, texte). object-fit evite toute deformation.
   La video joue en boucle (voir hero-video.js) : elle est
   transparente par defaut et .on l'affiche.
   Le filtre l'assombrit legerement : le voile radial ne couvre que
   les bords, or le titre est au centre. Sans cela, une image claire
   fait disparaitre le texte. Ajuster brightness pour doser. */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  z-index:1;pointer-events:none;opacity:0;transition:opacity .9s var(--ease);
  filter:brightness(.72) saturate(.95)}
.hero-video.on{opacity:1}
/* La source 1.mp4 est VERTICALE (464x832, format telephone).
   Sur un ecran large, object-fit:cover doit l'etirer enormement
   pour couvrir la largeur et n'en garde qu'une fine bande : on
   centre alors le cadrage, c'est le moins mauvais compromis.
   Sur telephone, l'ecran est lui aussi vertical : la video tombe
   juste, elle remplit le cadre sans perte notable.
   Seul le mode « animations reduites » la desactive encore ; la
   scene dessinee prend alors le relais. */
.hero-video{object-position:50% 50%}
@media (prefers-reduced-motion:reduce){.hero-video{display:none}}
.hero-veil{position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 32%,rgba(20,18,15,0) 28%,rgba(20,18,15,.72) 100%)}
/* Voile renforce quand la video joue : le degrade radial est
   transparent en son centre, or le titre est justement au centre.
   Doit rester APRES la regle .hero-veil ci-dessus, sinon celle-ci
   ecrase le background (meme specificite : le dernier gagne). */
.hero.playing .hero-veil{background:radial-gradient(120% 80% at 50% 32%,rgba(20,18,15,.3) 20%,rgba(20,18,15,.82) 100%)}
.mist{position:absolute;left:-10%;width:120%;pointer-events:none;will-change:transform,opacity}
.mist-1{bottom:0;height:60%;background:linear-gradient(0deg,rgba(240,235,225,.36),rgba(240,235,225,0) 78%)}
.mist-2{bottom:0;height:38%;background:linear-gradient(0deg,rgba(240,235,225,.5),rgba(240,235,225,0) 72%)}
.hero-inner{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:center;
  align-items:center;text-align:center;color:var(--kaolin);padding:0 var(--pad)}
.hero-eyebrow{color:var(--kaolin);opacity:.75;margin-bottom:26px}
.hero-title{font-family:var(--display);font-size:clamp(66px,19vw,270px);line-height:.82;letter-spacing:.06em;padding-left:.06em;font-weight:400}
.hero-sub{margin-top:26px;font-size:clamp(14px,1.5vw,18px);font-weight:300;letter-spacing:.04em;max-width:34ch;opacity:.9}
.hero-coord{position:absolute;bottom:38px;left:var(--pad);z-index:4;color:var(--kaolin);opacity:.65}
.hero-cue{position:absolute;bottom:38px;right:var(--pad);z-index:4;color:var(--kaolin);display:flex;
  align-items:center;gap:12px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;opacity:.65}
.hero-cue span:last-child{width:44px;height:1px;background:currentColor;transform-origin:left;animation:cue 2.6s var(--ease) infinite}
@keyframes cue{0%,100%{transform:scaleX(.3)}50%{transform:scaleX(1)}}
.ridge{position:absolute;left:0;right:0;bottom:0;z-index:2;pointer-events:none;line-height:0}
.ridge svg{width:100%;height:auto;display:block}
.ridge-draw{fill:none;stroke:var(--ochre);stroke-width:1.4;stroke-dasharray:2600;stroke-dashoffset:2600;
  transition:stroke-dashoffset 2.6s var(--ease) .4s}
.ready .ridge-draw{stroke-dashoffset:0}

/* --- GRILLE RÉSIDENCES --- */
.res-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(16px,2.4vw,34px);margin-top:clamp(44px,7vw,88px)}
.res{position:relative;grid-column:span 6;display:block}
.res:nth-child(1){grid-column:span 7}
.res:nth-child(2){grid-column:span 5;margin-top:clamp(30px,7vw,110px)}
.res:nth-child(3){grid-column:span 5}
.res:nth-child(4){grid-column:span 7;margin-top:clamp(20px,4vw,60px)}
.res .plate{aspect-ratio:3/2}
.res:nth-child(2) .plate,.res:nth-child(3) .plate{aspect-ratio:4/5}
.res .plate img{transition:transform 1.4s var(--ease)}
.res:hover .plate img{transform:scale(1.03)}
.res-meta{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-top:20px}
.res-name{font-family:var(--display);font-size:clamp(23px,2.8vw,38px);line-height:1.06}
.res-gloss{font-size:11px;letter-spacing:.18em;text-transform:uppercase;opacity:.55;margin-top:8px;font-weight:500}
.res-price{text-align:right;white-space:nowrap}
.res-price b{font-family:var(--display);font-size:clamp(18px,2vw,26px);font-weight:400;display:block}
.res-price span{font-size:10px;letter-spacing:.16em;text-transform:uppercase;opacity:.5}
.res-spec{margin-top:14px;font-size:13px;opacity:.68;font-weight:300;border-top:1px solid rgba(240,235,225,.16);padding-top:14px}

/* --- JOURNÉE --- */
.day{background:var(--basalt);color:var(--kaolin);position:relative}
.day .eyebrow{color:var(--ochre)}
.day-head{padding:clamp(76px,11vw,145px) var(--pad) 0}
.day-wrap{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(24px,5vw,80px);
  padding:0 var(--pad) clamp(76px,11vw,145px);align-items:start}
.day-list{padding-top:12vh}
.day-item{padding:clamp(28px,5vw,56px) 0;border-top:1px solid rgba(240,235,225,.14);opacity:.32;transition:opacity .7s var(--ease)}
.day-item.active{opacity:1}
.day-time{font-size:11px;letter-spacing:.24em;font-weight:600;color:var(--ochre);display:block;margin-bottom:14px}
.day-title{font-family:var(--display);font-size:clamp(25px,3.4vw,46px);line-height:1.06;margin-bottom:14px}
.day-text{font-size:15px;font-weight:300;opacity:.78;max-width:44ch}
.day-media{position:sticky;top:14vh;height:72vh;overflow:hidden}
.day-media .plate{position:absolute;inset:0;opacity:0;transition:opacity 1s var(--ease)}
.day-media .plate.on{opacity:1}

/* --- PANNEAUX --- */
.panels{position:relative;height:300vh;background:var(--basalt)}
.panels-pin{position:sticky;top:0;height:100svh;overflow:hidden}
.panel{position:absolute;inset:0}
.panel .plate{position:absolute;inset:0}
.panel-cap{position:absolute;left:var(--pad);bottom:var(--pad);color:var(--kaolin);z-index:5;max-width:34ch}
.panel-cap h3{font-family:var(--display);font-size:clamp(26px,4.4vw,58px);line-height:1.02;font-weight:400;margin-bottom:10px}
.panel-cap p{font-size:13px;font-weight:300;opacity:.75}
.panels-count{position:absolute;right:var(--pad);top:calc(var(--pad) + 40px);z-index:6;color:var(--kaolin);
  font-size:11px;letter-spacing:.24em;font-weight:600}

/* --- ARRIVER --- */
.arrive{background:var(--basalt);color:var(--kaolin);overflow:hidden}
.arrive .eyebrow{color:var(--ochre)}
.arrive-ends{display:flex;justify-content:space-between;gap:20px;margin-top:clamp(38px,6vw,68px);align-items:flex-end}
.arrive-end .coord{color:var(--ochre);opacity:1;margin-bottom:8px;display:block}
.arrive-end p{font-family:var(--display);font-size:clamp(19px,2.6vw,32px);line-height:1.1}
.arrive-end.r{text-align:right}
.profile{margin-top:26px;position:relative}
.profile svg{width:100%;height:auto;display:block;overflow:visible}
.p-line{fill:none;stroke:var(--ochre);stroke-width:1.6;stroke-dasharray:1200;stroke-dashoffset:1200;transition:stroke-dashoffset 2.4s var(--ease)}
.in .p-line{stroke-dashoffset:0}
.p-fill{fill:rgba(199,154,75,.09);opacity:0;transition:opacity 1.2s var(--ease) .9s}
.in .p-fill{opacity:1}
.p-dot{fill:var(--ochre);opacity:0;transition:opacity .5s var(--ease) 2s}
.in .p-dot{opacity:1}
.arrive-stats .stat-num{color:var(--kaolin)}
.arrive-stats .stat-lab{opacity:.55}

@media (max-width:1024px){
  .day-wrap{grid-template-columns:1fr;gap:0}
  .day-media{position:relative;top:0;height:56svh;margin-bottom:8px;order:-1}
  .day-list{padding-top:0}
}
@media (max-width:680px){
  .res,.res:nth-child(n){grid-column:span 12;margin-top:0}
  .res-grid{gap:44px}
  .arrive-ends{flex-direction:column;align-items:flex-start;gap:18px}
  .arrive-end.r{text-align:left}
  .panels{height:250vh}
}
@media (prefers-reduced-motion:reduce){
  .ridge-draw,.p-line{stroke-dashoffset:0}
  .panels{height:auto}.panels-pin{position:relative;height:auto}
  .panel{position:relative;height:66svh;clip-path:none!important}
  .day-media{position:relative;height:50svh}
  .day-media .plate{position:relative;opacity:1;height:100%}
  .day-media .plate:not(.on){display:none}
}
