@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;500;700;900&display=swap');

*, ::after, ::before {
    box-sizing: border-box;
    scroll-behavior: smooth;
    font-family: 'Noto Sans KR', sans-serif;
}

.fade-animate {
    opacity: 0;
    transition: opacity .5s, transform .8s;
}

.fade-animate.fade-left {
    transform: translateX(-10%) translateY(-10%);
}

.fade-animate.fade-right {
    transition: opacity .8s;
    transition-delay: .5s;
}

.fade-animate.fade-top {
    transform: translateY(20%);
    transition-delay: .3s;
}

.fade-animate.active {
    transform: translateX(0) translateY(0);
    opacity: 1;
}

body {
    margin: 0;
}

.stop-scrolling {
    overflow: hidden;
}

#root {
    position: relative;
    margin: 0;
    padding: 0;
    font-size: 14px;
    font-family: 'Noto Sans KR', sans-serif;
    font-weight: 300;
    color: #777777;
    overflow-y: overlay;
    overflow-x: hidden;
    background: linear-gradient(85deg, #97ffe4, #ffaa97, #ac97ff, #97ffe4);
    background-size: 400% 400%;
    -webkit-animation: gradient 30s ease infinite;
    -moz-animation: gradient 30s ease infinite;
    animation: gradient 30s ease infinite;
}

#root:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    mix-blend-mode: hard-light;
    background-repeat: repeat;
    background-position: center center;
    background-image: url(https://grainy-gradients.vercel.app/noise.svg);
    opacity: 0.5;
}

ul, li, p {
    margin: 0;
    padding: 0;
}

li {
    list-style: none;
}

a {
    text-decoration: none;
    transition: color 0.2s linear;
}

a, a:link, a:visited, a:hover, a:active {
    color: inherit;
}

h1, h1, h2, h3, h5, h6 {
    margin: 0;
    font-weight: inherit;
    text-transform: uppercase;
    cursor: default;
}

h1 {
    font-size: 2.5rem;
    letter-spacing: 0.8rem;
    margin-right: -0.8rem;
    font-weight: 700;
    margin-bottom: 90px;
    text-align: center;
    color: #fff;
}

h2, .list-title {
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: 0.5rem;
    margin-right: -0.5rem;
    text-transform: uppercase;
}

img {
    vertical-align: middle;
    border-style: none;
}

.inner {
    width: 100%;
    max-width: 1120px;
    margin-right: auto;
    margin-left: auto;
    transition: all 0.3s ease-in-out;
}

.content {
    display: flex;
}

.skill-desc.html {
    background-color: rgb(227, 79, 38, 0.2);
}

.skill-desc.css {
    background-color: rgb(21, 115, 183, 0.1);
}

.skill-desc.js {
    background-color: rgb(247, 222, 28, 0.1);
}

.skill-desc.jquery {
    background-color: rgb(7, 103, 171, 0.1);
}

.skill-desc.react {
    background-color: rgb(96, 217, 251, 0.1);
}

.skill-desc.firebase {
    background-color: rgb(255, 201, 41, 0.1);
}

.skill-desc.ts {
    background-color: rgb(49, 120, 196, 0.1);
}

.skill-desc.nodejs {
    background-color: rgb(51, 153, 51, 0.1);
}

.skill-desc.express {
    background-color: rgb(0, 0, 0, 0.1);
}

.skill-desc.figma {
    background-color: rgb(242, 78, 30, 0.1);
}

.skill-desc.sass {
    background-color: rgba(242, 30, 118, 0.1);
}

/* header */

.header-wrap {
    position: absolute;
    width: 100%;
    top: 0;
    left: 0;
    z-index: 3;
}

.header-wrap.on,
button.top.on {
    position: fixed;
    background-color: rgba(255, 255, 255, 0.3);
    backdrop-filter: saturate(150%) blur(30px);
    -webkit-backdrop-filter: saturate(150%) blur(30px);
    box-shadow: 0px 3px 10px 0px rgb(153 153 153 / 10%);
    transition: transform .5s ease, background-color .5s ease;
}

