:root {
  --ink: #080808;
  --paper: #f3f4fa;
  --off: #eeeef4;
  --muted: #909090;
  --faint: #c8c8cc;
  --white: #ffffff;
  --nav-h: 76px;
  --radius-pill: 40px;
  --radius-card: 14px;
  --font-display: 'Italiana', serif;
  --font-body: 'Jost', sans-serif;
  --font-mono: 'Dosis', sans-serif;
}

*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  scroll-behavior: smooth;
}

html { font-size: 16px; }

body {
  background-color: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body::-webkit-scrollbar { width: 5px; background: var(--paper); }
body::-webkit-scrollbar-thumb { background: var(--faint); }
*::-webkit-scrollbar { width: 0; height: 0; }

a { text-decoration: none; color: inherit; }

/* ── PRELOADER ── */
.preloader {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}

.preloader h5.pretext {
  position: relative;
  z-index: 60;
}

.preloader h5.pretext span { color: var(--ink); mix-blend-mode: difference; }

.preloader #divs {
  position: fixed;
  inset: 0;
  display: flex;
  flex-flow: row nowrap;
  align-items: flex-start;
  overflow: hidden;
}

.preloader #divs div.pre-column {
  flex: 1;
  height: 100vh;
  background-color: var(--white);
  transform-origin: top center;
}

.preloader span {
  font-size: 68px;
  font-family: var(--font-mono);
  font-weight: 200;
  letter-spacing: -3px;
  color: var(--ink);
}

.preloader span:last-of-type {
  opacity: .25;
  font-size: 34px;
  padding-left: 8px;
  letter-spacing: 0;
}

/* ── NAV ── */
nav {
  position: fixed;
  top: 22px;
  left: 5vw;
  width: 90vw;
  z-index: 50;
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-evenly;
  padding: 11px 0;
  border-radius: var(--radius-pill);
  background-color: var(--ink);
  border: 1px solid rgba(255,255,255,.05);
}

nav a {
  padding: 6px 4px;
  color: var(--white);
  transform: scale(1.2);
  opacity: .75;
  transition: opacity .2s;
}

nav a:hover { opacity: 1; }
nav a span:first-of-type { display: none; }

/* ── HOME ── */
.home {
  position: relative;
  background-color: var(--paper);
  display: flex;
  align-items: center;
  height: 100vh;
  overflow: hidden;
  padding-top: 200px;
}

.home .intro_wrapper {
  padding: 25px;
  position: relative;
  z-index: 1;
}

.home .intro_content {
  display: flex;
  flex-flow: column nowrap;
  align-items: center;
  justify-content: space-evenly;
}

.home .intro_content .download-links {
  display: flex;
  flex-flow: column nowrap;
  align-items: center;
  padding: 44px 0;
}

.home .intro_content .download-links a {
  padding: 13px 20px;
  border: 1.5px solid var(--ink);
  border-radius: var(--radius-pill);
  width: 70vw;
  margin-bottom: 16px;
  display: flex;
  justify-content: space-evenly;
  align-items: center;
  color: var(--ink);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 13px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  transition: background .22s, color .22s;
}

.home .intro_content .download-links a:hover {
  background-color: var(--ink);
  color: var(--white);
}

.home .intro_content .download-links a:last-of-type {
  background-color: var(--ink);
  color: var(--white);
}

.home h1,
.home h1 b.last_name {
  font-family: var(--font-body);
  line-height: 105%;
  letter-spacing: 10px;
  font-weight: 600;
  font-size: 16vw;
  text-align: center;
  text-transform: uppercase;
  margin-top: 10px;
  color: var(--ink);
}

.home h2 {
  font-weight: 300;
  font-size: 11px;
  letter-spacing: 5px;
  text-transform: uppercase;
  text-align: left;
  transform: translateX(-50px);
  color: var(--muted);
}

.home .role {
  color: var(--ink);
  text-transform: uppercase;
  font-weight: 300;
  font-size: 11px;
  letter-spacing: 5px;
  padding: 18px 0;
}

.home .description {
  font-size: 15px;
  color: var(--muted);
  line-height: 1.8;
  font-weight: 300;
}

.home #bottomWave { width: 100%; position: absolute; bottom: 0; }

.home #rect1 {
  z-index: 0;
  width: 100%;
  position: absolute;
  left: -20%;
  top: 20px;
  opacity: .35;
}

.profile_photo { display: none; }

