@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
/*
@font-face {
  font-family: "Poppins";
  src: url("../font/Poppins-Light.ttf") format("truetype");
  font-weight: 100;
}
*/

/* ======= CONFIGURATION :root ======= */
:root {
  /* BASE UNIT */
  --golden-ratio: 1.618;
  --base-ratio: 0.333vw;
  --base-unit: clamp(1rem, calc(1rem + var(--base-ratio)), 1.618rem);

  /* COLORS */
  --color-primary:   #9E9E9E;  /* Medium gray     */
  --color-secondary: #E0E0E0; /* Light gray      */
  --color-accent:    #212121; /* Very dark gray */
  --color-alternate: #616161; /* Dark gray       */

  --gold-5:#533213;
  --gold-4:#8d6945;
  --gold-3:#aa8d6c;
  --gold-2:#c1a65b;
  --gold-1:#fbf8e6ff;

  --gold-v-4: #b47c2e;
  --gold-v-3:#cc9933;
  --gold-v-2:#ffd000;
  --gold-v-1:#fff4b2;

  --toned-black: #333333;

  --deep-purple: #3b1142;
  --darker-purple: #1b0b2a;
  --deep-turquoise: #063b4c;
  --darker-turquoise: #052133;
  --deep-red: #98361d;
  --darker-red: #561028;
  --deep-orange: #a45013;
  --darker-orange: #853b1f;

  --gradient-orientation: -120deg;
  --golden-linear-gradient: 
    linear-gradient(var(--gold-4), var(--gold-v-4)) padding-box, 
    linear-gradient(var(--gold-v-1), var(--gold-4)) border-box;
  --purple-linear-gradient: 
    linear-gradient(var(--deep-purple), var(--darker-purple)) padding-box,
    linear-gradient(var(--gradient-orientation), var(--gold-v-1), var(--gold-4)) border-box;
  --turquoise-linear-gradient: 
    linear-gradient(var(--deep-turquoise), var(--darker-turquoise)) padding-box,
    linear-gradient(var(--gradient-orientation), var(--gold-v-1), var(--gold-4)) border-box;
  --orange-linear-gradient: 
    linear-gradient(var(--deep-orange), var(--darker-orange)) padding-box,
    linear-gradient(var(--gradient-orientation), var(--gold-v-1), var(--gold-4)) border-box;
  --red-linear-gradient: 
    linear-gradient(var(--deep-red), var(--darker-red)) padding-box,
    linear-gradient(var(--gradient-orientation), var(--gold-v-1), var(--gold-4)) border-box;
  --nav-gradient: linear-gradient(155deg, black, var(--gold-5), var(--gold-4), var(--gold-5));


  /* FONTS */ 
  --primary-font: "Poppins";
  --heading-font: var(--primary-font);

  /* FONT SIZES */ 
  --small: cacl(var(--paragraph) / var(--golden-ratio));
  --paragraph: clamp(1rem, 1vw, 1.618rem);
  --heading-4: var(--paragraph);
  --heading-3: calc(var(--heading-4) * var(--golden-ratio));
  --heading-2: calc(var(--heading-3) * var(--golden-ratio));
  --heading-1: calc(var(--heading-2) * var(--golden-ratio));

  /* LAYOUT WIDTHS */
  --nav-desktop-width: 1200px;
  --nav-tablet-min-width: 640px;

  /* SIZES */
  --min-gap:1rem;
  --max-content-width: 960px;

  /* GRIDS */ 
  --base-grid-columns: minmax(1rem, 1fr) minmax(auto, var(--max-content-width)) minmax(1rem, 1fr);
  --nav-grid-template-columns: var(--base-grid-columns);
  --hero-grid-template-columns: minmax(1rem, 1fr) 360px 1fr minmax(1rem, 1fr)
  --panel-grid-template-columns: var(--base-grid-columns);
  --footer-grid-template-columns:var(--base-grid-columns);


  /* LAYERS */
  --top-index: 100;
  --panel-layer:10;

  /* BREAKPOINTS */
  --breakpoint-phone: 640px;
  --breakpoint-tablet: 768px;
  --breakpoint-desktop: 1024px;


  /* NAV DETAILS ICON CONFIGURATION */
  --nav-details-icon: default; /* options: default | none | url('icon.png') */

  /* OFFERS */
  --offer-card-size:100%;
}


