/* Reset margin/padding and box-sizing */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  
  /* Make html & body take full viewport */
  html, body {
    height: 100%;
    width: 100%;
    overflow-y: auto; /* Allow vertical scrolling */
    scroll-behavior: smooth;
    scroll-snap-type: y mandatory;
  }

  .mobile {
    display: none;
  }

  /***************** Header  ****************/

  .title {
    font-family: 'Instrument', serif;
    font-size: clamp(4rem, 10vw, 12rem);
    font-weight: 400; 
    font-style: italic;
    color: white;
    margin: 0;
    letter-spacing: 0.05em;
  }

  .name {
    font-family: 'Inter', sans-serif;
    font-weight: 300;
    color: white;
    letter-spacing: 0.07em;
    margin: 0.3em 0 0;
    text-transform: lowercase;
  }

  /***************** Plus Menu  ****************/

  .plus-menu {
    position: fixed;
    top: 5dvh;
    right: 3vw;
    z-index: 999;
    display: flex;
    gap: 1%;
    flex-direction: row-reverse;
    align-items: flex-end;
    font-family: 'DM Serif Display', sans-serif;
  }
  
  .plus-toggle {
    font-size: 8rem;
    cursor: pointer;
    transition: transform 0.3s ease;
    color: white;
    border-radius: 50%;
    width: 45px;
    height: 45px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  
  .menu-items {
    display: flex;
    flex-direction: row;
    gap: 8px;
    opacity: 0;
    pointer-events: none;
    transform: translateY(0px);
    transition: opacity 0.3s ease, transform 0.3s ease;
  }
  
  .plus-menu:hover .menu-items,
  .plus-menu.active .menu-items {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
  }
  
  .plus-menu:hover .plus-toggle {
    transform: rotate(180deg);
  }
  
  .menu-items a {
    color: white;
    text-decoration: none;
    padding: 6px 10px;
    border-radius: 4px;
    font-size: 1.5rem;
    transition: background 0.2s;
    white-space: nowrap;
  }

  .menu-items img {
    width: 4vh;
  }

  .menu-items a:hover {
    background-color: rgba(255,255,255,0.2);
  }  
  
/***************** Ripple JS  ****************/

  /* For your ripple container */
  .ripple-box {
    width: 100vw;           /* Full viewport width */
    height: 100dvh;          /* Full viewport height */
    background-size: cover; /* Cover whole area */
    background-position: center center; /* Center the image */
    background-repeat: no-repeat; /* Prevent tiling */
    scroll-snap-align: start;
    display: flex;
    flex-direction: row; /* for portrait-duo */
    position: relative;
    overflow: hidden;
  }

/***************** Hero ****************/

.hero-title h2 {
  position: absolute;
  bottom: 1dvh;
  left: 8dvh;
  font-size: 2.5vh;
  transform: translate(-30%, -30%);
  color: white;
  z-index: 10;
  text-align: center;
  white-space: nowrap;
}

.corner-title {
  position: absolute;
  bottom: 2dvh;
  right: 5vw;
  color: white;
  z-index: 10;
  font-size: 3vh;
  background-color: transparent;
  white-space: nowrap;
  font-family: 'Instrument Serif', serif;
}
  
/***************** Landscape ****************/

/* Landscape single background */
.ripple-box.landscape {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
  }

/* Specific hero image box */
.ripple-box.landscape.hero {
    background-image: url('images/sob/sob8.jpg');
  }

.ripple-box.landscape.project {
    background-color:black;
  }

/***************** Project title ****************/

.project-title {
    font-family: 'Instrument Serif', serif;
    /* font-family: 'DM Serif', serif; */
    /* font-family: 'Newsreader', serif; */
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    color: aliceblue;
    width: 100%;
    height: 100%;
    text-align: center;
}

.project-title h1 {
  margin: 0;
  letter-spacing: 0.03em;
  /* line-height: 1.1; */
  font-size: 2.5rem;
  font-weight: 400;
}

.project-title h2 {
  margin-top: 0.7rem;
  font-weight: 400;
  letter-spacing: 0.07em;
  font-size: 1.4rem;
  opacity: 0.9;
  font-family: 'Instrument Serif', serif;
}

.p {
  opacity: 0.9;
}

/***************** Portrait  ****************/

/* Side-by-side portrait layout */
.portrait-duo {
    position: relative; /* for positioning h1 */
    display: flex;
    flex-direction: column; /* stack h1 and portraits vertically */
    height: 100dvh;
  }
  
.portrait-wrapper {
    flex: 1; /* fill remaining space */
    display: flex;
    flex-direction: row; /* keep portraits side by side */
  }
  
.portrait {
    flex: 1;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    position: relative;
  }

/* solo */
.solo-center .portrait {
  flex: 0 0 30%;
}

.solo-center .portrait.p3 {
  flex: 1;
  width: 100vw;
}

/* solo gauche */
.solo-left .portrait {
  flex: 0 0 30%;
}

/* solo droite */
.solo-right .portrait {
  flex: 0 0 30%;
}

/* States of becoming */
.ripple-box.portrait-duo .sob1 {
    background-image: url('images/sob/1.jpg');
  }

.ripple-box.portrait-duo .sob2 {
    background-image: url('images/sob/6.jpg');
  }

.ripple-box.portrait-duo .sob3 {
    background-image: url('images/sob/5.jpg');
  }

.ripple-box.portrait-duo .sob4 {
    background-image: url('images/sob/2.jpg');
  }

.ripple-box.portrait-duo .sob5 {
    background-image: url('images/sob/7.jpg');
  }

.ripple-box.portrait-duo .sob6 {
    background-image: url('images/sob/4.jpg');
  }

/* Urban dissolve */
.ripple-box.portrait-duo .ud1 {
    background-image: url('images/ud/1.jpg');
  }

.ripple-box.portrait-duo .ud2 {
    background-image: url('images/ud/2.jpg');
  }

.ripple-box.portrait-duo .ud3.left {
    background-image: url('images/ud/3-2.jpg');
    flex: 1.4;
  }

.ripple-box.portrait-duo .ud4.right {
    background-image: url('images/ud/4.jpg');
    flex: 0.8;
  }

.ud5 {
    background-image: url('images/ud/6.jpg');
  }

/*********************/
.triptych {
    display: flex;
    padding: 0 3vw;
}

.triptych .middle {
  flex: 1.4;
}

/* Everything is waves */
.eiw1 {
  background-image: url('images/eiw/2.jpeg');
}

.eiw2 {
  background-image: url('images/eiw/1.jpg');
}

.eiw3 {
  background-image: url('images/eiw/3.jpg');
}

.eiw4 {
  background-image: url('images/eiw/4.jpg');
  /* flex: .5; */
}

/*********************/

/* Passenger */
.ripple-box.portrait-duo .p1 {
    background-image: url('images/p/1.jpg');
  }

.ripple-box.portrait-duo .p2 {
    background-image: url('images/p/5.jpg');
  }

.ripple-box.portrait-duo .p3 {
    background-image: url('images/p/3-2.jpg');
  }

.ripple-box.portrait-duo .p4 {
    background-image: url('images/p/6-3.jpg');
  }

.p5 {
    background-image: url('images/p/4-4.jpg');
  }

/* .ripple-box.landscape.p12 {
    background-image: url('images/p/4-4.jpg');
  } */

.solo-left .portrait-wrapper {
  justify-content: flex-start;
}

.solo-right .portrait-wrapper {
  justify-content: flex-end;
}

.solo-center.desktop {
  justify-content: center;
  background-color: rgb(37, 37, 37);
}

.mobile .solo-center .portrait-wrapper.p {
  background-color: rgb(255, 255, 255);
}

/* Generic sizing for any single portrait inside a .solo box */
.ripple-box.solo .portrait {
  flex: 0 0 50%;
  /* height: 80%; */
}

.ripple-box.solo .portrait.ud5 {
  top: 0.3dvh;
  left: 0.3vw;
  height: 99.5dvh;
}

.ripple-box.solo .portrait.p5 {
  flex: 0 0 99.5%;
  height: 99.5dvh;
  top: 0.3dvh;
  left: 0.2vw;
  bottom: 0.3dvh;
}

/* What am I carrying */

.ripple-box.landscape.waic {
  background-image: url('images/waic/waic.jpg');
}

.waic .legend {
  position: absolute;
  right: 5vw;
  bottom: 5dvh;
  color: aliceblue;
  text-align: right;
  font-family: 'Inter', sans-serif;
  font-size: 1.8vh;
  opacity: 0.7;
}

/***************** Overlay  ****************/

.overlay {
  position: fixed;
  top: 20dvh; /* 15% from top */
  right: -35dvw; /* hidden to the right */
  width: 30dvw;
  height: 60dvh;
  background: rgba(172, 169, 169, 0.416);
  color: white;
  z-index: 9999;
  transition: right 0.6s ease;
  padding: 2rem;
  overflow-y: auto;
  font-family: 'Inter', sans-serif;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden; /* disable scroll to allow vertical centering */
}

/***************** CV  ****************/

.overlay.cv {
  width: 33dvw;
  height: 60dvh;
}

/***************** About  ****************/

.about-content,
.cv-content {
  font-size: 0.95rem;
}

.about-content {
  line-height: 1.6;
}

.cv-content {
  line-height: 1.2;
}

.about-content p {
  margin-bottom: 1rem;
}

.overlay.active {
  right: 2vw; /* slide into view with a small padding */
}

#close-about {
  margin-top: 2rem;
  background: none;
  border: 1px solid white;
  color: white;
  padding: 0.5rem 1rem;
  cursor: pointer;
  font-size: 1rem;
  border-radius: 4px;
  transition: background 0.3s ease;
}