/* ── LOGOS ── */
.logos {
  width: 100vw;
  padding: 44px 0;
  overflow-x: scroll;
  background-color: var(--off);
  border-top: 1px solid rgba(0,0,0,.05);
  border-bottom: 1px solid rgba(0,0,0,.05);
}

.logos .list { display: flex; flex-flow: row nowrap; }

.logos img {
  height: 70px;
  padding: 14px 32px;
  filter: saturate(0);
  opacity: .2;
  transition: opacity .3s;
}

.logos img:hover { opacity: .5; }

/* ── ABOUT HEADING ── */
.about-heading {
  margin: 0 !important;
  padding: 0 !important;
  width: 100%;
  display: flex;
  flex-flow: column nowrap;
}

.about-heading img { width: 100%; padding: 0; z-index: 2; }

.about-heading h2.h2 {
  padding: 0;
  margin: 0;
  position: relative;
  top: 35px;
}

h2.h2 {
  text-transform: uppercase;
  color: var(--ink);
  font-size: 20vw;
  font-family: var(--font-display);
  font-weight: 300;
  text-align: center;
  letter-spacing: -3px;
}

/* ── DETAILS / TABS ── */
.details-section {
  width: 100vw;
  padding: 0;
  background-color: var(--ink);
}

.tabBar {
  width: 100%;
  overflow-x: scroll;
  padding-top: 44px;
}

.tabBar .tabs {
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  padding-bottom: 44px;
}

.tabBar .tabs a {
  padding: 10px 12px;
  margin: 0 16px;
  min-width: 95px;
  color: rgba(255,255,255,.22);
  text-transform: uppercase;
  font-size: 10px;
  letter-spacing: 3.5px;
  font-family: var(--font-body);
  font-weight: 500;
  transition: color .22s;
  position: relative;
}

.tabBar .tabs a::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 12px;
  width: 0;
  height: 1px;
  background: var(--white);
  transition: width .28s cubic-bezier(.16,1,.3,1);
}

.tabBar .tabs a.active,
.tabBar .tabs a:hover { color: var(--white); }

.tabBar .tabs a.active::after,
.tabBar .tabs a:hover::after { width: calc(100% - 24px); }

.tabBar .tabs a:last-of-type { padding-right: 90px; }

div.descriptions {
  width: 100vw;
  display: flex;
  flex-flow: column nowrap;
  overflow-x: hidden;
  padding: 0 0 90px 0 !important;
}

div.descriptions div { overflow: hidden; }

div.experience_description,
div.education_description { height: 0; display: none; }

div.column {
  padding: 10px 25px !important;
  min-width: 100vw;
  max-width: 100vw;
  font-family: var(--font-body);
  font-size: 28px;
  font-weight: 300;
  line-height: 1.65;
  overflow: hidden;
  user-select: none;
  color: var(--white);
}

div.column span { font-size: 28px; }

div.column .char {
  opacity: .1;
  display: inline-block;
}

/* ── PROJECTS ── */
.projects {
  width: 100vw;
  overflow-x: hidden;
  padding: 0;
  background-color: var(--paper);
}

.projects > img { width: 100%; }

.project-cards {
  width: 100%;
  padding: 6vw;
  grid-template-columns: repeat(1, 1fr) !important;
  display: grid;
  gap: 28px;
}

.project {
  width: 100%;
  cursor: pointer;
  height: 100%;
  font-family: var(--font-body);
  position: relative;
}

.project p {
  font-size: 13px;
  font-weight: 400;
  letter-spacing: .3px;
  margin-top: 10px;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 1px;
}

.project img {
  width: 100%;
  object-fit: cover;
  border-radius: var(--radius-card);
  height: 240px;
  display: block;
  transition: transform .55s cubic-bezier(.16,1,.3,1), filter .4s;
  filter: saturate(90%);
}

.project:hover img {
  transform: scale(1.03);
  filter: saturate(100%);
}

/* ── SCROLL TEXTS ── */
.scroll_texts {
  display: flex;
  flex-flow: column nowrap;
  overflow: hidden;
  width: 100vw;
  padding: 80px 0 0;
  background-color: var(--paper);
}

.scroll_texts .row_1,
.scroll_texts .row_2 {
  display: flex;
  flex-flow: row nowrap;
  padding: 0;
  white-space: nowrap;
}

.scroll_texts .row_1 span,
.scroll_texts .row_2 span {
  text-transform: uppercase;
  font-size: 22px;
  font-family: var(--font-body);
  font-weight: 700;
  color: var(--ink);
  letter-spacing: 1px;
}