.header-wrap.on {
    top: -70px;
    transform: translateY(70px);
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.header-wrap.on .nav-link:hover {
    color: #777;
}

.header-wrap.on .nav-logotext {
    font-weight: 900;
    color: transparent;
    background: linear-gradient(85deg, #97ffe4, #ffaa97, #ac97ff, #97ffe4);
    background-size: 800% 800%;
    -webkit-animation: gradient 30s ease infinite;
    -moz-animation: gradient 30s ease infinite;
    animation: gradient 30s ease infinite;
    -webkit-background-clip: text;
    background-clip: text;
}

.navbar {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    background-color: transparent;
}

.navbar .inner {
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    -ms-flex-align: center;
    align-items: center;
    -ms-flex-pack: justify;
    justify-content: space-between
}

button.top {
    display: flex;
    position: fixed;
    align-items: center;
    justify-content: center;
    right: 15px;
    bottom: -40px;
    width: 2.5rem;
    height: 2.5rem;
    font-family: 'Material Symbols Rounded';
    font-size: 0;
    line-height: 2.5rem;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, 0.2);
    cursor: pointer;
    transition: transform .5s ease, background .5s ease;
}

button.top.on {
    transform: translateY(-50px);
}

button.top.on::after {
    content: "";
    position: relative;
    border-top: 2px solid #777;
    border-left: 2px solid #777;
    width: 10px;
    transform: rotate(45deg);
    height: 10px;
    top: 1px;
}

.nav-menu {
    display: flex;
    flex-direction: row;
    margin: 0 0 0 auto;
}

.nav-logo .nav-logotext {
    vertical-align: middle;
    font-size: 19.2px;
    font-weight: 700;
    color: #fff;
}

.nav-menu .nav-item+.nav-item {
    margin-left: 45px;
}

.nav-menu .nav-item .nav-link {
    color: #fff;
    line-height: 120px;
    display: block;
    width: 100%;
    transition: text-shadow 0.05s linear;
}

.header-wrap.on .nav-link {
    line-height: 70px;
    color: #777;
}

.nav-menu .nav-item .nav-link:hover:not(.actvie),
.nav-menu .nav-item .nav-link.active {
    text-shadow: .25px 0px .1px,
        -.25px 0px .1px;
}

/* sections */

section {
    height: 100vh;
    min-height: 860px;
}

section+section {
    padding: 160px 0;
}

section#projects {
    background-color: #fff;
}

section#skills, section#works {
    background-color: #f1f1f1;
}

#section#home, section#projects, section#works {
    height: 100%;
}

section#projects h1, section#skills h1, section#works h1 {
    color: #777777;
}

.card {
    border: 1px solid rgba(255, 255, 255, 0.3);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.3);
    backdrop-filter: saturate(150%) blur(20px);
    -webkit-backdrop-filter: saturate(150%) blur(20px);
    box-shadow: 0px 20px 20px 0px rgb(153 153 153 / 10%);
}

/* home */

#home {
    padding-top: 120px;
    position: relative;
}

#home .inner {
    position: relative;
    transition: all 0.3s ease;
    display: flex;
    justify-content: center;
    width: 100%;
    height: 100%;
    padding-top: 30px;
}

#home .content {
    flex-direction: column;
}

#home .content-left img {
    width: max-content;
    transition: all 0.3s ease;
}

#home .content-right {
    position: relative;
    bottom: 135px;
    right: -80px;
    transform: rotate(341deg);
}

#home .home-text {
    width: fit-content;
    display: flex;
    flex-direction: column;
}

/* curved text */
.warp__placeholder {
    position: absolute;
    color: transparent;
    font-size: .1px;
}

.warp {
    display: block;
    position: relative;
    width: 783px;
    height: 163px;
    font: 900 50px/1 'Noto Sans KR';
    transform-box: fill-box;
    color: #fff;
}

.warp:nth-child(2) {
    bottom: 120px;
    left: -5px;
    color: rgba(255, 255, 255, 0.5);
}

.warp:nth-child(3) {
    bottom: 240px;
    left: -10px;
    color: rgba(255, 255, 255, 0.25);
}

[class*='warp__'] {
    display: block;
    position: absolute;
}

.warp__0, .warp__1, .warp__2, .warp__3, .warp__4, .warp__5, .warp__6, .warp__7, .warp__8, .warp__9, .warp__10 {
    -webkit-text-stroke: 1px;
    -webkit-text-fill-color: transparent;
}

.warp__0 {
    transform-origin: 19px 47px;
    transform: translate(-3.7753px, 28.3282px) rotate(0.5004rad);
}

.warp__1 {
    transform-origin: 16px 47px;
    transform: translate(33.3862px, 46.3823px) rotate(0.438034rad);
}

.warp__2 {
    transform-origin: 15px 47px;
    transform: translate(67.8948px, 58.7679px) rotate(0.279327rad);
}

