@import url('https://fonts.googleapis.com/css2?family=Marcellus:ital,wght@0,400;0,700;1,400;1,700&display=swap');

/* General properties for a nicely-styled site */

html {
  overflow-y: scroll;
}

body, button {
  font-family: 'Marcellus', sans-serif;
  background-color: #f4f0ec;
  margin: 0;
}

input, textarea, button {
  font-family: 'Marcellus', sans-serif;
  font-size: 1rem;
  border-radius: 6px;
  border: 2px solid #d0c0b0;
}

div, section, footer, img, video, form {
  border-radius: 6px;
}

.content {
  width: max(50%, 768px);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 1em;
  background-color: inherit;
}

section, form {
  padding: 1em;
  background-color: #ffffff;
}

img {
  width: 100%;
}

@media (max-width: 767px) {
  .content {
    width: 100%;
  }
}

/* Text formatting of different types */

a {
  text-decoration: none;
}

a[target="_blank"] {
  text-decoration: underline;
}

a, a:visited {
  color: #6060ff;
}

a:hover, summary:hover {
  color: #a0a0ff;
}

h1, h2 {
  font-weight: normal;
}

li {
  margin-bottom: 1em;
}

strong {
  font-weight: normal;
  text-shadow: 1px 0px black;
}

strong a {
  text-shadow: 1px 0px #a0a0ff;
}

/* Header & navigation */

header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  position: sticky;
  top: 0;
  z-index: 1;
  background-color: inherit;
}

header>a, header>a:hover, header>a:visited {
  color: #000;
  display: flex;
  justify-content: space-between;
  width: 100%;
}

h1 {
  margin: 1rem 0 0;
  font-size: 2.4em;
  letter-spacing: 2px;
}

.burger {
  display: none;
  line-height: 1.3em;
  padding-right: 1.5rem;
}

nav {
  display: flex;
  gap: 2rem;
  transform: scale(1) translate(0, 0);
}

nav>a {
  font-size: 1.4em;
  display: flex;
}

nav>a, nav>a:visited, label {
  color: #806040;
}

nav>a:hover {
  color: #c0a080;
}

@media (max-width: 767px) {
  header, nav {
    flex-direction: column;
    gap: 1rem;
  }

  h1 {
    font-size: 2em;
  }

  .burger {
    display: block;
  }
}

/* Some nice form styling, inspired by Material Design */

form>* {
  display: block;
  width: 100%;
  box-sizing: border-box;
}

form>p {
  font-style: italic;
}

input, textarea {
  padding: 6px 12px;
}

form>div {
  display: flex;
  gap: 1em;
  align-items: center;
  flex-wrap: wrap;
}

form>div>input {
  flex: 1;
}

form>label {
  margin-top: 1em;
  margin-bottom: 1em;
}

@media (max-width: 767px) {
  form>div>* {
    width: 100%;
  }
}

button {
  border: none;
  background-color: #504030;
  color: #ffffff;
  margin: 1em 0 0 auto;
  padding: .5em;
  width: 33%;
  text-shadow: 1px 0px white;
  cursor: pointer;
}

button:hover, button:focus {
  background-color: #a08060;
}

/* Specific CSS to the sections in my website.
There are hardly any classes outside this section!
Semantic HTML and simple selectors usually do the job. */

article>section, form, .two-panel, video {
  margin-bottom: 1em;
}

section>:first-child, .me-jpg+p, form>:first-child {
  margin-top: 0;
}

.spotify {
  background-color: #ffffff;
  padding-top: 1em;
  padding-bottom: 1em;
  display: flex;
  flex-direction: column;
}

.spotify p {
  margin: 0 1em 1em;
  font-style: italic;
}

h2 {
  font-size: 2em;
  margin: 1rem auto 1rem;
}

.work-header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.work-header>:first-child {
  flex-basis: 100%;
  text-shadow: 1px 0px black;
}

.two-panel {
  display: grid;
  grid-template-columns: 1fr 4fr;
  gap: 1em;
}

.me-jpg {
  float: right;
  width: 30%;
  margin-left: 1rem;
}

/* This section handles the fancy animation when navigating the site on desktop.
There is a giant div (main>div) that <main> only displays a piece of at any given time. */

.navdata {
  display: none;
}

main {
  position: relative;
  overflow: hidden;
}

main>div {
  width: 500%;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
  gap: 0;
  position: relative;
  left: 0;
  transition: left 250ms linear;
}

.navdata:not(:has(#work:target)) ~ .content #work-content,
.navdata:not(:has(#portfolio:target)) ~ .content #portfolio-content,
.navdata:not(:has(#bio:target)) ~ .content #bio-content,
.navdata:not(:has(#contact:target)) ~ .content #contact-content {
  height: 0;
}

.navdata:has(#work:target) ~ .content>main>div {
  left: -100%;
}

.navdata:has(#portfolio:target) ~ .content>main>div {
  left: -200%;
}

.navdata:has(#bio:target) ~ .content>main>div {
  left: -300%;
}

.navdata:has(#contact:target) ~ .content>main>div {
  left: -400%;
}

.navdata:has(#work:target) ~ .content #work-link,
.navdata:has(#portfolio:target) ~ .content #portfolio-link,
.navdata:has(#bio:target) ~ .content #bio-link,
.navdata:has(#contact:target) ~ .content #contact-link {
  color: #000;
}

#landing p {
  margin: .67em auto;
  text-align: center;
  font-size: 12rem;
}

.navdata:not(:has(:target)) ~ .content nav {
  transform: scale(1.5) translate(-25%, 200%);
}

/* this selector (instead of just nav) is a hack to prevent animation on first load */
header:hover nav, .navdata:has(:target) ~ .content nav {
  transition: transform 250ms linear;
}

@media (max-width: 767px) {
  main>div {
    transition: none;
  }

  .navdata:has(:target) ~ .content nav {
    display: none;
  }

  .navdata:not(:has(:target)) ~ .content nav {
    transform: scale(1) translate(0, 2em);
  }
}
