@import url('https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&family=Poller+One&display=swap');

:root {
    scroll-behavior: smooth;

    /* VARIABLES */
    --ff-mono: 'DM Mono', monospace;
    --ff-title: "Poller One", serif;
    --ff-text: "Lora", serif;
    --clr-title: #005cef;
    --clr-title2: #ff1f25;
    --clr-details2: rgb(61, 45, 45);
    --clr-text2: #e0e0e0;
    --clr-details: black;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;

}

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

a {
    color: none;
    text-decoration: none;
}

ol,
ul {
    list-style-type: none;
}

img {
    max-width: 100%;
}

.active {
    text-decoration: underline;
}

.container {
    margin: 0 auto;
    max-width: 1000px;
    overflow-x: hidden;
}

body {

    display: grid;
    grid-template-rows: auto 1fr auto;
    min-height: 100vh;
    min-height: 100dvh;
    cursor: none;
}

html {
    scroll-padding-top: 3rem;
    cursor: none;
}


/******** WebKit *********/

::-webkit-scrollbar {
    width: 8px;
}

::-webkit-scrollbar-track {
    background: #f0f0f0;
}

::-webkit-scrollbar-thumb {
    background-color: #0077cc;
    border-radius: 10px;
}

header {
    display: flex;
    align-items: center;
    text-align: center;
    justify-content: space-between;
    padding: 1rem 1.5rem;
    background-color: transparent;
    position: sticky;
    top: 0;
    right: 0;
    left: 0;
    z-index: 1;
    width: 100%;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    background-color: rgba(255, 255, 255, 0.3);
}


header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 87vw;
    height: 3px;
    background-color: var(--clr-details);
}

header.hidden {
    transform: translateY(-100%);
}

.img-container {
    max-width: 100%;
}


html {
    scroll-behavior: smooth;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--ff-title);
}


/******** LOADER *******/

#spinner {
    position: fixed;
    inset: 0;
    background-color: var(--clr-title);
    color: var(--clr-text2);
    z-index: 99999999;
    font-size: 3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: .4s;
}

#spinner i {
    pointer-events: none;
    animation: spin 1s ease-in-out both infinite;
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1);
    display: inline-block;

}

@keyframes spin {
    0% {
        transform: rotate(0) translateY(0);
        opacity: 1;
    }

    50% {
        transform: rotate(360deg) translateY(-20px);
        opacity: 1;
    }

    100% {
        transform: rotate(360deg) translateY(-200vh);
        opacity: 0;
        visibility: hidden;
    }
}



/******* NAV ********/

.nav {
    opacity: 0;
    visibility: hidden;
    display: flex;
    flex-direction: column;
    max-height: 0;
    align-items: center;
    justify-content: start;
    gap: 1rem;
    position: absolute;
    z-index: 1000;
    width: 100%;
    height: 100vh;
    top: 0;
    left: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, .85);
    padding: 2rem;
    padding-right: 1rem;
    transform: translateX(-100%);
    transition: opacity 1s ease-in-out, max-height 1s ease-in-out, visibility 0s 1s, transform 1s ease-in-out;
}

.nav.visible {
    opacity: 1;
    visibility: visible;
    max-height: 100vh;
    width: 100%;
    transform: translateX(0);
    transition: opacity 1s ease-in-out, max-height 1s ease-in-out, transform 1s ease-in-out;
    backdrop-filter: blur(5px);
}

.nav-list {
    list-style-type: none;
    display: flex;
    flex-direction: column;
    align-items: start;
    gap: 8rem;
    margin: 0;
    font-family: var(--ff-title);
    font-weight: 800;

}

.nav-list li {
    position: relative;
    overflow: hidden;
    height: 4rem;
}

.nav-list li a {
    position: relative;
    font-size: 3.5rem;
    font-weight: 800;
    color: var(--clr-text2);
    text-decoration: none;
    display: inline-block;

}

