* {
  box-sizing: border-box;
}

:root {
  --section-gap: 12rem;
}

html, body {
  height: auto;
  min-height: 100%;
  margin: 0;
  padding-bottom: 0px;
  background: #000;
  font-family: "Anonymous Pro", mono
}

html {
  scroll-behavior: smooth;
}

body {
  display: flex;
  flex-direction: column;
  flex: 1;
  cursor: url('./Files/3d_pixel_cursor.png'), auto;
}

a, 
button, 
input[type="submit"], 
input[type="button"],
.carousel_page input[type="radio"],
.clickable-element {
  cursor: url("./Files/3d_pixel_pointer.png"), pointer;
}

.page-content {
  display: flex;
  flex-direction: column;
  gap: var(--section-gap);
}

h1 {
  color: black;
  margin-top: 20px;
}

/* Typewriter effect in Profile Section */

@keyframes typing {
  0.0000%, 27.5862%, 31.0345%, 56.3218%, 59.7701%, 96.5517%, 100.0000% { content: ""; }
  1.1494%, 26.4368% { content: "R"; }
  2.2989%, 25.2874% { content: "Re"; }
  3.4483%, 24.1379% { content: "Res"; }
  4.5977%, 22.9885% { content: "Rese"; }
  5.7471%, 21.8391% { content: "Resea"; }
  6.8966%, 20.6897% { content: "Resear"; }
  8.0460%, 19.5402% { content: "Researc"; }
  9.1954%, 18.3908% { content: "Research"; }
  10.3448%, 17.2414% { content: "Researche"; }
  11.4943%, 16.0920% { content: "Researcher"; }

  32.1839%, 55.1724%, 60.9195%, 95.4023% { content: "D"; }
  33.3333%, 54.0230% { content: "De"; }
  34.4828%, 52.8736% { content: "Dev"; }
  35.6322%, 51.7241% { content: "Deve"; }
  36.7816%, 50.5747% { content: "Devel"; }
  37.9310%, 49.4253% { content: "Develo"; }
  39.0805%, 48.2759% { content: "Develop"; }
  40.2299%, 47.1264% { content: "Develope"; }
  41.3793%, 45.9770% { content: "Developer"; }

  62.0690%, 94.2529% { content: "Da"; }
  63.2184%, 93.1034% { content: "Dat"; }
  64.3678%, 91.9540% { content: "Data"; }
  65.5172%, 90.8046% { content: "Data "; }
  66.6667%, 89.6552% { content: "Data S"; }
  67.8161%, 88.5057% { content: "Data Sc"; }
  68.9655%, 87.3563% { content: "Data Sci"; }
  70.1149%, 86.2069% { content: "Data Scie"; }
  71.2644%, 85.0575% { content: "Data Scien"; }
  72.4138%, 83.9080% { content: "Data Scient"; }
  73.5632%, 82.7586% { content: "Data Scienti"; }
  74.7126%, 81.6092% { content: "Data Scientis"; }
  75.8621%, 80.4598% { content: "Data Scientist"; }
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

.typewriter {
  --caret: currentcolor;
}

.typewriter::before {
  content: "";
  animation: typing 13.5s infinite;
}

.typewriter::after {
  content: "";
  border-right: 1px solid var(--caret);
  animation: blink 0.5s linear infinite;
}

.typewriter.thick::after {
  border-right: 1ch solid var(--caret);
}

.typewriter.nocaret::after {
  border-right: 0;
}

@media (prefers-reduced-motion) {
  .typewriter::after {
    animation: none;
  }

  @keyframes sequencePopup {
    0%, 100% { content: "Researcher"; }
    25% { content: "Developer"; }
    50% { content: "Data Scientist"; }
  }

  .typewriter::before {
    content: "Researcher";
    animation: sequencePopup 12s linear infinite;
  }
}

/* End of Typewriter effect in Profile Section */

.about_me {
  display: flex;
  width: 500px;
  margin: 0 auto;
  text-align: center;
}

.pfp img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  transition: .2s;
}

.circle:hover::before,
.circle:hover::after {
  animation-play-state: paused;
}

@keyframes rotate {
  to {
    rotate: 360deg;
  }
}

