:root {
	--brand-navy: #0f172a;
	--brand-deep: #1e1b4b;
	--brand-blue: #3b82f6;
	--brand-cyan: #22d3ee;
	--bg-light: #f8fbff;
}
/* 배경 메시 애니메이션 */
.bg-gradient-mesh {
	position: fixed;
	top: 0; left: 0; right: 0; bottom: 0;
	z-index: -1;
	background: radial-gradient(circle at 10% 10%, rgba(59, 130, 246, 0.05) 0%, transparent 40%),
				radial-gradient(circle at 90% 90%, rgba(34, 211, 238, 0.05) 0%, transparent 40%);
}

/* 필터 버튼 스타일 */
.filter-btn {
	padding: 10px 20px;
	border-radius: 9999px;
	font-size: 14px;
	font-weight: 600;
	color: #64748b;
	background: rgba(255, 255, 255, 0.6);
	border: 1px solid rgba(226, 232, 240, 0.8);
	transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
	white-space: nowrap;
}

.filter-btn:hover {
	background: white;
	color: var(--brand-blue);
	border-color: var(--brand-blue);
}

.filter-btn.active {
	background: var(--brand-blue);
	color: white;
	border-color: var(--brand-blue);
	box-shadow: 0 4px 12px rgba(59, 130, 246, 0.25);
}

/* 포트폴리오 카드 (인피니트 스크롤 등장 효과) */
.portfolio-card {
	border-radius: 16px;
	overflow: hidden;
	position: relative;
	cursor: pointer;
	box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.05);
	transition: transform 0.3s ease, box-shadow 0.3s ease;
	background: white;
	opacity: 0;
	animation: fadeInUp 0.6s forwards;
}

@keyframes fadeInUp {
	from { opacity: 0; transform: translateY(20px); }
	to { opacity: 1; transform: translateY(0); }
}

.portfolio-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.portfolio-card img {
	transition: transform 0.5s ease;
}

.portfolio-card:hover img {
	transform: scale(1.05);
}

/* 로딩 스피너 */
.loader {
	border: 3px solid #f3f3f3;
	border-top: 3px solid var(--brand-blue);
	border-radius: 50%;
	width: 30px;
	height: 30px;
	animation: spin 1s linear infinite;
	margin: 40px auto;
	display: none; /* 기본 숨김 */
}

@keyframes spin {
	0% { transform: rotate(0deg); }
	100% { transform: rotate(360deg); }
}

/* 상세 페이지 (모달) 스타일 */
#detailPage {
	position: fixed;
	top: 0; left: 0; right: 0; bottom: 0;
	background: white;
	z-index: 1000;
	overflow-y: auto;
	transform: translateY(100%);
	transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

#detailPage.open {
	transform: translateY(0);
}

/* 상세 페이지 테이블 스타일 */
.info-table th {
	text-align: left;
	padding: 12px 0;
	color: #64748b;
	font-weight: 500;
	font-size: 14px;
	width: 100px;
	vertical-align: top;
}
.info-table td {
	padding: 12px 0;
	color: var(--brand-navy);
	font-weight: 600;
	font-size: 15px;
	vertical-align: top;
}
.info-table tr {
	border-bottom: 1px solid #f1f5f9;
}
.info-table tr:last-child {
	border-bottom: none;
}

/* 라이트박스 (이미지 뷰어) 스타일 */
#lightbox {
	position: fixed;
	top: 0; left: 0; right: 0; bottom: 0;
	background: rgba(0, 0, 0, 0.95);
	z-index: 2000;
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.3s ease;
}
#lightbox.active {
	opacity: 1;
	pointer-events: auto;
}

.scrollbar-hide::-webkit-scrollbar {
	display: none;
}
.scrollbar-hide {
	-ms-overflow-style: none;
	scrollbar-width: none;
}

.aspect-video-custom {
	aspect-ratio: 16 / 9;
}

/* [NEW] 커스텀 커서 스타일 (블루 계열로 변경) */
#custom-cursor {
	position: fixed;
	top: 0; 
	left: 0;
	width: 80px;
	height: 80px;
	border-radius: 50%;
	
	/* 스타일 변경: 브랜드 블루 컬러 적용 */
	background-color: rgba(59, 130, 246, 0.9); /* Brand Blue with opacity */
	color: white;
	border: 1px solid rgba(255, 255, 255, 0.2); /* 미세한 테두리 */
	backdrop-filter: blur(4px); /* 배경 블러 효과 */
	box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
	
	display: flex;
	align-items: center;
	justify-content: center;
	
	/* 타이포그래피 개선 */
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-weight: 600;
	font-size: 12px;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	
	pointer-events: none;
	z-index: 9999;
	transform: translate(-50%, -50%) scale(0);
	transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.2s ease;
	opacity: 0;
}

#custom-cursor.active {
	transform: translate(-50%, -50%) scale(1);
	opacity: 1;
}

.cursor-hover-area {
	cursor: none;
}