/*!*****************************************************************************************************************************************!*\
  !*** css ../node_modules/css-loader/dist/cjs.js!../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./styles/main.scss ***!
  \*****************************************************************************************************************************************/
@charset "UTF-8";
/***
    The new CSS reset - version 1.8.4 (last updated 14.2.2023)
    GitHub page: https://github.com/elad2412/the-new-css-reset
***/
/*
    Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property
    - The "symbol *" part is to solve Firefox SVG sprite bug
 */
*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) {
  all: unset;
  display: revert;
}

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

/* Reapply the pointer cursor for anchor tags */
a, button {
  cursor: revert;
}

/* Remove list styles (bullets/numbers) */
ol, ul, menu {
  list-style: none;
}

/* For images to not be able to exceed their container */
img {
  max-inline-size: 100%;
  max-block-size: 100%;
}

/* removes spacing between cells in tables */
table {
  border-collapse: collapse;
}

/* Safari - solving issue when using user-select:none on the <body> text input doesn't working */
input, textarea {
  -webkit-user-select: auto;
}

/* revert the 'white-space' property for textarea elements on Safari */
textarea {
  white-space: revert;
}

/* minimum style to allow to style meter element */
meter {
  -webkit-appearance: revert;
  appearance: revert;
}

/* preformatted text - use only for this feature */
:where(pre) {
  all: revert;
}

/* reset default text opacity of input placeholder */
::placeholder {
  color: unset;
}

/* remove default dot (•) sign */
::marker {
  content: initial;
}

/* fix the feature of 'hidden' attribute.
   display:revert; revert to element instead of attribute */
:where([hidden]) {
  display: none;
}

/* revert for bug in Chromium browsers
   - fix for the content editable attribute will work properly.
   - webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/
:where([contenteditable]:not([contenteditable=false])) {
  -moz-user-modify: read-write;
  -webkit-user-modify: read-write;
  overflow-wrap: break-word;
  -webkit-line-break: after-white-space;
  -webkit-user-select: auto;
}

/* apply back the draggable feature - exist only in Chromium and Safari */
:where([draggable=true]) {
  -webkit-user-drag: element;
}

/* Revert Modal native behavior */
:where(dialog:modal) {
  all: revert;
}

@font-face {
  font-family: "Font";
  src: url(../fonts/b83fc9164664f73d3494.otf) format("opentype");
  font-weight: 400;
  font-style: normal;
}
@font-face {
  font-family: "Font";
  src: url(../fonts/3b7c7896b639c01111ae.otf) format("opentype");
  font-weight: 400;
  font-style: italic;
}
body,
h1,
h2,
h3 {
  font-family: "Font", serif;
  font-weight: 400;
  font-style: normal;
  text-align: justify;
  text-align-last: justify;
  hyphens: auto;
}

i {
  font-family: "Font", serif;
  font-weight: 400;
  font-style: italic;
}

:root {
  --base: 1.6vw;
}
@media (min-width: 1281px) {
  :root {
    --base: 24px;
  }
}
@media (max-width: 1280px) {
  :root {
    --base: 1.9vw;
  }
}
@media (max-width: 640px) {
  :root {
    --base: 4.2vw;
  }
}
:root {
  --font-size-base: var(--base);
  --font-size-small: 0.8rem;
  --font-size-large: 1.12rem;
  --font-line-height-base: 124%;
  --font-line-height-link: 100%;
  --font-letter-spacing-base: 0.0012em;
  --font-line-height-base-factor: 1.24;
}
@media (max-width: 640px) {
  :root {
    --font-size-xsmall: 0.88rem;
    --font-line-height-base: 128%;
    --font-line-height-base-factor: 1.28;
  }
}
:root {
  --colour-black: rgb(17, 17, 17);
  --colour-white: rgb(255, 255, 255);
  --colour-offwhite: rgb(248, 248, 248);
  --colour-primary: var(--colour-black);
  --colour-secondary: rgb(255, 230, 47);
  --colour-accent: blue;
  --colour-background: var(--colour-white);
  --colour-image-background: var(--colour-offwhite);
  --colour-border: var(--colour-offwhite);
  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 1rem;
  --space-lg: 2rem;
  --space-xl: 7rem;
}
@media (min-width: 1281px) {
  :root {
    --space-xl: 15vw;
  }
}
@media (max-width: 640px) {
  :root {
    --space-xs: 0.2rem;
    --space-sm: 0.4rem;
    --space-md: 0.8rem;
  }
}
:root {
  --padding-page: var(--space-md);
  --gap-col: var(--space-md);
  --gap-row: var(--space-sm);
  --gap-row-profile: var(--space-xs);
  --gap-space: 0.2rem;
  --offset-underline: 0.1rem;
}
@media (max-width: 640px) {
  :root {
    --gap-row-profile: var(--space-sm);
  }
}
:root {
  --hover-opacity: 0.5;
  --radius-sm: 0.25rem;
  --radius-md: 0.5rem;
  --radius-lg: 1rem;
  --transition-fast: 0.3s;
  --transition-base: 0.6s;
  --transition-slow: 0.9s;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
}

