@font-face {
  font-family: "Archivo";
  src: url("fonts/archivo-latin.woff2") format("woff2");
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-style: normal;
  font-display: swap;
}

:root {
  --brique: #CFAE78;
  --enduit: #EEEAE2;
  --ardoise: #3D424A;
  --encre: #1F1E1C;
  --rouge: #A8261F;
  --brique-ombre: #C4A06A;

  --gutter: 16px;
  --wrap: 1400px;
  --ease: cubic-bezier(.2, .7, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--enduit);
  color: var(--encre);
  font-family: "Archivo", system-ui, sans-serif;
  font-stretch: 100%;
  font-weight: 400;
  font-size: 1.125rem;
  line-height: 1.55;
  letter-spacing: 0;
}

img { display: block; max-width: 100%; height: auto; }

section { scroll-margin-top: 80px; }

a { color: inherit; }

p, h1, h2, h3, ul, figure { margin: 0; }

.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin: 0 auto;
  padding: 0 var(--gutter);
}

/* Buttons and links */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 56px;
  padding: 0 32px;
  font-stretch: 112%;
  font-weight: 700;
  font-size: 1.0625rem;
  text-decoration: none;
  border-radius: 4px;
  transition: background-color 300ms var(--ease);
}

.btn--call { background: var(--rouge); color: #fff; }

.btn--desk { display: none; }

.addr { white-space: pre-line; }

.more {
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 6px;
  color: var(--encre);
}

.more--light { color: var(--enduit); }

@media (hover: hover) and (pointer: fine) {
  .btn--call:hover { background: #8A1E18; }
  .more { transition: text-underline-offset 300ms var(--ease); }
  .more:hover { text-underline-offset: 10px; }
}

a:focus-visible { outline: 3px solid var(--encre); outline-offset: 4px; }
.find a:focus-visible, .foot a:focus-visible { outline-color: var(--enduit); }

/* Header: desktop only, the phone gets the dock */

.top { display: none; }

/* Hero */

.hero {
  background: var(--brique);
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
}

.hero__in {
  display: flex;
  flex-direction: column;
  padding-top: 40px;
  padding-bottom: 112px;
}

.wall {
  font-stretch: 125%;
  font-weight: 800;
  text-transform: uppercase;
  color: var(--brique-ombre);
  line-height: .8;
  letter-spacing: .04em;
  font-size: calc((min(100vw, var(--wrap)) - 2 * var(--gutter)) / 3.75);
  margin: 0 0 auto -0.05em;
  padding-bottom: 48px;
  user-select: none;
}

.hero__kind {
  font-stretch: 112%;
  font-weight: 600;
  font-size: clamp(1.125rem, 1.6vw, 1.375rem);
  margin-bottom: 16px;
}

.name {
  font-stretch: 125%;
  font-weight: 800;
  text-transform: uppercase;
  line-height: .86;
  letter-spacing: -0.01em;
  font-size: calc((min(100vw, var(--wrap)) - 2 * var(--gutter)) / 5.72);
  margin-left: -0.04em;
}

.hero__proof {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 24px;
  margin-top: 32px;
  font-size: clamp(1.125rem, 2.2vw, 1.5rem);
  font-weight: 500;
  line-height: 1.35;
}

.hero__since { font-weight: 700; font-stretch: 112%; }

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 32px;
  margin-top: 32px;
}

/* Le lieu */

.place { padding: 96px 0 96px; }

.place__title {
  font-stretch: 112%;
  font-weight: 700;
  font-size: clamp(2rem, 5.5vw, 3.75rem);
  line-height: 1.05;
  max-width: 14ch;
  margin-bottom: 24px;
  text-wrap: balance;
}

.place__grid {
  display: grid;
  gap: 48px;
}

.lead {
  font-size: clamp(1.25rem, 2.4vw, 1.625rem);
  font-weight: 500;
  line-height: 1.4;
  max-width: 30ch;
  text-wrap: pretty;
}

.who {
  display: flex;
  flex-direction: column;
  margin-top: 48px;
}

.who__name {
  font-stretch: 125%;
  font-weight: 800;
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1;
}

.who__role {
  font-size: .9375rem;
  font-weight: 600;
  margin-top: 8px;
}

/* Nous trouver */

.find {
  background: var(--ardoise);
  color: var(--enduit);
  padding: 96px 0 96px;
}

.find__grid { display: grid; gap: 24px; }

.number {
  font-stretch: 125%;
  font-weight: 800;
  color: var(--brique);
  line-height: .8;
  letter-spacing: -0.01em;
  font-size: calc((min(100vw, var(--wrap)) - 2 * var(--gutter)) / 2.45);
  margin-left: -0.05em;
}

.find__where { display: grid; gap: 24px; justify-items: start; }

.find__street {
  font-stretch: 100%;
  font-weight: 700;
  font-size: min(calc((100vw - 2 * var(--gutter)) / 13.2), 2.5rem);
  line-height: 1.15;
}

.phone {
  font-stretch: 125%;
  font-weight: 700;
  font-size: calc((min(100vw, 640px) - 2 * var(--gutter)) / 9.1);
  line-height: 1;
  white-space: nowrap;
}

.phone a { text-decoration: none; }

.hours { margin-top: 96px; }

.hours__title {
  font-stretch: 112%;
  font-weight: 700;
  font-size: 1.5rem;
  margin-bottom: 24px;
}

.week {
  list-style: none;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 24px;
}

.week li { display: flex; flex-direction: column; gap: 4px; }

.day { font-weight: 600; }

.slots span { display: block; }

.tbd {
  font-size: 0;
  width: 24px;
  height: 2px;
  margin-top: 12px;
  background: var(--brique);
}

.hours__note { margin-top: 32px; }

.hours__note a { font-weight: 700; text-underline-offset: 4px; }

/* Footer */

.foot {
  background: var(--encre);
  color: var(--enduit);
  padding: 64px 0 128px;
  font-size: .9375rem;
}

.foot__in {
  display: grid;
  gap: 24px;
}

.foot__name {
  font-stretch: 125%;
  font-weight: 800;
  text-transform: uppercase;
  font-size: 1.25rem;
}

.foot a { text-decoration: none; }

.foot__legal { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.foot__legal a { text-decoration: underline; text-underline-offset: 4px; }

.foot__by { opacity: .75; }

/* The call pinned under the thumb */

.dock {
  position: fixed;
  left: var(--gutter);
  right: var(--gutter);
  bottom: calc(12px + env(safe-area-inset-bottom));
  z-index: 20;
}

/* Reveal */

.js .reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .9s var(--ease), transform .9s var(--ease);
}

.js .reveal.is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .reveal { opacity: 1; transform: none; transition: none; }
  .btn, .more { transition: none; }
}

