@import "./base-styles.css";
@font-face {
  font-family: "Inter";
  src: url(../font/Inter-Medium.woff2) format("woff2"),
    url(../font/Inter-Medium.woff) format("woff");
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url(../font/Inter-Bold.woff2) format("woff2"),
    url(../font/Inter-Bold.woff) format("woff");
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: "League Gothic";
  src: url(../font/LeagueGothic-Regular-VariableFont_wdth.woff2) format("woff2"),
    url(../font/LeagueGothic-Regular-VariableFont_wdth.woff) format("woff");
  font-display: swap;
}

/* ********** Components ********** */

.container {
  max-width: var(--max-width);
  padding: var(--space-32-54) var(--space-16-27);
  margin-left: auto;
  margin-right: auto;
}

.box-copy-text {
  display: flex;
  justify-content: center;
  /* width: fit-content; */
  padding: 1rem 2rem;
  border-radius: 2rem;
  color: #d5d8dc;
  background-color: #0006;

  /* #textCopy {
    user-select: none;
    pointer-events: none;
  } */
  button {
    padding: 0.3rem 0.5rem;
    border-radius: 5rem;
    margin-left: 1rem;
    font-weight: bold;
    color: #eee;
    background-color: #181818;
    cursor: pointer;
    &:hover {
      outline: 1px solid #06e;
      color: #fff;
      background-color: #060606;
      /* background-color: #1e2f3f; */
      /* background-color: #06e; */
    }
  }
}

.title-second {
  font-family: "League Gothic";
  font-size: 3.2rem;
  text-transform: uppercase;
  letter-spacing: -0.3px;
  -webkit-text-stroke: 0.1px #fff1;
  background-image: var(--title-gradiente);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  transform: translateY(27px);
}

::-webkit-scrollbar {
  width: 0.5rem;
}
::-webkit-scrollbar-thumb {
  border: 0.5px solid #ffffff66;
  border-radius: 8px;
  background-color: #0008;

  &:active {
    border: 0.5px solid #999;
    background-color: #333;
  }
}
@media (hover: hover) {
  ::-webkit-scrollbar-thumb:hover {
    border: 0.5px solid #999;
    background-color: #333;
  }
}

.btn-mode-light,
.btn-mode-dark {
  z-index: 2;
  display: flex;
  padding: var(--box-8-9);
  outline: 0.5px solid var(--bg-navbar-borde);
  border-radius: 50%;
  background-color: var(--bg-navbar);
  box-shadow: var(--box-shadow-m);
  transition: background-color var(--transition-s), outline var(--transition-s);
  cursor: pointer;

  &:hover,
  &:active {
    outline: 0.5px solid var(--bg-btn-active-border);
    background-color: var(--bg-btn-active);
  }

  &.btn-mode-dark:hover {
    filter: brightness(2);
  }
}

:root[data-theme="light"] .btn-mode-dark,
:root[data-theme="dark"] .btn-mode-light {
  display: none;
}

@media (hover: hover) {
  .btn-theme:hover {
    background-color: var(--bg-btn-active);
    outline: 0.5px solid var(--bg-btn-active-border);
  }
}

.box-contact {
  display: flex;
  justify-content: center;
  gap: 1.5rem;
  transition: transform var(--transition-m);

  a[title="Email"] {
    svg {
      fill: var(--correo-contacto);
      filter: drop-shadow(0 0 9px var(--correo-shadow));
      &:hover {
        filter: none;
      }
    }
  }
  a {
    &:hover,
    &:active {
      border: var(--bg-btn-active-border);
      transform: scale(1.05);
    }
  }
}

