/* 1. 폰트 및 기본 설정 */
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css');

* {
    box-sizing: border-box;
}

:root {
    --bg-dark: #0f172a;        
    --card-bg: rgba(30, 41, 59, 0.9);
    --text-main: #f8fafc;      
    --text-sub: #cbd5e1;      
    --accent-gold: #fbbf24;    
    --accent-pink: #f472b6;    
    --accent-orange: #f97316; 
    --accent-red: #ef4444;
    --text-dark-green: #054016; 
    --text-dark-red: #7f1d1d; 
}

body {
    margin: 0;
    padding: 0;
    font-family: 'Pretendard', sans-serif;
    /* 배경색 #dbdce0 */
    background-color: #dbdce0; 
    color: var(--text-main); 
    overflow-x: hidden;
    min-height: 100vh;
    position: relative;
    display: flex; 
    flex-direction: column;
}

/* [FIXED] 눈/별 배경 효과 관련 CSS */
#snow-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 9999;
    overflow: hidden;
}

.snow {
    position: absolute;
    background-color: transparent; 
    color: white; /* 흰색 유지 */
    border-radius: 50%;
    animation: fall linear infinite;
    /* 밝은 배경에서 흰색이 보이도록 그림자를 강하게 조정 */
    text-shadow: 0 0 7px rgba(0, 0, 0, 0.6); 
    font-weight: bold;
}

@keyframes fall {
    0% {
        transform: translateY(-100%) translateX(0);
        opacity: 0;
    }
    10% {
        opacity: 0.7;
    }
    50% {
        /* 좌우로 흔들리며 떨어지도록 X축 변화 추가 */
        transform: translateY(50vh) translateX(10vw);
    }
    100% {
        transform: translateY(100vh) translateX(-5vw); 
        opacity: 0;
    }
}

.container {
    flex-grow: 1; 
    width: 90%; max-width: 1800px; margin: 50px auto; display: grid;
    grid-template-columns: repeat(3, 1fr); gap: 30px; position: relative; z-index: 10;
}
@media (max-width: 1200px) { .container { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 768px) { .container { grid-template-columns: 1fr; width: 95%; margin: 20px auto; } }

.card {
    background: var(--card-bg); 
    backdrop-filter: blur(12px); 
    border: 1px solid rgba(255, 255, 255, 0.2); 
    border-radius: 24px; padding: 40px; position: relative; overflow: hidden;
    box-shadow: 0 15px 35px rgba(0,0,0,0.4); 
    opacity: 0; 
    transform: translateY(30px); 
    transition: all 0.6s ease-out; 
    display: flex; 
    flex-direction: column; 
    z-index: 10; 
}
.card.visible { 
    opacity: 1; 
    transform: translateY(0); 
}

.card:hover { 
    border-color: rgba(255, 255, 255, 0.5); 
    box-shadow: 0 0 30px rgba(56, 189, 248, 0.5); 
    transform: translateY(-5px); 
    cursor: pointer; 
}

.number {
    font-size: 16px; color: #fff; font-weight: bold; margin-bottom: 10px; display: block; text-transform: uppercase; letter-spacing: 2px;
    text-shadow: 0 0 5px #fff, 0 0 10px var(--accent-gold), 0 0 20px var(--accent-gold), 0 0 30px #b45309; 
}

.number-inline {
    color: #fff;
    font-weight: 800; 
    text-transform: uppercase;
    letter-spacing: 0.5px;
    text-shadow: 0 0 5px #fff, 0 0 10px var(--accent-gold), 0 0 20px var(--accent-gold), 0 0 30px #b45309; 
    display: inline;
    font-size: 17px; 
    word-break: keep-all; 
}

/* 짙은 그림자 인라인 스타일 */
.shadow-inline {
    color: #ccc;
    font-weight: 700;
    text-shadow: 0 0 5px rgba(0, 0, 0, 0.8);
    display: inline;
    word-break: keep-all; 
}

.pink-neon-inline {
    color: var(--accent-pink);
    font-weight: 900;
    text-shadow: 0 0 5px #fff, 0 0 10px var(--accent-pink), 0 0 20px var(--accent-pink);
    display: inline;
    font-size: 18px;
}

.neon-h1-pink-custom {
    font-size: 40px; 
    font-weight: 900;
    color: var(--accent-pink);
    text-shadow: 
        0 0 5px #fff, 
        0 0 10px var(--accent-pink), 
        0 0 20px var(--accent-pink);
    line-height: 1.1;
    display: inline;
}

.neon-h1-blue-custom {
    font-size: 40px; 
    font-weight: 900;
    color: #e0f7fa; 
    text-shadow: 
        0 0 5px #fff, 
        0 0 10px #00bcd4, 
        0 0 20px #4dd0e1;
    line-height: 1.1;
    display: inline;
}

.title { 
    font-size: 26px; margin: 0 0 15px 0; font-weight: 800; color: #fff;
    text-shadow: 0 0 5px #fff, 0 0 10px #fff, 0 0 20px var(--accent-pink), 0 0 40px #be185d;     
}

.blue-neon-title {
    color: #fff;
    text-shadow: 
        0 0 5px #fff, 
        0 0 10px #e0f7fa,
        0 0 20px #4dd0e1,
        0 0 40px #00bcd4;
}

.desc { 
    font-size: 16px; color: #e2e8f0; 
    line-height: 1.6; /* 줄 간격 통일 */
    margin-bottom: 30px; word-break: keep-all; 
    text-shadow: 0 0 5px rgba(0,0,0,0.8); 
}

/* 07 BOOKS 하단 추가 텍스트 스타일 */
.bottom-text {
    font-size: 16px; 
    color: #e2e8f0; 
    line-height: 1.6; /* 줄 간격 통일 */
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, 0.1); 
    text-align: center;
}