.scroll_texts .row_1 span:nth-of-type(even),
.scroll_texts .row_2 span:nth-of-type(even) {
  -webkit-text-stroke: 1.5px var(--ink);
  color: transparent;
  font-weight: 200;
}

.scroll_texts span {
  display: inline-block;
  padding: 18px 28px;
  min-width: fit-content;
}

.scroll_texts img { width: 14px; opacity: .4; }

/* ── WAVE ── */
.wave-image { position: relative; bottom: -10px; width: 100%; }
.wave-image img { width: 100%; }
.outer_wave { width: 100vw; }
.outer_wave img { width: 100%; }

/* ── FREELANCE ── */
.freelance {
  min-height: 100vh;
  background-color: var(--ink);
  color: var(--white);
  padding: 0;
  position: relative;
  overflow: hidden;
}

.freelance .freelance_content { padding-bottom: 100px; }

.freelance h2.h2 { color: var(--white); padding-top: 50px; }

.freelance h3 {
  font-family: var(--font-display);
  font-size: 58px;
  font-weight: 300;
  margin-bottom: 16px;
  letter-spacing: -1px;
  color: var(--white);
}

.freelance img[src*="circle"] { opacity: .08; }

.freelance p {
  font-size: 15px;
  padding: 15px;
  color: rgba(255,255,255,.45);
  line-height: 1.85;
  font-weight: 300;
}

.freelance #my_photo { display: none; }

.freelance .row {
  width: 100vw;
  padding: 36px 0;
  overflow-x: auto;
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
}

.freelance button { margin-left: 25px; margin-top: 40px !important; }

.freelance .char { color: var(--white); opacity: 1; }

.freelance .row a {
  min-width: fit-content;
  margin: 0 10px;
  padding: 9px 18px;
  background-color: transparent;
  color: rgba(255,255,255,.55);
  font-weight: 400;
  font-family: var(--font-body);
  font-size: 10px;
  letter-spacing: 3px;
  text-transform: uppercase;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 3px;
  transition: border-color .22s, color .22s;
}

.freelance .row a:hover {
  border-color: rgba(255,255,255,.7);
  color: var(--white);
}

.freelance .amt {
  display: inline-block;
  margin: 0 0 0 25px;
  font-size: 54px;
  font-family: var(--font-mono);
  font-weight: 200;
  color: var(--white);
  letter-spacing: -3px;
}

.freelance .unit {
  color: rgba(255,255,255,.3);
  font-size: 16px;
  display: inline-block;
  margin-left: 12px;
  font-weight: 300;
  letter-spacing: 1px;
}

.freelance #suggest_project {
  border-radius: var(--radius-pill);
  padding: 15px 32px;
  border: 1px solid rgba(255,255,255,.18);
  font-family: var(--font-body);
  font-size: 10px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: rgba(255,255,255,.55);
  background: transparent;
  cursor: pointer;
  transition: border-color .22s, color .22s;
  margin-top: 15px;
}

.freelance #suggest_project:hover {
  border-color: rgba(255,255,255,.7);
  color: var(--white);
}

/* ── CONTACT ── */
.contact_me { width: 100vw; background-color: var(--paper); }

.contact_me h2.h2 { margin-bottom: 50px; }

.contact_me > p {
  padding: 25px;
  color: var(--muted);
  font-weight: 300;
  font-size: 14px;
  letter-spacing: .5px;
}

.contact_me a {
  padding: 10px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: var(--ink);
}

.contact_me a span {
  display: inline-block;
  font-size: 26px;
  margin-right: 35px;
}

.contact_me .other-links a span:last-of-type {
  transform: rotateZ(-50deg);
  transition: transform .22s ease-in-out;
}

.contact_me .other-links a:hover span:last-of-type {
  transform: rotateZ(0deg) scale(1.2);
}

.contact_me .other-links a:hover { color: var(--white); }

.contact_me .other-links {
  padding-top: 80px;
  padding-bottom: 80px;
}

.contact_me .other-links a {
  border-top: 1px solid rgba(0,0,0,.09);
  border-bottom: none;
  border-left: none;
  border-right: none;
  position: relative;
  z-index: 2;
}

.contact_me .other-links a:last-of-type {
  border-bottom: 1px solid rgba(0,0,0,.09);
}

.contact_me .other-links a div {
  position: absolute;
  left: 0;
  width: 100%;
  height: 0;
  transition: height .28s cubic-bezier(.16,1,.3,1);
}