.header-flags {
  width: fit-content;
  display: flex;
  align-items: center;
  cursor: pointer;

  .flags-item {
    width: 22px;
    filter: drop-shadow(var(--box-shadow-s));
    cursor: pointer;

    &:first-of-type {
      margin-left: 0.5rem;
      img {
        border-radius: 8px 0 0 8px;
      }
    }
    img {
      border-radius: 0 8px 8px 0;
      &:hover,
      &:active {
        filter: brightness(2) drop-shadow(0 0 2px #fff9);
      }
    }
  }
}

/* ********** Modal ********** */

.modal-window {
  position: fixed;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--bg-modal);
  backdrop-filter: blur(4px);
  visibility: hidden;
  transition: visibility var(--transition-m), opacity var(--transition-m);
  opacity: 0;

  &:target {
    opacity: 1;
    visibility: visible;
    transition: visibility var(--transition-s), opacity var(--transition-s);
  }
  .modal-box {
    position: relative;
    width: 100%;
    min-width: 300px;
    max-width: 500px;
    margin-left: 2rem;
    margin-right: 2rem;
    border: 0.5px solid var(--bg-modal-box-borde);
    border-radius: var(--box-16-18);
    background-color: var(--bg-modal-box);
    box-shadow: var(--box-shadow-m);

    .modal-form {
      display: flex;
      flex-direction: column;
      justify-content: center;
      gap: 1.5rem;
      width: 100%;
      padding: var(--box-16-18);
      margin-top: 32px;

      .contact-form-error {
        position: absolute;
        right: 2rem;
        padding: 0.1rem 1rem;
        border-bottom: 1px solid var(--first-color);
        border-radius: 0 0 5px 5px;
        margin-left: 2rem;
        font-size: 12px;
        text-wrap: pretty;
        color: #fd8b88;
        letter-spacing: 0.4px;
        background-color: var(--red);
        background-color: #1a000090;
      }
      .contact-form-error.is-active {
        display: block;
        animation: show-message 0.5s normal;
      }
      .input-asunto > .contact-form-error {
        transform: translateY(29px);
      }

      label {
        display: flex;
        border-bottom: 1px solid var(--bg-navbar);
        &:focus ~ svg {
          color: var(--form-ok-color);
        }

        svg {
          min-width: 25px;
          margin-bottom: 0.2rem;
          color: #fff8;
        }

        input {
          width: 100%;
          padding: 0.5rem 1rem 0.1rem;
          outline: 0;
          border: none;
          color: #fff;
          background-color: transparent;

          &[name="asunto"] {
            padding: 0.5rem 0 0.3rem 0.3rem;
          }
        }
        .contact-form-error {
          transform: translateY(32px);
        }
      }

      textarea {
        padding: 16px;
        outline: none;
        border: 1px solid #fff1;
        border-radius: var(--box-8-9);
        resize: none;
        font-family: inherit;
        font-size: var(--font-16);
        color: #fff;
        background-color: #0006;
      }

      input[type="submit"] {
        padding: var(--box-12-14);
        outline: 0;
        border: none;
        border-radius: 43px;
        font-family: inherit;
        font-size: var(--font-16);
        color: #fff;
        background-color: var(--link-color);
        filter: opacity(0.75);
        transition: filter var(--transition-s);
        cursor: pointer;

        &:hover {
          filter: opacity(1) contrast(2);
        }
      }

      .linea-modal {
        display: flex;
        p {
          padding: 0 0.5rem;
        }
        hr {
          width: 100%;
        }
      }

      .contact-form-loader {
        .loader {
          text-align: center;

          span {
            font-weight: 700;
            color: #f8f9fc;
          }

          .loading-bar {
            position: relative;
            z-index: 1;
            width: 130px;
            height: 2px;
            margin: 0 auto;
            margin-top: 0.5rem;
            border-radius: 2px;
            overflow: hidden;
            background-color: #fff;
            transition: transform 0.3s ease-in;
            transform: rotateY(0);

            .blue-bar {
              height: 100%;
              width: 68px;
              position: absolute;
              border-radius: 2px;
              background-color: var(--link-color);
              animation: initial-loading 1.5s ease infinite;
              transform: translate(-34px);
            }
          }
        }
      }
    }
    .modal-form > .contact-form-error {
      transform: translateY(109px);
    }
    .modal-form > textarea,
    .modal-form input {
      &::placeholder {
        font-family: inherit;
        color: #fff8;
      }
    }

    .modal-cerrar {
      position: absolute;
      top: var(--box-8-9);
      right: var(--box-16-18);
      display: flex;
      padding: var(--box-8-9);
      border-radius: 50%;
      background-color: #0005;
      box-shadow: var(--box-shadow-m);

      svg path {
        fill: #f004;
      }

      &:hover,
      &:active {
        outline: 1.5px solid red;
        background-color: #1009;
        box-shadow: none;
        svg path {
          fill: red;
        }
      }
    }
  }
}
@keyframes initial-loading {
  0% {
    transform: translateX(-34px);
  }
  50% {
    transform: translateX(96px);
  }
  100% {
    transform: translateX(-34px);
  }
}
@keyframes show-message {
  0% {
    visibility: hidden;
    opacity: 0;
  }
  100% {
    visibility: visible;
    opacity: 1;
  }
}