/* Contenedor para el efecto de rotación */
.nav-list li a span {
    display: block;
    position: relative;
    transition: transform 0.3s ease-in-out;
    cursor: none;
}

/* Texto en estado normal */
.nav-list li a span:first-child {
    transform: translateY(0);
}

/* Texto que aparece al hacer hover */
.nav-list li a span:last-child {
    position: absolute;
    left: 0;
    top: 100%;
    color: var(--clr-title);
}

/* Efecto de desplazamiento */

.nav-list li a:hover span:first-child {
    transform: translateY(-100%);
}

.nav-list li a:hover span:last-child {
    transform: translateY(-100%);
}




.abrir-menu,
.cerrar-menu {
    display: block;
    border: 0;
    font-size: 1.2rem;
    background-color: transparent;
    cursor: pointer;
    display: flex;
    align-self: end;
    cursor: none;
}

.abrir-menu {
    color: var(--clr-details);
}

.cerrar-menu {
    color: var(--clr-text2);
    align-self: start;
    margin-bottom: 2rem;
}

.btn-eng {
    display: flex;
    gap: 1rem;
    font-family: var(--ff-title);
    margin-left: auto;
    justify-content: end;
}

.btn-eng>button,
.btn-eng>a {
    border: 0;
    background-color: transparent;
    color: var(--clr-details);
    font-size: 1.2rem;
    display: flex;
    justify-content: end;
    align-items: end;
    cursor: none;
}

.btn-eng>a:hover {
    color: var(--clr-title)
}

/************ DARK-MODDE *************/
body.dark-mode {
    background-color: var(--clr-details);
    color: var(--clr-text2);
}

body.dark-mode header {
    background-color: var(--clr-details);
}

body.dark-mode header::after {
    background-color: var(--clr-text2);
}

body.dark-mode .nav {
    background-color: #e0e0e0eb;
}

body.dark-mode .nav-list li a,
body.dark-mode .cerrar-menu {
    color: var(--clr-details);
}

body.dark-mode .hero h1,
body.dark-mode .abrir-menu,
body.dark-mode .btn-eng>a,
body.dark-mode #btn-translate,
body.dark-mode .hero-p,
body.dark-mode h2,
body.dark-mode h3,
body.dark-mode p,
body.dark-mode .web h3,
body.dark-mode .web h5,
body.dark-mode .web .featureList,
body.dark-mode .web h4,
body.dark-mode .web button,
body.dark-mode .footer-list a i,
body.dark-mode .hello h3,
body.dark-mode .resaltado,
body.dark-mode .email a {
    color: var(--clr-text2);
}

body.dark-mode .email a:hover {
    color: var(--clr-text2);
}

body.dark-mode .custom-cursor {
    background-color: var(--clr-text2);
}

body.dark-mode .rope path {
    stroke: var(--clr-text2);
}

body.dark-mode .web,
body.dark-mode #arriba,
body.dark-mode .web button {
    border: 1px solid var(--clr-text2)
}

body.dark-mode #arriba {
    background-color: transparent;
}

body.dark-mode .web button:hover,
body.dark-mode #arriba:hover {
    background-color: var(--clr-text2);
    color: var(--clr-details);
}

body.dark-mode .footer-list a i:hover {
    background-color: var(--clr-details);
    color: var(--clr-text2);
}

body.dark-mode .web {
    box-shadow: 10px 10px 10px 0 rgba(255, 255, 255, 0.1);
}

body.dark-mode .btn-eng>a:hover,
body.dark-mode .abrir-menu:hover {
    color: var(--clr-title);
}


.custom-cursor {
    position: fixed;
    top: 0;
    left: 0;
    width: 5px;
    height: 5px;
    line-height: 1;
    background-color: var(--clr-title);
    border-radius: 50%;
    pointer-events: none;
    z-index: 99999;
    transform: translate(-50%, -50%);
    transition: background-color 0.3s ease;
    mix-blend-mode: difference;
    cursor: none
}

/* HERO */