.contact_me .other-links a:hover div {
  height: 65px;
  background-color: var(--ink);
  transform: translateY(-10px);
  z-index: -1;
}

.contact_me .row > a {
  text-transform: uppercase;
  text-align: center;
  text-decoration: underline;
  text-underline-offset: 5px;
  text-decoration-color: var(--faint);
  padding: 0;
  width: 100%;
  display: block;
  color: var(--ink);
  font-size: 11px;
  letter-spacing: 3px;
}

/* ── THANKS ── */
.thanks {
  padding: 0;
  height: 120vh;
  width: 100vw;
  background-color: var(--ink);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.thanks .period {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background-color: var(--white);
  position: relative;
  z-index: 0;
}

.thanks h1 {
  font-size: 100px;
  font-family: var(--font-mono);
  font-weight: 700;
  color: var(--ink) !important;
}

.thanks span#you_rock {
  position: relative;
  z-index: 10;
  font-size: 100px;
  font-family: var(--font-mono);
  font-weight: 700;
  color: var(--white) !important;
}

/* ── FOOTER ── */
footer {
  background-color: var(--ink);
  color: rgba(255,255,255,.25);
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-between;
  padding: 14px 24px;
  font-size: 10px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  border-top: 1px solid rgba(255,255,255,.04);
}

/* ── OTHER PAGES ── */
.other-pages {
  position: fixed;
  inset: 0;
  z-index: 1;
  opacity: .7;
  height: 100vh;
  width: 100vw;
  transform: translateX(110%);
  background-color: rgba(255,255,255,.27);
  overflow-y: scroll !important;
}