@media (hover: hover) {
  .modal-cerrar:hover {
    outline: 1.5px solid #f005;
    box-shadow: 0 0 16px red;
  }
}
/* ********** Utilities ********** */

.c-visible {
  content-visibility: auto;
}

.none {
  display: none;
}

section:not(.home, .modal-offer) {
  content-visibility: auto;
}
.about-box,
.contact-info {
  view-timeline-name: --scroll-section;
  animation: show-section auto ease-in both;
  animation-timeline: --scroll-section;
  animation-range: entry 25% cover 47%;

  content-visibility: auto;
}
@keyframes show-section {
  0% {
    opacity: 0;
    scale: 25%;
  }
  25% {
    scale: 50%;
  }
  100% {
    opacity: 1;
    scale: 100%;
  }
}

/* ********** Site Styles ********** */

header {
  position: absolute;
  inset: 0;
  z-index: 1;
  height: 0;

  .header-container {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 32px;

    .header-logo {
      color: var(--text-icon-color);
    }
  }
}

nav {
  position: relative;
  display: flex;

  ul {
    position: fixed;
    bottom: 0.5rem;
    left: 0;
    right: 0;
    z-index: 2;
    display: flex;
    gap: var(--box-8-9);
    width: max-content;
    padding: 4px;
    border: 0.5px solid var(--bg-navbar-borde);
    border-radius: 40px;
    margin: auto;
    background-color: var(--bg-navbar);
    box-shadow: var(--box-shadow-m);
    backdrop-filter: saturate(200%) blur(10px);

    li {
      a {
        display: flex;
        border-radius: 22px;
        transition: background-color var(--transition-s);

        span {
          display: none;
        }
        img {
          padding: var(--box-8-9);
        }
        &:active {
          outline: 0.5px solid var(--btn-navbar-active-border);
          background-color: var(--bg-btn-active);
          box-shadow: var(--box-shadow-m);
        }
        &.active {
          outline: 0.5px solid var(--btn-navbar-active-border);
          background-color: var(--bg-btn-active);
          box-shadow: var(--box-shadow-m);
          /* box-shadow: var(--box-shadow-nav); */
        }
        &:hover {
          outline: 0.5px solid var(--btn-navbar-active-border);
          background-color: var(--bg-btn-active);
          box-shadow: var(--box-shadow-m);
        }
      }
    }
  }
}

/* *** Main *** */

main > section {
  display: flex;
}