#close-about:hover {
  background: white;
  color: black;
}

/* ======= Mobile Styles ======= */
@media (max-width: 600px) {

  .title {
    font-size: 5vh;
    letter-spacing: 0.02em;
  }

  .hero-title h2 {
    position: absolute;
    bottom: 3dvh;
    font-size: 2.3vh;
    left: 11svw;
  }

  .corner-title {
    position: absolute;
    bottom: 3.5dvh;
    right: 4dvw;
    font-size: 3vh;
  }

  .ripple-box {
    width: 100vw;           
    height: 100dvh;         /* Make for URL & navigation space */
  }

  /***************** Menu  ****************/

  /* Make html & body take full viewport */
  .plus-menu {
    flex-direction: column;
    align-items: flex-end;
  }

  .plus-toggle {
    font-size: 6rem;
  }

  .menu-items {
    flex-direction: column;
    align-items: flex-end;
    transform: translateY(10px);
  }

  .plus-menu:hover .menu-items {
    transform: translateY(0);
  }
  
  /***************** CV  ****************/

  .overlay.cv {
    top: 5dvh;
    width: 90vw;
    height: 80dvh;
    left: -90vw;
  }

  /***************** About  ****************/

  .overlay.about {
    top: 3vh;
    width: 80vw;
    height: 88dvh;
    right: auto;
    left: -90vw; /* move almost completely off-screen */
  }

  .overlay.active {
    left: 1vw; /* slide into view with a small padding */
  }

  .about-content {
    font-size: 1rem;
    line-height: 1.5;
  }
  
  .about-content p {
    margin-bottom: 1rem;
  }  

  /***************** Hero  ****************/

  .hero-title {
    left: 33%;
    width: 95vw;
  }

  /***************** Project  ****************/

  .project-title h1 {
    font-size: 2rem;
    font-weight: 300;
  }
  
  .project-title h2 {
    margin-top: 0.5rem;
    font-weight: 200;
    font-size: 1.2rem;
    letter-spacing: 0.015em;
    line-height: 1.1;
  }

  /***************** Ripple  ****************/

  .ripple-box {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
  }

  .ripple-box.portrait-duo .portrait-wrapper {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
  }

  .ripple-box.landscape.hero {
    background-image: url('images/sob/1.jpg');
  }

  .desktop {
    display: none;
  }

  .mobile {
    display: block;
  }

  /***************** Sob  ****************/

  .portrait.sob1m {
    background-image: url('images/sob/2.jpg');
  }

  .portrait.sob2m {
    background-image: url('images/sob/6.jpg');
  }

  .portrait.sob3m {
    background-image: url('images/sob/3.jpg');
  }

  .portrait.sob4m {
    background-image: url('images/sob/5.jpg');
  }

  .portrait.sob5m {
    background-image: url('images/sob/7.jpg');
  }

  .portrait.sob6m {
    background-image: url('images/sob/4.jpg');
  }

  /***************** Ud  ****************/

  .portrait.ud1m {
    background-image: url('images/ud/1.jpg');
  }

  .portrait.ud2m {
    background-image: url('images/ud/2.jpg');
  }

  .portrait.ud3m {
    background-image: url('images/ud/4.jpg');
  }

  .portrait.ud4m {
    background-image: url('images/ud/3.jpg');
  }

  .portrait.ud5m {
    background-image: url('images/ud/6-2.jpg');
  }
  
  /***************** Eiw  ****************/

  .portrait.eiw1m {
    background-image: url('images/eiw/1.jpg');
  }

  .portrait.eiw2m {
    background-image: url('images/eiw/2.jpeg');
  }

  .portrait.eiw3m {
    background-image: url('images/eiw/3.jpg');
  }

  .portrait.eiw4m {
    background-image: url('images/eiw/4.jpg');
  }

  /***************** P  ****************/

  .portrait.p1m {
    background-image: url('images/p/1.jpg');
  }

  .portrait.p2m {
    background-image: url('images/p/5.jpg');
  }

  .portrait.p3m {
    background-image: url('images/p/3.jpg');
  }

  .portrait.p4m {
    background-image: url('images/p/6.jpg');
  }

  .portrait.p5m {
    background-image: url('images/p/4.jpg');
  }

  .ripple-box.solo .portrait {
    flex: 1;
  }
}
