* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: "DM Sans", Arial, sans-serif;
}

body {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    background-color: #232323;
}

button {
    padding: 0;
    border: none;
    background: none;
    color: inherit;
    font: inherit;
    text-align: inherit;
    cursor: pointer;
}

.dm-sans-black {
    font-family: "DM Sans", sans-serif;
    font-optical-sizing: auto;
    font-weight: 900;
    font-style: normal;
    letter-spacing: -0.05em;
}

.dm-sans-light {
    font-family: "DM Sans", sans-serif;
    font-optical-sizing: auto;
    font-weight: 200;
    font-style: normal;
}

.bottom-left-container {
    position: fixed;
    bottom: 10px;
    left: 10px;
    color: #fffffa;
    font-size: 15vw;
    display: flex;
    align-items: center;
}

.bottom-left-text {
    line-height: 0.8;
}

.top-right-container {
    position: fixed;
    top: 10px;
    right: 10px;
    color: #fffffa;
    font-size: 2vw;
    display: flex;
    align-items: center;
}

.top-right-text {
    line-height: 0.8;
}

.phu {
    display: inline-flex;
    align-items: center;
    transition: letter-spacing 0.5s ease;
}

.doan {
    margin-top: -10px;
    transition: letter-spacing 0.5s ease;
}

.phu:hover, .doan:hover, .phu:focus, .doan:focus {
    letter-spacing: 0.2em;
}