.home {
  min-height: 100vh;
  background-image: var(--bg-home);

  .home-box {
    display: flex;
    align-items: center;
    justify-content: center;

    .home-info {
      position: relative;
      z-index: 1;
      display: flex;
      flex-direction: column;
      gap: 1rem;
      text-align: center;

      h1 {
        font-weight: 700;
        color: var(--first-color);
        letter-spacing: -0.3px;
        text-shadow: -0.5px -0.5px 0px var(--title-first-border),
          -0.5px 0.5px 0px var(--title-first-border),
          0.5px 0.5px 0px var(--title-first-border),
          0.5px -0.5px 0px var(--title-first-border),
          0 0 10px var(--title-first);
      }
      strong {
        font-size: var(--font-20);
        filter: blur(20px);
        transform: translateY(50px);
        animation: showContent 0.5s linear 0.8s forwards;
        opacity: 0;
      }
      .box-contact {
        filter: blur(5px);
        transform: translateY(-30px);
        animation: showContent 0.3s ease-out 2s 1 forwards;
        opacity: 0;
      }
    }
  }
}
@keyframes showContent {
  to {
    filter: blur(0px);
    transform: translateY(0px);
    opacity: 1;
  }
}

.home-img-hero {
  position: fixed;
  left: 50%;
  z-index: -1;
  display: flex;
  justify-content: center;
  width: 100%;
  height: 75vh;
  transform: translate(-50%, 0%);

  view-timeline: --header-vtl;
  animation: adjust-image linear both;
  animation-timeline: --header-vtl;
  animation-range: exit;

  img {
    min-width: 300px;
    max-width: 500px;
    margin: 3rem 2rem;
    filter: var(--filter-logo);
    animation: bounce-in-top 1.1s both 1.5s;
  }
}
@keyframes adjust-image {
  from {
    zoom: 1;
  }
  80% {
    opacity: 0.2;
  }
  to {
    translate: 67% 15px 0;
    filter: invert(0.5);
    scale: 2.3;
    rotate: -6deg;
    opacity: 0.3;
  }
}
@keyframes bounce-in-top {
  0% {
    transform: translateY(-500px);
    animation-timing-function: ease-in;
    opacity: 0;
  }
  38% {
    transform: translateY(0);
    animation-timing-function: ease-out;
    opacity: 1;
  }
  55% {
    transform: translateY(-65px);
    animation-timing-function: ease-in;
  }
  72% {
    transform: translateY(0);
    animation-timing-function: ease-out;
  }
  81% {
    transform: translateY(-28px);
    animation-timing-function: ease-in;
  }
  90% {
    transform: translateY(0);
    animation-timing-function: ease-out;
  }
  95% {
    transform: translateY(-8px);
    animation-timing-function: ease-in;
  }
  100% {
    transform: translateY(0);
    animation-timing-function: ease-out;
  }
}