.warp__3 {
    transform-origin: 15px 47px;
    transform: translate(101.5844px, 66.3389px) rotate(0.168099rad);
}

.warp__4 {
    transform-origin: 19px 47px;
    transform: translate(135.3107px, 70.903px) rotate(0.073527rad);
}

.warp__5 {
    transform-origin: 9px 47px;
    transform: translate(178.9376px, 72.2106px) rotate(0.007109rad);
}

.warp__6 {
    transform-origin: 9px 47px;
    transform: translate(208.6502px, 71.905px) rotate(-0.033514rad);
}

.warp__7 {
    transform-origin: 14px 47px;
    transform: translate(223.7637px, 70.3311px) rotate(-0.079987rad);
}

.warp__8 {
    transform-origin: 16px 47px;
    transform: translate(256.7508px, 66.505px) rotate(-0.138055rad);
}

.warp__9 {
    transform-origin: 22px 47px;
    transform: translate(293.3947px, 59.0168px) rotate(-0.216313rad);
}

.warp__10 {
    transform-origin: 14px 47px;
    transform: translate(340.3px, 48.3086px) rotate(-0.324322rad);
}

.warp__11 {
    transform-origin: 16px 47px;
    transform: translate(372.1394px, 36.3995px) rotate(-0.301955rad);
}

.warp__12 {
    transform-origin: 19px 47px;
    transform: translate(408.1031px, 26.264200000000002px) rotate(-0.2088rad);
}

.warp__13 {
    transform-origin: 16px 47px;
    transform: translate(451.0316px, 19.623000000000005px) rotate(-0.121326rad);
}

.warp__14 {
    transform-origin: 16px 47px;
    transform: translate(487.9954px, 16.6096px) rotate(-0.043671rad);
}

.warp__15 {
    transform-origin: 14px 47px;
    transform: translate(524.0079px, 16.362499999999997px) rotate(0.029336rad);
}

.warp__16 {
    transform-origin: 19px 47px;
    transform: translate(557.4833px, 19.063500000000005px) rotate(0.110798rad);
}

.warp__17 {
    transform-origin: 15px 47px;
    transform: translate(600.6593px, 24.985100000000003px) rotate(0.192916rad);
}

.warp__18 {
    transform-origin: 16px 47px;
    transform: translate(634.1298px, 33.043499999999995px) rotate(0.266169rad);
}

.warp__19 {
    transform-origin: 17px 47px;
    transform: translate(669.1496px, 44.5428px) rotate(0.343545rad);
}

.warp__20 {
    transform-origin: 9px 47px;
    transform: translate(706.9351px, 56.054px) rotate(0.405154rad);
}

.warp__21 {
    transform-origin: 19px 47px;
    transform: translate(726.7108px, 69.9397px) rotate(0.467136rad);
}

/* about */

#about {
    padding: 220px 0 130px;
    position: relative;
}

#about::after {
    content: "";
    display: flex;
    position: absolute;
    width: 100%;
    height: 480px;
    left: 0;
    bottom: 0;
    background-color: #fff;
    transition: all 0.3s ease;
}

#about .content {
    justify-content: space-between;
}

#about .content ul,
#projects .content {
    padding: 25px;
    z-index: 1;
    width: 33.3%;
}

#about .content .list-title {
    margin-bottom: 30px;
    font-size: 1.2rem;
}

#about .content ul+ul {
    margin-left: 20px;
}

#about .content li+li {
    margin-top: 8px;
}

#about .content li {
    display: flex;
    align-items: center;
    font-size: 1rem;
    color: #777777;
}

#about .education li,
#about .license li {
    flex-direction: column;
    flex-wrap: wrap;
    align-items: flex-start;
}

#about .content li::before {
    font-family: 'Material Symbols Rounded';
    font-size: 16px;
    margin-right: 5px;
}

.birth::before {
    content: '\ebcc';
}

.call::before {
    content: '\e0b0';
}

.email::before {
    content: '\e158';
}

.location::before {
    content: '\e88a';
}

#about .content .date {
    font-weight: 500;
}

/* skills */

#skills .skills-wrap {
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 20px;
}

#skills .skills-wrap h2 {
    text-align: center;
}

#skills .skills-wrap .list-wrap {
    display: grid;
    align-content: stretch;
    align-items: start;
    background-color: #fff;
    padding: 30px 25px;
    width: 25%;
    gap: 20px;
}

#skills .skill-list {
    display: grid;
    align-items: flex-start;
    grid-template-columns: repeat(6, 1fr);
    grid-row-gap: 15px;
}