/* ======= GLOBAL STYLES ======= */
html {
  font-size: var(--base-unit);
  scroll-behavior: smooth;
}

body {
  margin: 0;
  padding: 0;
  color: var(--color-black);
  background-color:white; /* important for backdrop-filter*/
  font-family: var(--primary-font);

  & > * {
    display: grid;
    grid-template-columns: var(--base-grid-columns);
    overflow: hidden;

    & > * {
      grid-column:2;
    }
  }

  & > script {
    display: none;
  }
}

h1, h2, h3, h4, p {
  margin:0;
}

h1 {
  --size:clamp(2rem, 4vw, var(--heading-1));
  font-family:var(--heading-font);
  font-size:var(--size);
  line-height:calc(var(--size) * var(--golden-ratio));
  margin-bottom: calc(var(--size)*2);
}
h2 { 
  font-family:var(--heading-font);
  font-size:var(--heading-2);
  line-height:calc(var(--heading-2) * var(--golden-ratio));
  margin: calc(var(--heading-2)*2) 0;
  color: var(--gold-4);

  &:first-of-type {
    margin-top:0;
  }
}
h3 { 
  font-family:var(--heading-font);
  font-size:var(--heading-3);
  line-height:calc(var(--heading-3) * var(--golden-ratio));
  margin: calc(var(--heading-3)*2) 0;

  &:first-of-type {
    margin-top:0;
  }
}
h4 { 
  font-family:var(--heading-font);
  font-size:var(--heading-4); 
  line-height:calc(var(--heading-4) * var(--golden-ratio));
  margin: calc(var(--heading-4)*2) 0;

  &:first-of-type {
    margin-top:0;
  }
}
p { 
  font-size:var(--paragraph); 
  line-height:calc(var(--paragraph) * var(--golden-ratio));
  margin-bottom: calc(var(--paragraph)*2);
}
p:has(small) { 
  font-size:var(--small);
  line-height:calc(var(--small) * var(--golden-ratio));
  /*margin-bottom: calc(var(--small)*2);*/
}
a {
  font-size:var(--paragraph); 
  line-height:calc(var(--paragraph) * var(--golden-ratio));

  &.cta {
    text-decoration: none;
    text-transform:uppercase;
  }

  &[data-panel] {
    background: none;
    border: 2px solid var(--gold-2);
    padding: 1rem;
    border-radius: 1rem;
    color: var(--gold-4);
    transition: background-color 0.4s, color 0.4s;

    &:hover {
      cursor: pointer;
      background-color: var(--gold-2);
      color: white;
    }
  }
}
q {
  padding-left: 2rem;
  border-left: 1px solid var(--gold-3);
  margin-bottom: calc(var(--paragraph)*2);
  display: block;
  font-style: italic;
}
ul {
  margin-bottom:calc(var(--paragraph)*2);

  & > li {
    font-size:var(--paragraph); 
    line-height:calc(var(--paragraph) * var(--golden-ratio));
    margin-bottom: calc(var(--paragraph)*1);
  }
}

form {
  padding:1rem 1rem 4rem 1rem;
  background-color:var(--gold-2);
  border-radius: 1rem;

  & input,
  & textarea,
  & select{
    width:100%;
    padding:0.5rem;
    box-sizing:border-box;
    border:1px solid var(--gold-2);
    border-radius:0.25rem;
    margin-bottom:1rem;
  }

  & .legal {
    margin: 1rem 0;
  }

  & button {
    margin:auto;
    margin-top:2rem;
  }
}

body > section {
  padding-top:4rem;

  &:target {
    padding-top:8rem;
  }
}

body:has( .panel:target ) {
  overflow:hidden;
}



.cta {
  display: inline-block;
  border-radius: 10px;
  border: 2px solid transparent;
  background: 
    linear-gradient(var(--gold-1) 30%, var(--gold-2) 85%, var(--gold-1) 105%) padding-box, 
    linear-gradient(30deg, var(--gold-4), var(--gold-1)) border-box;
  box-shadow: 0 0 15px var(--gold-1);
  color: var(--gold-5);
  padding: 1rem;
  transition: transform 0.4s ease, box-shadow 0.3s ease;
  text-transform: uppercase;
  font-weight: bold;

  &:hover {
    transform: translateY(-10px);
    box-shadow: 0 5px 20px var(--gold-v-1);
  }

  &.secondary {
    background: transparent;
    color: var(--gold-1);
    text-align:center;
  }
  &.contact {
    background: transparent;
    color: black;
    border-color:var(--gold-1);
    text-align:center;
    display:block;

  }

}