.hero {
    margin-top: 3.3rem;
    padding-top: 1rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 1rem;
    width: 90vw;
    position: relative;
    overflow: hidden;
    margin-bottom: 3.3rem
}


.title-hero {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--clr-title);
    text-align: center;
    margin-bottom: 1rem;
    font-family: var(--ff-title);
    text-wrap: nowrap;
    display: flex;
    opacity: 0;
    transform: translateY(-100px);
    cursor: none;
}

.subtitle-hero {
    font-size: 1.2rem;
    font-weight: 400;
    color: var(--clr-title);
    text-align: start;
    margin-bottom: 1rem;
    font-family: var(--ff-title);
}

.hero-p {
    color: var(--clr-details);
    font-family: var(--ff-text);
    font-size: 1rem;
    opacity: 1;
}



.portada {
    margin-top: 3.5rem;
    width: 185px;
    height: 150px;
    padding-top: 1.5rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    transition: background-color 0.5s ease;
    position: relative;
    overflow: visible;
    background-color: var(--clr-title);
    overflow: visible;
    z-index: 0;
    display: flex;
    justify-self: center;
    border-bottom-left-radius: 15px;
    border-top-right-radius: 15px;
}

.portada img {
    width: 350px;
    padding-top: 10px;
    padding: .2px;
    padding-bottom: .3px;
    display: block;
    justify-content: start;
    position: absolute;
    max-width: none;
    bottom: -4%;
    border-bottom-right-radius: 122px;
    border-bottom-left-radius: 122px;
}

.hello {
    display: flex;
    flex-direction: column;
    font-family: var(--ff-title);
    font-size: 3rem;
    margin-top: 6rem;
    text-align: center;
    justify-content: center;
    overflow-y: visible;
    text-wrap: wrap;
}

/* PORTOFOLIO */

.portfolio {
    display: flex;
    flex-direction: column;
    width: 90vw;
    padding-top: 1rem;
    padding-bottom: 1rem;
    scroll-margin-top: .5rem;
}


.title-portfolio,
.about-me-title,
.contact-title {
    display: flex;
    margin-top: 1rem;
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--clr-title);
    text-align: start;
    justify-content: start;
    margin-bottom: 1rem;
    color: var(--clr-title);

}

.about-me-title {
    margin-inline-start: 0;
    color: var(--clr-title);
}

.portfolio-p,
.about-me-p {
    justify-content: center;
    text-align: start;
    color: var(--clr-details);
    margin-top: 1.9rem;
    font-family: var(--ff-text);
    display: block;
    margin-bottom: 2rem;
}

.portfolio-p {
    overflow: hidden;
}

.web {
    border: 1px solid var(--clr-text2);
    padding: 1rem;
    border-radius: 5px;
    width: 100%;
    gap: 1rem;
    display: flex;
    flex-direction: column;
    box-shadow: 10px 10px 10px 0 rgba(0, 0, 0, 0.1);
}

.web-p {
    margin-top: 1rem;
    justify-content: center;
    text-align: start;
    color: var(--clr-details2);
    margin-bottom: 1rem;
    font-family: var(--ff-text);
    overflow: hidden;
    padding: .3rem;
}

.web img {
    border-radius: 5px;
    isolation: isolate;
}

.web-wrap {
    margin-top: 1.5rem;
    width: 90vw;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: start;
    margin-bottom: 3rem;
    overflow: hidden;
    gap: 1rem;
}

.web-title {
    color: var(--clr-text2);
    font-size: 1.7rem;
    padding-left: .3rem;
}

.btn-web {
    background-color: transparent;
    border: 1px solid var(--clr-text2);
    color: var(--clr-text2);
    font-size: 1.2rem;
    font-family: var(--ff-title);
    padding: 10px;
    font-weight: 200;
    margin-top: 1rem;
    border-radius: 5px;
    cursor: none;
    transition: width .5s ease-in-out, background-color 0.5s ease-in-out, color 0.5s ease-in-out;
    white-space: nowrap;
    width: auto;
    min-width: 120px;
    text-align: center;

}