.project:hover {
  transform: scale(1.05);
  background: #1b1b1b;
}

.close_button {
  position: absolute;
  top: 0;
  right: 0;
  font-size: 30px;
  background: none;
  border: none;
  z-index: 2000;
}

.project {
  display: border;
  width: 450px;
  padding: 10px;
  min-height: 75px;
  text-align: center;
  margin-right: 5px;
  justify-content: center;
  align-items: center;
  margin: 0 auto;
  margin-top: 25px;
  background-color: black;
  border-radius: 12px;
  color: white;
  padding-top: 1px;
  font-size: small;
}

.project h1 {
  font-size: 1.5rem;
  margin-bottom: 0.5rem;
  justify-content: left-align;
}

.project img {
  float: left;
  margin-top: 17px;
  width: 55px;
  height: auto;
}

/* header */

header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 2px 5%;
  background: #000;
  margin-bottom: 0;
}

header a,
header li {
  color: white;
  text-decoration: none;
  font-size: 16px;
  font-weight: 500;
}

.nav_links {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav_links li {
  display: inline-block;
  padding: 10px 20px;
}

.nav_links li a {
  transition: color 0.3s ease;
}

.nav_links li a:hover {
  color: #92e0f8;
}

.brooke_logo {
  height: 40px;
  width: 40px;
}

header button {
  width: 125px;
  padding: 7px 25px;
  border: none;
  border-radius: 40px;
  background: white;
  font-size: 16px;
  font-weight: 500;
  transition: 0.3s;
}

header button:hover {
  background: #00b8ff;
}

.header_container {
  height: 100vh;
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  background-color: black;
  margin-bottom: 0;
  width: auto;
}

.pfp {
  width: 450px;
  height: 450px;
  margin-right: 50px;
  border-radius: 50%;
  object-fit: cover;
  position: relative;
  z-index: 1;
}

.pfp::before, .pfp::after {
  content: '';
  position: absolute;
  width: 455px;
  height: 455px;
  top: 50%;
  left: 50%;
  border-radius: 50%;
  background-image: conic-gradient(white, black, white);
  z-index: -1;
  translate: -50% -50%;
  animation: rotate 3s linear infinite;
}

.intro_wrapping {
  display: flex;
  margin-left: 100px;
  flex-direction: column;
  align-items: left;
  color: white;
  gap: 10px;
  animation: slide-up 1.7s;
}

@keyframes slide-up {
  from {
    opacity: 0.2;
    transform: translateY(100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.intro_wrapping h1 {
  font-size: 4rem;
  text-align: left;
  color: white;
  margin-bottom: 10px;
}

.about_me p {
  margin-top: 0px;
  text-align: left;
  font-size: 1rem;
}

.resume_button_container {
  margin-top: 50px;
}

.desktop_buttons {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 25px;
}

.contact_white {
  size: 20px;
}

.github_white img {
  height: 33px;
  width: 35px;
  border-radius: 5px;
}

.linkedin_white img {
  height: 40px;
  width: 40px;
}

.contact_white img {
  height: 40px;
  width: 40px;
  border-radius: 8px;
}

.contact_white:hover,
.github_white:hover,
.linkedin_white:hover {
  transform: scale(1.10);
}

/* Projects heading */

.projects_heading {
  color: white;
  text-align: left;
  font-size: 2.25rem;
  font-weight: 600;
  margin: 3rem 0 1.5rem;
  opacity: 0;
  margin-left: 6rem;
  margin-bottom: 2rem;
}

@keyframes headingEntrance {
  from {
    opacity: 0;
    translate: 0 30px;
  }
  to {
    opacity: 1;
    translate: 0 0;
  }
}

.projects_heading.in-view {
  animation: headingEntrance .6s cubic-bezier(.22, .61, .36, 1) both;
}

.carousel_page {
  margin-top: 1rem;
  flex: 1;
  width: 100%;
  padding-bottom: 3rem;
  display: grid;
  grid-template-rows: 560px 60px;
  grid-template-columns: 1fr 30px 30px 30px 30px 30px 1fr;
  justify-items: center;
  align-items: center;
}

/* carousel nav */

.carousel_page input[type="radio"] {
  grid-row: 2;
  appearance: none;
  -webkit-appearance: none;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid #444;
  transition: .2s;
  animation: dotsIn .4s ease .55s both;
}

.carousel_page input:nth-of-type(1) { grid-column: 2; }
.carousel_page input:nth-of-type(2) { grid-column: 3; }
.carousel_page input:nth-of-type(3) { grid-column: 4; }
.carousel_page input:nth-of-type(4) { grid-column: 5; }
.carousel_page input:nth-of-type(5) { grid-column: 6; }

.carousel_page input:checked {
  background: #92e0f8;
  border-color: #92e0f8;
  box-shadow: 0 0 0 3px rgba(146, 224, 248, .25);
}

@keyframes dotsIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* carousel */

main#carousel {
  grid-row: 1;
  grid-column: 1 / 8;
  width: 100%;
  height: 560px;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  perspective: 600px;
  transform-style: preserve-3d;
  --items: 5; 
  --position: 1;
  position: relative;
}

main#carousel::before,
main#carousel::after {
  content: "";
  position: absolute;
  top: 0;
  height: 100%;
  width: 140px;
  z-index: 6;
}

main#carousel::before {
  left: 0;
  background: linear-gradient(to right, #000 0%, transparent 100%);
}

main#carousel::after {
  right: 0;
  background: linear-gradient(to left, #000 0%, transparent 100%);
}

.item {
  position: absolute;
  width: 430px;
  height: 540px;
  padding: 2rem;
  display: flex;
  flex-direction: column;
  color: white;
  background: #12151b;
  border: 2px solid rgba(146, 224, 248, 0.25);
  border-radius: 10px;
  --r: calc(var(--position) - var(--offset));
  --abs: max(calc(var(--r) * -1), var(--r));
  transform:
    rotateY(calc(-10deg * var(--r)))
    translateX(calc(-430px * var(--r)));
  z-index: calc(var(--items) - var(--abs));
  transition:
    transform .45s cubic-bezier(.22, .61, .36, 1),
    filter .45s cubic-bezier(.22, .61, .36, 1),
    border-color .35s linear,
    box-shadow .35s linear;
}

@keyframes cardEntrance {
  from {
    opacity: 0;
    translate: 0 40px;
  }
  to {
    opacity: 1;
    translate: 0 0;
  }
}

#carousel.in-view .item {
  animation: cardEntrance .6s cubic-bezier(.22, .61, .36, 1) both;
}

#carousel.in-view .item:nth-of-type(1) { animation-delay: 0s;   }
#carousel.in-view .item:nth-of-type(2) { animation-delay: .24s; }
#carousel.in-view .item:nth-of-type(3) { animation-delay: .48s; }
#carousel.in-view .item:nth-of-type(4) { animation-delay: .72s; }
#carousel.in-view .item:nth-of-type(5) { animation-delay: .96s; }

.item:nth-of-type(1) { --offset: 1; }
.item:nth-of-type(2) { --offset: 2; }
.item:nth-of-type(3) { --offset: 3; }
.item:nth-of-type(4) { --offset: 4; }
.item:nth-of-type(5) { --offset: 5; }

#pos-1:checked ~ #carousel { --position: 1; }
#pos-2:checked ~ #carousel { --position: 2; }
#pos-3:checked ~ #carousel { --position: 3; }
#pos-4:checked ~ #carousel { --position: 4; }
#pos-5:checked ~ #carousel { --position: 5; }

#pos-1:checked ~ #carousel .item:nth-of-type(1),
#pos-2:checked ~ #carousel .item:nth-of-type(2),
#pos-3:checked ~ #carousel .item:nth-of-type(3),
#pos-4:checked ~ #carousel .item:nth-of-type(4),
#pos-5:checked ~ #carousel .item:nth-of-type(5) {
  border-color: #92e0f8;
  box-shadow: 0 0 40px rgba(146, 224, 248, .15);
}