.about {
  justify-content: center;
  padding: var(--box-64-72) var(--box-16-18);

  .about-box {
    display: flex;
    align-items: center;
    flex-direction: column;
    gap: var(--box-16-18);
    padding: var(--box-16-18);
    border-radius: 30px;
    corner-shape: squircle;

    background-image: var(--bg-footer);

    img {
      max-width: 60%;
      --s: 10px;
      --f: 1; /* initial scale */

      padding-top: calc(var(--s) / 5);
      border-radius: 0 0 999px 999px;
      --_g: 50% / calc(100% / var(--f)) 100% no-repeat content-box;
      --_o: calc((1 / var(--f) - 1) * var(--s) / 2 - 6px);
      outline-offset: var(--_o);
      background: radial-gradient(
          circle closest-side,
          #f4f4f7 calc(99% - 6px),
          #0002 calc(100% - 6px) 99%,
          #0000
        )
        var(--_g);
      -webkit-mask: linear-gradient(#000 0 0) no-repeat 50%
          calc(1px - var(--_o)) / calc(100% / var(--f) - 2 * 6px - 2px) 50%,
        radial-gradient(circle closest-side, #000 99%, #0000) var(--_g);
      mask: linear-gradient(#000 0 0) no-repeat 50% calc(1px - var(--_o)) /
          calc(100% / var(--f) - 2 * 6px - 2px) 50%,
        radial-gradient(circle closest-side, #000 99%, #0000) var(--_g);

      /* -webkit-mask: linear-gradient(#000 0 0) no-repeat 50%
          calc(1px - var(--_o)) / calc(100% / var(--f) - 2 * 6px - 2px) 50%,
        radial-gradient(circle closest-side, #000 99%, #0000) var(--_g); */
      transform: scale(var(--f));
      transition: 0.5s;
      &:hover {
        --f: 1.15;
      }
    }

    .about-text {
      h2 {
        /* border: 3px solid red; */
        text-align: start;
      }
      p {
        margin-top: 1rem;
        font-weight: 500;
        letter-spacing: 0.1px;
        text-indent: 0.5rem;
        text-wrap: balance;
      }
    }
  }
}
.skills {
  display: flex;
  justify-content: center;

  .skills-container {
    display: flex;
    align-items: center;
    flex-direction: column;
    gap: var(--box-32-36);
    padding: var(--box-32-36) var(--box-16-18);

    .skills-box {
      view-timeline-name: --scroll-section;
      animation: show-section auto linear both;
      animation-timeline: --scroll-section;
      animation-range: entry 25% cover 30%;

      .skills-item {
        display: flex;
        justify-content: center;
        flex-wrap: wrap;
        gap: 1rem;
        margin-top: 1rem;

        figure {
          z-index: 1;
          display: flex;
          flex-direction: column;
          &:hover img {
            &:first-child {
              filter: drop-shadow(var(--box-shadow-icon-m));
            }
            &:last-child {
              transform: scale(1.8);
            }
          }
          img {
            max-width: 57px;
            transition: box-shadow var(--transition-m),
              transform var(--transition-m);

            &:last-child {
              padding-top: 0.2rem;
              &:hover {
                transform: scale(1.5);
                animation: none;
              }
            }
          }
        }
      }
      &:nth-child(even) h2 {
        text-align: end;
      }
    }
  }
}

/* animation: nope 1s ease-in-out; */
/* @keyframes nope {
  0% {
    transform: translateX(0);
  }
  6.5% {
    transform: translateX(-3px) rotateY(-6deg);
  }
  18.5% {
    transform: translateX(2px) rotateY(4deg);
  }
  31.5% {
    transform: translateX(-0.5px) rotateY(-2deg);
  }
  43.5% {
    transform: translateX(0.25px) rotateY(1deg);
  }
  50% {
    transform: translateX(0);
  }
} */

.project {
  flex-direction: column;
  h2 {
    margin: auto;
  }

  .proyecto-container {
    .proyecto-page {
      max-width: 100%;

      figure {
        view-timeline-name: --scroll-section;
        animation: show-section auto linear both;
        animation-timeline: --scroll-section;
        animation-range: entry 25% cover 30%;

        display: flex;
        align-items: end;
        margin: 1rem 0.5rem;
        border-radius: 40px;
        corner-shape: squircle;

        overflow: hidden;
        aspect-ratio: 16/9;
        background-size: cover;
        background-position: center;
        box-shadow: var(--box-shadow-icon-m);

        .link-title {
          width: 100%;
          padding: 1rem;
          border-top: 1px solid transparent;
          color: #f8f9fc;
          background-color: #0008;
          transition: all var(--transition-m);
          opacity: 1;

          p {
            display: flex;
            justify-content: space-between;
          }

          &:hover {
            border-top: 1px solid #111;
            color: #fff;
            text-shadow: 0 0 5px #000;
            background-color: #0009;
            backdrop-filter: blur(8px) saturate(180%);
            opacity: 1;
          }
        }
      }
      .bg-theme-fs {
        background-image: url(../assets/project/theme-fs.avif);
      }
      .bg-crud {
        background-image: url(../assets/project/crud.avif);
      }
      .bg-spa-apis {
        background-image: url(../assets/project/spa_apis.png);
      }
      .bg-tarjeta-compra {
        background-image: url(../assets/project/e-commers.avif);
      }
      .bg-blog {
        background-image: url(../assets/project/blog.avif);
      }
      .bg-ajax {
        background-image: url(../assets/project/incluir-html-ajax.avif);
      }
      .bg-sliders {
        background-image: url(../assets/project/reloj-serie.avif);
      }
    }
  }
}

.contact {
  position: relative;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  background-image: var(--bg-footer);

  .contact-info {
    display: flex;
    align-items: center;
    flex-direction: column;
    gap: 1rem;

    p {
      font-size: var(--font-20);
      font-weight: 600;
    }
  }
  small {
    position: absolute;
    bottom: 4.5rem;

    a {
      font-weight: 700;
      color: var(--link-color);
    }
  }
}

.contact-cv {
  position: relative;
  padding: 15px 32px;
  border: none;
  border-radius: 32px;
  margin-top: 1.5rem;
  overflow: hidden;
  font-size: 20px;
  background-color: var(--border-contacto);

  &::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 104%;
    height: 40px;
    background-image: linear-gradient(#07e, #0d549b);
    animation: anim 2s linear infinite;
  }

  &::after {
    content: "";
    position: absolute;
    inset: 2.3px;
    border-radius: 32px;
    background-color: var(--bg-btn-contacto);
    box-shadow: 0 0 10px #0006 inset;
  }

  a {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--text-icon-color);
    opacity: 0.75;
    user-select: none;
  }
}
@keyframes anim {
  0% {
    transform: translate(-50%, -50%) rotate(0);
  }
  100% {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

@media (hover: hover) {
  .contact-cv {
    &:hover svg,
    &:hover a {
      fill: var(--link-color);
      color: var(--link-color);
      opacity: 1;
    }
  }
}
@media screen and (width > 768px) {
  .title-second {
    font-size: 7rem;
    transform: translateY(40px);
  }

  nav {
    ul {
      padding: var(--box-8-9);
      li {
        a {
          border-radius: 35px;
          img {
            padding: var(--box-16-18);
            transform: scale(1.2);
          }
        }
      }
    }
  }
  .box-contact {
    gap: 2rem;
    gap: var(--box-32-36);
  }
  .home-box,
  .contact-info {
    h1 {
      font-size: var(--font-36);
    }
    strong {
      font-size: var(--font-24) !important;
    }
    & .box-contact a > svg {
      width: 34px;
      height: 32px;
    }
  }
  .about {
    padding-left: var(--box-32-36);
    padding-right: var(--box-32-36);

    .about-box {
      flex-direction: row;
      padding-top: 0;
      background-image: var(--bg-box);
      img {
        width: 30%;
      }

      .about-text > h2 {
        text-align: center;
        /* background-color: red; */
      }
    }
  }
  .contact > small {
    bottom: 6rem;
  }
}
@media screen and (width > 1024px) {
  .title-second {
    font-size: 7rem;
    transform: translateY(40px);
  }
  nav {
    ul {
      top: 10px;
      bottom: unset;
      padding: 4px;
      li {
        a {
          border-radius: 22px;

          span {
            display: inline-block;
            padding: 0.8rem 1.6rem;
            font-size: 16px;
            font-weight: 500;
            color: var(--text-icon-color);
          }
          img {
            display: none;
          }
        }
      }
    }
  }

  .skills {
    .skills-container {
      padding-top: 5rem;
      flex-direction: row;
      justify-content: center;
      column-gap: 5rem;
      flex-wrap: wrap;
    }
  }
  .contact > small {
    bottom: 0.5rem;
  }
  .project {
    .proyecto-container {
      .proyecto-page {
        display: grid;
        grid-auto-rows: auto;
        grid-template-columns: repeat(2, 1fr);

        figure:nth-last-child(1):nth-child(odd) {
          grid-column: span 2;
        }
      }
    }
  }
}

/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