.btn-web:hover {
    width: 180px;
}

.card1 h4,
.card2 h4,
.card3 h4,
.card4 h4 {
    font-size: 1.3rem;
}

.card1 {
    border: 1px solid #964b00;
    color: #964b00;
}

.card1 p,
.card1 ul,
.card2 p,
.card2 .featureList,
.card3 p,
.card3 .featureList,
.card4 p,
.card4 .featureList {
    color: var(--clr-details);
}

.card1 h3,
.card1 button {
    color: #964b00;
}

.card1 button {
    border: 1px solid #964b00;
}

.card1 button:hover {
    background-color: #964b00;
    color: var(--clr-text2);
}

.card2 {

    border: 1px solid#361a36;
}

.card2 button:hover {
    background-color: #361a36;
    color: var(--clr-text2);
}

.card2 h3,
.card2 button {
    color: #361a36;
}

.card2 button {
    border: 1px solid #361a36;
}

.card3 {
    border: 1px solid #223307;
    margin-bottom: 1rem;
}


.card3 button:hover {
    background-color: #223307;
    color: var(--clr-text2);
}


.card3 h3,
.card3 button,
.card3 h4,
.card3 h5 {
    color: #223307
}

.card3 button {
    border: 1px solid #223307;
}

.card2 h4,
.card2 h5 {
    color: #361a36;
}


.card4,.card4 button {
    border: 1px solid #7e3333;
}
.card4 button:hover {
    background-color: #7e3333;
    color: var(--clr-text2);
}

.card4 h3,
.card4 button,
.card4 h4,
.card4 h5 {
    color: #7e3333;
}

.skills {
    display: flex;
    flex-direction: row;
    gap: .5rem;
    justify-content: start;
    margin-top: 1rem;
    margin-bottom: 1rem;
}

.skills-icon img {
    width: 2rem;
}

.hidden {
    display: none;
}

ul.featureList li {
    font-size: 1rem;
    font-family: var(--ff-text);
}

.toggleBtn {
    cursor: none;
}

.title-icon {
    margin-bottom: 2rem;
}

.featureTitle {
    text-wrap: nowrap;
    font-size: 1rem;
}

.featureList {
    margin-top: 1rem;
    margin-bottom: 1rem;
    padding-left: 1rem;
}

/* ABOUT-ME */

.about-me {
    width: 90vw;
    display: flex;
    flex-direction: column;
    padding-top: 1rem;
    scroll-margin-top: 1rem;
    position: relative;
}

.resaltado {
    color: var(--clr-title);
    font-family: var(--ff-title);
    font-size: 1em;
    display: inline;
}

.title-certif {
    color: var(--clr-title);
}

.wrapp-certificados {
    display: flex;
    flex-direction: column;
    margin-top: 1rem;
    gap: 1rem;
}

.certificado img {
    transition: transform 0.5s ease-in-out;
}

.certificado img:hover {
    /*   cursor: pointer; */
    cursor: none;
    transform: scale(1.1);
}

.fade-in {
    opacity: 0;
    transition: opacity 1s ease-out, transform 1s ease-out;
}

.fade-in.show {
    opacity: 1;
}

/* CONTACT */
.email {
    font-family: var(--ff-title);
    color: var(--clr-details2);
    font-size: 1rem;
    margin-top: 2rem;
    padding-top: 1rem;
    padding-bottom: 1rem;
}

.email a {
    color: var(--clr-title);
    transition: color .3s ease-in-out;
    font-family: var(--ff-title);
    cursor: none;
}

.contact {
    display: flex;
    flex-direction: column;
    width: 90vw;
    padding-top: 1rem;
    padding-bottom: 1rem;
    scroll-margin-top: .5rem;
    margin-bottom: 3rem;
    position: relative;
}

.contact-title {
    color: var(--clr-title)
}


