/*

    Page width: 1440px
    Device scaling: 60em

*/
:root {
    --page-width: 1440px;

    --clr-primary-400: #64ffda;
  
    --clr-neutral-100: #E6F1FF;
    --clr-neutral-200: #CCD6F6;
    --clr-neutral-300: #A8B2D1;
    --clr-neutral-400: #8892B0;
    --clr-neutral-800: #112240;
    --clr-neutral-900: #0A192F;

    --clr-footer: #0d0d0d;
    --clr-blur: rgb(100, 255, 218, .4);
    --clr-blur2: rgb(100, 255, 218, .6);
    --clr-image-blur: rgb(100, 255, 218, .2);
    --clr-image-blur2: rgb(10, 25, 47, .2);
    --clr-image-blur3: rgb(10, 25, 47, .8);

    --clr-text-body: var(--clr-neutral-100);
    --clr-background-body: var(--clr-neutral-900);
  
    --ff-primary: 'Roboto Mono', monospace;
    --ff-secondary: 'Kanit', sans-serif;
  
    --ff-body: var(--ff-primary);
    --ff-header: var(--ff-primary);
    --ff-title: var(--ff-secondary);
  
    --fw-regular: 400;
    --fw-medium: 500;
    --fw-bold: 700;
  
    --fs-100: .875rem; /* 14px */
    --fs-200: 0.9375rem; /* 15px */
    --fs-300: 1rem; /* 16px */
    --fs-400: 1.125rem; /* 18px */
    --fs-500: 1.25rem; /* 20px */
    --fs-550: 1.5rem; /* 24px */
    --fs-600: 2rem; /* 32px */
    --fs-700: 2.25rem; /* 36px */
    --fs-800: 2.5rem; /* 40px */
    --fs-900: 3rem; /* 48px */
  
    --fs-body: var(--fs-300);

    --fs-primary-heading: var(--fs-600);
    --fs-secondary-heading: var(--fs-500);

    --size-100: .25rem; /* 4px */
    --size-200: .5rem; /* 8px */
    --size-300: .75rem; /* 12px */
    --size-400: 1rem; /* 16px */
    --size-500: 1.5rem; /* 24px */
    --size-600: 2rem; /* 32px */
    --size-700: 3rem; /* 48px */
    --size-800: 4rem; /* 64px */
    --size-900: 5rem; /* 80px */

    --max-width: var(--page-width);
    --container-padding: 1rem;
}

@media (min-width: 60em) {
    :root {
        --fs-body: var(--fs-500);
        --fs-primary-heading: var(--fs-800);
    }
}
 
*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Remove default margin */
* {
    margin: 0;
    padding: 0;
    font: inherit;
}

/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
ul[role='list'],
ol[role='list'] {
    list-style: none;
}

/* Set core root defaults */
html:focus-within {
    scroll-behavior: smooth;
}

html,
body {
    min-height: 100%;
    overflow-x: hidden;
    scroll-behavior: smooth;
}

/* Set core body defaults */
body {
    min-height: 100vh;
    text-rendering: optimizeSpeed;
    line-height: 1.6;
}

/* A elements that don't have a class get default styles */
a:not([class]) {
    text-decoration-skip-ink: auto;
}

a:not([data-deco="true"]) {
    text-decoration: none;
}

/* Make images easier to work with */
img,
picture,
svg {
    max-width: 100%;
    display: block;
}

/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */
@media (prefers-reduced-motion: reduce) {
html:focus-within {
    scroll-behavior: auto;
}
  
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

section {
    scroll-margin: calc(4.5rem / 1.3);
}

/* Onscroll animations */
.hid-left-200 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(-40px);
    transition: all .3s ease-out;
    transition-delay: 100ms;
}

.hid-left-400 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(-80px);
    transition: all .5s ease-out;
    transition-delay: 100ms;
}

.hid-left-600 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(-120px);
    transition: all 1s ease-out;
    transition-delay: 100ms;
}

.hid-left-800 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(-160px);
    transition: all 1.1s ease-out;
    transition-delay: 100ms;
}

.hid-right-200 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(40px);
    transition: all .3s ease-out;
    transition-delay: 100ms;
}

.hid-right-400 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(80px);
    transition: all .5s ease-out;
    transition-delay: 100ms;
}

.hid-right-600 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(120px);
    transition: all 1s ease-out;
    transition-delay: 100ms;
}

.hid-right-800 {
    opacity: 0;
    filter: blur(2px);
    transform: translateX(160px);
    transition: all 1.1s ease-out;
    transition-delay: 100ms;
}

.hid-bottom-400 {
    opacity: 0;
    filter: blur(2px);
    transform: translateY(80px);
    transition: all .5s ease-out;
    transition-delay: 100ms;
}

.hid-top-200 {
    opacity: 0;
    filter: blur(2px);
    transform: translateY(-40px);
    transition: all .5s ease-out;
    transition-delay: 100ms;
}

.hid-top-400 {
    opacity: 0;
    filter: blur(2px);
    transform: translateY(-80px);
    transition: all .5s ease-out;
    transition-delay: 100ms;
}

@media (max-width: 60em) {
    .project > .hid-right-800 { transform: translateX(0); }
    .project > .hid-left-800 { transform: translateX(0); }
    .project > .hid-right-400 { transform: translateX(0); }
    .project > .hid-left-400 { transform: translateX(0); }
}


