
min-h-screen: 이 <section>의 최소 높이를 사용자의 브라우저 화면 높이와 똑같이 만든다.
py-24: p (padding) + y (Y축) + 24 (6rem = 96px)
=> padding-top: 6rem과 padding-bottom: 6rem을 동시에 설정한다.
px-4: p (padding) + x (X축) + 4 (1rem = 16px)
=> padding-left: 1rem과 padding-right: 1rem을 동시에 설정한다.
flex: 이 <section> 태그를 flex 컨테이너로 만든다.
items-center: 교차축 중앙 정렬한다.
=> flex의 기본 방향이 가로이므로, items-center는 자식 요소를 세로 방향으로 중앙에 정렬시킨다.

이 <div>는 Skills 섹션의 콘텐츠 전체를 감싸는 래퍼 역할을 한다.
max-w-6xl: 이 <div>의 최대 가로 너비를 72rem (1152px)로 제한한다.
mx-auto: margin-left: auto, margin-right: auto를 의미한다.
w-full: 이 <div>가 부모<section>가 허용한 가로 너비를 100% 꽉 채우도록 만든다.

메인 제목에 스타일을 적용하는 역할을 한다.
text-4xl: 2.25rem (약 36px)을 의미한다.
font-bold: font-weight: 700을 의미한다.
mb-12: margin-bottom: 3rem (약 48px)을 의미한다.
text-center: 텍스트를 가운데 정렬시킨다.
text-indigo-400: 글자 색상을 보라색 계열로 설정한다.

두 개의 카드를 감싸는 그리드 컨테이너이다.
grid: 이 <div>를 Grid 컨테이너로 만든다. 이 <div>의 자식 요소들을 격자판처럼 정렬할 수 있다.
grid-cols-1: (모바일 기본) 이 그리드는 1개의 세로 열을 가진다.
md:grid-cols-2: (반응형) 화면 너비가 md 이상으로 커지면, grid-cols-1 설정을 덮어쓰고, 이 그리드를 2개의 세로 열로 변경한다.
gap-8: 그리드의 각 칸 사이에 2rem (32px)의 간격을 만든다.
max-w-4xl: 이 <div>의 최대 가로 너비를 56rem(896px)로 제한한다.
mx-auto: margin-left: auto, margin-right: auto를 의미한다.

<div>는 카드 전체의 외형과 스타일을 결정한다.space-y-2: 자식 요소들 사이에 y축 0.5rem (8px) 간격을 준다.
=> 즉, <ul> 안의 <li>태그들 사이에 8px의 margin-top을 자동으로 추가하여 목록 간격을 일정하게 만든다. (첫 번째 <li>에는 적용되지 않는다.)
text-gray-300: 이 <ul> 안의 모든 <li> 텍스트 색상을 밝은 회색으로 설정한다.

<div>는 카드 전체의 외형과 스타일을 결정한다.space-y-2: 자식 요소들 사이에 y축 0.5rem (8px) 간격을 준다.
=> 즉, <ul> 안의 <li>태그들 사이에 8px의 margin-top을 자동으로 추가하여 목록 간격을 일정하게 만든다. (첫 번째 <li>에는 적용되지 않는다.)
text-gray-300: 이 <ul> 안의 모든 <li> 텍스트 색상을 밝은 회색으로 설정한다.