/* Tablet and up */

@media (min-width: 768px) {
  :root { --gutter: 32px; }

  .place { padding: 128px 0; }

  .place__photo { max-width: 520px; }

  .week { grid-template-columns: repeat(4, 1fr); }
}

/* Desktop */

@media (min-width: 1024px) {
  :root { --gutter: 48px; }

  .dock { display: none; }

  .btn--desk { display: inline-flex; }

  .foot { padding-bottom: 64px; }

  .top {
    display: block;
    position: fixed;
    inset: 0 0 auto 0;
    z-index: 20;
    transition: background-color 300ms var(--ease);
  }

  .top.is-solid { background: var(--enduit); }

  .top__in {
    display: flex;
    align-items: center;
    gap: 40px;
    height: 80px;
  }

  .brand {
    font-stretch: 125%;
    font-weight: 800;
    text-transform: uppercase;
    text-decoration: none;
    font-size: 1.125rem;
    margin-right: auto;
  }

  .nav { display: flex; gap: 32px; font-weight: 600; }
  .nav a { text-decoration: none; }

  .top .btn { min-height: 48px; padding: 0 24px; }

  .hero__in { padding-top: 112px; padding-bottom: 64px; }

  .wall {
    align-self: flex-end;
    font-size: calc((min(100vw, var(--wrap)) - 2 * var(--gutter)) * .62 / 3.75);
    margin: 0 -0.05em auto 0;
  }

  .place__grid {
    grid-template-columns: 1fr 1fr;
    align-items: center;
    gap: 64px;
  }

  .place__photo { max-width: none; }

  .find__grid {
    grid-template-columns: 7fr 5fr;
    align-items: end;
    gap: 64px;
  }

  .number { font-size: calc((min(100vw, var(--wrap)) - 2 * var(--gutter)) * .58 / 2.45); }

  .phone { font-size: 2.75rem; }

  .week { grid-template-columns: repeat(7, 1fr); }

  .find { padding: 128px 0 112px; }
}

@media (hover: hover) and (pointer: fine) {
  .nav a { transition: opacity 300ms var(--ease); }
  .nav a:hover { opacity: .6; }
}