.visual-area { flex-grow: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; border-radius: 24px; padding: 10px; position: relative; overflow: hidden; }

/* 06 CULTURE 이미지 크기 35% 확대 */
.visual-area img.image-plus-35-percent {
    max-width: 135% !important; 
    max-height: 337.5px; 
    transition: transform 0.3s ease; 
    filter: drop-shadow(0 0 15px rgba(255,255,255,0.2)); 
    z-index: 2; 
    object-fit: contain;
}

.visual-area img.main-image { max-width: 100%; height: auto; max-height: 250px; object-fit: contain; transition: transform 0.3s ease; filter: drop-shadow(0 0 15px rgba(255,255,255,0.2)); z-index: 2; }
.card:hover .main-image { transform: scale(1.05); }

.card-03 .visual-area { flex-direction: column; } 

.small-stacked-image { width: auto; max-width: 100%; max-height: 100px; margin-top: 10px; object-fit: contain; }

/* 플로팅 이미지 스타일 (01 START 영역) */
.visual-area .sub-floating-image {
    position: absolute; width: 80px; height: 80px; object-fit: contain; filter: drop-shadow(0 0 10px rgba(255,255,100,0.6)); animation: float 4s ease-in-out infinite; z-index: 1;
}
.visual-area .sub-floating-image:nth-child(2) { top: 5%; left: 10%; animation-delay: 0s; width: 90px; height: 90px; }
.visual-area .sub-floating-image:nth-child(3) { bottom: 10%; right: 8%; animation-delay: 1.5s; width: 100px; height: 100px; }
.visual-area .sub-floating-image:nth-child(4) { top: 40%; left: 5%; animation-delay: 0.8s; width: 70px; height: 70px; }
.visual-area .sub-floating-image:nth-child(5) { top: 20%; right: 15%; animation-delay: 2.2s; width: 85px; height: 85px; }

@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-15px); } }

/* 헤더 섹션 */
.header-title-image-section { 
    grid-column: 1 / -1; 
    position: relative; 
    z-index: 100; 
    padding: 0; 
    background: transparent; 
    border: none; 
    box-shadow: none; 
    height: 120px; 
    margin-bottom: -150px; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    text-align: center;
}

/* 타이틀 스타일 조정 */
.neon-title { 
    font-size: 30px; 
    font-weight: 900; 
    text-align: center; 
    line-height: 1.2; 
    color: var(--text-dark-green); /* 짙은 녹색 */
    margin: 0; 
    text-shadow: none; 
    animation: none;
}

