/* Color variables */
:root {
  /* Background colors */
  --bg1: #0e0f13;
  --bg2: #121318;
  --border: #1a1b22;

  /* Text colors */
  --txt1: #e5e5f8;
  --txt1-gray: #808080;
  --txt2: #8c50fd;
  --txt3: #3498db;

  /* Accent colors */
  --star: #fdec00;
  --obsolete: #a83535;
}

/* Base styles */
html {
  margin: 0;
  width: 100%;
  height: 100%;
}

/* Scrollbar styling */
::-webkit-scrollbar {
  width: 0.2rem;
}

::-webkit-scrollbar-thumb {
  background: var(--txt1-gray);
  border-radius: 10px 0 0 10px;
}

/* Layout containers */
body {
  margin: 0;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  text-align: center;
  width: 100%;
  height: 100%;
  background-color: var(--bg1);
  color: var(--txt1);
  font-family: "Figtree", sans-serif;
  overflow: scroll;
}

section {
  display: flex;
  height: 100%;
  width: 100%;
  box-sizing: border-box;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  text-align: center;
}

/* Section-specific styles */
section #main {
  height: fit-content;
}

section:nth-child(2) {
  height: 95%;
  box-sizing: border-box;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  text-align: center;
}

.article-container {
  max-width: 800px;
  margin: 0 auto;
  padding: 2rem;
  text-align: left;
}

.article-header {
  text-align: center;
  margin-bottom: 3rem;
  padding: 2rem 0;
  border-bottom: 1px solid var(--border);
}

.article-title {
  color: var(--txt2);
  font-size: 2.5rem;
  font-weight: 700;
  margin-bottom: 1rem;
}

.article-meta {
  color: var(--txt1-gray);
  font-size: 1rem;
}

.article-content {
  font-size: 1.1rem;
  font-weight: 300;
}

h2 {
  color: var(--txt2);
  font-size: 1.8rem;
  margin-top: 2.5rem;
  margin-bottom: 1rem;
}

p {
  margin-bottom: 1.5rem;
}

a {
  color: var(--txt3);
  text-decoration: none;
  transition: opacity 0.3s ease;
}

#projects {
  height: 95%;
  width: 100%;
}

/* Hero section */
.start {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  text-align: center;
  width: 100%;
  height: fit-content;
}

.logo {
  width: min(50vw, 500px);
}

.subtitle {
  font-size: min(4vw, 32px);
  font-weight: 400;
  width: min(50vw, 600px);
  margin: 0;
}

/* Animated gradient text */
.design {
  --bg-size: 400%;
  --color-one: hsl(268, 90%, 55%);
  --color-two: hsl(266, 69%, 65%);
  background: linear-gradient(
      90deg,
      var(--color-one),
      var(--color-two),
      var(--color-one)
    )
    0 0 / var(--bg-size) 100%;
  color: transparent;
  font-weight: 700;
  background-clip: text;
  animation: Design 10s ease-in-out infinite;
}

@keyframes Design {
  to {
    background-position: var(--bg-size) 0;
  }
}

/* Button styles */
.go {
  background-color: var(--txt2);
  border-radius: 10vw;
  width: min(18vw, 130px);
  height: min(6vw, 40px);
  color: var(--txt1);
  font-size: min(2vw, 18px);
  font-family: "Figtree", sans-serif;
  margin: 0.5vw;
  font-weight: 600;
  text-align: center;
  text-decoration: none;
  border: none;
  transition: all 300ms ease-out;
}
.go:hover {
  transform: scale(1.02);
  animation: fadeOuts 1.25s ease-in;
  animation-fill-mode: forwards;
}

@keyframes fadeOuts {
  0% {
    outline: #9a70e7 1px solid;
  }
  50% {
    outline: #9a70e777 3px solid;
  }
  100% {
    outline: #9a70e700 7px solid;
  }
}

/* Card grid layout */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
  width: 90%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 2rem;
  justify-items: center;
}

/* Card styling */
.card {
  background-color: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--txt1);
  padding: 1.5rem;
  font-family: "Figtree", sans-serif;
  font-weight: 400;
  text-align: left;
  transition: all 300ms ease-out;
  box-shadow: 2px 3px 10px rgba(0, 0, 0, 0.3);
  text-decoration: none;
  display: flex;
  flex-direction: column;
  height: auto;
  min-height: 200px;
}

.card-content {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.card-title {
  font-size: 1.75rem;
  font-weight: 600;
  color: var(--txt2);
  margin: 0;
}

.card-text {
  font-size: 1rem;
  font-weight: 300;
  color: var(--txt1);
  margin: 0 0 0 0.5rem;
  flex-grow: 1;
}

/* Card link styling */
.learn-more {
  color: var(--txt1-gray);
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  align-self: flex-end;
  transition: all 300ms ease-out;
  margin-top: auto;

  &:hover {
    color: var(--txt2);
    text-decoration: underline;
    transition: all 300ms ease-in;
    transform: scale(1.02, 1.02);
  }
}

/* Navigation elements */
.back {
  color: var(--txt1);
  font-size: min(4vw, 18px);
  padding: 2vw;
  font-family: "Figtree", sans-serif;
  font-weight: 400;
  text-align: center;
  text-decoration: none;
  height: fit-content;
  z-index: 999;
}

.back:hover {
  color: var(--txt2);
  transform: scale(1.05);
}

/* Text styling utilities */
b,
.link {
  font-size: min(4vw, 18px);
  font-weight: 500;
  color: var(--txt3);
  text-decoration: none;
}

.obsolete {
  color: var(--obsolete);
  font-size: min(4vw, 18px);
  font-weight: 500;
  text-decoration: none;
}

.title {
  font-size: min(9vw, 72px);
  font-weight: 500;
  width: min(50vw, 600px);
  color: var(--txt2);
  text-align: center;
  padding: 2vw 0;
  margin: 0;
  height: 10%;
}