/* Onscroll delays */
span { display: inline-block;}
.primary-navigation > ul > li:nth-child(1) { transition-delay: 200ms; }
.primary-navigation > ul > li:nth-child(2) { transition-delay: 350ms; }
.primary-navigation > ul > li:nth-child(3) { transition-delay: 500ms; }
.primary-navigation > ul > li:nth-child(4) { transition-delay: 650ms; }
.home-next-wrapper { transition-delay: 200ms; }
.about-text > p:nth-child(2) span:nth-child(1) { transition-delay: 200ms; }
.about-text span:nth-child(3) { transition-delay: 400ms; }
.about-text span:nth-child(5) { transition-delay: 600ms; }
.about-cv { transition-delay: 400ms; }
.input-box, .submit { transition-delay: 250ms; }
.footer__copyright { transition-delay: 250ms; }
.footer__socials > li:nth-child(1) { transition-delay: 250ms; }
.footer__socials > li:nth-child(2) { transition-delay: 300ms; }
.primary-footer__nav > ul > li:nth-child(1) { transition-delay: 250ms; }
.primary-footer__nav > ul > li:nth-child(2) { transition-delay: 250ms; }
.primary-footer__nav > ul > li:nth-child(3) { transition-delay: 350ms; }
.primary-footer__nav > ul > li:nth-child(4) { transition-delay: 350ms; }

.show {
    opacity: 1;
    filter: blur(0);
    transform: translateX(0);
}
  
/* General Styling */
body {
    font-size: var(--fs-body);
    font-family: var(--ff-body);
    font-weight: var(--fw-medium);
    color: var(--clr-text-body);
    background-color: var(--clr-background-body);
    line-height: 1.2;
}

/* Button */
.button {
    font-size: var(--fs-400);
    color: var(--clr-primary-400);
    padding: 0.875rem 1.375rem;
    background: transparent;
    border: 2px solid var(--clr-primary-400);
    border-radius: var(--size-300);
    cursor: pointer;
}

.button[type="small"] {
    font-size: var(--fs-300);
    padding: 0.813rem 0;
    width: 7.313rem;
}

/* Section titles */
.section-title {
    color: var(--clr-primary-400);
    font-size: var(--fs-600);
    display: flex;
    align-items: center;
    padding-inline: var(--size-300);
}

.section-title::before {
    content: '';
    display: block;
    width: 3.125rem;
    height: 1px;
    background-color: var(--clr-neutral-400);
    margin-right: var(--size-400);
}

.section-title::after {
    content: '';
    display: flex;
    flex-grow: 1;
    height: 1px;
    background-color: var(--clr-neutral-400);
    margin-left: var(--size-400);
}

.section-title span {
    color: var(--clr-neutral-200);
    padding-right: var(--size-200);
}

/* Mobile */
.sides, .blob, .return-to-top { display: none; }
.about { margin-block: 10.813rem 8.75rem; }
.contact { margin-block: 8.75rem 6.25rem; }

.mail-sent-box {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    opacity: 0;
    text-align: center;
    line-height: 2.7rem;
    width: 40ch;
    height: 3rem;
    border: 1px solid var(--clr-primary-400);
    border-radius: 4px;
    background-color: var(--clr-neutral-800);
    transition: all .5s ease-out;
}

.visible {
    opacity: .7;
}

/* Mobile ==> Header */
.primary-header > .container { 
    position: relative;
    z-index: 3;
    height: 4.5rem; 
}

.header__title,
.footer__title {
    cursor: pointer;
}

.nav-responsive__button {
    background: transparent;
    border: 0;
}

.primary-navigation {
    inset: 7rem var(--size-400) auto;
    position: absolute;
    padding: var(--size-700) var(--size-700) var(--size-300);
    max-width: 35rem;
    margin-left: auto;
    background: var(--clr-footer);
    border-radius: var(--size-100);
    transform: translateY(-135%);
}

.close {
    animation: 1000ms slide-out;
    animation-timing-function: cubic-bezier(.63,-0.55,0,1.09);
}

.primary-navigation[data-visible] {
    animation: 1000ms slide-in;
    animation-timing-function: cubic-bezier(.63,-0.55,0,1.09);
    transform: translateY(0%);
}

.primary-navigation > ul > li {
    margin-bottom: var(--size-700);
}

.primary-navigation > ul > li > p {
    cursor: pointer;
    color: var(--clr-neutral-200);
    font-size: var(--fs-400);
    font-weight: var(--fw-regular);
}

.nav > ul > li > p,
.footer__socials > li > a {
    transition: all .3s ease-out;
}

.nav > ul > li > p:hover,
.footer__socials > li > a:hover {
    color: var(--clr-primary-400);
}

.primary-navigation > ul > li > p > span {
    color: var(--clr-primary-400);
    padding-right: var(--size-100);
}

.nav-responsive__button {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 35px;
    height: 30px;
    cursor: pointer;
}

.nav-responsive__button-open::before {
    content: '';
    display: block;
    width: 35px;
    height: 2px;
    background-color: var(--clr-primary-400);
    transition: 0.4s all ease;
    transform: translateY(-6px);
}

.nav-responsive__button-open::after {
    content: '';
    display: block;
    width: 29px;
    height: 2px;
    position: absolute;
    right: 0;
    background-color: var(--clr-primary-400);
    transition: 0.4s all ease;
    transform: translateY(6px);
}

.nav-responsive__button[aria-expanded="true"] .nav-responsive__button-open::before {
    width: 32px;
    transform: rotate(45deg) translate(0px, 0px);
}

.nav-responsive__button[aria-expanded="true"] .nav-responsive__button-open::after {
    width: 32px;
    transform: rotate(-45deg) translate(1px, -2px);
    right: 0;
}

/* Mobile => home */
.home > .container {
    position: relative;
    z-index: 2;
}

/* Mobile ==> about => skills */
.about-skills {
    display: grid;
    gap: 1.4rem 4rem;
    grid-template-columns: auto auto;
}

@media (max-width: 25.938rem) {
    .about-skills {
        text-align: center;
        grid-template-columns: auto;
        gap: 1.7rem 0;
    }

    .skill-title { justify-content: center; }
}

.skill-title {
    display: flex;
    align-items: center;
    font-size: var(--fs-500);
    color: var(--clr-primary-400);
}

.skill-title::before,
.skill-title::after {
    content: '';
    width: 1.25rem;
    height: 2px;
    background-color: var(--clr-primary-400);
    display: block;
}

