/* -------------------------------- 

Primary style

-------------------------------- */
*,
*::after,
*::before {
  box-sizing: border-box;
}

html {
  font-size: 62.5%;
}

body {
  font-size: 1.6rem;
  font-family: 'PT Sans', sans-serif;
  color: #ffffff;
  background-color: #262423;
}

a {
  color: #a8ae7e;
  text-decoration: none;
}

/* -------------------------------- 

Patterns - reusable parts of our design

-------------------------------- */
.cd-text-replace {
  /* replace text with image */
  color: transparent;
  text-indent: 100%;
  overflow: hidden;
  white-space: nowrap;
}

/* -------------------------------- 

Menu trigger

-------------------------------- */
.cd-nav-trigger {
  position: fixed;
  z-index: 100;
  top: 24px;
  right: 5%;
  height: 52px;
  width: 52px;
  border-radius: 50%;
  background-color: #1a1a1a;
  border: 1px solid rgba(255, 255, 255, 0.45);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
  -webkit-transition:
    background 0.2s,
    box-shadow 0.2s,
    -webkit-transform 0.2s;
  -moz-transition:
    background 0.2s,
    box-shadow 0.2s,
    transform 0.2s;
  transition:
    background 0.2s,
    box-shadow 0.2s,
    transform 0.2s;
}
.cd-nav-trigger .cd-icon,
.cd-nav-trigger .cd-icon::before,
.cd-nav-trigger .cd-icon::after {
  /* menu icon created in CSS */
  position: absolute;
  background-color: #ffffff;
  border-radius: 2px;
  /* Force Hardware Acceleration in WebKit */
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
.no-touch .cd-nav-trigger:hover {
  background-color: #42b983;
  border-color: #42b983;
  box-shadow: 0 6px 20px rgba(66, 185, 131, 0.5);
  -webkit-transform: scale(1.08);
  -moz-transform: scale(1.08);
  -ms-transform: scale(1.08);
  -o-transform: scale(1.08);
  transform: scale(1.08);
}
.cd-nav-trigger .cd-icon {
  /* middle line of the menu icon */
  display: inline-block;
  width: 18px;
  height: 2px;
  left: 50%;
  top: 50%;
  bottom: auto;
  right: auto;
  -webkit-transform: translateX(-50%) translateY(-50%);
  -moz-transform: translateX(-50%) translateY(-50%);
  -ms-transform: translateX(-50%) translateY(-50%);
  -o-transform: translateX(-50%) translateY(-50%);
  transform: translateX(-50%) translateY(-50%);
  -webkit-transition:
    -webkit-transform 0.3s,
    background-color 0.3s;
  -moz-transition:
    -moz-transform 0.3s,
    background-color 0.3s;
  transition:
    transform 0.3s,
    background-color 0.3s;
}
.cd-nav-trigger .cd-icon::before,
.cd-nav-trigger .cd-icon::after {
  /* upper and lower lines of the menu icon */
  content: '';
  top: 0;
  right: 0;
  width: 100%;
  height: 100%;
  -webkit-transition: -webkit-transform 0.3s;
  -moz-transition: -moz-transform 0.3s;
  transition: transform 0.3s;
}
.cd-nav-trigger .cd-icon::before {
  -webkit-transform: translateY(-6px);
  -moz-transform: translateY(-6px);
  -ms-transform: translateY(-6px);
  -o-transform: translateY(-6px);
  transform: translateY(-6px);
}
.cd-nav-trigger .cd-icon::after {
  -webkit-transform: translateY(6px);
  -moz-transform: translateY(6px);
  -ms-transform: translateY(6px);
  -o-transform: translateY(6px);
  transform: translateY(6px);
}
.cd-nav-trigger.project-open .cd-icon {
  /* user selects a projects - transform the icon into a 'X' */
  background-color: rgba(255, 255, 255, 0);
}
.cd-nav-trigger.project-open .cd-icon::before,
.cd-nav-trigger.project-open .cd-icon::after {
  background-color: white;
}
.cd-nav-trigger.project-open .cd-icon::before {
  -webkit-transform: translateY(0) rotate(45deg);
  -moz-transform: translateY(0) rotate(45deg);
  -ms-transform: translateY(0) rotate(45deg);
  -o-transform: translateY(0) rotate(45deg);
  transform: translateY(0) rotate(45deg);
}
.cd-nav-trigger.project-open .cd-icon::after {
  -webkit-transform: translateY(0) rotate(-45deg);
  -moz-transform: translateY(0) rotate(-45deg);
  -ms-transform: translateY(0) rotate(-45deg);
  -o-transform: translateY(0) rotate(-45deg);
  transform: translateY(0) rotate(-45deg);
}
.cd-nav-trigger.nav-visible .cd-icon {
  /* user opens the navigation - transform the icon into an arrow */
  -webkit-transform: translateY(-50%) translateX(-50%);
  -moz-transform: translateY(-50%) translateX(-50%);
  -ms-transform: translateY(-50%) translateX(-50%);
  -o-transform: translateY(-50%) translateX(-50%);
  transform: translateY(-50%) translateX(-50%);
}
.cd-nav-trigger.nav-visible .cd-icon::after {
  -webkit-transform: translateX(5px) translateY(3px) rotate(-45deg) scaleX(0.5);
  -moz-transform: translateX(5px) translateY(3px) rotate(-45deg) scaleX(0.5);
  -ms-transform: translateX(5px) translateY(3px) rotate(-45deg) scaleX(0.5);
  -o-transform: translateX(5px) translateY(3px) rotate(-45deg) scaleX(0.5);
  transform: translateX(5px) translateY(3px) rotate(-45deg) scaleX(0.5);
}
.cd-nav-trigger.nav-visible .cd-icon::before {
  -webkit-transform: translateX(5px) translateY(-3px) rotate(45deg) scaleX(0.5);
  -moz-transform: translateX(5px) translateY(-3px) rotate(45deg) scaleX(0.5);
  -ms-transform: translateX(5px) translateY(-3px) rotate(45deg) scaleX(0.5);
  -o-transform: translateX(5px) translateY(-3px) rotate(45deg) scaleX(0.5);
  transform: translateX(5px) translateY(-3px) rotate(45deg) scaleX(0.5);
}
@media only screen and (min-width: 1024px) {
  .cd-nav-trigger.nav-visible .cd-icon {
    -webkit-transform: translateY(-50%) translateX(-50%) rotate(-90deg);
    -moz-transform: translateY(-50%) translateX(-50%) rotate(-90deg);
    -ms-transform: translateY(-50%) translateX(-50%) rotate(-90deg);
    -o-transform: translateY(-50%) translateX(-50%) rotate(-90deg);
    transform: translateY(-50%) translateX(-50%) rotate(-90deg);
  }
  .cd-nav-trigger.nav-visible .cd-icon::after {
    -webkit-transform: translateX(-5px) translateY(3px) rotate(45deg) scaleX(0.5);
    -moz-transform: translateX(-5px) translateY(3px) rotate(45deg) scaleX(0.5);
    -ms-transform: translateX(-5px) translateY(3px) rotate(45deg) scaleX(0.5);
    -o-transform: translateX(-5px) translateY(3px) rotate(45deg) scaleX(0.5);
    transform: translateX(-5px) translateY(3px) rotate(45deg) scaleX(0.5);
  }
  .cd-nav-trigger.nav-visible .cd-icon::before {
    -webkit-transform: translateX(-5px) translateY(-3px) rotate(-45deg) scaleX(0.5);
    -moz-transform: translateX(-5px) translateY(-3px) rotate(-45deg) scaleX(0.5);
    -ms-transform: translateX(-5px) translateY(-3px) rotate(-45deg) scaleX(0.5);
    -o-transform: translateX(-5px) translateY(-3px) rotate(-45deg) scaleX(0.5);
    transform: translateX(-5px) translateY(-3px) rotate(-45deg) scaleX(0.5);
  }
}

/* -------------------------------- 

Projects

-------------------------------- */
.cd-projects-container {
  position: relative;
  z-index: 2;
  overflow-x: hidden;
}
.cd-projects-container.project-open {
  /* smooth scroll on iOS devices */
  -webkit-overflow-scrolling: touch;
}

.cd-projects-previews {
  position: relative;
  z-index: 2;
  height: 100vh;
  width: 100vw;
}
.cd-projects-previews::after {
  clear: both;
  content: '';
  display: table;
}
.project-open .cd-projects-previews {
  pointer-events: none;
}
.cd-projects-previews li {
  height: 25%;
  width: 100%;
  overflow: hidden;
  -webkit-transition: -webkit-transform 0.5s;
  -moz-transition: -moz-transform 0.5s;
  transition: transform 0.5s;
  /* Force Hardware Acceleration */
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transform: translateZ(1px);
  -moz-transform: translateZ(1px);
  -ms-transform: translateZ(1px);
  -o-transform: translateZ(1px);
  transform: translateZ(1px);
}
.cd-projects-previews li.selected {
  opacity: 0;
  /* move selected project preview out of the viewport with no transition */
  -webkit-transform: translateX(-100%);
  -moz-transform: translateX(-100%);
  -ms-transform: translateX(-100%);
  -o-transform: translateX(-100%);
  transform: translateX(-100%);
  -webkit-transition: -webkit-transform 0s;
  -moz-transition: -moz-transform 0s;
  transition: transform 0s;
}
.cd-projects-previews li.slide-out {
  -webkit-transform: translateX(-100%);
  -moz-transform: translateX(-100%);
  -ms-transform: translateX(-100%);
  -o-transform: translateX(-100%);
  transform: translateX(-100%);
}
.cd-projects-previews a {
  display: block;
  height: 100vh;
  width: 100%;
  /* fixes a bug on projects caption width */
  -webkit-transform: translateY(0%);
  -moz-transform: translateY(0%);
  -ms-transform: translateY(0%);
  -o-transform: translateY(0%);
  transform: translateY(0%);
  opacity: 0;
  -webkit-transition: opacity 0.5s;
  -moz-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
.cd-projects-previews li:nth-of-type(2) a {
  -webkit-transform: translateY(-25%);
  -moz-transform: translateY(-25%);
  -ms-transform: translateY(-25%);
  -o-transform: translateY(-25%);
  transform: translateY(-25%);
}
.cd-projects-previews li:nth-of-type(3) a {
  -webkit-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
}
.cd-projects-previews li:nth-of-type(4) a {
  -webkit-transform: translateY(-75%);
  -moz-transform: translateY(-75%);
  -ms-transform: translateY(-75%);
  -o-transform: translateY(-75%);
  transform: translateY(-75%);
}
.cd-projects-previews .bg-loaded a {
  opacity: 1;
}
@media only screen and (min-width: 1024px) {
  .cd-projects-previews li {
    display: inline-block;
    height: 100%;
    width: 25%;
    float: left;
  }
  .cd-projects-previews li.selected {
    -webkit-transform: translateY(-100%);
    -moz-transform: translateY(-100%);
    -ms-transform: translateY(-100%);
    -o-transform: translateY(-100%);
    transform: translateY(-100%);
  }
  .cd-projects-previews li.slide-out {
    -webkit-transform: translateY(-100%);
    -moz-transform: translateY(-100%);
    -ms-transform: translateY(-100%);
    -o-transform: translateY(-100%);
    transform: translateY(-100%);
  }
  .cd-projects-previews a {
    /* width equal to window width */
    width: 400%;
  }
  .cd-projects-previews li:nth-of-type(2) a {
    -webkit-transform: translateX(-25%);
    -moz-transform: translateX(-25%);
    -ms-transform: translateX(-25%);
    -o-transform: translateX(-25%);
    transform: translateX(-25%);
  }
  .cd-projects-previews li:nth-of-type(3) a {
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    -ms-transform: translateX(-50%);
    -o-transform: translateX(-50%);
    transform: translateX(-50%);
  }
  .cd-projects-previews li:nth-of-type(4) a {
    -webkit-transform: translateX(-75%);
    -moz-transform: translateX(-75%);
    -ms-transform: translateX(-75%);
    -o-transform: translateX(-75%);
    transform: translateX(-75%);
  }
}

.cd-projects {
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100vw;
}
.cd-projects > li {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  opacity: 0;
  -webkit-transition: opacity 0.3s;
  -moz-transition: opacity 0.3s;
  transition: opacity 0.3s;
}
.cd-projects > li.selected {
  z-index: 1;
  opacity: 1;
  -webkit-transition: opacity 0s;
  -moz-transition: opacity 0s;
  transition: opacity 0s;
}
.cd-projects .preview-image {
  display: block;
  height: 100vh;
}

.cd-projects-previews a,
.cd-projects .preview-image {
  /* set a background image for each project */
  background: #5b927d url(../img/img-1.jpg) no-repeat center center;
  background-size: cover;
}

.cd-projects-previews li:nth-of-type(2) a,
.cd-projects > li:nth-of-type(2) .preview-image {
  background: #a8ae7e url(../img/img-2.jpg) no-repeat center center;
  background-size: cover;
}

.cd-projects-previews li:nth-of-type(3) a,
.cd-projects > li:nth-of-type(3) .preview-image {
  background: #e7d5a4 url(../img/img-3.jpg) no-repeat center center;
  background-size: cover;
}

.cd-projects-previews li:nth-of-type(4) a,
.cd-projects > li:nth-of-type(4) .preview-image {
  background: #835531 url(../img/img-4.jpg) no-repeat center center;
  background-size: cover;
}

.cd-project-title {
  position: absolute;
  width: 100%;
  top: calc(50% - 20px);
  left: 0;
  color: #ffffff;
  -webkit-transform: translateY(-37.5vh);
  -moz-transform: translateY(-37.5vh);
  -ms-transform: translateY(-37.5vh);
  -o-transform: translateY(-37.5vh);
  transform: translateY(-37.5vh);
  -webkit-transition: -webkit-transform 0.6s 0.2s;
  -moz-transition: -moz-transform 0.6s 0.2s;
  transition: transform 0.6s 0.2s;
  text-align: center;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.cd-project-title::after {
  /* line below project title */
  content: '';
  position: absolute;
  left: 50%;
  bottom: -10px;
  width: 40px;
  height: 1px;
  background: #ffffff;
  -webkit-transform: translateX(-50%) scale(0);
  -moz-transform: translateX(-50%) scale(0);
  -ms-transform: translateX(-50%) scale(0);
  -o-transform: translateX(-50%) scale(0);
  transform: translateX(-50%) scale(0);
  -webkit-transition: -webkit-transform 0.3s;
  -moz-transition: -moz-transform 0.3s;
  transition: transform 0.3s;
}
.no-touch .cd-projects-previews a:hover .cd-project-title::after {
  -webkit-transform: translateX(-50%) scale(1);
  -moz-transform: translateX(-50%) scale(1);
  -ms-transform: translateX(-50%) scale(1);
  -o-transform: translateX(-50%) scale(1);
  transform: translateX(-50%) scale(1);
}
.cd-projects .cd-project-title::after {
  -webkit-transform: translateX(-50%) scale(1);
  -moz-transform: translateX(-50%) scale(1);
  -ms-transform: translateX(-50%) scale(1);
  -o-transform: translateX(-50%) scale(1);
  transform: translateX(-50%) scale(1);
  -webkit-transition: -webkit-transform 0.3s 0.3s;
  -moz-transition: -moz-transform 0.3s 0.3s;
  transition: transform 0.3s 0.3s;
}
.cd-project-title h2 {
  font-size: 2.5rem;
  line-height: 1.5;
  font-weight: 700;
}
.cd-project-title p {
  font-size: 1.4rem;
  font-family: 'Merriweather', serif;
  font-style: italic;
  line-height: 1.2;
  padding: 0.4em 2em;
  opacity: 0.8;
}
@media only screen and (min-width: 1024px) {
  .cd-project-title {
    width: 25%;
    top: 50vh;
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%);
  }
}

.cd-projects-previews li:nth-of-type(2) .cd-project-title,
.cd-projects > li:nth-of-type(2) .cd-project-title {
  -webkit-transform: translateY(-12.5vh);
  -moz-transform: translateY(-12.5vh);
  -ms-transform: translateY(-12.5vh);
  -o-transform: translateY(-12.5vh);
  transform: translateY(-12.5vh);
}
@media only screen and (min-width: 1024px) {
  .cd-projects-previews li:nth-of-type(2) .cd-project-title,
  .cd-projects > li:nth-of-type(2) .cd-project-title {
    -webkit-transform: translateX(100%);
    -moz-transform: translateX(100%);
    -ms-transform: translateX(100%);
    -o-transform: translateX(100%);
    transform: translateX(100%);
  }
}

.cd-projects-previews li:nth-of-type(3) .cd-project-title,
.cd-projects > li:nth-of-type(3) .cd-project-title {
  -webkit-transform: translateY(12.5vh);
  -moz-transform: translateY(12.5vh);
  -ms-transform: translateY(12.5vh);
  -o-transform: translateY(12.5vh);
  transform: translateY(12.5vh);
}
@media only screen and (min-width: 1024px) {
  .cd-projects-previews li:nth-of-type(3) .cd-project-title,
  .cd-projects > li:nth-of-type(3) .cd-project-title {
    -webkit-transform: translateX(200%);
    -moz-transform: translateX(200%);
    -ms-transform: translateX(200%);
    -o-transform: translateX(200%);
    transform: translateX(200%);
  }
}

.cd-projects-previews li:nth-of-type(4) a .cd-project-title,
.cd-projects > li:nth-of-type(4) .cd-project-title {
  -webkit-transform: translateY(37.5vh);
  -moz-transform: translateY(37.5vh);
  -ms-transform: translateY(37.5vh);
  -o-transform: translateY(37.5vh);
  transform: translateY(37.5vh);
}
@media only screen and (min-width: 1024px) {
  .cd-projects-previews li:nth-of-type(4) a .cd-project-title,
  .cd-projects > li:nth-of-type(4) .cd-project-title {
    -webkit-transform: translateX(300%);
    -moz-transform: translateX(300%);
    -ms-transform: translateX(300%);
    -o-transform: translateX(300%);
    transform: translateX(300%);
  }
}

li.selected .cd-project-title,
.cd-projects > li:nth-of-type(2).selected .cd-project-title,
.cd-projects > li:nth-of-type(3).selected .cd-project-title,
.cd-projects > li:nth-of-type(4).selected .cd-project-title {
  -webkit-transform: translateY(0);
  -moz-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateY(0);
}
@media only screen and (min-width: 1024px) {
  li.selected .cd-project-title,
  .cd-projects > li:nth-of-type(2).selected .cd-project-title,
  .cd-projects > li:nth-of-type(3).selected .cd-project-title,
  .cd-projects > li:nth-of-type(4).selected .cd-project-title {
    -webkit-transform: translateX(150%);
    -moz-transform: translateX(150%);
    -ms-transform: translateX(150%);
    -o-transform: translateX(150%);
    transform: translateX(150%);
  }
}

.cd-projects li.selected .cd-project-title::after {
  -webkit-transition: -webkit-transform 0.3s 0s;
  -moz-transition: -moz-transform 0.3s 0s;
  transition: transform 0.3s 0s;
  -webkit-transform: translateX(-50%) scale(0);
  -moz-transform: translateX(-50%) scale(0);
  -ms-transform: translateX(-50%) scale(0);
  -o-transform: translateX(-50%) scale(0);
  transform: translateX(-50%) scale(0);
}

.touch .cd-projects li.selected .cd-project-title::after {
  -webkit-transition: -webkit-transform 0s;
  -moz-transition: -moz-transform 0s;
  transition: transform 0s;
}

.cd-project-info {
  display: none;
  padding: 4em 0;
  background-color: #ffffff;
  color: #7d7c7b;
}
.content-visible .cd-project-info {
  display: block;
}
.cd-project-info p {
  width: 90%;
  max-width: 800px;
  margin: 0 auto;
  line-height: 2;
}

.cd-projects-container .scroll {
  display: block;
  position: absolute;
  z-index: 2;
  bottom: 30px;
  left: 50%;
  width: 44px;
  height: 44px;
  /* rest button default style */
  cursor: pointer;
  border: none;
  background: url('../img/cd-icon-arrow.svg') no-repeat center center;
  visibility: hidden;
  -webkit-transform: translateX(-50%) scale(0);
  -moz-transform: translateX(-50%) scale(0);
  -ms-transform: translateX(-50%) scale(0);
  -o-transform: translateX(-50%) scale(0);
  transform: translateX(-50%) scale(0);
  -webkit-transition:
    -webkit-transform 0.3s 0s,
    visibility 0s 0.3s;
  -moz-transition:
    -moz-transform 0.3s 0s,
    visibility 0s 0.3s;
  transition:
    transform 0.3s 0s,
    visibility 0s 0.3s;
}
.cd-projects-container .scroll:focus {
  outline: none;
}

.cd-projects-container.project-open .scroll {
  visibility: visible;
  -webkit-transform: translateX(-50%) scale(1);
  -moz-transform: translateX(-50%) scale(1);
  -ms-transform: translateX(-50%) scale(1);
  -o-transform: translateX(-50%) scale(1);
  transform: translateX(-50%) scale(1);
  -webkit-transition:
    -webkit-transform 0.4s 0s,
    visibility 0s 0s;
  -moz-transition:
    -moz-transform 0.4s 0s,
    visibility 0s 0s;
  transition:
    transform 0.4s 0s,
    visibility 0s 0s;
  -webkit-animation: cd-translate 1.2s 0.8s;
  -moz-animation: cd-translate 1.2s 0.8s;
  animation: cd-translate 1.2s 0.8s;
  -webkit-animation-iteration-count: 2;
  -moz-animation-iteration-count: 2;
  animation-iteration-count: 2;
}

.no-touch .cd-projects-container.project-open .scroll:hover {
  -webkit-transform: translateX(-50%) scale(1.2);
  -moz-transform: translateX(-50%) scale(1.2);
  -ms-transform: translateX(-50%) scale(1.2);
  -o-transform: translateX(-50%) scale(1.2);
  transform: translateX(-50%) scale(1.2);
}

@-webkit-keyframes cd-translate {
  0% {
    -webkit-transform: translateX(-50%) scale(1);
  }
  50% {
    -webkit-transform: translateY(10px) translateX(-50%) scale(1);
  }
  100% {
    -webkit-transform: translateX(-50%) scale(1);
  }
}
@-moz-keyframes cd-translate {
  0% {
    -moz-transform: translateX(-50%) scale(1);
  }
  50% {
    -moz-transform: translateY(10px) translateX(-50%) scale(1);
  }
  100% {
    -moz-transform: translateX(-50%) scale(1);
  }
}
@keyframes cd-translate {
  0% {
    -webkit-transform: translateX(-50%) scale(1);
    -moz-transform: translateX(-50%) scale(1);
    -ms-transform: translateX(-50%) scale(1);
    -o-transform: translateX(-50%) scale(1);
    transform: translateX(-50%) scale(1);
  }
  50% {
    -webkit-transform: translateY(10px) translateX(-50%) scale(1);
    -moz-transform: translateY(10px) translateX(-50%) scale(1);
    -ms-transform: translateY(10px) translateX(-50%) scale(1);
    -o-transform: translateY(10px) translateX(-50%) scale(1);
    transform: translateY(10px) translateX(-50%) scale(1);
  }
  100% {
    -webkit-transform: translateX(-50%) scale(1);
    -moz-transform: translateX(-50%) scale(1);
    -ms-transform: translateX(-50%) scale(1);
    -o-transform: translateX(-50%) scale(1);
    transform: translateX(-50%) scale(1);
  }
}
/* -------------------------------- 

 Navigation

-------------------------------- */
.cd-primary-nav {
  position: fixed;
  z-index: 50;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  overflow: auto;
  text-align: center;
  /* 面板背景：深色半透明 + 模糊，完整遮盖下方 Hero 文案 */
  background-color: rgba(20, 19, 18, 0.92);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  opacity: 0;
  /* 关闭态不拦截鼠标事件，避免透明面板盖住下方卡片的 hover 与点击 */
  pointer-events: none;
  -webkit-transition: opacity 0.6s;
  -moz-transition: opacity 0.6s;
  transition: opacity 0.6s;
  /* vertically align its content */
  display: table;
}
.cd-primary-nav ul {
  /* vertically align inside nav */
  display: table-cell;
  vertical-align: middle;
}
.cd-primary-nav a {
  display: inline-block;
  padding: 0.4em 1em;
  border-radius: 4px;
  -webkit-transition: background 0.2s;
  -moz-transition: background 0.2s;
  transition: background 0.2s;
  color: #ffffff;
  font-family: 'Merriweather', serif;
  font-size: 2.4rem;
  font-weight: 700;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.no-touch .cd-primary-nav a:hover {
  background-color: #a8ae7e;
}
.cd-primary-nav .cd-label {
  position: relative;
  margin: 2.4em 0 2em;
  color: #a8ae7e;
  text-transform: uppercase;
  font-weight: 700;
  font-size: 1.2rem;
  letter-spacing: 1px;
}
.cd-primary-nav .cd-label::after {
  /* line below .cd-label*/
  content: '';
  position: absolute;
  left: 50%;
  right: auto;
  -webkit-transform: translateX(-50%);
  -moz-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  -o-transform: translateX(-50%);
  transform: translateX(-50%);
  bottom: -16px;
  height: 1px;
  width: 40px;
  background-color: currentColor;
}
.cd-primary-nav.nav-visible {
  opacity: 1;
  /* 打开态恢复鼠标事件，菜单项可点 */
  pointer-events: auto;
}
.cd-primary-nav.nav-clickable {
  z-index: 50;
}
.no-csstransitions .cd-primary-nav.nav-visible {
  z-index: 50;
}
/* 菜单打开时锁住背景滚动（仅锁 html/body，面板自身仍可 overflow:auto） */
html.fx-nav-lock,
html.fx-nav-lock body {
  overflow: hidden;
}
@media only screen and (min-width: 1170px) {
  .cd-primary-nav a {
    font-size: 4rem;
  }
}

/* -------------------------------- 

JavaScript Disabled

-------------------------------- */
.no-js .cd-primary-nav {
  display: block;
  position: static;
  opacity: 1;
  margin-bottom: 1.5em;
}
.no-js .cd-primary-nav ul {
  display: block;
  padding: 0 5%;
}
.no-js .cd-primary-nav ul::after {
  clear: both;
  content: '';
  display: table;
}
.no-js .cd-primary-nav li:not(.cd-label) {
  display: inline-block;
}

/* --------------------------------

 fx67ll — 全部站点网格 & 动效增强
（追加段，不破坏上方任何 .cd-* 规则）

-------------------------------- */

/* 背景流动：多层径向渐变缓慢平移，保留深色基调 */
body {
  background-color: #262423;
  background-image:
    radial-gradient(circle at 15% 20%, rgba(91, 146, 125, 0.28), transparent 45%),
    radial-gradient(circle at 85% 15%, rgba(168, 174, 126, 0.22), transparent 45%),
    radial-gradient(circle at 75% 85%, rgba(231, 213, 164, 0.18), transparent 45%),
    radial-gradient(circle at 20% 80%, rgba(131, 85, 49, 0.22), transparent 45%);
  background-size: 200% 200%;
  background-attachment: fixed;
  -webkit-animation: fx-bg-flow 28s ease-in-out infinite;
  -moz-animation: fx-bg-flow 28s ease-in-out infinite;
  animation: fx-bg-flow 28s ease-in-out infinite;
}
@keyframes fx-bg-flow {
  0% {
    background-position: 0% 0%;
  }
  25% {
    background-position: 100% 0%;
  }
  50% {
    background-position: 100% 100%;
  }
  75% {
    background-position: 0% 100%;
  }
  100% {
    background-position: 0% 0%;
  }
}
@-webkit-keyframes fx-bg-flow {
  0% {
    background-position: 0% 0%;
  }
  25% {
    background-position: 100% 0%;
  }
  50% {
    background-position: 100% 100%;
  }
  75% {
    background-position: 0% 100%;
  }
  100% {
    background-position: 0% 0%;
  }
}

/* ===== 顶部轻量 Hero 头图区 ===== */
.fx-hero {
  position: relative;
  z-index: 2;
  min-height: 70vh;
  display: -webkit-flex;
  display: flex;
  -webkit-align-items: center;
  align-items: center;
  -webkit-justify-content: center;
  justify-content: center;
  padding: 6em 6% 5em;
  text-align: center;
  overflow: hidden;
}
.fx-hero::before {
  /* 头部柔和光晕，叠加在 body 流动背景之上 */
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 50% 35%, rgba(168, 174, 126, 0.22), transparent 60%);
  pointer-events: none;
}
.fx-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 760px;
  /* 入场：整体淡入上移 */
  opacity: 0;
  -webkit-transform: translateY(28px);
  -moz-transform: translateY(28px);
  -ms-transform: translateY(28px);
  -o-transform: translateY(28px);
  transform: translateY(28px);
  -webkit-animation: fx-hero-in 0.8s ease 0.1s forwards;
  -moz-animation: fx-hero-in 0.8s ease 0.1s forwards;
  animation: fx-hero-in 0.8s ease 0.1s forwards;
}
.fx-hero-avatar {
  width: 96px;
  height: 96px;
  border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, 0.6);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
  object-fit: cover;
  margin-bottom: 1.2em;
  -webkit-animation: fx-bob 3s ease-in-out infinite;
  -moz-animation: fx-bob 3s ease-in-out infinite;
  animation: fx-bob 3s ease-in-out infinite;
}
.fx-hero-title {
  font-size: 3.2rem;
  font-weight: 700;
  color: #ffffff;
  letter-spacing: 1px;
  margin: 0 0 0.4em;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
}
.fx-hero-slogan {
  font-family: 'Merriweather', serif;
  font-style: italic;
  font-size: 1.6rem;
  color: #e7d5a4;
  margin: 0 0 0.4em;
  opacity: 0.95;
}
.fx-hero-sub {
  font-size: 1.3rem;
  color: #c8c5bc;
  margin: 0 0 1.8em;
  opacity: 0.85;
}
.fx-hero-cta {
  display: inline-block;
  padding: 0.6em 1.8em;
  font-size: 1.4rem;
  font-weight: 700;
  color: #ffffff;
  background: rgba(66, 185, 131, 0.18);
  border: 1px solid rgba(66, 185, 131, 0.6);
  border-radius: 999px;
  -webkit-transition:
    -webkit-transform 0.25s ease,
    background 0.25s ease,
    box-shadow 0.25s ease;
  -moz-transition:
    transform 0.25s ease,
    background 0.25s ease,
    box-shadow 0.25s ease;
  transition:
    transform 0.25s ease,
    background 0.25s ease,
    box-shadow 0.25s ease;
  -webkit-animation: fx-bob 2.4s ease-in-out infinite;
  -moz-animation: fx-bob 2.4s ease-in-out infinite;
  animation: fx-bob 2.4s ease-in-out infinite;
}
.no-touch .fx-hero-cta:hover {
  background: #42b983;
  border-color: #42b983;
  box-shadow: 0 10px 26px rgba(66, 185, 131, 0.4);
  -webkit-transform: translateY(-3px);
  -moz-transform: translateY(-3px);
  -ms-transform: translateY(-3px);
  -o-transform: translateY(-3px);
  transform: translateY(-3px);
}