.icon {
  width:2rem;
}


/* ======= NAVIGATION ======= */

/* default */ 
.desktop { display:none; }
.mobile { display:block; }
.mobile.close { display:none; }
.mobile.mobile-panel-close > * { display: none;}

/* logic */ 
#mobile-menu { 
  display: none;

  &:target {
    display:block;
    overflow:auto;
  }
}

body:has(#mobile-menu:target) {
  overflow:hidden;
}

nav:has(#mobile-menu:target) {
  height: 100vh;
  overflow: auto;
  background:var(--nav-gradient);

  .mobile.close { display:inline; }
  .mobile.open { display:none;}
}

@media screen and (width > 960px) {
  .desktop { display:flex; }
  .mobile { display:none; }
}

nav {
  width: 100%;
  position: fixed;
  top: 0;
  z-index: var(--top-index);

  backdrop-filter: blur(21px);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);

  a, a:visited {
    color: var(--gold-2);
    text-decoration: none;
  }

  & > .bar {
    height:5rem;
    display:flex;
    flex-direction: row;
    align-items:center;
    gap: 1rem;

    & > a #logo {
      width:7rem;
    }

    & > .desktop {
      flex-direction: row;
      width:100%;
      justify-content:end;
      gap:2rem;
    }

    & > .mobile-panel-close {
      display:flex;
      justify-content:end;
      width:100%;
    }
  }
  
  h4 {
    text-transform: uppercase;
    color:var(--gold-1);
  }

  ul {
    list-style-type: none;
    padding-left:0;

    & > li {
      
      border-bottom:1px solid var(--gold-2);
      padding-bottom:0.5rem;

      &:last-of-type {
        border-bottom:none;
      }

      a {
        display:flex;
        flex-direction:row;
        align-items:center;
        gap:1rem;

        text-shadow:0 0 3px rgba(0,0,0,0.8);

        &.service {
          justify-content: space-between;
          gap:2rem;

          & > .price {
            width:120px;
            text-align:right;
          }
        }    
      }
    }
  }
}




/* ======= HEADER / MAIN / SECTION ======= */
header {
    min-height:100vh;
    background: 
      linear-gradient(var(--gold-v-1), var(--gold-4), black 95%);

  &> div {
    --margin: 6rem;
    position:relative;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 6rem 360px 240px 5rem; ;
    text-align: center;
    width: 100%;

    @media screen and (width > 960px) {
      grid-template-rows: 8rem 360px 360px 5rem;
    }

    & > * {
      align-self: center;
      justify-self: center;
    }

    & > img {
      grid-row:2;


      display:block;
      position: relative;
      z-index:2;
      max-width: min(80%, 360px);
      border: 5px solid var(--gold-1);
      border-radius: 25rem;
      box-shadow: 0 5px 10px rgba(0,0,0,0.3);
    }

    & > .aura {
      grid-row:2;
      position: absolute;

      width: 360px;
      height: 360px;
      border-radius: 50%;
      background: radial-gradient(circle, transparent 50%, var(--gold-1), transparent 60%);
      transform: scale(1);
      opacity: 0;
      z-index: 1;
      animation: pulse 10s infinite;
    }
    
    & h1 {
      grid-row:3;
      font-weight:200;
      color: white;
      text-shadow: 2px 2px 3px rgba(0,0,0,0.4);
      margin-bottom:0;
    }

    & > a {
      grid-row:4;
      align-self:start;
      position: relative;
      z-index:3;
    }
  }
}

@keyframes pulse {
  0% {
    opacity:0;
  }
  10% {
    transform: scale(1);
    opacity: 0.5;
  }
  100% {
    transform: scale(4.5);
    opacity: 0;
  }
}


.phone-frame {
  width: min(100%, 420px);
  border: 1px solid var(--toned-black);
  border-radius: 20px;
  overflow: hidden;            /* important: mask the sliding track */
}

