/* ==========================================================================
   Sidebar Layout
   ========================================================================== */
.sidebar {
  display: flex;
  flex-direction: column;
  padding: 20px 0;
  border-right: 1px solid #ffffff14;
}

.logo {
  align-self: center;
  width: 200px;
  height: 70px;
  background: url(/src/xor-logo.png) no-repeat center / contain;
}

/* ==========================================================================
   Navigation Zone
   ========================================================================== */
.nav-zone {
  position: relative;
  flex: 1;
  display: flex;
  justify-content: center;
  overflow: auto;
  font: 600 clamp(14px, 1.5vw, 17px) "Jura", ui-sans-serif, system-ui;
  text-transform: uppercase;
  letter-spacing: .06em;
}

/* WebKit Scrollbar */
.nav-zone::-webkit-scrollbar {
  width: 8px;
}

.nav-zone::-webkit-scrollbar-thumb {
  background: #2b80d4;
  border-radius: 8px;
}

.nav-zone::-webkit-scrollbar-track {
  background: #0a2746;
}

/* ==========================================================================
   Navigation List
   ========================================================================== */
#nav {
  align-self: center;
  display: flex;
  flex-direction: column;
  gap: clamp(4px, 0.6vw, 10px);
  width: clamp(180px, 20vw, 260px);
  margin-top: -70px;
  padding: 20px 0 20px clamp(35px, 4.5vw, 50px);
  list-style: none;
  border-left: 2px solid #79d0ff88;
}

/* ==========================================================================
   Navigation Links
   ========================================================================== */
.nav-link {
  position: relative;
  display: flex;
  align-items: center;
  gap: clamp(6px, 1vh, 12px);
  padding: clamp(6px, 1vh, 12px);
  font-weight: 600;
  color: var(--link);
  text-decoration: none;
  border-radius: 7px;
  opacity: .72;
  transition:
    transform .15s ease,
    opacity .15s ease,
    background .15s ease,
    color .15s ease;
}

.nav-link::before {
  content: "";
  position: absolute;
  top: 50%;
  left: -22px;
  transform: translate(-50%, -50%);
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--dot);
  box-shadow: 0 0 0 0 #79d0ff00;
  transition: all .15s ease;
}

/* ==========================================================================
   Link States
   ========================================================================== */
#nav li .nav-link:hover {
  color: #fff;
  background: var(--link-hover-bg);
}

#nav li.active .nav-link {
  width: clamp(150px, 14vw, 200px);
  transform: scale(1.08);
  opacity: 1;
  background: var(--link-active-bg);
  box-shadow: 0 0 12px 2px #79d0ff50;
}

#nav li.active .nav-link::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: 8px;
  padding: 0.5px;
  background: linear-gradient(
    135deg,
    #0af 0%,
    #79d0ff 35%,
    #2b80d4 80%,
    #0af 100%
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
}

/* States for items adjacent to the active one */
#nav li.near1 .nav-link {
  transform: scale(.96);
  opacity: .88;
  margin-left: -6px;
}

#nav li.near2 .nav-link {
  transform: scale(.92);
  opacity: .78;
  margin-left: -11px;
}

/* ==========================================================================
   Dot States
   ========================================================================== */
#nav li.active .nav-link::before {
  width: 12px;
  height: 12px;
  background: var(--dot-active);
  box-shadow: 0 0 12px 2px #79d0ff88;
}

#nav li.near1 .nav-link::before {
  background: #79d0ff88;
}

#nav li.near2 .nav-link::before {
  background: #79d0ff66;
}