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;
}

/* --- 포트폴리오 그리드 --- */
/* 1. 그리드 전체 설정 (4열 고정) */
.portfolio-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr); /* 4열 영역 지정 */
    gap: 20px;
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

/* 2. 각 아이템 칸 (영역 지정) */
.portfolio-item {
    width: 100%;
    aspect-ratio: 16 / 9;
    display: flex;
    justify-content: center; /* 이미지 가로 중앙 정렬 */
    align-items: center;     /* 이미지 세로 중앙 정렬 */
    overflow: hidden;        /* 영역 밖으로 나가는 것 방지 */
    cursor: pointer;
    background-color: #f9f9f9; /* 여백이 생길 경우를 대비한 배경색 */
}

/* 3. 이미지 설정 (높이 100%, 너비는 비율대로) */
.portfolio-item img {
    height: 100%;            /* 부모(.portfolio-item) 높이에 100% 맞춤 */
    width: auto;             /* 너비는 이미지 원본 비율에 맞춰 자동 조절 */
    max-width: 100%;         /* 혹시 가로가 너무 길어 칸을 뚫고 나가는 것 방지 */
    object-fit: contain;     /* 이미지가 잘리지 않고 전체가 다 보이게 함 */
    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;
    }
    
}

/* --- 모바일 구간 (max-width: 768px) --- */
@media (max-width: 768px) {

    .portfolio-grid {
        /* 1열로 변경하여 이미지를 크게 강조 */
        grid-template-columns: repeat(2, 1fr);
        gap: 30px;
    }
    
    .portfolio-item {
        width: 100%;
    }
   
    .portfolio-item { height: 220px; }
    
    .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; /* 모바일용 크기 조절 */
    }
}

/* 모바일 (480px 이하): 1열로 변경 */
@media (max-width: 480px) {
    .portfolio-grid {
        grid-template-columns: 1fr;
    }
    .portfolio-item { height: auto; } /* 모바일에선 이미지 크기에 맡김 */
    .portfolio-item img {
        width: 100%;
        height: auto;
    }
}