@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&display=swap');

body {
    font-family: 'Noto Sans KR', sans-serif;
    background-color: #fafaf9; 
    color: #292524; 
}

.chart-container {
    position: relative;
    width: 100%;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
    height: 40vh;
    max-height: 400px;
}
#clouds-group {
    width: 100vw;
    height: 100vh;
    position: absolute;
    top: 0;
    left: 0;
    /* 💡 약간의 여유를 위해 1.1~1.2배 정도로 기본 스케일을 잡아둡니다 */
    transform: scale(1.2); 
    overflow: hidden;
}
@media (min-width: 768px) {
    .chart-container {
        height: 350px;
    }    
}
@media (max-width: 768px) {
    #hero p{ padding: 0 20px;}
}
.tab-btn.active {
    border-bottom: 2px solid #b45309; 
    color: #b45309;
    font-weight: 700;
}

.exp-btn.active {
    background-color: #fef3c7; 
    border-left: 4px solid #b45309;
    font-weight: 700;
}
.featured-card:hover .project-image {
    transform: scale(1.05);
}
.filter-btn.active {
    background-color: #292524;
    color: #fafaf9;
}


/* 배너 무한 스크롤 애니메이션 */
@keyframes marquee {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
.animate-marquee {
    display: flex;
    width: max-content;
    animation: marquee 400s linear infinite; /* 속도 조절: 초 단위 변경 */
}
.animate-marquee:hover {
    animation-play-state: paused; /* 마우스 오버 시 일시정지 */
}
.banner-item {
    width: 200px;
    height: 100px;
    object-fit: cover;
    border-radius: 0.5rem;
}
/* 애니메이션이 적용되는 주요 요소들에 추가 */
#hero h1, #hero p, 
#about, #skills span, 
.exp-btn, #project-grid > div {
    will-change: transform, opacity;
    backface-visibility: hidden; /* 미세한 떨림 방지 */
}
/* 초기 상태 숨기기 */
#experience .border-b, 
#experience > p,
#exp-list,
#exp-info,
#exp-certi {
    opacity: 0;
    will-change: transform, opacity;
}