.svg-star1 {
    width: 0.7em;
    height: 0.7em;
    margin-left: -0.2em;
    margin-top: -1em;
    display: inline-block;
    background-image: url('assets/star1.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    vertical-align: middle;
    -webkit-transition: transform 0.5s ease;
    transition: transform 0.5s ease;
}

.svg-star1:hover {
    -webkit-transform: rotate(90deg);
    transform: rotate(90deg);
}

.svg-star2 {
    width: 1em;
    height: 1em;
    margin-left: 1em;
    margin-right: 1em;
    display: inline-block;
    background-image: url('assets/star2.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    vertical-align: middle;
    -webkit-animation: rotate-infinite 10s linear infinite;
    animation: rotate-infinite 10s linear infinite;
}

.svg-star3 {
    width: 5em;
    height: 5em;
    display: inline-block;
    background-image: url('assets/star3.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    vertical-align: middle;
}

.svg-star3-back {
    width: 5em;
    height: 5em;
    display: inline-block;
    background-image: url('assets/star3.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    vertical-align: middle;
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
}

.bottom-right-container {
    position: fixed;
    bottom: 10px;
    right: 10px;
    color: #fffffa;
    font-size: 1vw;
    display: flex;
    align-items: center;
    text-decoration: none;
    padding: 5px 10px;
    -webkit-transition: transform 0.5s ease;
    transition: transform 0.5s ease;
}

.bottom-right-container:hover {
    -webkit-transform: translateX(0.5em);
    transform: translateX(0.5em);
}

.bottom-back-container {
    position: fixed;
    bottom: 10px;
    left: 10px;
    color: #fffffa;
    font-size: 1vw;
    display: flex;
    align-items: center;
    text-decoration: none;
    padding: 5px 10px;
    -webkit-transition: transform 0.5s ease;
    transition: transform 0.5s ease;
}

.bottom-back-container:hover {
    -webkit-transform: translateX(-0.5em);
    transform: translateX(-0.5em);
}

@-webkit-keyframes rotate-infinite {
    from {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    to {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@keyframes rotate-infinite {
    from {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    to {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@keyframes rotate-ccw {
    from {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    to {
        -webkit-transform: rotate(-360deg);
        transform: rotate(-360deg);
    }
}

@keyframes move-up-and-back {
    0%, 100% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
    }
    50% {
        -webkit-transform: translateY(0.5em);
        transform: translateY(0.5em);
    }
}

@keyframes move-right-and-back {
    0%, 100% {
        -webkit-transform: translateX(0);
        transform: translateX(0);
    }
    50% {
        -webkit-transform: translateX(0.7em);
        transform: translateX(0.7em);
    }
}

@keyframes rotate-back-and-forth {
    0%, 100% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    50% {
        -webkit-transform: rotate(10deg);
        transform: rotate(10deg);
    }
}

@keyframes move-up-and-down {
    0%, 100% {
        -webkit-transform: translateY(0);
        transform: translateY(0);
    }
    50% {
        -webkit-transform: translateY(1em);
        transform: translateY(1em);
    }
}

.avatar-container {
    width: 30vw;
    height: 30vw;
    position: absolute;
    top: 50%;
    left: 70%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    background-image: url('assets/avatar-frame.svg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    overflow: hidden;
    z-index: 9;
}

.avatar-photo {
    width: 100%;
    height: 100%;
    position: relative;
    background-image: url('assets/avatar-photo.png');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 1;
}

.avatar-glasses {
    width: 33%;
    height: 10%;
    position: absolute;
    top: 21%;
    left: 34%;
    background-image: url('assets/avatar-glasses.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 2;
    -webkit-animation: move-right-and-back 3s ease-in-out infinite;
    animation: move-right-and-back 3s ease-in-out infinite;
}

.avatar-sun {
    width: 35%;
    height: 35%;
    position: absolute;
    top: 24%;
    left: 10%;
    background-image: url('assets/avatar-sun.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 0;
    -webkit-animation: rotate-infinite 20s linear infinite;
    animation: rotate-infinite 20s linear infinite;
}

.avatar-star {
    width: 12%;
    height: 12%;
    position: absolute;
    top: 75%;
    left: 12%;
    background-image: url('assets/avatar-star.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 2;
    -webkit-animation: rotate-ccw 20s linear infinite;
    animation: rotate-ccw 20s linear infinite;
}

.avatar-flare {
    width: 10%;
    height: 10%;
    position: absolute;
    top: 37%;
    right: 10%;
    background-image: url('assets/avatar-flare.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 2;
    -webkit-animation: move-up-and-back 3.5s ease-in-out infinite;
    animation: move-up-and-back 3.5s ease-in-out infinite;
}

.avatar-circle1 {
    width: 38%;
    height: 12%;
    position: absolute;
    top: 49%;
    right: 5%;
    background-image: url('assets/avatar-circle1.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 2;
    -webkit-animation: move-up-and-back 3s ease-in-out infinite;
    animation: move-up-and-back 3s ease-in-out infinite;
}

.avatar-circle2 {
    width: 27%;
    height: 8%;
    position: absolute;
    top: 55%;
    right: 10%;
    background-image: url('assets/avatar-circle2.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    z-index: 2;
    -webkit-animation: move-up-and-back 2s ease-in-out infinite;
    animation: move-up-and-back 2s ease-in-out infinite;
}

.svg-star4 {
    width: 9vw;
    height: 9vw;
    position: absolute;
    top: 12%;
    left: 15%;
    background-image: url('assets/star4.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    -webkit-animation: rotate-ccw 20s linear infinite;
    animation: rotate-ccw 20s linear infinite;
}

.meet1 {
    width: 51vw;
    height: 12vw;
    position: absolute;
    top: 30vh;
    left: 19vw;
    background-image: url('assets/meet1.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    -webkit-animation: move-up-and-down 5s ease-in-out infinite;
    animation: move-up-and-down 5s ease-in-out infinite;
}

.meet2 {
    width: 51vw;
    height: 12vw;
    position: absolute;
    top: 39vh;
    left: 19vw;
    background-image: url('assets/meet2.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    -webkit-animation: move-up-and-down 5s ease-in-out infinite;
    animation: move-up-and-down 5s ease-in-out infinite;
}

.gmail {
    width: 10vw;
    height: 3vw;
    position: absolute;
    top: 51vh;
    left: 60vw;
    background-image: url('assets/gmail.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
}

.phone {
    width: 23vw;
    height: 3.1vw;
    position: absolute;
    top: 74vh;
    left: 0vw;
    background-image: url('assets/phone.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    -webkit-animation: move-right-and-back 3s ease-in-out infinite;
    animation: move-right-and-back 3s ease-in-out infinite;
}

.net-wall {
    width: 21vw;
    height: 81.3vh;
    position: absolute;
    top: 8vh;
    right: 0vw;
    background-image: url('assets/net-wall.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
}

.happy-face {
    width: 10vw;
    height: 10vw;
    position: absolute;
    bottom: 11vh;
    right: 38vw;
    background-image: url('assets/happy-face.svg');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: bottom;
    -webkit-animation: rotate-back-and-forth 3s ease-in-out infinite;
    animation: rotate-back-and-forth 3s ease-in-out infinite;
}

.grid-table {
    width: 100vw;
    height: 100vh;
    display: grid;
    gap: 0.5rem;
    grid-template-columns: 1fr 1fr;
    padding: 7vh 0 12vh 0;
    place-items: center;
    overflow: hidden;
}

.grid-item-wrapper {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.grid-item {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center; 
    padding: 0.5rem;
    text-align: center;
    background-size: cover;
    background-position: center;
    color: #ffffff;
    font-size: 2em;
    font-weight: 300;
    object-fit: cover;
    transform-origin: center;
    -webkit-transition: transform 1s ease, font-weight 0.5s ease, letter-spacing 0.5s ease;
    transition: transform 1s ease, font-weight 0.5s ease, letter-spacing 0.5s ease;
}

.grid-item.digital:hover, .grid-item.videos:hover, .grid-item.webapp:hover, .grid-item.printing:hover {
    -webkit-transform: scale(1.1);
    transform: scale(1.1);
    font-weight: 500;
    letter-spacing: 0.2em;
    cursor: pointer;
}

.grid-item.digital {
    background-image: url('assets/prj/bg_digital.jpg');
}

.grid-item.videos {
    background-image: url('assets/prj/bg_videos.jpg');
}

.grid-item.webapp {
    background-image: url('assets/prj/bg_webapp.jpg');
}

.grid-item.printing {
    background-image: url('assets/prj/bg_printing.jpg');
}

.modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.8);
    justify-content: center;
    align-items: center;
    z-index: 1000;
}

.modal-content {
    width: 80vw;
    max-height: 90vh;
    background-color: #fff;
    padding: 20px;
    overflow-y: auto;
    border-radius: 8px;
    box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.3);
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #333;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
}

.close:hover,
.close:focus {
    color: black;
}

@media (max-width: 480px) {
    .grid-table {
        gap: 0.2rem;
        grid-template-columns: 1fr;
        padding: 7vh 0 12vh 0;
    }

    .grid-item-wrapper, .grid-item {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        height: 100%;
        font-size: 1em;
        min-height: 20vh;
        min-width: 100vw;
        color: #ffffff;
        overflow: hidden;
        text-align: center;
        background-size: cover;
        background-position: center;
    }

    .top-right-container {
        font-size: 4vw;
    }

    .bottom-right-container {
    font-size: 2.5vw;
    }

    .avatar-container {
    width: 80vw;
    height: 80vw;
    top: 40%;
    left: 50%;
    }

    .bottom-left-container {
    font-size: 20vw;
    }

    .bottom-back-container {
    font-size: 2.5vw;
    }

    .svg-star4 {
    width: 19vw;
    height: 19vw;
    }

    .meet1 {
    width: 78vw;
    height: 18vw;
    top: 30vh;
    left: 10vw;
    }

    .meet2 {
    width: 78vw;
    height: 18vw;
    top: 34vh;
    left: 10vw;
    }

    .gmail {
    width: 24.1vw;
    height: 7.2vw;
    top: 41vh;
    left: 64vw;
    }

    .phone {
    width: 52vw;
    height: 7vw;
    top: 58vh;
    left: 0vw;
    }

    .happy-face {
    width: 18vw;
    height: 18vw;
    bottom: 6vh;
    right: 39vw;
    }

    .net-wall{
    width: 58vw;
    height: 74vh;
    bottom: 0vh;
    right: 0vw;
    }

}