#arriba {
    background-color: var(--clr-title);
    padding: .2rem;
    border: none;
    border-radius: 5px;
    color: var(--clr-text2);
    font-size: 1.5rem;
    right: 25px;
    bottom: 150px;
    position: fixed;
    opacity: 0;
    transition: opacity 0.3s ease-in-out;
    pointer-events: none;
    cursor: none;
}

#arriba:hover {
    color: var(--clr-title);
    background-color: transparent;
    border: 1px solid var(--clr-title);
}

#arriba.show {
    opacity: 1;
    pointer-events: auto;
}

/* FOOTER */
.footer {
    width: 90vw;
    margin-top: 1rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    /*  align-items: end; */
    position: relative;
    padding-bottom: 1rem;

}

.footer-list {
    display: flex;
    flex-direction: row;
    gap: 2rem;
    font-size: 2rem;
    padding-top: 2rem;

}

.footer-list a i {
    color: var(--clr-title);
    transition: color .3s, transform .3s ease-in-out;
    font-size: 2rem;
    display: flex;
    cursor: none;
}



.copi {
    display: flex;
    justify-content: end;
    font-family: var(--ff-title);
    color: var(--clr-title);
    margin-top: .5rem;
    margin-bottom: .3rem;
    align-items: end;
    cursor: none;
}

.copi p {
    display: flex;
    flex-direction: row;
    align-self: end;
}

.rope-container {
    width: 100%;
    height: 40px;
    overflow: visible;
    position: relative;
}

.rope {
    width: 100%;
    height: 100%;
    cursor: none;
    pointer-events: auto;
}

.rope path {
    stroke: black;

}

/* Media query para dispositivos más pequeños que 360px */
@media (max-width: 360px) {
    .title-hero {
        font-size: 1.5rem;
        text-align: center;
        margin-bottom: 0.5rem;
    }

    .nav {
        width: 70vw;

    }

    .nav-list li a {
        font-size: 3.1rem;
    }
}

@media (min-width: 768px) and (max-width: 1199px) {


    .hero {
        display: grid;
        grid-template-columns: 1fr 1fr;
        padding-top: 0;
        width: 90vw;
        min-height: 80vh;
        margin-top: 0;
    }

    .title-hero {
        font-size: 2.5rem;
        margin-top: 1.3rem;
    }

    .subtitle-hero {
        font-size: 1.3rem;
        text-wrap: balance;
    }

    .title-portfolio,
    .about-me-title,
    .contact-title {
        font-size: 3rem;
    }

    .portada {
        margin-top: 5rem;
        width: 214px;
        height: 183px;
    }

    .portada img {
        width: 430px;
        margin-top: 4rem;
        bottom: -4%;
        right: -53%;
        border-bottom-left-radius: 150px;
        border-bottom-right-radius: 150px;
    }

    .hero-p {
        line-height: 1.5;
    }

    .hello {
        grid-column: span 2;
        font-size: 2.1rem;
        margin-top: 7rem;
        width: 100%;
        margin-left: -1.8rem;
    }

    .web {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 1fr;
        height: auto;

        align-self: center;
    }

    .web-btn-wrapp {
        display: flex;
        flex-direction: row;
        gap: .5rem;
    }

    .web button {
        display: grid;
        grid-column: 2 / 3;
        justify-self: start;
        align-self: end;
    }

    .img-wrapper {
        display: flex;
        flex-direction: column;
        gap: 1rem;
    }

    .img-card {
        width: 100%;
        height: 100%;
    }

    .img-card video {
        object-fit: contain;

    }

    .skills {
        margin-top: 2rem;
        align-items: center;
    }

    .wrapp-certificados {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        grid-template-rows: repeat(2, auto);
        grid-template-areas:
            "fe fe ds js"
            "fe fe react wp";
        gap: 1rem;
        padding: 1rem 2rem;
    }

    .certificado {
        width: 100%;
        height: auto;
    }

    .fe {
        grid-area: fe;
    }

    .ds {
        grid-area: ds;
    }

    .js {
        grid-area: js;
    }

    .react {
        grid-area: react;

    }

    .wp {
        grid-area: wp;
    }

}