#wave {
  --size: 4rem;

  position: relative;
  box-sizing: border-box;
  height: calc(var(--size) * 5 * 3 + var(--size) * 3);
  background-image: url("../media/images/wave_02.svg");
  background-size: auto 100%;
  background-repeat: no-repeat;
  background-position: center;
  background-color: black;

  display: flex;
  flex-direction: column;
  justify-content: space-around;
  align-items:center;
  padding: 8rem 0;

  & > * {
    --opacity:1;
    --x: calc(50vw/2);
    
    font-size: var(--font-4xl);
    padding: 2rem;
    background-color: black;
    color:var(--gold-1);
/* 
    position: absolute;
    transform: translateX(var(--x, 0px));
    will-change: transform;

    &:nth-child(odd) {left: 5rem}
    &:nth-child(even) {right: 5rem; left:auto;}

    &:nth-child(1) {top: calc(var(--size) * 5  - var(--size) * 3);}
    &:nth-child(2) {top: calc(var(--size) * 10 - var(--size) * 3);}
    &:nth-child(3) {top: calc(var(--size) * 15 - var(--size) * 3);}
*/
    & > p {
      margin:0;
      opacity:var(--opacity);
      font-size: var(--heading-3);
      font-weight: 200;
      line-height: calc(var(--heading-3) * var(--golden-ratio));
      text-align:center;
    }
  }


}

.wave-end {
  padding-top:0px;
  background-image: linear-gradient(black, var(--gold-4), var(--gold-1), white);
}

p.gold {
  padding: 2rem;
  border-radius: 2rem;
  background: var(--gold-3);
  color:white;
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.5);
}

hr {
  grid-column: 1/4;
  width: 80%;
  margin: 6rem auto;
}

/* this class prevents heading to be hidden by the nave menu 
 * after clicking on the # link
 * */
body > section.root:target {
  padding-top:4rem;
}

.catalog {
  --card-size:var(--offer-card-size);


  padding: 1rem 0;
  position: relative;

  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;

  & h3, p, li {
    text-shadow: 0 0 5px var(--gold-v-3);
  }

  & h3 {
    text-align:center;
  }

  & > .card {
    background: 
      linear-gradient(var(--gold-4), 
      var(--gold-v-4)) padding-box, 
      linear-gradient(var(--gold-v-1), 
      var(--gold-4)) border-box;
    border: 2px solid transparent;
    border-radius: 2rem;
    color: var(--gold-1);
    box-shadow: 0 10px 0.5rem rgba(0, 0, 0, 0.5);

    position:relative;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 1rem;
    width: var(--card-size);
    padding: 2rem;
    box-sizing: border-box;
    transition: transform 0.5s ease;

    &.purple {
      background: var(--purple-linear-gradient);
      background-repeat: no-repeat;
    }
    &.turquoise {
      background: var(--turquoise-linear-gradient);
      background-repeat: no-repeat;
    }
    &.orange {
      background: var(--orange-linear-gradient);
      background-repeat: no-repeat;
    }
    &.red {
      background: var(--red-linear-gradient);
      background-repeat: no-repeat;
    }

    &:hover {
      transform: translateY(-10px);
    }

    & > img.background {
      z-index: 1;
      position:absolute;
      top:0;
      left:0;
      width:100%;
      height:100%;
      object-fit: cover;
      border-radius: 2rem;
      mix-blend-mode: overlay;
      filter: grayscale(1);
      opacity: 0.7;
    }
    /* fine tuning */
    & > img.background.toned {
        opacity:0.5;
    }

    & > img.background.light {
        opacity:0.3;
    }
    & > img.background:lighter {
        opacity:0.1;
    }


    & > div:first-of-type {
      position: relative;
      z-index:2;
      display: flex;
      flex-direction: column;
      justify-content: space-between;
    }

    & > div:last-of-type {
      position: relative;
      z-index:2;
      display: flex;
      flex-direction:column;
      gap:1rem;
      padding-top: 2rem;
      justify-content: space-between;
      border-top: 2px dashed var(--gold-v-1);


      & >a.cta {
        font-size: var(--font-sm);
        padding: 0.8rem;
      }
    }

    @media screen and (width > 640px) {
      & > div:first-of-type {
        display:grid;
        grid-template-columns: 1fr 180px;
        grid-template-rows: 6rem 1fr;

        & > h3 {
          grid-column: 1;
          grid-row: 1;
          text-align: left;
        }

        & > div {
          grid-column: 1/3;
          grid-row:2;
        }

        & > a {
          grid-column:2;
          grid-row:1;
          display:flex;
          align-items: center;
          justify-content: center;
          height:2rem;
        }
      }
    }
  }
}