#skills .skill-list li {
    display: flex;
    flex-direction: column-reverse;
    flex-wrap: wrap;
    align-items: center;
    grid-column: span 3;
}

#skills .skill-list li:last-child {
    grid-column: span 6;
}

#skills .list-wrap.devops .skill-list li {
    grid-column: auto / span 3;
}

#skills .skill-list li h3 {
    margin-top: 5px;
    font-weight: 500;
    max-width: 100px;
    text-align: center;
}

/* projects */

#projects .cards {
    display: flex;
    flex-direction: column;
}

#projects .cards>li {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 40px 30px;
    border: 1px solid #eeeeee;
}

#projects .cards>li+li {
    margin-top: 40px;
}

#projects .content-top {
    display: flex;
}

#projects .content-left {
    display: flex;
    flex-direction: column;
}

#projects .content-right {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding-left: 50px;
}

#projects li {
    text-transform: uppercase;
}

#projects .content-left .url-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-column-gap: 15px;
    justify-content: center;
    margin-top: 20px;
}

#projects .content-left .url-list li {
    display: block;
    font-weight: 500;
    border: 1px solid #eee;
    padding: 10px;
    width: 100%;
    height: max-content;
    text-align: center;
    border-radius: 5px;
    transition: background 0.2s linear;
    cursor: pointer;
}

#projects .content-left .url-list li:hover {
    background-color: rgb(153 153 153 / 10%);
}

#projects .detail-btn button {
    border: none;
    background-color: transparent;
    color: inherit;
    font-size: 14px;
    text-transform: uppercase;
    cursor: pointer;
}

#projects .proj-thumb {
    max-width: 600px;
    border: 1px solid #eee;
}

#projects h2 {
    font-size: 1.8rem;
    margin-bottom: 20px;
}

#projects h3 {
    margin: 20px 0;
}

#projects .skill-list, #projects .library-list {
    display: flex;
    flex-wrap: wrap;
}

#projects .skill-desc, #projects .library-desc {
    border-radius: 5px;
    margin-right: 8px;
    margin-bottom: 8px;
    padding: 5px;
    cursor: default;
    font-weight: 400;
}

#projects .library-desc {
    background-color: rgb(153 153 153 / 10%);
}

#projects .skill-desc:last-child, #projects .library-desc:last-child {
    margin-right: 0;
}

#projects p {
    font-size: 1rem;
}

#projects .content-bottom {
    display: flex;
    flex-direction: column;
}

#projects .detail {
    width: 100%;
    margin-top: 30px;
    padding-top: 30px;
    border-top: 1px solid #eee;
    display: none;
}

#projects .details {
    display: flex;
    flex-direction: row;
    overflow: auto;
}

#projects .detail.active {
    display: block;
}

#projects .detail img {
    max-height: 550px;
    cursor: zoom-in;
}

#projects .detail .close {
    border: none;
    border-radius: 15px;
    width: 100%;
    padding: 10px 0;
    margin-top: 30px;
    background-color: rgb(153 153 153 / 10%);
    font-weight: 400;
    letter-spacing: 0.5rem;
    text-transform: uppercase;
    cursor: pointer;
}

#projects .detail .close:hover {
    background-color: #eee;
}

/* works */

#works .gallary {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
}

#works .gallary .gallary-item {
    margin: 20px;
}

#works .gallary .gallary-item {
    position: relative;
    width: 340px;
    height: 340px;
    overflow: hidden;
    border-radius: 20px;
    box-shadow: 0px 20px 20px 0px rgb(153 153 153 / 30%);
    transition: all .2s linear, transform .5s ease;
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-sizing: content-box;
}

#works .gallary .gallary-item::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    padding-left: 7px;
    padding-top: 10px;
    backdrop-filter: saturate(150%);
    -webkit-backdrop-filter: saturate(150%);
    background-color: rgba(204, 204, 204, 0.4);
    text-shadow: 0 1px 15px rgb(153 153 153 / 30%);
    opacity: 0;
    z-index: 1;
    transition: all 0.1s linear;
}

#works .gallary .gallary-item::after {
    content: "\e8ff";
    font-family: 'Material Symbols Rounded';
    position: absolute;
    top: 110px;
    left: 0;
    color: #fff;
    width: 100%;
    font-size: 5rem;
    text-align: center;
    opacity: 0;
    z-index: 1;
    transition: all 0.1s linear;
}

#works .gallary .gallary-item:hover::before,
#works .gallary .gallary-item:hover::after {
    opacity: 1;
}