/* slide styling */

#slide-1
#slide-2
#slide-3
#slide-4
#slide-5 {
  gap: .75rem;
}

#slide-1 h2,
#slide-2 h2,
#slide-3 h2,
#slide-4 h2,
#slide-5 h2
{
  margin: 0 0 0rem;
}

#slide-1 h2,
#slide-2 h2,
#slide-3 h2,
#slide-4 h2,
#slide-5 h2 {
  font-size: 1.3rem;
}

#slide-1 p,
#slide-2 p,
#slide-3 p,
#slide-4 p,
#slide-5 p {
  margin: 0;
  color: #ccc;
  font-size: .9rem;
}

.project-text {
  display: flex;
  flex-direction: column;
  gap: .75rem;
}

.text-content p {
  margin: 0;
  opacity: .8;
  font-size: .9rem;
}

.research-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
}

.bottom-visuals {
  flex: 1;
  display: flex;
}

.project-layout {
  justify-content: flex-start;
  gap: 1rem;
}

/* Project Two */

.project-two-visuals {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 8px;
}

.project-two-visuals img {
  display: block;
  max-width: 100%;
  max-height: 325px;
  object-fit: contain;
}

/* Project Three Visual Items */
.project-three-visuals {
  flex: 1;
  display: flex;
  justify-content: flex-start;
  background: rgba(255, 255, 255, .06);
  border-radius: 8px;
  color: #888;
  font-size: .85rem;
}

