/* =========================================================
   Fab Academy 2026 Visual Timeline
========================================================= */

.fab-timeline{
  position: relative;
  margin: 28px 0;
  padding-left: 200px;
}

.fab-timeline::before{
  content: "";
  position: absolute;
  left: 86px;
  top: 0;
  bottom: 0;
  width: 3px;
  border-radius: 999px;
  background: var(--rule);
}


/* =========================================================
   TIMELINE START / END POINTS
========================================================= */

.fab-timeline-endpoint{
  position: absolute;

  left: 86px;

  width: 18px;
  height: 18px;

  transform: translateX(-50%);

  border: 3px solid #fff;
  border-radius: 50%;

  background: var(--ink);

  box-shadow:
    0 0 0 3px var(--rule),
    0 4px 10px rgba(0,0,0,.14);

  z-index: 10;
}

.fab-timeline-endpoint-top{
  top: 0;
  transform: translate(-50%, -50%);
}

.fab-timeline-endpoint-bottom{
  bottom: 0;
  transform: translate(-50%, 50%);
}


/* =========================================================
   MONTH LABELS
========================================================= */

.fab-month-label{
  display: inline-block;
  position: relative;
  z-index: 2;

  margin: 10px 0 24px -8px;
  padding: 5px 12px;

  font-family: var(--sans);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;

  color: var(--muted);
  background: rgba(255,255,255,.88);

  border: 1px solid var(--rule);
  border-radius: 999px;

  box-shadow: var(--shadow);
}


/* =========================================================
   TIMELINE ITEMS
========================================================= */

.fab-time-item{
  position: relative;
  margin-bottom: 48px;
}

.fab-date{
  display: block;
  margin-bottom: 12px;

  font-family: var(--sans);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;

  color: var(--muted);
}

.fab-time-content{
  padding: 13px 15px;

  border: 1px solid var(--rule);
  border-radius: var(--radius);

  background: rgba(255,255,255,.55);
  box-shadow: var(--shadow);

  transition: border-color .25s ease;
}

.fab-time-content h3{
  margin: 0;
  font-size: 17px;
}

.fab-time-content p{
  margin: 6px 0 0;
}


/* =========================================================
   WEEKS
========================================================= */

.fab-time-item.week{
  min-height: 120px;
  margin-bottom: 48px;
}

.fab-time-item.week::before{
  display: none;
}

.fab-thumb{
  position: absolute;

  left: -172px;
  top: 50%;

  width: 112px;
  height: 112px;

  transform: translateY(-50%);

  z-index: 3;

  overflow: hidden;

  border: 4px solid #fff;
  border-radius: 50%;

  background: #fff;

  box-shadow:
    0 0 0 3px var(--rule),
    0 8px 24px rgba(0,0,0,.14);

  transition:
    transform .30s cubic-bezier(.2,.8,.2,1),
    box-shadow .30s ease;
}

.fab-thumb img{
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
}

.fab-time-item.week:hover .fab-thumb{
  transform:
    translateY(-50%)
    scale(1.28);

  box-shadow:
    0 0 0 4px rgba(31,94,168,.45),
    0 18px 40px rgba(0,0,0,.30);

  z-index: 20;
}

.fab-time-item.week:hover .fab-time-content{
  border-color: rgba(31,94,168,.35);
}


/* =========================================================
   RECITATIONS
========================================================= */

.fab-time-item.recitation{
  margin-bottom: 48px;
  opacity: .88;
}

.fab-time-item.recitation::before{
  content: "";

  position: absolute;

  left: -120px;
  top: 50%;

  width: 12px;
  height: 12px;

  transform: translateY(-50%);

  border: 2px solid #fff;
  border-radius: 50%;

  background: #888;

  box-shadow:
    0 0 0 2px rgba(120,120,120,.18),
    0 3px 8px rgba(0,0,0,.10);
}

.fab-time-item.recitation .fab-time-content{
  padding: 8px 11px;
  background: rgba(255,255,255,.35);
}

.fab-time-item.recitation h3{
  font-size: 14px;
  font-weight: 600;
}


/* =========================================================
   MIDTERM REVIEW
========================================================= */

.fab-time-item.review{
  margin-bottom: 48px;
}

.fab-time-item.review::before{
  content: "";

  position: absolute;

  left: -123px;
  top: 50%;

  width: 18px;
  height: 18px;

  transform: translateY(-50%);

  border: 2px solid #fff;
  border-radius: 50%;

  background: #e67e22;

  box-shadow:
    0 0 0 3px rgba(230,126,34,.20),
    0 4px 10px rgba(0,0,0,.14);
}

.fab-time-item.review .fab-time-content{
  border-color: rgba(230,126,34,.60);
  background: rgba(255,248,238,.82);
}


/* =========================================================
   START
========================================================= */

.fab-time-item.start .fab-time-content{
  border-color: rgba(44,122,63,.70);
}

.fab-time-item.start .fab-thumb{
  box-shadow:
    0 0 0 4px rgba(44,122,63,.35),
    0 8px 24px rgba(0,0,0,.14);
}


/* =========================================================
   FINAL
========================================================= */

.fab-time-item.final .fab-time-content{
  border-color: rgba(192,57,43,.70);
  background: rgba(255,245,245,.90);
}

.fab-time-item.final .fab-thumb{
  box-shadow:
    0 0 0 4px rgba(192,57,43,.40),
    0 8px 24px rgba(0,0,0,.16);
}


/* =========================================================
   ACTION BUTTONS
========================================================= */

.fab-time-actions{
  display: flex;
  flex-wrap: wrap;

  gap: 8px;

  margin-top: 10px;
}

.fab-time-actions a{
  display: inline-flex;
  align-items: center;
  justify-content: center;

  padding: 6px 10px;

  font-family: var(--sans);
  font-size: 12px;
  font-weight: 700;

  text-decoration: none;

  color: var(--ink);
  background: rgba(255,255,255,.7);

  border: 1px solid var(--rule);
  border-radius: 999px;
}

.fab-time-actions a:hover{
  border-color: rgba(31,94,168,.45);

  box-shadow:
    inset 0 0 0 2px rgba(31,94,168,.10);

  text-decoration: none;
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 720px){

  .fab-timeline{
    padding-left: 96px;
  }

  .fab-timeline::before{
    left: 38px;
  }

  .fab-timeline-endpoint{
    left: 38px;

    width: 16px;
    height: 16px;
  }

  .fab-month-label{
    margin-left: -2px;
  }

  .fab-time-item,
  .fab-time-item.week,
  .fab-time-item.recitation,
  .fab-time-item.review{
    margin-bottom: 34px;
  }

  .fab-time-item.week{
    min-height: 84px;
  }

  .fab-thumb{
    left: -96px;

    width: 72px;
    height: 72px;
  }

  .fab-time-item.week:hover .fab-thumb{
    transform:
      translateY(-50%)
      scale(1.16);
  }

  .fab-time-content{
    padding: 11px 12px;
  }

  .fab-time-content h3{
    font-size: 15px;
  }

  .fab-time-content p{
    font-size: 13px;
  }

  .fab-time-item.recitation::before{
    left: -64px;
  }

  .fab-time-item.review::before{
    left: -67px;
  }

  .fab-time-item.recitation h3{
    font-size: 13px;
  }

  .fab-time-actions a{
    padding: 5px 9px;
    font-size: 11px;
  }

}