.skill-title::before { margin-right: 0.375rem; }
.skill-title::after { margin-left: 0.375rem; }

.skill-content { margin-top: var(--size-200); }

.skill-content > li {
    font-size: var(--fs-500);
    padding-bottom: var(--size-100);
    color: var(--clr-neutral-300);
}

/* Mobile ==> projects */
.project {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 10px;
    min-height: 27rem;
}

.project-text {
    opacity: 1;
    grid-column: 1 / -1;
    grid-row: -1;
    z-index: 2;
    grid-template-columns: 100%;
}

.project-text > * { padding: var(--size-300) var(--size-400); }
.project-text-box > p { padding-top: 0; }

.project-links > a {
    font-size: var(--fs-550);
    color: var(--clr-neutral-200);
    transition: all .3s ease-out;
}

.project-links > a:hover { color: var(--clr-primary-400); }

.project-img-wrapper {
    grid-column: 1 / -1;
    grid-row: -1;
    height: 100%;
    box-shadow: 0 10px 30px -15px var(--clr-neutral-800);
    position: relative;
    z-index: 1;
}

.project-img {
    width: 100%;
    height: 100%;
    position: relative;
    background-position: top center;
    background-repeat: no-repeat;
    background-size: cover;
    border-radius: 6px;
}

.marthyvideo { background-image: url('../files/img/2.png'); }
.portfolio { background-image: url('../files/img/3.png'); }
.watchers { background-image: url('../files/img/1.png'); }
.ssemi { background-image: url('../files/img/4.png'); }
.doucovani { background-image: url('../files/img/5.png'); }
.solarflare { background-image: url('../files/img/6.png'); }

.project-img::before,
.project-img::after {
    content: '';
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: 3;
    border-radius: 6px;
    transition: all .3s ease-out;
}

.project-img::before { background-color: var(--clr-image-blur); }
.project-img::after { background-color: var(--clr-image-blur3); }

/* Mobile ==> contact */
.column {
    display: grid;
    justify-items: center;
}

.input {
    margin-bottom: var(--size-200);
    width: 21.75rem;
    height: 3.5rem;
    border-radius: var(--size-300);
    -webkit-border-radius: var(--size-300);
    border: 0;
    outline: 0;
    background: var(--clr-neutral-800);
    font-size: var(--fs-500);
    color: var(--clr-neutral-300);
    padding-left: 1.125rem;
}

@media (max-width: 23.75rem) {
    .input {
        width: 17.272rem;
    }
}

.message {
    height: 9.563rem;
    padding-top: 0.938rem;
    resize: none;
}

.input:focus,
.input:not(:placeholder-shown) {
    border: 1px solid var(--clr-primary-400);
}

.sm-gap { --gap: var(--size-400) }

/* Mobile ==> footer */
.primary-footer { background-color: var(--clr-footer); }

.primary-footer > .container {
    grid-template-areas: 
      "nav"
      "email"
      "social"
      "logo"
      "copyright";
}

.primary-footer__nav { grid-area: nav; }
.footer__email { grid-area: email; }
.footer__socials { grid-area: social; }
.footer__title { grid-area: logo; }
.footer__copyright { grid-area: copyright; }

.footer__email > a { transition: all .3s ease-out; }
.footer__email > a:hover { color: var(--clr-neutral-300); }

.footer__socials > li > a {
    font-size: var(--fs-600);
    color: var(--clr-neutral-200);
}

.primary-footer__nav > ul {
    display: grid;
    gap: var(--size-500) var(--size-600);
    grid-template-columns: auto auto;
}

.primary-footer__nav > ul > li > p {
    cursor: pointer;
    color: var(--clr-neutral-200);
    font-size: var(--fs-400);
    font-weight: var(--fw-regular);
}

.primary-footer__nav > ul > li > p > span {
    color: var(--clr-primary-400);
    padding-right: var(--size-100);
}

