:root {
    --light: #FFFFFF;
    --dark: #383F51;
    --accent-1: #B9DFF6;
    --accent-2: #D90268;
    --accent-3: #468C98;
    --font-family: 'Cabin', sans-serif;
    --shadow-color: 0deg 0% 66%;
    --shadow-elevation-low:
        0.3px 0.5px 0.8px hsl(var(--shadow-color) / 0.11),
        0.4px 0.9px 1.4px -0.4px hsl(var(--shadow-color) / 0.24),
        1px 1.9px 2.9px -0.8px hsl(var(--shadow-color) / 0.38);
    --shadow-elevation-medium:
        0.3px 0.5px 0.8px hsl(var(--shadow-color) / 0.11),
        1px 2.1px 3.2px -0.3px hsl(var(--shadow-color) / 0.22),
        2.2px 4.4px 6.8px -0.6px hsl(var(--shadow-color) / 0.33),
        4.8px 9.6px 14.7px -0.8px hsl(var(--shadow-color) / 0.44);
    --shadow-elevation-high:
        0.3px 0.5px 0.8px hsl(var(--shadow-color) / 0.1),
        2px 4.1px 6.3px -0.1px hsl(var(--shadow-color) / 0.15),
        3.6px 7.3px 11.2px -0.2px hsl(var(--shadow-color) / 0.2),
        5.5px 10.9px 16.8px -0.4px hsl(var(--shadow-color) / 0.25),
        7.9px 15.8px 24.2px -0.5px hsl(var(--shadow-color) / 0.3),
        11.3px 22.6px 34.7px -0.6px hsl(var(--shadow-color) / 0.35),
        16.1px 32.3px 49.5px -0.7px hsl(var(--shadow-color) / 0.4),
        22.8px 45.5px 69.9px -0.8px hsl(var(--shadow-color) / 0.45);
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    font-family: 'Cabin', sans-serif;
}

.navbar {
    background: rgba(185, 223, 246, 0);
    height: 88px;
    display: flex;
    justify-content: center;
    align-items: center;
    position: sticky;
    top: 0;
    z-index: 999;
}

.navbar.navbar--white {
  background: linear-gradient(to bottom, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.7));
  backdrop-filter: blur(10px);
}

.navbar__container {
    left: 0;
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    height: 80px;
    z-index: 1;
    width: 100%;
    margin: 0 auto;
    padding: 0 64px 0 64px;
}

.navbar__logo {
    text-decoration: none;
    cursor: pointer;
}

.navbar__logo h3{
    font-family: "Caveat", cursive;
    font-optical-sizing: auto;
    font-weight: 600;
    font-size: 1.8rem;
    font-style: normal;
    color: var(--accent-3);
}

.navbar__menu {
    display: flex;
    list-style: none;
    text-align: center;
    gap: 2rem;
}

.navbar__item {
    z-index: 1;
    height: 52px;
}

.navbar__links {
    color: var(--dark);
    font-size: 1.3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    height: 100%;
}

.navbar__links:hover {
    color: var(--accent-2);
    transition: all 0.3s ease;
}

.navbar__toggle {
    align-items: center;
}

@media screen and (max-width: 800px) {
    .navbar__container {
        display: flex;
        justify-content: space-between;
        height: 80px;
        z-index: 99;
        width: 100%;
        padding: 0 64px 0 64px;
    }

    .navbar.active {
        background: var(--dark);
        transition: all 0.3s ease;
        transition-delay: 150ms;
        z-index: 99;
        font-size: 1.2rem;
    }

    .navbar__menu {
        display: grid;
        grid-template-columns: auto;
        padding: 0;
        width: 100%;
        height: 70dvh;
        margin: 0;
        position: absolute;
        top: -1000px;
        left: 0;
        opacity: 0;
        transition: all 0.5s ease;
        z-index: -1;
        background: var(--dark);
    }

    .navbar__menu.active {
        position: absolute;
        top: 88px;
        left: 0;
        opacity: 1;
        transition: all 0.5s ease;
        z-index: 99;
        font-size: 1.2rem;
    }

    .navbar__toggle {
        cursor: pointer;
        margin: 0 32px 0 0;
    }

    .navbar__toggle .bar {
        width: 25px;
        height: 3px;
        margin: 5px auto;
        transition: all 0.3s ease-in-out;
        background: var(--light);
        display: block;
    }

    .navbar__item {
        width: 100%;
    }

    .navbar__links {
        color: var(--light);
        text-align: center;
        width: 100%;
        height: auto;
        display: table;
    }

    #mobile-menu {
        position: absolute;
        top: 20%;
        right: 5%;
        transform: translate(5%, 20%);
    }

    #mobile-menu.is-active .bar:nth-child(2) {
        opacity: 0;
    }

    #mobile-menu.is-active .bar:nth-child(1) {
        transform: translateY(8px) rotate(45deg);
    }

    #mobile-menu.is-active .bar:nth-child(3) {
        transform: translateY(-8px) rotate(-45deg);
    }
}