/* ── TODO PAGE ── */
.todo-page { min-height: 300vh; }
.todo-page .todo-header { width: 100%; height: 100%; }
.todo-page .todo-header h2 {
  font-weight: 200;
  color: #4F5769;
  font-family: Poppins;
  font-size: 3rem;
}
.todo-page .todo-header .todo-cap {
  width: 100%;
  min-height: 60vh;
  display: flex;
  flex-flow: column nowrap;
  align-items: start;
  padding-left: 20vw;
  padding-top: 20vh;
  justify-content: space-evenly;
}
.todo-page .todo-header .todo-cap .todo-email {
  display: flex;
  flex-flow: row nowrap;
  border-radius: 50px;
  height: 50px;
  background-color: #254363;
}
.todo-page .todo-header .todo-cap .todo-email input {
  background-color: transparent;
  padding: 6px 15px;
  border: none;
  width: 320px;
}
.todo-page .todo-header .todo-cap .todo-email .arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #3294FE;
  color: #fff;
  font-size: 60px;
}
.todo-page .todo-header .todo-nav {
  padding: 50px 50px 10px;
  width: 100%;
  display: flex;
  flex-flow: row nowrap;
  justify-content: space-between;
}
.todo-page .todo-header .todo-nav .todo-logo {
  display: flex;
  align-items: center;
  color: #3294FE;
  font-weight: 800;
  text-transform: capitalize;
  font-family: Poppins;
  height: 50px;
  margin-right: 20px;
}
.todo-page .todo-header .todo-nav .todo-logo img { height: 50px; }
.todo-page .todo-header .todo-nav .left-side { display: flex; flex-flow: row nowrap; }
.todo-page .todo-header .todo-nav a {
  color: #333;
  display: inline-block;
  padding: 10px;
  margin-right: 20px;
  transition: all .15s ease-in-out;
}
.todo-page .todo-header .todo-nav a:hover { color: #aaa; transform: scale(1.12); }
.todo-page .todo-header-bg {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  position: absolute;
}
.todo-page img { position: absolute; z-index: 0; }
.todo-page #left-star { left: -20vw; top: 5vh; }
.todo-page #mini-star { left: 3vw; top: 60vh; }
.todo-page #left-star-shadow { left: -20vw; top: 20vh; }
.todo-page #blue-star { left: 70vw; top: 80vh; }
.todo-page #big-star { left: 70vw; top: 0; }

p.and-projects {
  position: relative;
  z-index: 70;
  width: max-content;
  box-shadow: 0 2px 20px rgba(0,0,0,.06);
  border-radius: 2px;
  left: 20px;
  top: -70px;
  display: inline-block;
  padding: 16px 22px;
  background-color: var(--white);
  font-size: 12px;
  letter-spacing: 1px;
}

.projects, .freelance, .about-heading, .home { user-select: none; }

/* ════════════════════════════════════
   DESKTOP ≥ 1024px
════════════════════════════════════ */
@media screen and (min-width: 1024px) {

  body::-webkit-scrollbar { background-color: var(--paper); width: 5px; }
  body::-webkit-scrollbar-thumb { background-color: var(--faint); }

  nav {
    width: 100%;
    border-radius: 0;
    height: var(--nav-h);
    top: 0;
    left: 0;
    background-color: transparent;
    border: none;
    border-bottom: 1px solid rgba(0,0,0,.07);
  }

  nav a {
    color: var(--ink);
    transform: none;
    opacity: .6;
  }

  nav a:hover { opacity: 1; }

  nav a span:first-of-type {
    display: inline-block;
    font-family: var(--font-body);
    text-transform: uppercase;
    font-size: 10px;
    letter-spacing: 3.5px;
    color: var(--ink);
  }

  nav a span:last-of-type { display: none; }

  .home {
    padding: 0;
    min-height: 100vh;
    height: auto;
  }

  .home .intro_wrapper {
    padding: 0;
    padding-top: 120px;
    display: flex;
    flex-flow: row nowrap;
    width: 100vw;
    overflow: hidden;
    z-index: 1;
  }

  .home .profile_photo {
    display: inline-block;
    overflow: hidden;
    width: 30vw;
  }

  .home .profile_photo img {
    width: 100%;
    position: relative;
    bottom: 0;
    z-index: -1;
  }

  .home #rect1 { display: none; }

  .home .intro_content {
    z-index: 2 !important;
    width: 50vw;
    padding: 0 0 0 120px;
    display: flex;
    flex-flow: column nowrap;
    align-items: flex-start;
    justify-content: flex-start;
  }

  .home .intro_content .download-links {
    z-index: 13 !important;
    width: 100%;
    flex-flow: row nowrap;
    justify-content: flex-start;
    padding: 10px 0;
  }

  .home .intro_content .download-links a {
    margin-right: 14px;
    width: 195px;
    margin-bottom: 50px;
  }

  .home h1 {
    font-size: 4.2vw;
    text-align: left;
    letter-spacing: 10px;
  }

  .home h1 .last_name { display: none; }

  .home h2 {
    font-size: 10px;
    letter-spacing: 5px;
    transform: none;
  }

  .home .role {
    font-size: 10px;
    letter-spacing: 5px;
    margin: 18px 0;
  }

  .home .description { width: 38vw; margin: 18px 0; }

  .home #bottomWave {
    transform: rotateY(180deg);
    z-index: 1;
  }

  h2.h2 {
    top: 150px !important;
    font-size: 18vw;
    letter-spacing: -5px;
  }

  .about-heading img { transform: rotateY(180deg); }

  .freelance h2.h2 {
    font-size: 160px !important;
    transform: translateX(-80px);
    top: 0 !important;
  }

  .freelance .freelance_content { padding-left: 100px; }

  .freelance h3 { font-size: 66px; }

  .freelance .row { width: 100%; }

  div.column {
    padding: 10px 85px !important;
    font-size: 46px;
  }

  div.column span { font-size: 46px; }
  div.column .char { font-size: 46px !important; }

  .project-cards {
    grid-template-columns: repeat(3, 1fr) !important;
    padding: 6vw;
    padding-top: 25vh;
    gap: 32px;
  }

  .project img { height: 260px; }

  .contact_me h2.h2 {
    margin-bottom: 120px;
    font-size: 7vw;
    top: 0 !important;
  }

  .contact_me > p { text-align: center; }

  .contact_me .other-links { padding: 80px 0; }

  .contact_me .other-links a {
    padding: 0 70px 0 100px;
    font-weight: 600;
    display: flex;
    flex-flow: row nowrap;
    align-items: center;
    border-top: 1px solid rgba(0,0,0,.09);
    border-bottom: none;
    height: 88px;
  }

  .contact_me .other-links a:last-of-type {
    border-bottom: 1px solid rgba(0,0,0,.09);
  }

  .contact_me .other-links a span {
    font-family: var(--font-mono) !important;
    font-size: 18px;
    letter-spacing: 1px;
  }

  .contact_me .other-links a:hover div {
    height: 88px;
    transform: translateY(0);
  }

  .outer_wave { top: -10px; position: relative; }

  .thanks { height: 100vh; }

  .intro_wrapper .intro_content h1 { font-size: 4vw; }
}