/* Larger screens */ /* Full screen */
@media (min-width: 50em) {
    .project-text-box { padding-right: 14rem; }
    .home-welcome { padding: .688rem 3rem; }

    .about,
    .contact,
    .section-title:not(.about > .section-title, .contact > .section-title) { 
        padding-inline: 3rem; 
    }
}
@media (min-width: 60em) {
    main, header, footer, .sides, .return-to-top {
        position: relative;
        z-index: 2;
    }

    .blob {
        display: block;
        position: fixed;
        background: linear-gradient(
            to right,
            #183258,
            #132643
        );
        height: 350px;
        aspect-ratio: 1;
        left: 50%;
        top: 50%;
        translate: -50% -50%;
        border-radius: 50%;
        animation: rotate 20s infinite;
    }

    .blur {
        height: 100%;
        width: 100%;
        position: fixed;
        z-index: 1;
        backdrop-filter: blur(200px);
        -webkit-backdrop-filter: blur(200px);
    }

    .return-to-top[data-visible] {
        cursor: pointer;
        display: flex;
        align-items: center;
        justify-content: center;
        position: fixed;
        bottom: 0;
        right: 110px;
        transform: translateY(38px);
        height: 36px;
        aspect-ratio: 1;
        border-radius: 50%;
        background: transparent;
        border: 2px solid var(--clr-primary-400);
        border-radius: 50%;
        font-size: var(--fs-550);
        color: var(--clr-primary-400);
    }

    .return-to-top[data-visible="true"] { transform: translateY(-25px); }

    .return-to-top[data-visible="visited"] {
        transform: translateY(-25px);
        animation: pop-in-button .4s ease-out;
        animation-timing-function: cubic-bezier(.2,0,.22,1.72);
    }

    .return-to-top[data-visible="false"] {
        animation: pop-out-button .4s ease-out;
        animation-timing-function: cubic-bezier(.2,0,.22,1.72);
    }

    .about { margin-block: 26rem 14rem; }

    .nav-responsive__button { display: none; }

    .primary-navigation {
        width: auto;
        align-items: center;
        inset: 0;
        padding: 0;
        position: relative;
        background: transparent;
        border-radius: 0;
        transform: translateY(0);
    }

    .primary-navigation > ul > li { margin-bottom: 0; }

    .section-title::after {
        flex-grow: 0;
        width: 16.625rem;
    }

    .sides {
        display: block;
        position: fixed;
        bottom: 0;
    }

    .main-socials[data-visible]:not([data-visible = "false"]) { 
        display: block;
        left: 25px; 
        transform: translateY(-20px);
        animation: slide-in-side-left .5s ease-out;
    }

    .main-socials[data-visible="visited"] { animation: slide-in-side-left .3s ease-out; }
    .main-socials[data-visible="false"] { animation: slide-out-side-left .15s ease-out; }
    .main-socials { transform: translateX(-185%) translateY(-20px); }

    .main-socials a {
        color: var(--clr-neutral-400);
        font-size: var(--fs-550);
    }

    .main-socials li:not(:last-child) { padding-bottom: .4rem; }

    .main-socials::before,
    .main-socials::after {
        content: '';
        height: 1px;
        background-color: var(--clr-neutral-400);
        display: block;
        transform: rotateZ(-90deg);
        margin-block: 1.2rem;
    }

    .main-socials::before {
        width: 1.3rem;
        margin-left: 3px;
    }

    .main-socials::after { width: 1.7rem; }

    .main-socials__list > li,
    .main-socials__list > li > a { transition: all .3s ease-out; }

    .main-socials__list > li:hover,
    .main-socials__list > li > a:hover { 
        color: var(--clr-primary-400); 
        padding-bottom: 1rem;
    }

    .main-email > a { transition: all .3s ease-out; }
    .main-email > a:hover { 
        color: var(--clr-primary-400); 
        padding-block: 1rem;
    }

    .main-email[data-visible]:not([data-visible = "false"]) {
        transform: translate(93px, -150px) rotateZ(-90deg);
        animation: slide-in-side-right .5s ease-out;
    }

    .main-email[data-visible="visited"] { animation: slide-in-side-right .3s ease-out; }
    .main-email[data-visible="false"] { animation: slide-out-side-right .15s ease-out; }

    .main-email { 
        right: 0; 
        display: flex;
        align-items: center;
        transform: translate(55%, -150px) rotateZ(-90deg);
    }

    .main-email a {
        color: var(--clr-neutral-400);
        font-weight: var(--fw-regular);
        font-size: var(--fs-400);
        transition: all .3s ease-out;
    }
    
    .main-email::before,
    .main-email::after {
        content: '';
        margin-top: .28rem;
        margin-inline: .4rem;
        height: 1px;
        background-color: var(--clr-neutral-400);
        display: block;
    }

    .main-email::before { width: 1.7rem; }
    .main-email::after { width: 1.3rem; }

    .home-welcome { padding: 1.688rem 10.75rem; }
    .home-next-wrapper { margin-top: 12rem; }
    .home-next { cursor: pointer; }
    .home-next-button { transition: all .3s ease-out; }

    .home-next-button:hover,
    .home-next-button:active {
        transform: translateY(7px);
    }

    .home-next-text {
        position: absolute;
        transform: translate(50px, 12px);
        opacity: 0;
    }

    .text-close { animation: text-slide-out .5s ease-out; }

    .text-open {
        animation: text-slide-in .5s ease-out;
        animation-timing-function: cubic-bezier(.2,0,.22,1.72);
        display: block;
        transform: translate(-120px, 12px);
        opacity: 1;
    }

    .about,
    .contact,
    .section-title:not(.about > .section-title, .contact > .section-title) { 
        padding-inline: 5rem; 
    }

    .project-text { grid-area: 1 / 1 / -1 / 7; }
    .project-img-wrapper { grid-area: 1 / 5 / -1 / -1; }

    .project-text-odd { grid-area: 1 / 7 / -1 / -1; }
    .project-img-wrapper-odd { grid-area: 1 / 1 / -1 / 9; }

    .project-text-odd h3 { text-align: right; }
    .project-text-odd .project-used-stuff, .project-text-odd .project-links { justify-content: flex-end; }

    .project-text-box {
        padding-right: 0;
        background: var(--clr-neutral-800);
        border-radius: 8px;
        box-shadow: 0 10px 30px -15px var(--clr-neutral-900);
    }

    .project-img-wrapper {
        width: 100%;
        max-width: 50rem;
    }

    .project-img::after { background-color: var(--clr-image-blur2); }

    .project-img:hover:before,
    .project-img:hover:after {
        background-color: transparent;
    }

    .contact { margin-block: 10rem 18rem; }
    .contact-form { grid-template-columns: auto auto; }
    .column { align-content: space-between; }
    .input { margin-bottom: 0; }
    .input:not(.message) { height: 3.8rem; }
    .submit { grid-column: 2; }
    .gap { --gap: 0 var(--size-600) }

    .primary-footer > .container {
        grid-template-areas: 
        "logo nav email"
        "social nav copyright";
        grid-template-columns: auto auto auto;
    }

    .primary-footer__nav > ul { gap: var(--size-600) var(--size-800); }
    .footer__socials > li > a { font-size: var(--fs-600); }
}

@media (min-width: 70em) {
    .project-text { grid-area: 1 / 1 / -1 / 7; }
    .project-img-wrapper { grid-area: 1 / 6 / -1 / -1; }

    .project-text-odd { grid-area: 1 / 7 / -1 / -1; }
    .project-img-wrapper-odd { grid-area: 1 / 1 / -1 / 8; }
}

@media (min-width: 80em) {
    .home-welcome {
        padding: 1.688rem 18.75rem;
        width: 90ch;
    }

    .about, .contact, .section-title:not(.about > .section-title, .contact > .section-title) { padding-inline: 12.5rem; }
}

