/* Box sizing */
html {
  box-sizing: border-box;
}

*,
*:before,
*:after {
  box-sizing: inherit;
}

/* Root */
html {
  --small-gap: 1rem;
  --medium-gap: calc(2 * var(--small-gap));
  --large-gap: calc(2 * var(--medium-gap));
  --bg-color: white;
  --text-color: black;
  --shadow-color: rgba(0, 0, 0, 0.05);
  --accent-color: #fcd51c;
  --footer-bg-color: #2b1b37;
  --footer-text-color: white;
  --max-width: 1200px;

  /* Generated by https://websemantics.uk/tools/fluid-responsive-property-calculator/ */
  /* 14px @ 600px increasing to 22px @ 1000px */
  font-size: clamp(14px, calc(0.875rem + ((1vmin - 6px) * 2)), 22px);
  /* Note: The calc base value (0.875rem) MUST be stated in REM to maintain accessibility */
  /* Where: 2 = 100 * font-size_difference / viewport_width_difference */

  line-height: 1.75;
  font-family: "Raleway", sans-serif;
  background-color: var(--footer-bg-color);
  color: var(--footer-text-color);
}

@media (prefers-color-scheme: dark) {
  html {
    --bg-color: #222;
    --text-color: #ddd;
    --shadow-color: rgba(0, 0, 0, 0.25);
    --footer-bg-color: #150d1b;
    --footer-text-color: var(--text-color);
  }
}

@media (width <= 800px), (height <= 800px) {
  html {
    --medium-gap: var(--small-gap);
  }
}

/* General */
h1,
h2 {
  font-family: "Playfair Display", sans-serif;
  font-weight: inherit;
  line-height: 1;
}

h1 {
  font-size: 3em;
  margin: var(--medium-gap) 0;
}

h2 {
  font-size: 2em;
  margin: var(--medium-gap) 0;
}

a {
  color: inherit;
  --underline-color: var(--accent-color);
  text-decoration-line: underline;
  text-decoration-color: var(--underline-color);
  text-decoration-thickness: 0.1em;
}

button.unstyled {
  display: inline;
  text-align: inherit;
  line-height: inherit;
  color: inherit;
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
}

figure {
  margin: auto;
  text-align: center;
}

img {
  max-width: 100%;
  height: fit-content;
  margin: auto;
}

.bold {
  font-weight: bold;
}

.bi:empty {
  padding: calc(0.5 * var(--small-gap));
}

.bi:not(:empty)::before {
  margin-right: 0.25em;
}

.portrait-circle {
  aspect-ratio: 1;
  clip-path: circle(closest-side);
  background: url("../images/portrait-cropped.png") bottom / auto 90% no-repeat,
    var(--bg-color);
}

.social-media-icons {
  display: flex;
  justify-content: center;
}

/* Structure */
.segment {
  padding: var(--large-gap) var(--medium-gap);
  background-color: var(--bg-color);
  color: var(--text-color);
}

.segment-content {
  max-width: var(--max-width);
  margin: auto;
}

.segment:not(.header) {
  border-top: 1px solid var(--shadow-color);
  box-shadow: inset 0 1rem 1rem -1rem var(--shadow-color);
}

/* Header */
.header {
  padding-top: var(--medium-gap);
  padding-bottom: var(--medium-gap);
}

.header .flex-container {
  display: flex;
  align-items: center;
}

.logo {
  height: 4.5rem;
}

.logo svg {
  height: 100%;
}

.main-nav {
  margin-left: auto;
  font-size: 1.2em;
  line-height: 1;
}

.main-nav ul {
  display: flex;
  align-items: center;

  margin: 0;
  padding: 0;
  list-style: none;
}

.main-nav a {
  display: block;
  padding: calc(0.5 * var(--medium-gap));
}

.main-nav a.current {
  font-weight: bold;
}

#open-mobile-menu,
#close-mobile-menu {
  display: none;
  margin-left: auto;
}

.header .social-media-icons {
  display: none;
}

/* Mobile menu */
@media (width <= 440px) {
  .header {
    font-size: 1.5em;
  }

  .logo {
    height: 3rem;
  }

  /* Collapsed */
  body:not(.mobile-menu-shown) #open-mobile-menu {
    display: block;
  }

  body:not(.mobile-menu-shown) .main-nav {
    display: none;
  }

  /* Expanded */
  body.mobile-menu-shown #close-mobile-menu {
    display: block;
  }

  body.mobile-menu-shown > *:not(.header) {
    display: none;
  }

  body.mobile-menu-shown .header {
    height: 100vh;
  }

  body.mobile-menu-shown .header .flex-container {
    height: 100%;
    flex-wrap: wrap;
    align-content: space-between;
  }

  body.mobile-menu-shown .main-nav {
    flex: 100%;
  }

  body.mobile-menu-shown .main-nav ul {
    flex-direction: column;
    gap: var(--small-gap);
  }

  body.mobile-menu-shown .social-media-icons {
    display: inherit;
    flex: 100%;
  }
}

/* Main */

/* Footer */
.footer {
  background-color: inherit;
  color: inherit;
}

.footer p {
  margin: 0;
}

.footer ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

.footer .first-row {
  display: flex;
  gap: var(--medium-gap);
  margin-bottom: var(--medium-gap);
}

.footer .portrait-circle {
  flex: 0 5rem;
  align-self: center;
}

.footer .contact-info {
  flex: 2;
}

.footer .social-media-links {
  flex: 1;
  white-space: nowrap;
}

.footer .second-row {
  display: flex;
  justify-content: center;
  column-gap: var(--medium-gap);
}

@media (width <= 440px) {
  .footer .first-row,
  .footer .second-row {
    flex-direction: column;
  }

  .footer .portrait-circle {
    display: none;
  }
}
