body {
    display: flex;
    flex-direction: column;
    min-height: 100vh; /* 화면 전체 높이 확보 */
}

main {
    flex: 1; /* 컨텐츠가 적어도 푸터를 바닥으로 밀어냄 */
    display: flex;
    flex-direction: column;
    justify-content: top; /* 컨텐츠를 화면 세로 중앙에 배치 */
}
/* 컨테이너 여백 조정 */
.portfolio-section .container {
    max-width: 1200px; /* 메인/서비스 페이지와 통일 */
    margin: 0 auto;
    padding: 60px 40px;
}

/* --- 포트폴리오 그리드 --- */
.portfolio-grid {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    overflow: hidden;
}
.portfolio-grid img {
    width: 100%;        /* 부모인 그리드 칸 너비에 꽉 맞춥니다 */
    aspect-ratio: 4 / 3; /* 사진 비율을 4:3으로 통일 (원하시면 1/1로 해도 됩니다) */
    object-fit: cover;   /* 비율을 맞추느라 잘리는 부분이 있어도 이미지가 찌그러지지 않게 합니다 */
    display: block;      /* 이미지 하단의 미세한 여백 제거 */
}

/* --- 라이트박스 (보정됨) --- */
.lightbox {
    display: none; /* JS에서 flex로 변경 */
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background-color: rgba(0, 0, 0, 0.95); /* 더 어둡게 */
    z-index: 9999; /* 최상단 보장 */
    justify-content: center;
    align-items: center;
}

/* 이미지 컨테이너 크기 고정 */
.img-container {
    width: 80vw;  /* 화면 너비의 80% 고정 */
    height: 80vh; /* 화면 높이의 80% 고정 */
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: rgba(255, 255, 255, 0.03); /* 아주 살짝 밝은 배경으로 영역 표시 가능 */
    overflow: hidden; 
    position: relative;
}

#lightbox-img {
    /* 높이와 너비 중 큰 쪽을 기준으로 100%에 맞춤 (비율 유지) */
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain; /* 영역을 벗어나지 않고 전체를 보여줌 */
    transition: transform 0.2s ease;
    cursor: zoom-in;
}

/* 닫기 버튼 위치 조정 */
.close-btn {
    position: absolute;
    top: 20px;
    right: 30px;
    font-size: 30px;
    color: #fff;
    cursor: pointer;
    z-index: 10001;
}

/* 화살표 스타일 */
.arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    padding: 20px;
    color: rgba(255, 255, 255, 0.5);
    transition: color 0.3s;
    z-index: 1000;
}

.arrow:hover { color: #fff; }
.left { left: 10px; }
.right { right: 10px; }

footer {
    padding: 10px 0;
    flex-shrink: 0; /* 푸터가 찌그러지지 않게 고정 */
}

/* --- 태블릿 구간 (max-width: 1024px) --- */
@media (max-width: 1024px) {
    .portfolio-grid {
        /* 태블릿에서는 4열이 너무 좁으므로 2열로 변경 */
        grid-template-columns: repeat(3, 1fr); 
        gap: 20px;
    }
    
    .portfolio-item {
        /* 너비 기준 고정을 유지하기 위해 100% 설정 */
        width: 100%; 
        aspect-ratio: 4 / 3; 
    }
}

/* --- 모바일 구간 (max-width: 768px) --- */
@media (max-width: 768px) {

    .portfolio-grid {
        /* 1열로 변경하여 이미지를 크게 강조 */
        grid-template-columns: 1fr; 
        gap: 30px;
    }
    
    .portfolio-item {
        width: 100%;
        /* 모바일에서는 가로로 좀 더 시원한 비율을 줄 수도 있고, 
           원본을 다 보여주고 싶다면 aspect-ratio를 제거해도 됩니다 */
        aspect-ratio: auto; 
    }

    .portfolio-item img {
        height: auto; /* 높이 고정 해제하여 너비에 맞게 출력 */
    }
    .img-container {
        width: 95vw; /* 화면 너비의 거의 전체 사용 */
        height: 70vh;
    }
    
    #lightbox-img {
        width: 100%; /* 너비 우선 고정 */
        height: auto;
    }

    .close-btn {
        top: 15px;
        right: 20px;
        font-size: 35px;
    }

   .arrow {
        font-size: 30px; /* 모바일용 크기 조절 */
    }
}