.project-three-visuals img,
.project-three-visuals iframe {
  max-width: 100%;
  height: 100%;
  border: none;
  border-radius: 8px;
  object-fit: cover;
}

/* Project Button */

.project_button {
  position: relative;
  width: 200px;
  height: 50px;
  background: transparent;
  color: white;
  border: 3px solid white;
  border-radius: .5rem;
  font-size: 16px;
  transition: .4s ease-out;
}

.project_button span {
  position: relative;
  z-index: 2;
}

.project_button::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 0;
  height: 0;
  background: #00b8ff;
  transition: .4s ease-out;
  z-index: 0;
}

.project_button::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: calc(100% + 2rem);
  height: calc(100% + 2rem);
  border: 3px solid white;
  opacity: 0;
  transition: .4s ease-out;
  z-index: 0;
}

.project_button:hover::before {
  width: 100%;
  height: 100%;
}

.project_button:hover::after {
  width: 100%;
  height: 100%;
  opacity: 1;
  border-color: #00b8ff;
  border-radius: .5rem;
}

#github-research img {
  height: 50px;
  width: 50px;
  border-radius: 10px;
  margin-left: 8px;
}

#github-research:hover {
  opacity: .8;
}

/* Skills On Projects */

.skill-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0.5rem 0;
}

.skill-tag {
  display: inline-block;
  padding: 0.35rem 0.9rem;
  border-radius: 999px;
  background: rgba(146, 224, 248, 0.12);
  border: 1px solid rgba(146, 224, 248, 0.4);
  color: #92e0f8;
  font-size: 0.75rem;
  font-weight: 600;
  white-space: nowrap;
}

/* Github Repo Section */

.proficiencies_header {
  color: white;
  text-align: left;
  font-size: 2.25rem;
  font-weight: 600;
  opacity: 0;
  margin-left: 5rem;
  margin-top: calc(-1 * var(--section-gap));
}

.proficiencies_header.in-view {
  animation: headingEntrance .6s cubic-bezier(.22, .61, .36, 1) both;
}

.contribution-scroll {
  width: 80%;
  margin: 0 auto;
  overflow-x: auto;
  border: 1px solid #92e0f8;
  border-radius: 8px;
  padding: 0.5rem 1rem 1rem;
  background: #12151b;
}

#contribution-table {
  opacity: 0;
  border-collapse: separate;
  border-spacing: clamp(1px, 0.3vw, 3px);
  margin: 0 auto;
}

#contribution-table.in-view {
  animation: slideUp 2s ease forwards;
}

#contribution-table td {
  width: clamp(4px, 1vw, 10px);
  height: clamp(4px, 1vw, 10px);
  border-radius: 3px;
}

#contribution-table td:hover {
  filter: brightness(2.5);
  transition: filter 0.2s ease;
}

#commit_count {
  text-align: center;
  opacity: 0;
  margin-left: 5rem;
}

#commit_count.in-view {
  animation: slideUp 2s ease forwards;
}