/*Hero Section*/

.hero {
    background-color: var(--accent-1);
    position: fixed;
    top: 0px;
    height: 100dvh;
    width: 100%;
}

.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;

  /* dot spacing */
  --dot-gap: 36px;
  --dot-size: 2px;

  background-image:
    radial-gradient(
      circle,
      rgba(255, 255, 255, 0.9) var(--dot-size),
      transparent var(--dot-size)
    );

  background-size: var(--dot-gap) var(--dot-gap);
  background-position: 0 0;

  opacity: 0.6;

  animation: dot-drift 20s linear infinite;
}

@keyframes dot-drift {
  from {
    background-position: 0 0;
  }
  to {
    background-position: var(--dot-gap) var(--dot-gap);
  }
}

.hero__container {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    top: 0px;
    height: 100dvh;
    z-index: 1;
    width: 100%;
    padding: 0 64px 0 64px;
}

.title h1{
    font-family: "Fredericka the Great", serif;
    font-weight: 400;
    font-style: normal;
    font-size: 5rem;
    color: var(--dark);
    height: auto;
    margin-top: clamp(170px, 30dvh, 40dvh);
    z-index: 1;
    width: fit-content;
    margin-inline: auto;
}

#typing-text {
    display: inline; /* Ensure the text can wrap */
    position: relative; /* Allows the pseudo-element to position itself relative to this element */
    word-wrap: break-word;
    word-break: break-word;
    overflow-wrap: break-word;
    margin: 0;
}

#typing-text::after {
    content: ""; /* Empty content for the cursor */
    position: absolute; /* Position relative to the parent */
    left: 100%;
    width: 4px;
    height: 2.5rem; /* Match the line height or adjust as needed */
    background-color: var(--dark); /* Cursor color */
    animation: blink-caret 0.75s step-end infinite;
}

@keyframes blink-caret {
    from, to {
        background-color: transparent;
    }
    50% {
        background-color: var(--dark);
    }
}

.subtitle{
    font-family: 'Cabin', sans-serif;
    font-size: 1.2rem;
    font-style: normal;
    color: var(--dark);
    height: auto;
    margin: 16px 32px 32px 32px;
    z-index: 1;
    width: fit-content;
    margin-inline: auto;
}

.subtitle h2 {
    font-weight: 200;
}

@media screen and (max-width: 700px) {
    .title h1 {
        font-size: 4rem;
    }

    .subtitle {
        font-size: 1.1rem;
    }
}

@media screen and (max-width: 600px) {
    .title h1 {
        font-size: 3rem;
    }

    .subtitle {
        font-size: 1rem;
    }
}

/*Bio Section*/
.bio {
    background-color: var(--light);
    position: relative;
    top: 0;
    margin-top: clamp(450px, 80dvh, 800px);
}

.wave {
    position: absolute;
    top: -100px;
    height: 100px;
    width: 100%;
    display: flex;
    z-index: 2;
}

.bio__container {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    gap: 3%;
    align-items: center;
    width: 100%;
    min-width: 300px;
    height: auto;
    z-index: 1;
    margin: 0 0 0 0;
    padding: 128px 64px 96px 64px;
}

.bio__text {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 16px;
    height: auto;
    width: 60%;
}

.bio__container span {
    color: var(--accent-2);
}

.bio__container h1 {
    font-family: 'Cabin', sans-serif;
    font-size: 2rem;
    color: var(--dark);
    justify-content: center;
    z-index: 1;
    margin: 0;
}

.bio__container p {
    font-family: 'Cabin', sans-serif;
    font-size: 1rem;
    height: fit-content;
    z-index: 1;
    margin: 0 32px 0 0;
    line-height: 1.5em;
}

.bio__container button {
    background: var(--accent-2);
    color: var(--light);
    padding: 8px 8px;
    outline: none;
    border-width: 2px;
    border-color: var(--dark);
    border-radius: 8px;
    font-family: 'Cabin', sans-serif;
    font-size: 1rem;
    width: 170px;
    height: 50px;
    z-index: 1;
    margin: 8px 0;
    cursor: pointer;
    transition: transform 0.2s ease;
}