html {
  font-size: var(--font-size-base);
  line-height: normal;
  scroll-behavior: smooth;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-size: var(--font-size-body);
  line-height: var(--font-line-height-base);
  letter-spacing: var(--font-letter-spacing-base);
  background-color: var(--colour-background);
  color: var(--colour-primary);
}

img {
  height: auto;
  width: 100%;
}

button {
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
  font: inherit;
}

a:hover {
  color: var(--colour-accent);
}

.logo {
  fill: var(--colour-primary);
}

::selection {
  background: var(--colour-secondary);
  color: var(--colour-accent);
}

img::selection {
  background: transparent;
}

@keyframes backAndForth {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(var(--animation-distance, 0));
  }
}
body {
  display: flex;
  flex-direction: row;
}

.projects {
  padding: var(--padding-page);
  padding-bottom: calc(var(--padding-page) * 3 + 1rem * var(--font-line-height-base-factor) - 0.08rem);
  width: 75%;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  column-gap: var(--gap-col);
  row-gap: var(--gap-row);
}
.projects article.project {
  width: calc(33.3333333333% - 2 * var(--gap-col) / 3);
  align-self: flex-start;
  cursor: default;
  overflow: hidden;
  transition: background-color var(--transition-base) ease, color var(--transition-base) ease;
}
.projects article.project:nth-child(2n) .container {
  justify-content: flex-end;
}
.projects article.project:hover {
  background-color: var(--colour-secondary);
}
.projects article.project:hover .container {
  opacity: 1;
  transition: opacity 0s ease 0s;
  z-index: 10;
}
@media (max-width: 640px) {
  .projects article.project {
    width: 100%;
  }
}
.projects article.project .title {
  font-style: italic;
}
.projects article.project .container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--transition-base) ease var(--transition-fast);
  z-index: 1;
}
@media (max-width: 640px) {
  .projects article.project .container {
    display: none;
  }
}
.projects article.project .container .image {
  width: 50%;
  padding: var(--space-xl);
}
.projects article.project .container .image .img {
  background-color: var(--colour-image-background);
}
.projects article.project .container .image .img picture {
  mix-blend-mode: multiply;
}

.profile {
  padding: var(--padding-page);
  width: 25%;
  display: flex;
  flex-direction: column;
  row-gap: var(--gap-row-profile);
}
.profile .profile-bio {
  font-size: var(--font-size-small);
  line-height: var(--font-line-height-base);
}

.projects,
.profile {
  align-self: flex-start;
  place-content: flex-start;
  height: 100svh;
  overflow-y: scroll;
}
@media (max-width: 640px) {
  .projects,
  .profile {
    width: 50%;
    padding-bottom: calc(var(--padding-page) * 3 + 1rem * var(--font-line-height-base-factor) - 0.08rem);
  }
}

.contact-links {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 75%;
  padding: var(--padding-page);
  padding-bottom: calc(var(--padding-page) - 0.08rem);
  font-style: italic;
  z-index: 100;
}
.contact-links .container {
  width: 100%;
  display: flex;
  justify-content: flex-end;
}
@media (max-width: 640px) {
  .contact-links .container {
    justify-content: center;
  }
}
@media (max-width: 640px) {
  .contact-links .container ul {
    animation: none;
  }
}
@media (max-width: 640px) {
  .contact-links {
    width: 100%;
    background-color: var(--colour-background);
    font-size: var(--font-size-large);
  }
}

.buttons {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.buttons a {
  text-decoration: underline;
  text-underline-offset: var(--offset-underline);
  text-transform: uppercase;
  font-size: var(--font-size-small);
  font-variant: all-small-caps;
}

ul,
.buttons {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}
ul li:not(:last-child),
ul > a:not(:last-child),
.buttons li:not(:last-child),
.buttons > a:not(:last-child) {
  margin-right: var(--gap-space);
}
ul li:not(:last-child)::after,
ul > a:not(:last-child)::after,
.buttons li:not(:last-child)::after,
.buttons > a:not(:last-child)::after {
  content: ",";
}