#works .gallary .gallary-item:hover {
    cursor: pointer;
    transform: translate(2px, 2px);
    box-shadow: 0px 10px 10px 0px rgb(153 153 153 / 10%);
}

#works .gallary .gallary-item:hover .gallary-thumb {
    filter: blur(20px);
}

#works .gallary .gallary-thumb {
    object-fit: cover;
    width: 100%;
    height: 100%;
}

#works .gallary .caption {
    position: absolute;
    text-align: center;
    left: 0;
    bottom: 35%;
    width: 100%;
    font-weight: 500;
    color: #fff;
    text-shadow: 0 0 10px rgb(153 153 153 / 70%);
    opacity: 0;
    transition: opacity 0.1s linear;
    z-index: 1;
}

#works .gallary .gallary-item:hover .caption {
    opacity: 1;
}

#works .modal {
    display: none;
    align-items: center;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 4;
    overflow: auto;
    align-items: center;
    justify-content: center;
    background-color: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(30px);
    -webkit-backdrop-filter: blur(30px);
}

#works .close {
    display: none;
    position: fixed;
    top: 0;
    right: 0;
    font-size: 3rem;
    color: #fff;
    margin-right: 10px;
    cursor: pointer;
    z-index: 5;
    text-shadow: 0 0 10px rgb(153 153 153 / 70%);
}

#works .close.on {
    display: block;
}

#works .modal .gallary-img {
    width: auto;
    height: auto;
    max-width: 800px;
    max-height: 100%;
}

#works .modal .gallary-img.zoom {
    max-width: 100%;
    max-height: fit-content;
    height: auto;
}

#works .modal .gallary-img:hover {
    cursor: zoom-in;
}

#works .modal .gallary-img.zoom:hover {
    cursor: zoom-out;
}

/* contact */

section#contact {
    color: #fff;
}

#contact .inner {
    display: flex;
    align-items: center;
    justify-content: space-evenly;
    flex-direction: column;
    height: 100%;
}

#contact h1 {
    margin-bottom: 0;
}

#contact .card {
    padding: 50px;
    border-radius: 20px;
}

#contact .card li {
    display: flex;
    align-items: center;
    font-size: 1rem;
    font-weight: 500;
    letter-spacing: 0.3rem;
    line-height: 3rem;
    cursor: default;
    transition: all 0.3s ease;
}

#contact .card li::before {
    position: relative;
    font-family: 'Material Symbols Rounded';
    font-size: 28px;
    padding-right: 10px;
    padding-left: 10px;
    top: 3px;
}

#contact .github::before {
    content: url("../img/GitHub-Mark-32px.png");
    filter: brightness(0) invert(1);
    padding-left: 7px;
    padding-right: 17px;
    transform: scale(0.8);
    transition: filter 0.2s linear;
    left: -1px;
    top: 5px;
}

#contact .github:hover::before {
    filter: brightness(5);
}

#contact .github:hover a {
    color: #777;
}

/* footer */

footer {
    padding: 20px 0;
    position: absolute;
    width: 100%;
    margin-top: -60px;
    z-index: 2;
}

footer .copyright {
    text-align: center;
    color: #fff;
}

/* ------------------ media query ----------------- */

/* tablet */

@media (max-width: 1199px) {

    .inner {
        max-width: 960px;
    }

    #home .inner {
        padding-top: 60px;
    }

    #home .content-left img {
        width: 500px;
    }

    #home .content-right {
        right: -55px;
    }

    /* skills */

    #skills .skills-wrap .list-wrap:not(.frontend) .skill-list li {
        grid-column: span 6;
    }

    /* projcets */

    #projects .cards>li {
        padding: 40px;
    }

    #projects .content-left {
        margin-right: 50px;
        align-self: center;
    }

    #projects .content-right {
        padding-left: 0;
    }

    #projects .proj-thumb {
        width: 470px;
    }

    #projects .content-left .url-list {
        grid-template-columns: repeat(2, 1fr);
        grid-row-gap: 15px;
    }

    #projects .content-left .url-list li {
        grid-row-start: 1;
        grid-row-end: 2;
    }

    #projects .content-left .url-list li:last-of-type {
        grid-row-start: 3;
        grid-column: 1 / 3;
    }

}