/* '2026학년도 이렇게 달라졌어요' 크기 확대 */
.neon-title .big-text { 
    font-size: 55px; 
    line-height: 1.1; 
    display: block; 
    margin-top: 5px; 
}

/* '2026'에 짙은 붉은색과 네온 효과 적용 */
.neon-title .big-text .red-neon-year {
    color: var(--text-dark-red); /* 짙은 붉은색 */
    text-shadow: 
        0 0 5px #fff, 
        0 0 10px #f87171, 
        0 0 20px var(--accent-red); 
    transition: text-shadow 0.3s ease-in-out; 
}
.neon-title .big-text .red-neon-year:hover {
    text-shadow: 
        0 0 8px #fff,    
        0 0 25px #f87171, 
        0 0 45px var(--accent-red); 
}

/* 포인세티아 이모지 스타일 */
.poinsettia {
    position: absolute;
    font-size: 20px; 
    line-height: 1;
    top: -10px; 
    right: 0;
    display: inline-block;
}


/* GIF 파일과 겹치도록 마진 조정 */
.header-gif-section { 
    grid-column: 1 / -1; 
    padding: 0; 
    background: transparent; 
    border: none; 
    box-shadow: none; 
    border-radius: 0; 
    backdrop-filter: none; 
    border-bottom: none; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    position: relative; 
    overflow: hidden; 
    z-index: 10; 
    margin-bottom: -220px; 
    transition: all 0.6s ease-out; 
    flex-direction: column; 
    height: auto; 
}
.header-gif-section img { width: 60%; height: auto; max-width: 100%; object-fit: contain; display: block; }

.header-bottom-image-section { 
    grid-column: 1 / -1; 
    padding: 10px 20px; 
    background: transparent; 
    background-color: transparent; 
    backdrop-filter: none; 
    margin-top: 5px; 
    position: relative; 
    z-index: 99; 
    border: none; 
    box-shadow: none; 
    border-radius: 0 0 24px 24px; 
    transition: all 0.6s ease-out; 
    display: flex; 
    flex-direction: row; 
    justify-content: space-around; /* 좌, 중앙, 우측 배치 */
    align-items: flex-end; 
    gap: 0; 
    height: 200px; 
    width: 100%; 
    padding-left: 20px;
    padding-right: 20px;
}

@keyframes png-pulse { 0% { transform: scale(0.8); } 50% { transform: scale(1.0); } 100% { transform: scale(0.8); } }

/* top_sub01.gif, top_sub02.gif, top_sub03.gif 크기 33%로 통일 */
.header-bottom-image-section img {
    max-width: 33%; 
    flex-basis: 33%; 
    width: 33%; 
    height: 50%; 
    object-fit: contain; 
    z-index: 2; 
    margin: 0;
    animation: png-pulse 3s ease-in-out infinite alternate; 
}

/* top_sub02 중앙 정렬 */
.header-bottom-image-section img:nth-child(2) {
    margin: 0 auto; 
}

/* top_sub03 오른쪽 끝 정렬 */
.header-bottom-image-section img:nth-child(3) {
    margin-left: auto; 
    margin-right: 0; 
}

/* 첫 번째 이미지(GIF)는 애니메이션 제거 */
.header-bottom-image-section img:first-child {
    animation: none; 
}

.header-gif-section:hover, .header-bottom-image-section:hover, .header-title-image-section:hover { transform: none !important; box-shadow: none !important; border-color: transparent !important; }

/* 04/05 SPECIAL 그리드 아이콘 스타일 */
.card-full { grid-column: 1 / -1; }
.special-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }

/* 모바일/태블릿 반응형 그리드 설정 */
@media (max-width: 1024px) { 
    .special-grid { 
        grid-template-columns: repeat(2, 1fr); 
    } 
}
@media (max-width: 500px) { 
    .special-grid { 
        grid-template-columns: 1fr; 
    } 
}