.bio__container button:hover {
    transform: scale(1.02);
    box-shadow: var(--shadow-elevation-medium);
}

.bio__image {
    display: flex;
    position: relative;
    overflow: hidden;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 40%;
    min-width: 300px;
    box-shadow: var(--shadow-elevation-medium);
}

.bio__image img {
    width: 100%;
    height: auto;
}

@media screen and (max-width: 800px){
    .bio__container {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: left;
    gap: 32px;
    width: 100%;
    min-width: 300px;
    height: auto;
    z-index: 1;
    padding: 128px 64px 512px 64px;
    }

   .bio__text {
        width: 100%;
    }

    .bio__image {
        width: 100%;
        height: auto;
    }
}

/*Projects Section*/

.projects {
    background-color: var(--dark);
    position: relative;
    top: 0;
}

.projects__container {
    display: flex;
    flex-direction: column;
    background-color: var(--dark);
    padding: 64px 64px 96px 64px;
    align-items: left;
    gap: 32px;
    align-items: left;
    width: 100%;
    min-width: 300px;
    height: auto;
}

.projects__title h1{
    font-family: 'Cabin', sans-serif;
    font-size: 2rem;
    color: var(--light);
    justify-content: center;
    z-index: 1;
    margin: 32px 0 8px 0;
}

.projects__grid {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    flex-wrap: wrap;
    align-items: center;
    width: 100%;
    min-width: 300px;
    height: auto;
    gap: 4%;
}

.project__card {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: left;
    gap: 8px;
    height: 290px;
    width: 29%;
    min-width: 200px;
}

.project__image {
    height: 200px;
    min-height: 200px;
    width: 100%;
    min-width: 250px;
    overflow: hidden;
    background-size: cover;         /* fills box */
    background-position: top;       /* start at top */
    background-repeat: no-repeat;
    transition-property: background-position;
    transition-duration: 9s;
    transition-timing-function: cubic-bezier(.2,0,.7,1);
    border-top-left-radius: 8px;
    border-top-right-radius: 8px;
}

.project__card .project__image:hover{
   background-position: 50% 100%;
}

/* not hovering = play a snappy return */
.project__card .project__image:not(:hover){
  transition-duration: 2s; /* faster up */
  transition-timing-function: cubic-bezier(.4,0,.6,1);
  background-position: 50% 0%;
}

.project__card h3 {
    font-family: 'Cabin', sans-serif;
    font-weight: 200;
    font-size: 1rem;
    color: var(--light);
    z-index: 1;
    margin: 16px 0 0 0;
    letter-spacing: 0.5px;
}

.project__button button{
    background: none;
    color: var(--light);
    outline: none;
    box-shadow: none;
    border: 1.5px solid var(--light);
    border-radius: 8px;
    font-family: 'Cabin', sans-serif;
    font-size: .9rem;
    width: 140px;
    height: 30px;
    z-index: 1;
    cursor: pointer;
    transform: transform 0.2s ease;
    margin: 0 0 0 0;
}

.projects__container button:hover {
    transform: scale(1.02);
}

.resume {
    background-color: var(--light);
    position: relative;
    top: 0;
}

.resume__container {
    display: flex;
    flex-direction: column;
    padding: 64px 64px 96px 64px;
    width: 100%;
}

.hobbies {
    background-color: var(--light);
    position: relative;
    top: 0;
}

.hobbies__container {
    display: flex;
    flex-direction: column;
    padding: 64px 64px 96px 64px;
    width: 100%;
}

.footer {
    background-color: var(--light);
    position: relative;
    top: 0;
}

.footer__container {
    display: flex;
    flex-direction: column;
    padding: 64px 64px 16px 64px;
}

.footer__text {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid var(--dark);
}

.footer__text h3 {
    font-family: "Caveat", cursive;
    font-optical-sizing: auto;
    font-weight: 600;
    font-size: 1.5rem;
    font-style: normal;
    color: var(--accent-3);
}

.footer__menu {
    display: flex;
    list-style: none;
    text-align: center;
    gap: 2rem;
}

.footer__item {
    z-index: 1;
    height: 52px;
}

.footer__links {
    color: #434B60;
    font-size: 1.1rem;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    height: 100%;
}

.footer__links:hover {
    color: var(--accent-2);
    transition: all 0.3s ease;
}

.copyright {
    font-family: 'Cabin', sans-serif;
    font-size: 0.8rem;
    color: #434B60;
    margin-top: 16px;

}