#commit_count p {
  font-size: clamp(0.5rem, 1vw, 0.8rem);
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: left;
}

.github_block {
  width: 100%;
}

@keyframes slideUp {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}

.color-0 { background-color: #161b22; }
.color-1 { background-color: #00b8FF; }
.color-2 { background-color: #0077ff; }
.color-3 { background-color: #0011ff; }
.color-4 { background-color: #001a79; }

/* Infinite Skill Slider */

@keyframes scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

#tech_stack {
  margin-top: 2rem;
  width: 100%;
  overflow: hidden;
  position: relative;
}

#tech_stack::before,
#tech_stack::after {
  content: "";
  position: relative;
  top: 0;
  height: 100%;
  width: 150px;
  z-index: 2;
}

#tech_stack::before {
  left: 0;
  background: linear-gradient(to right, #000 0%, transparent 100%);
}

#tech_stack::after {
  right: 0;
  background: linear-gradient(to left, #000 0%, transparent 100%);
}

.skill-slides {
  display: flex;
  width: fit-content;
  animation: scroll 40s linear infinite;
}

.skill-slide {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 150px;
  flex-shrink: 0;
}

.skill-slide img {
  max-width: 70%;
  max-height: 70%;
  object-fit: contain;
}

.skill-slides img {
  height: 80px;
  width: 80px;
}

.proficiencies {
  display: flex;
  justify-content: center;
  gap: 1rem;
  flex-wrap: column;
}

/* More Transitions */

#tech_stack {
  opacity: 0;
  transition: opacity 0.8s ease;
}

#tech_stack.in-view {
  opacity: 1;
}

/* Skills Section Logo Formatting */

#confluence-logo {
  height: 50px;
  width: 50px;
}

#python-logo {
  height: 70px;
  width: 70px;
}

#databricks-logo {
  height: 150px;
  width: 150px;
}

#r-studio-logo {
  height: 60px;
  width: 60px;
}

#sql-logo {
  height: 55px;
  width: 55px;
}

#tableau-logo {
  height: 100px;
  width: 100px;
}

#spss-logo {
  height: 50px;
  width: 50px;
}

/* Contact Section */

#contact {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  color: white;
  text-align: center;
  gap: 1.5rem;
  opacity: 0;
}

#contact.in-view {
  animation: slideUp 2s ease forwards;
}

#contact h1 {
  font-size: 2.5rem;
  margin-bottom: 1rem;
  color: white;
}

#contact input,
#contact textarea {
  width: 100%;
  max-width: 800px;
  padding: 0.75rem;
  border: 1px solid #92e0f8;
  border-radius: 5px;
  background: #12151b;
  color: white;
  font-size: 1rem;
  height: 40px;
}

#contact textarea {
  height: 200px;
  resize: none;
}

#contact button {
  position: relative;
  width: 200px;
  height: 50px;
  background: transparent;
  color: white;
  border: 3px solid white;
  border-radius: .5rem;
  font-size: 16px;
  transition: .4s ease-out;
}

#contact button span {
  position: relative;
  z-index: 2;
}

#contact button::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 0;
  height: 0;
  background: #00b8ff;
  transition: .4s ease-out;
  z-index: 0;
}

#contact button::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: calc(100% + 2rem);
  height: calc(100% + 2rem);
  border: 3px solid white;
  opacity: 0;
  transition: .4s ease-out;
  z-index: 0;
}

#contact button:hover::before {
  width: 100%;
  height: 100%;
}

#contact button:hover::after {
  width: 100%;
  height: 100%;
  opacity: 1;
  border-color: #00b8ff;
  border-radius: .5rem;
}

/* Nav Bar Animation */

.nav_links {
  transition:
        opacity .4s ease,
        transform .4s ease;
}

.hamburger {
  position: fixed;
  top: 30px;
  right: 30px;
  opacity: 0;
  transform: translateY(-20px) scale(.8);
  transition: .4s ease;
  width: 55px;
  height: 55px;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.header.scrolled .hamburger {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.header.scrolled .nav_links {
  opacity: 0;
  transform: translateY(-20px);
}

.header.scrolled .cta {
  display: none;
}

/* Experience Section */

#experience h1 {
  color: white;
}