/* NAV DESKTOP */
@media(min-width:1200px) {

    header {
        padding: 1.5rem 1.7rem;
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        background-color: rgba(255, 255, 255, 0.3);
    }

    header::after {
        width: 94vw;
    }

    .nav {
        width: 50vw;
        justify-content: start;
        align-items: start;
    }

    .nav.nav.visible {
        width: 50vw
    }

    .nav-list li a {
        font-size: 5rem;

    }

    .nav-list {
        gap: 6rem;
        padding-left: 1.5rem;
    }


    .nav-list li {
        position: relative;
        overflow: hidden;
        height: 5rem;
    }

    .btn-eng {
        display: flex;
        justify-content: flex-end;
        align-items: center;
        gap: 1rem;
        margin-left: auto;
    }

    /* PORTADA */



    .portada {
        position: relative;
        margin-top: 5rem;
        width: 244px;
        height: 190px;
    }

    .portada img {
        width: 460px;
        margin-top: 4rem;
        bottom: -4%;
        right: -45%;
        border-bottom-left-radius: 150px;
        border-bottom-right-radius: 150px;
    }

    /* HERO */

    .hero {
        display: grid;
        grid-template-columns: 1fr 1fr;
        padding-top: 0;
        width: 90vw;
        min-height: 100vh;
        margin-top: 0;
    }

    .title-hero {
        font-size: 3rem;
        margin-top: 2rem;
    }

    .subtitle-hero {
        font-size: 2rem;
    }

    .title-portfolio,
    .about-me-title,
    .contact-title {
        font-size: 3.5rem;
    }



    .hero-p {
        line-height: 1.5;
    }

    .hello {
        grid-column: span 2;
        font-size: 3.3rem;
        margin-top: 12rem;
        width: 100%;
    }

    /* PORTFOLIO */
    .portfolio {
        margin-top: 4rem;
    }

    .portfolio-p,
    .about-me-p {
        font-size: 1.1rem;
        margin-top: 1rem;
        line-height: 1.4;

    }



    .web-wrap {
        gap: 2rem;
        overflow: hidden;
        margin-top: 2.5rem;
        margin-bottom: 3rem;
    }

    .web {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 1fr;
        height: auto;

        align-self: center;
    }

    .web-btn-wrapp {
        display: flex;
        flex-direction: row;
        gap: .5rem;
    }

    .web button {
        display: grid;
        grid-column: 2 / 3;
        justify-self: start;
        align-self: end;
    }

    .img-wrapper {
        display: flex;
        flex-direction: column;
        gap: 1rem;
    }

    .img-card {
        width: 100%;
        height: 100%;
    }

    .img-card video {
        object-fit: contain;

    }

    .skills {
        margin-top: 2rem;
        align-items: center;
    }

    /* ABOUT ME */
    .wrapp-certificados {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        grid-template-rows: repeat(2, auto);
        grid-template-areas:
            "fe fe ds js"
            "fe fe react wp";
        gap: 1rem;
        padding: 1rem 2rem;
    }

    .certificado {
        width: 100%;
        height: auto;
    }

    .fe {
        grid-area: fe;
    }

    .ds {
        grid-area: ds;
    }

    .js {
        grid-area: js;
    }

    .react {
        grid-area: react;

    }

    .wp {
        grid-area: wp;
    }

    .certificado.fe img:hover {
        transform: scale(1.05);
    }

    #arriba {
        right: 25px;
        bottom: 23px;
        font-size: 1.5rem;
    }

    /* CONTACT */
    .email p {
        font-size: 1.3rem;
        text-wrap: nowrap;
    }

    /* FOOTER */
    .footer-list {
        gap: 3rem;

    }

    .footer-list a i {
        font-size: 2.5rem;
    }

    .footer {
        padding-bottom: 1rem;

    }
}