/* Utility classes */
.visually-hidden {
    position: absolute;
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0,0,0,0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.container {
    width: min(var(--max-width), 100% - (var(--container-padding) * 2));
    margin-inline: auto;
}

@media (min-width: 60em) {
    .screen-container {
        width: min(var(--max-width), 100% - (var(--container-padding) * 2));
        margin-inline: auto;
    }
}

.sm-display-none { display: none; }
.sm-display-block { display: block; }
.sm-display-inline-flex { display: inline-flex; }

.sm-display-flex {
    display: flex;
    gap: var(--gap, 1rem);
}

.sm-display-grid { /* Even Columns */
    display: grid;
    gap: var(--gap, 1rem);
}

.sm-justify-content-start { justify-content: flex-start; }
.sm-justify-content-center { justify-content: center; }
.sm-justify-content-end { justify-content: flex-end; }
.sm-justify-content-between { justify-content: space-between; }

.sm-justify-items-start { justify-items: flex-start }
.sm-justify-items-center { justify-content: center; }
.sm-justify-items-end { justify-content: flex-end; }

.sm-justify-self-start { justify-self: start; }
.sm-justify-self-center { justify-self: center; }
.sm-justify-self-end { justify-self: end; }

.sm-align-items-start { align-items: flex-start; }
.sm-align-items-center { align-items: center; }
.sm-align-items-end { align-items: flex-end; }

.sm-align-self-start { align-self: flex-start; }
.sm-align-self-center { align-self: center; }
.sm-align-self-end { align-self: flex-end; }

.sm-text-align-left { text-align: left; }
.sm-text-align-center { text-align: center; }
.sm-text-align-right { text-align: right; }

.sm-text-align-left { text-align: left; }
.sm-text-align-center { text-align: center; }
.sm-text-align-right { text-align: right; }

.sm-fs-100 { font-size: var(--fs-100); }
.sm-fs-200 { font-size: var(--fs-200); }
.sm-fs-300 { font-size: var(--fs-300); }
.sm-fs-400 { font-size: var(--fs-400); }
.sm-fs-500 { font-size: var(--fs-500); }
.sm-fs-550 { font-size: var(--fs-550); }
.sm-fs-600 { font-size: var(--fs-600); }
.sm-fs-700 { font-size: var(--fs-700); }
.sm-fs-800 { font-size: var(--fs-800); }
.sm-fs-900 { font-size: var(--fs-900); }

.sm-margin-auto { margin-inline: auto; }

.sm-margin-100 { margin: var(--size-100); }
.sm-margin-200 { margin: var(--size-200); }
.sm-margin-300 { margin: var(--size-300); }
.sm-margin-400 { margin: var(--size-400); }
.sm-margin-500 { margin: var(--size-500); }
.sm-margin-600 { margin: var(--size-600); }
.sm-margin-700 { margin: var(--size-700); }
.sm-margin-800 { margin: var(--size-800); }
.sm-margin-900 { margin: var(--size-900); }

.sm-margin-block-100 { margin-block: var(--size-100); }
.sm-margin-block-200 { margin-block: var(--size-200); }
.sm-margin-block-300 { margin-block: var(--size-300); }
.sm-margin-block-400 { margin-block: var(--size-400); }
.sm-margin-block-500 { margin-block: var(--size-500); }
.sm-margin-block-600 { margin-block: var(--size-600); }
.sm-margin-block-700 { margin-block: var(--size-700); }
.sm-margin-block-800 { margin-block: var(--size-800); }
.sm-margin-block-900 { margin-block: var(--size-900); }

.sm-margin-inline-100 { margin-inline: var(--size-100); }
.sm-margin-inline-200 { margin-inline: var(--size-200); }
.sm-margin-inline-300 { margin-inline: var(--size-300); }
.sm-margin-inline-400 { margin-inline: var(--size-400); }
.sm-margin-inline-500 { margin-inline: var(--size-500); }
.sm-margin-inline-600 { margin-inline: var(--size-600); }
.sm-margin-inline-700 { margin-inline: var(--size-700); }
.sm-margin-inline-800 { margin-inline: var(--size-800); }
.sm-margin-inline-900 { margin-inline: var(--size-900); }

.sm-margin-top-100 { margin-top: var(--size-100); }
.sm-margin-top-200 { margin-top: var(--size-200); }
.sm-margin-top-300 { margin-top: var(--size-300); }
.sm-margin-top-400 { margin-top: var(--size-400); }
.sm-margin-top-500 { margin-top: var(--size-500); }
.sm-margin-top-600 { margin-top: var(--size-600); }
.sm-margin-top-700 { margin-top: var(--size-700); }
.sm-margin-top-800 { margin-top: var(--size-800); }
.sm-margin-top-900 { margin-top: var(--size-900); }

.sm-margin-left-100 { margin-left: var(--size-100); }
.sm-margin-left-200 { margin-left: var(--size-200); }
.sm-margin-left-300 { margin-left: var(--size-300); }
.sm-margin-left-400 { margin-left: var(--size-400); }
.sm-margin-left-500 { margin-left: var(--size-500); }
.sm-margin-left-600 { margin-left: var(--size-600); }
.sm-margin-left-700 { margin-left: var(--size-700); }
.sm-margin-left-800 { margin-left: var(--size-800); }
.sm-margin-left-900 { margin-left: var(--size-900); }

.sm-margin-bottom-100 { margin-bottom: var(--size-100); }
.sm-margin-bottom-200 { margin-bottom: var(--size-200); }
.sm-margin-bottom-300 { margin-bottom: var(--size-300); }
.sm-margin-bottom-400 { margin-bottom: var(--size-400); }
.sm-margin-bottom-500 { margin-bottom: var(--size-500); }
.sm-margin-bottom-600 { margin-bottom: var(--size-600); }
.sm-margin-bottom-700 { margin-bottom: var(--size-700); }
.sm-margin-bottom-800 { margin-bottom: var(--size-800); }
.sm-margin-bottom-900 { margin-bottom: var(--size-900); }

.sm-margin-right-100 { margin-right: var(--size-100); }
.sm-margin-right-200 { margin-right: var(--size-200); }
.sm-margin-right-300 { margin-right: var(--size-300); }
.sm-margin-right-400 { margin-right: var(--size-400); }
.sm-margin-right-500 { margin-right: var(--size-500); }
.sm-margin-right-600 { margin-right: var(--size-600); }
.sm-margin-right-700 { margin-right: var(--size-700); }
.sm-margin-right-800 { margin-right: var(--size-800); }
.sm-margin-right-900 { margin-right: var(--size-900); }

.sm-padding-100 { padding: var(--size-100); }
.sm-padding-200 { padding: var(--size-200); }
.sm-padding-300 { padding: var(--size-300); }
.sm-padding-400 { padding: var(--size-400); }
.sm-padding-500 { padding: var(--size-500); }
.sm-padding-600 { padding: var(--size-600); }
.sm-padding-700 { padding: var(--size-700); }
.sm-padding-800 { padding: var(--size-800); }
.sm-padding-900 { padding: var(--size-900); }

.sm-padding-block-100 { padding-block: var(--size-100); }
.sm-padding-block-200 { padding-block: var(--size-200); }
.sm-padding-block-300 { padding-block: var(--size-300); }
.sm-padding-block-400 { padding-block: var(--size-400); }
.sm-padding-block-500 { padding-block: var(--size-500); }
.sm-padding-block-600 { padding-block: var(--size-600); }
.sm-padding-block-700 { padding-block: var(--size-700); }
.sm-padding-block-800 { padding-block: var(--size-800); }
.sm-padding-block-900 { padding-block: var(--size-900); }

.sm-padding-inline-100 { padding-inline: var(--size-100); }
.sm-padding-inline-200 { padding-inline: var(--size-200); }
.sm-padding-inline-300 { padding-inline: var(--size-300); }
.sm-padding-inline-400 { padding-inline: var(--size-400); }
.sm-padding-inline-500 { padding-inline: var(--size-500); }
.sm-padding-inline-600 { padding-inline: var(--size-600); }
.sm-padding-inline-700 { padding-inline: var(--size-700); }
.sm-padding-inline-800 { padding-inline: var(--size-800); }
.sm-padding-inline-900 { padding-inline: var(--size-900); }

.sm-padding-top-100 { padding-top: var(--size-100); }
.sm-padding-top-200 { padding-top: var(--size-200); }
.sm-padding-top-300 { padding-top: var(--size-300); }
.sm-padding-top-400 { padding-top: var(--size-400); }
.sm-padding-top-500 { padding-top: var(--size-500); }
.sm-padding-top-600 { padding-top: var(--size-600); }
.sm-padding-top-700 { padding-top: var(--size-700); }
.sm-padding-top-800 { padding-top: var(--size-800); }
.sm-padding-top-900 { padding-top: var(--size-900); }

.sm-padding-left-100 { padding-left: var(--size-100); }
.sm-padding-left-200 { padding-left: var(--size-200); }
.sm-padding-left-300 { padding-left: var(--size-300); }
.sm-padding-left-400 { padding-left: var(--size-400); }
.sm-padding-left-500 { padding-left: var(--size-500); }
.sm-padding-left-600 { padding-left: var(--size-600); }
.sm-padding-left-700 { padding-left: var(--size-700); }
.sm-padding-left-800 { padding-left: var(--size-800); }
.sm-padding-left-900 { padding-left: var(--size-900); }

.sm-padding-bottom-100 { padding-bottom: var(--size-100); }
.sm-padding-bottom-200 { padding-bottom: var(--size-200); }
.sm-padding-bottom-300 { padding-bottom: var(--size-300); }
.sm-padding-bottom-400 { padding-bottom: var(--size-400); }
.sm-padding-bottom-500 { padding-bottom: var(--size-500); }
.sm-padding-bottom-600 { padding-bottom: var(--size-600); }
.sm-padding-bottom-700 { padding-bottom: var(--size-700); }
.sm-padding-bottom-800 { padding-bottom: var(--size-800); }
.sm-padding-bottom-900 { padding-bottom: var(--size-900); }

.sm-padding-right-100 { padding-right: var(--size-100); }
.sm-padding-right-200 { padding-right: var(--size-200); }
.sm-padding-right-300 { padding-right: var(--size-300); }
.sm-padding-right-400 { padding-right: var(--size-400); }
.sm-padding-right-500 { padding-right: var(--size-500); }
.sm-padding-right-600 { padding-right: var(--size-600); }
.sm-padding-right-700 { padding-right: var(--size-700); }
.sm-padding-right-800 { padding-right: var(--size-800); }
.sm-padding-right-900 { padding-right: var(--size-900); }

@media (min-width: 60em) {
    .display-none { display: none; }
    .display-block { display: block; }
    .display-inline-flex { display: inline-flex; }

    .display-flex {
        display: flex;
        gap: var(--gap, 1rem);
    }

    .display-grid { /* Even Columns */
        display: grid;
        gap: var(--gap, 1rem);
    }

    .justify-content-start { justify-content: flex-start; }
    .justify-content-center { justify-content: center; }
    .justify-content-end { justify-content: flex-end; }
    .justify-content-between { justify-content: space-between; }

    .justify-items-start { justify-items: flex-start }
    .justify-items-center { justify-content: center; }
    .justify-items-end { justify-content: flex-end; }

    .justify-self-start { justify-self: start; }
    .justify-self-center { justify-self: center; }
    .justify-self-end { justify-self: end; }

    .align-items-start { align-items: flex-start; }
    .align-items-center { align-items: center; }
    .align-items-end { align-items: flex-end; }

    .align-self-start { align-self: flex-start; }
    .align-self-center { align-self: center; }
    .align-self-end { align-self: flex-end; }

    .text-align-left { text-align: left; }
    .text-align-center { text-align: center; }
    .text-align-right { text-align: right; }

    .fs-100 { font-size: var(--fs-100); }
    .fs-200 { font-size: var(--fs-200); }
    .fs-300 { font-size: var(--fs-300); }
    .fs-400 { font-size: var(--fs-400); }
    .fs-500 { font-size: var(--fs-500); }
    .fs-550 { font-size: var(--fs-550); }
    .fs-600 { font-size: var(--fs-600); }
    .fs-700 { font-size: var(--fs-700); }
    .fs-800 { font-size: var(--fs-800); }
    .fs-900 { font-size: var(--fs-900); }

    .margin-auto { margin-inline: auto; }

    .margin-100 { margin: var(--size-100); }
    .margin-200 { margin: var(--size-200); }
    .margin-300 { margin: var(--size-300); }
    .margin-400 { margin: var(--size-400); }
    .margin-500 { margin: var(--size-500); }
    .margin-600 { margin: var(--size-600); }
    .margin-700 { margin: var(--size-700); }
    .margin-800 { margin: var(--size-800); }
    .margin-900 { margin: var(--size-900); }

    .margin-block-100 { margin-block: var(--size-100); }
    .margin-block-200 { margin-block: var(--size-200); }
    .margin-block-300 { margin-block: var(--size-300); }
    .margin-block-400 { margin-block: var(--size-400); }
    .margin-block-500 { margin-block: var(--size-500); }
    .margin-block-600 { margin-block: var(--size-600); }
    .margin-block-700 { margin-block: var(--size-700); }
    .margin-block-800 { margin-block: var(--size-800); }
    .margin-block-900 { margin-block: var(--size-900); }

    .margin-inline-100 { margin-inline: var(--size-100); }
    .margin-inline-200 { margin-inline: var(--size-200); }
    .margin-inline-300 { margin-inline: var(--size-300); }
    .margin-inline-400 { margin-inline: var(--size-400); }
    .margin-inline-500 { margin-inline: var(--size-500); }
    .margin-inline-600 { margin-inline: var(--size-600); }
    .margin-inline-700 { margin-inline: var(--size-700); }
    .margin-inline-800 { margin-inline: var(--size-800); }
    .margin-inline-900 { margin-inline: var(--size-900); }

    .margin-top-100 { margin-top: var(--size-100); }
    .margin-top-200 { margin-top: var(--size-200); }
    .margin-top-300 { margin-top: var(--size-300); }
    .margin-top-400 { margin-top: var(--size-400); }
    .margin-top-500 { margin-top: var(--size-500); }
    .margin-top-600 { margin-top: var(--size-600); }
    .margin-top-700 { margin-top: var(--size-700); }
    .margin-top-800 { margin-top: var(--size-800); }
    .margin-top-900 { margin-top: var(--size-900); }

    .margin-left-100 { margin-left: var(--size-100); }
    .margin-left-200 { margin-left: var(--size-200); }
    .margin-left-300 { margin-left: var(--size-300); }
    .margin-left-400 { margin-left: var(--size-400); }
    .margin-left-500 { margin-left: var(--size-500); }
    .margin-left-600 { margin-left: var(--size-600); }
    .margin-left-700 { margin-left: var(--size-700); }
    .margin-left-800 { margin-left: var(--size-800); }
    .margin-left-900 { margin-left: var(--size-900); }

    .margin-bottom-100 { margin-bottom: var(--size-100); }
    .margin-bottom-200 { margin-bottom: var(--size-200); }
    .margin-bottom-300 { margin-bottom: var(--size-300); }
    .margin-bottom-400 { margin-bottom: var(--size-400); }
    .margin-bottom-500 { margin-bottom: var(--size-500); }
    .margin-bottom-600 { margin-bottom: var(--size-600); }
    .margin-bottom-700 { margin-bottom: var(--size-700); }
    .margin-bottom-800 { margin-bottom: var(--size-800); }
    .margin-bottom-900 { margin-bottom: var(--size-900); }

    .margin-right-100 { margin-right: var(--size-100); }
    .margin-right-200 { margin-right: var(--size-200); }
    .margin-right-300 { margin-right: var(--size-300); }
    .margin-right-400 { margin-right: var(--size-400); }
    .margin-right-500 { margin-right: var(--size-500); }
    .margin-right-600 { margin-right: var(--size-600); }
    .margin-right-700 { margin-right: var(--size-700); }
    .margin-right-800 { margin-right: var(--size-800); }
    .margin-right-900 { margin-right: var(--size-900); }

    .padding-100 { padding: var(--size-100); }
    .padding-200 { padding: var(--size-200); }
    .padding-300 { padding: var(--size-300); }
    .padding-400 { padding: var(--size-400); }
    .padding-500 { padding: var(--size-500); }
    .padding-600 { padding: var(--size-600); }
    .padding-700 { padding: var(--size-700); }
    .padding-800 { padding: var(--size-800); }
    .padding-900 { padding: var(--size-900); }

    .padding-block-100 { padding-block: var(--size-100); }
    .padding-block-200 { padding-block: var(--size-200); }
    .padding-block-300 { padding-block: var(--size-300); }
    .padding-block-400 { padding-block: var(--size-400); }
    .padding-block-500 { padding-block: var(--size-500); }
    .padding-block-600 { padding-block: var(--size-600); }
    .padding-block-700 { padding-block: var(--size-700); }
    .padding-block-800 { padding-block: var(--size-800); }
    .padding-block-900 { padding-block: var(--size-900); }

    .padding-inline-100 { padding-inline: var(--size-100); }
    .padding-inline-200 { padding-inline: var(--size-200); }
    .padding-inline-300 { padding-inline: var(--size-300); }
    .padding-inline-400 { padding-inline: var(--size-400); }
    .padding-inline-500 { padding-inline: var(--size-500); }
    .padding-inline-600 { padding-inline: var(--size-600); }
    .padding-inline-700 { padding-inline: var(--size-700); }
    .padding-inline-800 { padding-inline: var(--size-800); }
    .padding-inline-900 { padding-inline: var(--size-900); }

    .padding-top-100 { padding-top: var(--size-100); }
    .padding-top-200 { padding-top: var(--size-200); }
    .padding-top-300 { padding-top: var(--size-300); }
    .padding-top-400 { padding-top: var(--size-400); }
    .padding-top-500 { padding-top: var(--size-500); }
    .padding-top-600 { padding-top: var(--size-600); }
    .padding-top-700 { padding-top: var(--size-700); }
    .padding-top-800 { padding-top: var(--size-800); }
    .padding-top-900 { padding-top: var(--size-900); }

    .padding-left-100 { padding-left: var(--size-100); }
    .padding-left-200 { padding-left: var(--size-200); }
    .padding-left-300 { padding-left: var(--size-300); }
    .padding-left-400 { padding-left: var(--size-400); }
    .padding-left-500 { padding-left: var(--size-500); }
    .padding-left-600 { padding-left: var(--size-600); }
    .padding-left-700 { padding-left: var(--size-700); }
    .padding-left-800 { padding-left: var(--size-800); }
    .padding-left-900 { padding-left: var(--size-900); }

    .padding-bottom-100 { padding-bottom: var(--size-100); }
    .padding-bottom-200 { padding-bottom: var(--size-200); }
    .padding-bottom-300 { padding-bottom: var(--size-300); }
    .padding-bottom-400 { padding-bottom: var(--size-400); }
    .padding-bottom-500 { padding-bottom: var(--size-500); }
    .padding-bottom-600 { padding-bottom: var(--size-600); }
    .padding-bottom-700 { padding-bottom: var(--size-700); }
    .padding-bottom-800 { padding-bottom: var(--size-800); }
    .padding-bottom-900 { padding-bottom: var(--size-900); }

    .padding-right-100 { padding-right: var(--size-100); }
    .padding-right-200 { padding-right: var(--size-200); }
    .padding-right-300 { padding-right: var(--size-300); }
    .padding-right-400 { padding-right: var(--size-400); }
    .padding-right-500 { padding-right: var(--size-500); }
    .padding-right-600 { padding-right: var(--size-600); }
    .padding-right-700 { padding-right: var(--size-700); }
    .padding-right-800 { padding-right: var(--size-800); }
    .padding-right-900 { padding-right: var(--size-900); }
}

.text-primary-400 { color: var(--clr-primary-400); }
.text-neutral-100 { color: var(--clr-neutral-100); }
.text-neutral-200 { color: var(--clr-neutral-200); }
.text-neutral-300 { color: var(--clr-neutral-300); }
.text-neutral-400 { color: var(--clr-neutral-400); }
.text-neutral-800 { color: var(--clr-neutral-800); }
.text-neutral-900 { color: var(--clr-neutral-900); }

.bg-primary-400 { background-color: var(--clr-primary-400); }
.bg-neutral-100 { background-color: var(--clr-neutral-100); }
.bg-neutral-200 { background-color: var(--clr-neutral-200); }
.bg-neutral-300 { background-color: var(--clr-neutral-300); }
.bg-neutral-400 { background-color: var(--clr-neutral-400); }
.bg-neutral-800 { background-color: var(--clr-neutral-800); }
.bg-neutral-900 { background-color: var(--clr-neutral-900); }

.fw-bold { font-weight: var(--fw-bold); }
.fw-medium { font-weight: var(--fw-medium); }
.fw-regular { font-weight: var(--fw-regular); }

.ff-primary { font-family: var(--ff-primary); }
.ff-secondary { font-family: var(--ff-secondary); }

.fs-primary-heading { 
    font-size: var(--fs-primary-heading);
    line-height: 1.2; 
}

.fs-secondary-heading { 
    font-size: var(--fs-secondary-heading); 
    line-height: 1.2;
}

.line-height-13 {
    line-height: 1.3;
}

/* Animations */
@keyframes rotate {
    from {
        rotate: 0deg;
    }

    50% {
        scale: 1 1.5;
    }
    
    to {
        rotate: 360deg;
    }
}

@keyframes pop-in-button {
    from {
        transform: translateY(38px);
    }

    to {
        transform: translateY(-25px);
    }
}

@keyframes pop-out-button {
    from {
        transform: translateY(-25px);
    }

    to {
        transform: translateY(38px);
    }
}

@keyframes text-slide-in {
    from {
        transform: translate(50px, 12px);
        opacity: 0;
    }

    18% {
        opacity: 0;
    }

    75% {
        opacity: 1;
    }

    to {
        transform: translate(-120px, 12px);
    }
}

@keyframes text-slide-out {
    from {
        transform: translate(-120px, 12px);
        opacity: 1;
    }

    20% {
        opacity: 0;
    }

    to {
        transform: translate(50px, 12px);
    }
}

@keyframes slide-in {
    from {
        transform: translateY(-135%);
    }

    to {
        transform: translateY(0%);
    }
}

@keyframes slide-out {
    from {
        transform: translateY(0%);
    }

    to {
        transform: translateY(-135%);
    }
}

@keyframes slide-in-side-left {
    from {
        transform: translateX(-185%) translateY(-20px);
    }

    to {
        transform: translateX(0%) translateY(-20px);
    }
}

@keyframes slide-out-side-left {
    from {
        transform: translateX(0%) translateY(-20px);
    }

    to {
        transform: translateX(-185%) translateY(-20px);
    }
}

@keyframes slide-in-side-right {
    from {
        transform: translate(55%, -150px) rotateZ(-90deg);
    }

    to {
        transform: translate(93px, -150px) rotateZ(-90deg);
    }
}

@keyframes slide-out-side-right {
    from {
        right: 0; 
        transform: translate(93px, -150px) rotateZ(-90deg);
    }

    to {
        transform: translate(55%, -150px) rotateZ(-90deg);
    }
}