@keyframes fx-hero-in {
  to {
    opacity: 1;
    -webkit-transform: translateY(0);
    -moz-transform: translateY(0);
    -ms-transform: translateY(0);
    -o-transform: translateY(0);
    transform: translateY(0);
  }
}
@-webkit-keyframes fx-hero-in {
  to {
    opacity: 1;
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
}

@media only screen and (max-width: 768px) {
  .fx-hero {
    min-height: 60vh;
    padding: 5em 6% 4em;
  }
  .fx-hero-title {
    font-size: 2.4rem;
  }
  .fx-hero-slogan {
    font-size: 1.4rem;
  }
  .fx-hero-sub {
    font-size: 1.2rem;
  }
}

/* ===== 全部站点网格 section ===== */
.fx-site-grid {
  position: relative;
  z-index: 2;
  padding: 5em 6% 6em;
  background: transparent;
  scroll-behavior: smooth;
}
.fx-grid-title {
  text-align: center;
  margin-bottom: 2.5em;
}
.fx-grid-title h2 {
  font-size: 2.6rem;
  font-weight: 700;
  color: #ffffff;
  letter-spacing: 1px;
}
.fx-grid-title h2 .fx-float {
  display: inline-block;
  -webkit-animation: fx-bob 2.4s ease-in-out infinite;
  -moz-animation: fx-bob 2.4s ease-in-out infinite;
  animation: fx-bob 2.4s ease-in-out infinite;
}
.fx-grid-title p {
  margin-top: 0.6em;
  font-family: 'Merriweather', serif;
  font-style: italic;
  font-size: 1.4rem;
  color: #a8ae7e;
  opacity: 0.9;
}
.fx-grid-group {
  margin-bottom: 3em;
}
.fx-grid-group > h3 {
  position: relative;
  font-size: 1.8rem;
  font-weight: 700;
  color: #e7d5a4;
  margin: 0 0 1.2em;
  padding-bottom: 0.5em;
}
.fx-grid-group > h3::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 48px;
  height: 2px;
  background: #a8ae7e;
}
.fx-grid-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1.4em;
}