.panel {
  position: fixed;
  z-index: var(--panel-layer);
  display: none;
  top:0;
  left:0;
  overflow: auto;
  background-color: white;
  padding-bottom: 8rem;

  &:target {
    display:grid;
  }

  & > .panel-menu {
    position:fixed;
    left:0;
    bottom:0;
    z-index:calc(var(--panel-layer)+1);
    width: 100%;
    display: flex;
    flex-direction: row;
    gap:1rem;
    align-items: center;
    backdrop-filter:blur(13px);
    padding:1rem 1rem;
    box-sizing:border-box;
    text-align:center;

  }
}

body:has(.panel:target) {

  .panel .close { display:none; }

  &:has(.panel[data-panel="1"]:target) a[data-panel="1"]{ display:inline; }
  &:has(.panel[data-panel="2"]:target) a[data-panel="2"]{ display:inline; }
  &:has(.panel[data-panel="3"]:target) a[data-panel="3"]{ display:inline; }
  &:has(.panel[data-panel="4"]:target) a[data-panel="4"]{ display:inline; }
  &:has(.panel[data-panel="5"]:target) a[data-panel="5"]{ display:inline; }
  &:has(.panel[data-panel="6"]:target) a[data-panel="6"]{ display:inline; }

}

.detail {
  --spacer: 4rem;

  inset: 0;

  & > * {
    grid-column: 2;
  }

  & > div:nth-child(2) {
    margin-top: 3rem;
    display: flex;
    flex-direction: row-reverse;
    justify-content: center;

    & > .close {
      align-self: right;
      background: none;
      border: 2px solid var(--gold-4);
      padding: 1rem;
      border-radius: 1rem;
      color: var(--gold-4);
      transition: background-color 0.4s, color 0.4s;

      &:hover {
        cursor: pointer;
        background-color: var(--gold-4);
        color: white;
      }
  }

  & > div {
    & h2, h3 {
      color: var(--gold-4);
    }

    & .spacer {
      margin-top: var(--spacer);
    }

  }
  }

  &:target {
    display: grid;
  }
}

#about {
  & > div {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
    align-items: center;
    padding: 2rem;
    background-color: var(--toned-black);
    border-radius: 2rem;
    margin-bottom: calc(var(--heading-2)*2);

    & > img {
      height: fit-content;
      aspect-ratio: 1/1;
      border-radius: 2rem;
      box-shadow: 0 0 15px var(--gold-2);
    }

    & > h2 {
      margin-bottom: 0;
      color: var(--gold-2);
    }
  }
}

.presentation {

  & > a {
    border: 2px solid var(--gold-4);
    padding: 1rem;
    border-radius: 1rem;
    color: var(--gold-4);
    display: table;
    margin: 0 auto;
    transition: background-color 0.4s, color 0.4s;

    &:hover {
      cursor: pointer;
      background-color: var(--gold-4);
      color: white;
      text-decoration: none;
    }
  }
}


@media (max-width: 768px) {

  #wave > * {
    opacity: 1 !important;
  }

  #offre-menu {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    touch-action: pan-x;               
    scrollbar-width: thin;    

    &::-webkit-scrollbar { display: none; }

    & > div {
      flex: 0 0 100%;
      scroll-snap-align: start;
      scroll-snap-stop: always;  
      box-sizing: border-box; 
      min-width: 100vw;
      max-width: 100vw;
    }
  }
}

/* ======= FOOTER ======= */
footer {
  grid-column: 1/4;
  background-color: var(--gold-4);
  color: var(--gold-1);
  display: grid;
  margin-top: 6rem;
  padding: var(--base-unit) 0;

  & > div {
    grid-column: 2;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

    & > * {
      align-self: center;
      color: inherit;
    }
  }
}

/* ======= ICONS ======= */
.icon {
  width:calc(var(--base-unit)* 1.5);
}

/* ======= RESPONSIVE DESIGN ======= */



@media (max-width: 640px) {

  footer {
    flex-direction: column;
    align-items: center;
    text-align: center;

    .footer-column {
      align-items: center;
    }

    .social-links {
      justify-content: center;
    }
  }
}



