/* GLOBAL */

body{
  font-family:'Cormorant Garamond',serif;
  margin:0;
  background:#f8f7f4;
  color:#111;
  line-height:1.9;
  letter-spacing:.2px;
  animation:fadeIn 1.2s ease;
}

/* subtle grain overlay */

body::before{
  content:"";
  position:fixed;
  top:0;
  left:0;
  width:100%;
  height:100%;
  background-image:
    repeating-linear-gradient(
      0deg,
      rgba(0,0,0,.015),
      rgba(0,0,0,.015) 1px,
      transparent 1px,
      transparent 2px
    );
  pointer-events:none;
  z-index:-1;
}

@keyframes fadeIn{
  from{opacity:0}
  to{opacity:1}
}

.container{
  max-width:820px;
  margin:120px auto;
  padding:20px;
}

/* NAV */

.nav{
  position:fixed;
  top:20px;
  left:50%;
  transform:translateX(-50%);
  background:white;
  padding:10px 30px;
  border-radius:30px;
  box-shadow:0 10px 30px rgba(0,0,0,0.08);
  z-index:10;
}

.nav a{
  margin:0 15px;
  text-decoration:none;
  color:#111;
  font-size:18px;
}

.nav a:hover{
  opacity:.6;
}

/* HERO */

.hero{
  font-size:68px;
  display:flex;
  justify-content:center;
  gap:10px;
  align-items:baseline;
  margin-bottom:140px;
  text-align:center;
}

.rolodex{
  height:82px;
  overflow:hidden;
}

.rolodex span{
  display:block;
  line-height:82px;
  animation:roll 24s infinite;
}

@keyframes roll{
  0%{transform:translateY(0)}
  11%{transform:translateY(-82px)}
  22%{transform:translateY(-164px)}
  33%{transform:translateY(-246px)}
  44%{transform:translateY(-328px)}
  55%{transform:translateY(-410px)}
  66%{transform:translateY(-492px)}
  77%{transform:translateY(-574px)}
  88%{transform:translateY(-656px)}
  100%{transform:translateY(0)}
}

/* FULLSCREEN HERO */

.hero-section{
  height:100vh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  text-align:center;
}

/* scroll indicator */

.scroll-indicator{
  position:absolute;
  bottom:40px;
  font-size:22px;
  opacity:.6;
  animation:bounce 2s infinite;
}

@keyframes bounce{
  0%,20%,50%,80%,100%{ transform:translateY(0) }
  40%{ transform:translateY(-10px) }
  60%{ transform:translateY(-5px) }
}

/* content reveal */

.content{
  animation:contentFade 1.6s ease;
}

@keyframes contentFade{
  from{
    opacity:0;
    transform:translateY(40px);
  }
  to{
    opacity:1;
    transform:translateY(0);
  }
}

/* HEADINGS */

h2{
  font-size:38px;
  font-weight:400;
  margin-top:200px;
  margin-bottom:90px;
}

h3{
  font-size:24px;
  margin-top:50px;
}

p{
  font-size:20px;
  margin-bottom:36px;
  color:#333;
}

/* CARDS (landing page) */

.cards{
  display:flex;
  gap:40px;
  justify-content:center;
  align-items:stretch;
  flex-wrap:wrap;
}

.card{
  background:white;
  padding:40px;
  width:260px;

  box-shadow:0 20px 60px rgba(0,0,0,0.07);

  display:flex;
  flex-direction:column;

  transition:.3s ease, box-shadow .3s ease;
  will-change:transform;
}

@media (hover:hover){
.card:hover{  
transform:translateY(-6px);
box-shadow:0 30px 80px rgba(0,0,0,0.12);
}
}

.card p{
flex-grow:1;
}

.card .button{
margin-top:20px
}

/* ABOUT */

.about{
  display:flex;
  gap:60px;
align-items:flex-start;
  flex-wrap:wrap;
  margin-top:140px;
}

.about img{
  width:340px;
height:auto;
  box-shadow:0 30px 80px rgba(0,0,0,0.1);
}

.about-text{
flex:1;
min-width:300px;
max-width:520px;
}

/* BUTTONS */

.button{
  border:1px solid #111;
  padding:16px 42px;
  text-decoration:none;
  color:#111;
  display:inline-block;
}

.button:hover{
  background:#111;
  color:white;
}

.cta{
  text-align:center;
  margin-top:140px;
}

/* MOBILE */

@media(max-width:768px){

  .hero{
    flex-direction:column;
    font-size:42px;
    gap:6px;
  }

  /* MOBILE ROLLODEX FIX */
  .rolodex{
    height:50px; /* container height = line-height */
    overflow:hidden;
  }

  .rolodex span{
    display:block;
    line-height:50px; /* match container height */
    animation:roll-mobile 24s infinite;
  }

  @keyframes roll-mobile {
    0%{transform:translateY(0)}
    11%{transform:translateY(-50px)}
    22%{transform:translateY(-100px)}
    33%{transform:translateY(-150px)}
    44%{transform:translateY(-200px)}
    55%{transform:translateY(-250px)}
    66%{transform:translateY(-300px)}
    77%{transform:translateY(-350px)}
    88%{transform:translateY(-400px)}
    100%{transform:translateY(0)}
  }

  /* FULL WIDTH MOBILE NAV FIX */
  .nav{
    top:10px;
    left:0;
    width:100%;
    transform:none;
    padding:10px 0;
    border-radius:0;
    box-shadow:0 2px 10px rgba(0,0,0,0.05);
    display:flex;
    justify-content:center;
    z-index:10;
  }

  .nav a{
    display:inline-block;
    margin:0 12px;
    font-size:16px;
  }

  .nav a:hover{
    opacity:0.7;
  }

  .container{
    margin:80px auto;
  }

  p{
    font-size:18px;
  }
}