@media (max-width: 992px) {
    .inner {
        max-width: 720px;
    }

    .navbar {
        justify-content: space-between;
    }

    #home .content-left img {
        width: 450px;
    }

    #home .content-right {
        right: 0;
        bottom: 140px;
        transform: rotate(341deg) scale(0.8);
    }

    .warp {
        width: 650px;
    }

    /* skills */

    section#skills {
        height: 100%;
    }

    #skills .skills-wrap {
        flex-wrap: wrap;
        gap: 28px;
    }

    #skills .skills-wrap .list-wrap {
        width: 48%;
        height: 368px;
    }

    #skills .skills-wrap .list-wrap.frontend .skill-list li {
        grid-column: span 2;
    }

    #skills .skills-wrap .list-wrap:not(.frontend) .skill-list li {
        grid-column: span 3;
    }

    #skills .skills-wrap .list-wrap:not(.frontend, .devops) .skill-list li:last-child {
        grid-column: span 6;
    }

    #skills .list-wrap.frontend .skill-list li:last-child {
        grid-column-end: 5;
    }

    /* projects */

    #projects .content-top {
        flex-direction: column;
        justify-content: space-around;
    }

    #projects .content-left {
        margin-right: 0;
    }

    #projects h2 {
        margin-top: 30px;
    }

    #projects .proj-thumb {
        width: 100%;
        max-width: initial;
    }

    #works .gallary .gallary-item {
        width: 300px;
        height: 300px;
        margin: 15px;
    }

    #works .gallary .gallary-item::after {
        top: 90px;
    }

    #works .gallary .caption {
        bottom: 35%;
    }

    #works .modal {
        justify-content: flex-start;
    }

    #works .modal .gallary-img {
        max-width: 100%;
        max-height: none;
    }

    #works .modal .gallary-img.zoom {
        width: auto;
        max-width: none;
        max-height: fit-content;
        height: auto;
    }

}

/* mobile */