.special-item {
    background: rgba(255,255,255,0.05); padding: 24px; border-radius: 24px; text-align: center; transition: 0.3s;
    display: flex; flex-direction: column; align-items: center; border: 1px solid transparent; cursor: pointer;
    min-height: 450px; 
}
.special-item:hover { background: rgba(255,255,255,0.1); transform: scale(1.02); border-color: #fff; box-shadow: 0 0 15px #fff; }

.image-60-percent {
    max-width: 60% !important; 
}

/* 특색 프로그램 텍스트 스타일 (네온 효과) */
.special-program-title-neon { 
    font-size: 18px; 
    font-weight: bold; 
    color: #fff; 
    margin-bottom: 5px; 
    line-height: 1.3;
    text-shadow: 0 0 10px var(--accent-gold); 
}

.special-program-subtitle {
    font-size: 15px; 
    font-weight: 500;
    color: #ccc;
    margin-bottom: 15px;
    line-height: 1.3;
}

.special-program-desc {
    font-size: 15px; 
    color: #ccc; 
    line-height: 1.6; 
    text-align: center;
    margin-top: 10px;
}

/* 아이콘 그룹 공통 스타일 */
.special-item .icon-cluster-wrapper { position: relative; width: 100%; height: 140px; margin-bottom: 20px; display: grid; align-items: start; justify-content: center; gap: 5px; }

/* 04 SPECIAL (첫 번째 card-full)의 4번째 아이템 (3x3 grid) */
.special-item:nth-child(4) .icon-cluster-wrapper.grid-3x3 { grid-template-columns: repeat(3, 1fr); } 

/* 05 NEW FOCUS (두 번째 card-full)의 4번째 아이템 (3xX grid) - 3열 배열 */
.special-item .icon-cluster-wrapper.grid-3xX { 
    grid-template-columns: repeat(3, 1fr); 
    height: 180px; 
}

.special-item .icon-cluster-wrapper .icon-group { position: static; display: flex; flex-direction: column; align-items: center; text-align: center; animation: float 2.5s ease-in-out infinite alternate; transform: translateY(0); }

/* 9개 플로팅 아이콘 크기 고정 */
.special-item .icon-cluster-wrapper .icon-group img { width: 40px; height: 40px; object-fit: contain; filter: drop-shadow(0 0 5px rgba(255,255,255,0.5)); margin-bottom: 5px; position: static; }
.special-item .icon-cluster-wrapper .icon-label-text { font-size: 10px; color: #94a3b8; white-space: nowrap; line-height: 1.1; }

/* 일반 아이콘 스타일 */
.special-item > img { max-height: 100px; width: auto; margin-bottom: 15px; object-fit: contain; filter: drop-shadow(0 0 5px rgba(255,255,255,0.5)); }

.special-title { 
    font-size: 18px; 
    font-weight: bold; 
    color: #fff; 
    margin-bottom: 5px; 
    text-shadow: 0 0 10px var(--accent-gold);
    line-height: 1.6; /* 줄 간격 통일 */
}

.special-desc { 
    font-size: 14px; 
    color: #ccc; 
    line-height: 1.6; /* 줄 간격 통일 */
}

.footer { 
    background-color: var(--bg-dark); 
    color: var(--text-sub); 
    text-align: center;
    padding: 30px 20px;
    margin-top: 80px; 
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    width: 100%;
    box-sizing: border-box;
}
.footer-text { font-size: 14px; font-weight: 500; color: #94a3b8; letter-spacing: 0.5px; text-shadow: 0 0 5px rgba(255, 255, 255, 0.1); }

/* 추가된 공지 텍스트 스타일 */
.new-announcement {
    font-size: 18px; 
    color: #e2e8f0; 
    line-height: 1.8;
    margin-top: 30px;
    padding-top: 25px;
    border-top: 1px solid rgba(255, 255, 255, 0.15); 
    text-align: center; 
    font-weight: 500;
}

/* 모달 스타일 */
.modal-container {
    display: none; 
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(5px);
}

.modal-content {
    background-color: #1e293b; 
    margin: 10% auto;
    padding: 40px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    width: 80%;
    max-width: 800px;
    border-radius: 24px;
    position: relative;
    color: #f8fafc;
    text-align: center;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
}

.close-button {
    color: #aaa;
    position: absolute;
    top: 20px;
    right: 30px;
    font-size: 35px;
    font-weight: bold;
    transition: 0.3s;
}

.close-button:hover,
.close-button:focus {
    color: white;
    text-decoration: none;
    cursor: pointer;
}

#modalImage {
    width: 100%;
    height: auto;
    border-radius: 12px;
    margin-top: 20px;
}