/* 分组内子分类（如 工具 → 仓库 / 服务） */
.fx-grid-subgroup + .fx-grid-subgroup,
.fx-grid-cards + .fx-grid-subgroup {
  margin-top: 2em;
}
.fx-grid-subgroup > h4 {
  position: relative;
  font-size: 1.3rem;
  font-weight: 700;
  color: #a8ae7e;
  margin: 0 0 0.8em;
  padding-bottom: 0.4em;
}
.fx-grid-subgroup > h4::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 32px;
  height: 2px;
  background: rgba(168, 174, 126, 0.6);
}

/* 单张站点卡片 */
.fx-card {
  position: relative;
  display: block;
  padding: 1.6em 1.4em;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #ffffff;
  text-decoration: none;
  overflow: hidden;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-transition:
    -webkit-transform 0.5s ease,
    opacity 0.5s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease,
    background 0.3s ease;
  -moz-transition:
    transform 0.5s ease,
    opacity 0.5s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease,
    background 0.3s ease;
  transition:
    transform 0.5s ease,
    opacity 0.5s ease,
    box-shadow 0.3s ease,
    border-color 0.3s ease,
    background 0.3s ease;
  /* 入场：默认隐藏，滚动进入视口后由 JS 加 .fx-in 类触发 transition 平滑过渡 */
  opacity: 0;
  -webkit-transform: translateZ(0) translateY(28px);
  -moz-transform: translateY(28px);
  -ms-transform: translateY(28px);
  -o-transform: translateY(28px);
  transform: translateZ(0) translateY(28px);
}
.fx-card.fx-in {
  opacity: 1;
  -webkit-transform: translateZ(0) translateY(0);
  -moz-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateZ(0) translateY(0);
}
.fx-card::before {
  /* hover 时的顶部高亮条 */
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: linear-gradient(90deg, #42b983, #a8ae7e, #e7d5a4);
  -webkit-transform: scaleX(0);
  -moz-transform: scaleX(0);
  -ms-transform: scaleX(0);
  -o-transform: scaleX(0);
  transform: scaleX(0);
  -webkit-transform-origin: left center;
  -moz-transform-origin: left center;
  -ms-transform-origin: left center;
  -o-transform-origin: left center;
  transform-origin: left center;
  -webkit-transition: -webkit-transform 0.35s ease;
  -moz-transition: transform 0.35s ease;
  transition: transform 0.35s ease;
}
.fx-card .fx-card-emoji {
  font-size: 2.4rem;
  line-height: 1;
  display: inline-block;
  -webkit-transition: -webkit-transform 0.3s ease;
  -moz-transition: transform 0.3s ease;
  transition: transform 0.3s ease;
}
.fx-card .fx-card-name {
  display: block;
  margin-top: 0.5em;
  font-size: 1.5rem;
  font-weight: 700;
  color: #ffffff;
}
.fx-card .fx-card-desc {
  display: block;
  margin-top: 0.35em;
  font-size: 1.2rem;
  line-height: 1.5;
  color: #c8c5bc;
  opacity: 0.85;
}
/* 状态角标 */
.fx-card .fx-tag {
  position: absolute;
  top: 10px;
  right: 10px;
  font-size: 1rem;
  padding: 0.1em 0.6em;
  border-radius: 999px;
  font-weight: 700;
}
.fx-card .fx-tag-red {
  background: rgba(255, 175, 175, 0.18);
  color: #ffafaf;
  border: 1px solid rgba(255, 175, 175, 0.4);
}
.fx-card .fx-tag-green {
  background: rgba(123, 224, 97, 0.18);
  color: #7be061;
  border: 1px solid rgba(123, 224, 97, 0.4);
}
.fx-card .fx-tag-blue {
  background: rgba(122, 162, 247, 0.18);
  color: #7aa2f7;
  border: 1px solid rgba(122, 162, 247, 0.4);
}
.fx-card .fx-tag-purple {
  background: rgba(188, 140, 255, 0.18);
  color: #bc8cff;
  border: 1px solid rgba(188, 140, 255, 0.4);
}

.no-touch .fx-card:hover {
  -webkit-transform: translateZ(0) translateY(-8px);
  -moz-transform: translateY(-8px);
  -ms-transform: translateY(-8px);
  -o-transform: translateY(-8px);
  transform: translateZ(0) translateY(-8px);
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(168, 174, 126, 0.6);
  box-shadow:
    0 16px 34px rgba(0, 0, 0, 0.4),
    0 0 22px rgba(168, 174, 126, 0.25);
  /* hover 时清零入场 delay，避免反应迟钝 */
  -webkit-transition-delay: 0s;
  -moz-transition-delay: 0s;
  transition-delay: 0s;
}
.no-touch .fx-card:hover::before {
  -webkit-transform: scaleX(1);
  -moz-transform: scaleX(1);
  -ms-transform: scaleX(1);
  -o-transform: scaleX(1);
  transform: scaleX(1);
}
.no-touch .fx-card:hover .fx-card-emoji {
  -webkit-transform: scale(1.18) rotate(-6deg);
  -moz-transform: scale(1.18) rotate(-6deg);
  -ms-transform: scale(1.18) rotate(-6deg);
  -o-transform: scale(1.18) rotate(-6deg);
  transform: scale(1.18) rotate(-6deg);
}

/* 入场逐张 delay（用 transition-delay 错开，hover 时由上方 :hover 规则清零） */
.fx-card:nth-child(1) {
  -webkit-transition-delay: 0.05s;
  transition-delay: 0.05s;
}
.fx-card:nth-child(2) {
  -webkit-transition-delay: 0.12s;
  transition-delay: 0.12s;
}
.fx-card:nth-child(3) {
  -webkit-transition-delay: 0.19s;
  transition-delay: 0.19s;
}
.fx-card:nth-child(4) {
  -webkit-transition-delay: 0.26s;
  transition-delay: 0.26s;
}
.fx-card:nth-child(5) {
  -webkit-transition-delay: 0.33s;
  transition-delay: 0.33s;
}
.fx-card:nth-child(6) {
  -webkit-transition-delay: 0.4s;
  transition-delay: 0.4s;
}
.fx-card:nth-child(7) {
  -webkit-transition-delay: 0.47s;
  transition-delay: 0.47s;
}
.fx-card:nth-child(8) {
  -webkit-transition-delay: 0.54s;
  transition-delay: 0.54s;
}
.fx-card:nth-child(9) {
  -webkit-transition-delay: 0.61s;
  transition-delay: 0.61s;
}
.fx-card:nth-child(n + 10) {
  -webkit-transition-delay: 0.68s;
  transition-delay: 0.68s;
}

/* 装饰 emoji 上下浮动 */
@keyframes fx-bob {
  0%,
  100% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(-6px);
    transform: translateY(-6px);
  }
}
@-webkit-keyframes fx-bob {
  0%,
  100% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  50% {
    -webkit-transform: translateY(-6px);
    transform: translateY(-6px);
  }
}

/* 窄屏适配 */
@media only screen and (max-width: 1023px) {
  .fx-site-grid {
    padding: 4em 6% 5em;
  }
  .fx-grid-cards {
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 1em;
  }
  .fx-card {
    padding: 1.3em 1.1em;
  }
  .fx-card .fx-card-emoji {
    font-size: 2rem;
  }
}
@media only screen and (max-width: 480px) {
  .fx-grid-cards {
    grid-template-columns: 1fr;
  }
}