@media (max-width: 770px) {

    .inner {
        max-width: 560px;
        padding-left: 15px;
        padding-right: 15px;
    }

    section+section {
        padding: 120px 0;
    }

    /* mobile navbar */

    .header-wrap {
        animation: passive-header 0.3s ease forwards;
    }

    .header-wrap.active {
        animation: active-header 0.3s ease forwards;
    }

    @keyframes active-header {
        from {
            height: 70px;
        }

        to {
            height: 300px;
        }
    }

    @keyframes passive-header {
        to {
            height: 70px;
        }

        from {
            height: 300px;
        }
    }

    .nav-menu {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        top: 72px;
        width: 100%;
        position: fixed;
        opacity: 0;
        visibility: hidden;
        animation: unvisible 0.1s ease forwards;
    }

    .nav-menu.show {
        visibility: visible;
        animation: visible 1s ease forwards;
    }

    .nav-menu .nav-item+.nav-item {
        margin-left: 0;
    }

    @keyframes visible {
        from {
            opacity: 0;
        }

        to {
            opacity: 1;
        }
    }

    @keyframes unvisible {
        from {
            opacity: 1;
        }

        to {
            opacity: 0;
        }
    }

    .navbar .toggle-bar {
        cursor: pointer;
    }

    .navbar .nav-logo {
        line-height: 68px;
    }

    .navbar .toggle-bar::after {
        content: "\e5d2";
        font-family: 'Material Symbols Rounded';
        font-size: 32px;
        color: #fff;
    }

    .header-wrap.on .toggle-bar::after {
        color: #777;
    }

    .nav-menu .nav-item .nav-link {
        line-height: 40px;
        font-weight: 500;
    }

    /* --------------- */

    h1 {
        margin-bottom: 80px;
    }

    #home {
        margin-bottom: 0;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    #home .content-left img {
        width: 470px;
    }

    #home .content-right {
        transform: rotate(346deg) scale(1);
        bottom: 80px;
        left: 40px;
    }

    .warp {
        width: 542px;
        height: 101px;
        font: 900 30px/1 'Noto Sans KR';
    }

    .warp:nth-child(2) {
        bottom: 75px;
    }

    .warp:nth-child(3) {
        bottom: 150px;
    }

    .warp__0 {
        transform-origin: 11px 28px;
        transform: translate(0.7779000000000007px, 14.036999999999999px) rotate(0.716785rad);
    }

    .warp__1 {
        transform-origin: 9px 28px;
        transform: translate(24.820999999999998px, 30.536px) rotate(0.566818rad);
    }

    .warp__2 {
        transform-origin: 9px 28px;
        transform: translate(47.0415px, 42.333299999999994px) rotate(0.428298rad);
    }

    .warp__3 {
        transform-origin: 9px 28px;
        transform: translate(69.6319px, 50.8801px) rotate(0.296103rad);
    }

    .warp__4 {
        transform-origin: 12px 28px;
        transform: translate(93.1766px, 56.9721px) rotate(0.157331rad);
    }

    .warp__5 {
        transform-origin: 5px 28px;
        transform: translate(123.4477px, 59.3943px) rotate(0.047776rad);
    }

    .warp__6 {
        transform-origin: 5px 28px;
        transform: translate(140.7418px, 59.591300000000004px) rotate(-0.023956rad);
    }

    .warp__7 {
        transform-origin: 8px 28px;
        transform: translate(157.8772px, 58.328500000000005px) rotate(-0.09999rad);
    }

    .warp__8 {
        transform-origin: 10px 28px;
        transform: translate(180.897px, 54.81100000000001px) rotate(-0.18326rad);
    }

    .warp__9 {
        transform-origin: 13px 28px;
        transform: translate(206.4672px, 48.1956px) rotate(-0.269904rad);
    }

    .warp__10 {
        transform-origin: 8px 28px;
        transform: translate(237.18px, 39.89660000000001px) rotate(-0.342103rad);
    }

    .warp__11 {
        transform-origin: 10px 28px;
        transform: translate(259.3516px, 30.961399999999998px) rotate(-0.35281rad);
    }

    .warp__12 {
        transform-origin: 11px 28px;
        transform: translate(284.2753px, 22.0203px) rotate(-0.296137rad);
    }

    .warp__13 {
        transform-origin: 10px 28px;
        transform: translate(312.3756px, 14.936px) rotate(-0.221732rad);
    }

    .warp__14 {
        transform-origin: 9px 28px;
        transform: translate(338.2998px, 10.282499999999999px) rotate(-0.138322rad);
    }

    .warp__15 {
        transform-origin: 8px 28px;
        transform: translate(363.3775px, 7.987499999999997px) rotate(-0.050294rad);
    }

    .warp__16 {
        transform-origin: 11px 28px;
        transform: translate(386.6807px, 8.018799999999999px) rotate(0.05387rad);
    }

    .warp__17 {
        transform-origin: 9px 28px;
        transform: translate(415.905px, 10.9576px) rotate(0.165728rad);
    }

    .warp__18 {
        transform-origin: 9px 28px;
        transform: translate(439.8827px, 16.3908px) rotate(0.270928rad);
    }

    .warp__19 {
        transform-origin: 10px 28px;
        transform: translate(463.9495px, 24.8438px) rotate(0.378693rad);
    }

    .warp__20 {
        transform-origin: 5px 28px;
        transform: translate(489.3682px, 34.0158px) rotate(0.464737rad);
    }

    .warp__21 {
        transform-origin: 11px 28px;
        transform: translate(504.063px, 45.523799999999994px) rotate(0.549032rad);
    }

    #about {
        height: 100%;
        padding: 120px 0;
    }

    #about::after {
        height: 70%;
    }

    #about .content {
        flex-direction: column;
        font-size: 1rem;
    }

    #about .content ul {
        width: 100%;
        padding-bottom: 30px;
        border: 1px solid rgba(238, 238, 238, 0.4);
    }

    #about .content ul+ul {
        margin-left: 0;
    }

    #about .education {
        margin: 20px 0;
    }

    /* skills */

    #skills .skills-wrap .list-wrap {
        width: 100%;
        height: auto;
        min-height: 291px;
        gap: 25px;
    }

    #skills .list-wrap.frontend .skill-list li:last-child {
        grid-column: span 6;
    }

    #skills .card.design .skill-list li h3 {
        font-size: 0.8rem;
    }

    #projects .cards>li {
        padding: 30px;
    }

    #projects .content-right {
        width: 100%;
    }

    #projects .details {
        align-items: center;
    }

    #projects .detail img {
        width: 100%;
        max-height: initial;
    }

    #works .gallary {
        flex-direction: column;
        justify-content: flex-start;
    }

    #works .gallary .gallary-item+.gallary-item {
        margin: 0;
        margin-top: 50px;
    }

    #works .gallary .gallary-item {
        width: 348px;
        height: 348px;
    }

    #works .gallary .gallary-item::after {
        top: 120px;
    }

    #contact .inner {
        justify-content: center;
        gap: 60px;
    }

    #contact .card {
        padding: 30px;
    }

}

/* mobile(xs) */
@media (max-width: 576px) {

    #root {
        background-size: 300% 300%;
    }

    @keyframes active-header {
        from {
            height: 60px;
        }

        to {
            height: 290px;
        }
    }

    @keyframes passive-header {
        to {
            height: 60px;
        }

        from {
            height: 290px;
        }
    }

    h1 {
        margin-bottom: 50px;
        line-height: 3rem;
    }

    .header-wrap.on {
        top: -60px;
        transform: translateY(60px);
    }

    .navbar .inner {
        padding-left: 15px;
        padding-right: 15px;
    }

    .nav-menu {
        top: 62px;
    }

    .navbar .nav-logo {
        line-height: 57px;
    }

    section+section {
        padding: 110px 0;
    }

    #home {
        padding-top: 72px;
        min-height: initial;
    }

    #home .inner {
        padding-top: 0;
        align-items: center;
    }

    #home .content {
        width: 100%;
        align-items: center;
    }

    #home .content-left {
        padding: 0 10px;
        max-width: 450px;
    }

    #home .content-left img {
        width: 100%;
    }

    #home .content-right {
        left: 0.8vw;
        bottom: 20px;
        width: 100%;
    }

    .warp:nth-child(n) {
        bottom: 0;
        height: auto;
    }

    .warp span[aria-role="presentation"] {
        display: none;
    }

    #warp-label {
        color: #fff;
        font-size: 7vw;
        display: contents;
    }

    .warp:nth-child(1) #warp-label, .warp:nth-child(3) #warp-label {
        -webkit-text-stroke: 1px;
        -webkit-text-fill-color: transparent;
    }

    #about {
        padding: 120px 0;
    }

    #about::after {
        height: 780px;
    }

    #skills {
        height: 100%;
    }

    #skills .skills-wrap {
        gap: 30px;
    }
    
    #skills .skills-wrap .list-wrap {
        padding: 20px 15px;
        min-height: 241px;
        gap: 20px;
    }

    #skills .skills-wrap .list-wrap.frontend .skill-list li {
        grid-column: span 2;
    }

    #skills .list-wrap.frontend .skill-list li:last-child {
        grid-column-end: 5;
    }

    #skills .skills-wrap h2 {
        font-size: max(5.2vw, 18px);
        letter-spacing: 0.25rem;
        margin-right: -0.25rem;
    }

    #skills .skill-list li h3 {
        font-size: max(2.8vw, 11px);
    }

    #skills .card.design .skill-list li h3 {
        font-size: max(2.6vw, 9.5px);
    }

    #projects .cards>li+li {
        margin-top: 30px;
    }

    #projects h2 {
        font-size: 1.5rem;
        line-height: 1.5rem;
        letter-spacing: 0.35rem;
        margin-top: 20px;
        margin-bottom: 15px;
    }

    #projects h3 {
        font-size: 1.3rem;
        line-height: 1.3rem;
        margin-top: 20px;
        margin-bottom: 15px;
    }

    #projects .cards>li {
        padding: 20px;
        padding-bottom: 30px;
    }

    #projects .content-left .url-list {
        margin-top: 15px;
        grid-row-gap: 10px;
        grid-column-gap: 10px;
    }

    #works .gallary .gallary-item {
        width: 70vw;
        height: 70vw;
        margin: 0;
    }

    #works .gallary .gallary-item+.gallary-item {
        margin-top: 30px;
    }

    #works .gallary .gallary-item::after {
        top: 24vw;
        left: 5px;
        font-size: 15vw;
    }

    #works .gallary .gallary-item:first-child .caption {
        padding: 0 10vw;
        bottom: 17vw;
    }

    #contact .card {
        padding: 20px;
        width: 100%;
        max-width: 370px;
        min-height: 206px;
        display: flex;
        flex-direction: column;
        justify-content: space-around;
    }

    #contact .card li {
        word-break: break-word;
        font-size: 0.9rem;
        line-height: 2rem;
        letter-spacing: 0.2rem;
    }

}

/* keyframes */

@-webkit-keyframes gradient {
    0% {
        background-position: 0% 50%
    }

    50% {
        background-position: 100% 50%
    }

    100% {
        background-position: 0% 50%
    }
}

@-moz-keyframes gradient {
    0% {
        background-position: 0% 50%
    }

    50% {
        background-position: 100% 50%
    }

    100% {
        background-position: 0% 50%
    }
}

@keyframes gradient {
    0% {
        background-position: 0% 50%
    }

    50% {
        background-position: 100% 50%
    }

    100% {
        background-position: 0% 50%
    }
}