@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');
* {
 margin: 0;
 padding: 0;
 box-sizing: border-box;
}
:root {
 --bg-primary: #000000;
 --bg-secondary: #0a0a0a;
 --bg-card: #111111;
 --text-primary: #ffffff;
 --text-secondary: #888888;
 --accent: #00ff88;
 --accent-dim: #00cc6a;
 --gradient-1: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
 --gradient-2: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
 --gradient-3: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
 --gradient-4: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
}
body {
 font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
 background-color: var(--bg-primary);
 color: var(--text-primary);
 line-height: 1.6;
 overflow-x: hidden;
}
body, html {
 letter-spacing: -1px;
 overflow-x: hidden;
}
/* 프로그레스 바 */
.progress-bar {
 position: fixed;
 top: 0;
 left: 0;
 height: 3px;
 background: var(--accent);
 z-index: 10000;
 transition: width 0.1s ease;
 width: 0%;
}
/* 네비게이션 */
nav {
 position: fixed;
 top: 0;
 width: 100%;
 padding: 2rem 4rem;
 z-index: 1000;
 mix-blend-mode: difference;
 transition: all 0.3s ease;
}
nav.scrolled {
 background: rgba(0, 0, 0, 0.95);
 backdrop-filter: blur(20px);
 padding: 1rem 4rem;
}
.nav-container {
 display: flex;
 justify-content: space-between;
 align-items: center;
}
.logo {
 font-size: 1.5rem;
 font-weight: 900;
 letter-spacing: -0.05em;
 color: white;
}
.nav-menu {
 display: flex;
 gap: 3rem;
 list-style: none;
}
.nav-menu a {
 color: white;
 text-decoration: none;
 font-weight: 500;
 font-size: 0.9rem;
 letter-spacing: 0.05em;
 position: relative;
 transition: all 0.3s;
}
.nav-menu a::after {
 content: '';
 position: absolute;
 bottom: -5px;
 left: 0;
 width: 0;
 height: 2px;
 background: var(--accent);
 transition: width 0.3s;
}
.nav-menu a:hover::after {
 width: 100%;
}
/* 히어로 섹션 */
.hero {
 height: 100vh;
 display: flex;
 align-items: center;
 justify-content: center;
 position: relative;
 background: radial-gradient(ellipse at bottom, #1a1a1a 0%, #000 100%);
}
.floating-elements {
 position: absolute;
 width: 100%;
 height: 100%;
 overflow: hidden;
 z-index: 1;
}
.floating-el {
 position: absolute;
 border-radius: 50%;
 filter: blur(40px);
 opacity: 0.5;
 animation: float 20s infinite ease-in-out;
}
.floating-el:nth-child(1) {
 width: 300px;
 height: 300px;
 background: var(--gradient-1);
 top: 10%;
 left: 10%;
 animation-duration: 25s;
}
.floating-el:nth-child(2) {
 width: 200px;
 height: 200px;
 background: var(--gradient-2);
 top: 60%;
 right: 10%;
 animation-duration: 30s;
 animation-delay: -5s;
}
.floating-el:nth-child(3) {
 width: 250px;
 height: 250px;
 background: var(--gradient-3);
 bottom: 10%;
 left: 30%;
 animation-duration: 28s;
 animation-delay: -10s;
}
@keyframes float {
 0%, 100% {
  transform: translate(0, 0) scale(1);
 }
 25% {
  transform: translate(30px, -30px) scale(1.1);
 }
 50% {
  transform: translate(-20px, 20px) scale(0.9);
 }
 75% {
  transform: translate(-30px, -20px) scale(1.05);
 }
}
.hero-content {
 text-align: center;
 z-index: 2;
 position: relative;
}
.hero h1 {
 font-size: clamp(4rem, 12vw, 10rem);
 font-weight: 900;
 line-height: 0.9;
 letter-spacing: -0.05em;
 margin-bottom: 2rem;
 position: relative;
}
.hero h1 .line {
 display: block;
 position: relative;
 overflow: hidden;
}
.hero h1 .line span {
 display: inline-block;
 transform: translateY(100%);
 animation: revealText 1s cubic-bezier(0.77, 0, 0.175, 1) forwards;
}
.hero h1 .line:nth-child(2) span {
 animation-delay: 0.1s;
}
.gradient-text {
 background: linear-gradient(135deg, #fff 0%, #888 100%);
 -webkit-background-clip: text;
 -webkit-text-fill-color: transparent;
 background-size: 200% 200%;
 animation: gradientShift 3s ease infinite;
}
@keyframes gradientShift {
 0% {
  background-position: 0% 50%;
 }
 50% {
  background-position: 100% 50%;
 }
 100% {
  background-position: 0% 50%;
 }
}
@keyframes revealText {
 to {
  transform: translateY(0);
 }
}
.hero-subtitle {
 font-size: 1.2rem;
 color: var(--text-secondary);
 font-weight: 300;
 letter-spacing: 0.2em;
 opacity: 0;
 animation: fadeIn 1s ease 0.8s forwards;
}
@keyframes fadeIn {
 to {
  opacity: 1;
 }
}
/* About 섹션 */
.about {
 padding: 10rem 4rem;
 max-width: 1400px;
 margin: 0 auto;
}
.about-content {
 display: grid;
 grid-template-columns: 1fr 2fr;
 gap: 8rem;
 align-items: center;
}
.about-title {
 font-size: 8rem;
 font-weight: 900;
 line-height: 1;
 letter-spacing: -0.05em;
 opacity: 0.1;
 text-transform: uppercase;
}
.about-info h2 {
 font-size: 3rem;
 font-weight: 800;
 margin-bottom: 2rem;
 background: var(--gradient-4);
 -webkit-background-clip: text;
 -webkit-text-fill-color: transparent;
}
.about-info p {
 font-size: 1.2rem;
 line-height: 1.8;
 color: var(--text-secondary);
 margin-bottom: 2rem;
}
.about-skills {
 margin-top: 4rem;
}
.skill-progress {
 margin-bottom: 2.5rem;
}
.skill-progress h4 {
 font-size: 1rem;
 font-weight: 600;
 margin-bottom: 0.8rem;
 color: var(--text-primary);
 display: flex;
 justify-content: space-between;
 align-items: center;
}
.skill-progress span {
 color: var(--accent);
 font-weight: 700;
}
.progress-bar-container {
 width: 100%;
 height: 8px;
 background: rgba(255, 255, 255, 0.1);
 border-radius: 100px;
 overflow: hidden;
 position: relative;
}
.progress-fill {
 height: 100%;
 background: var(--accent);
 border-radius: 100px;
 position: relative;
 animation: progressAnimation 2s ease-out;
 transform-origin: left;
}
@keyframes progressAnimation {
 from {
  transform: scaleX(0);
 }
 to {
  transform: scaleX(1);
 }
}
.progress-fill::after {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 bottom: 0;
 background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.3) 50%, transparent 100%);
 animation: shimmer 2s infinite linear;
}
@keyframes shimmer {
 from {
  transform: translateX(-200%);
 }
 to {
  transform: translateX(200%);
 }
}
/* Skills 섹션 */
.skills {
 padding: 10rem 4rem;
 background: var(--bg-secondary);
}
.skills-container {
 max-width: 1400px;
 margin: 0 auto;
}
.section-header {
 text-align: center;
 margin-bottom: 6rem;
}
.section-header h2 {
 font-size: 4rem;
 font-weight: 900;
 margin-bottom: 1rem;
 letter-spacing: -0.03em;
}
.section-header p {
 color: var(--text-secondary);
 font-size: 1.2rem;
}
.skills-grid {
 display: grid;
 grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
 gap: 2rem;
}
.skill-card {
 background: var(--bg-card);
 padding: 3rem;
 border-radius: 24px;
 position: relative;
 overflow: hidden;
 transition: transform 0.3s;
}
.skill-card::before {
 content: '';
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 100%;
 background: var(--gradient-1);
 opacity: 0;
 transition: opacity 0.3s;
 z-index: 0;
}
.skill-card:nth-child(2)::before {
 background: var(--gradient-2);
}
.skill-card:nth-child(3)::before {
 background: var(--gradient-3);
}
.skill-card:nth-child(4)::before {
 background: var(--gradient-4);
}
.skill-card:hover {
 transform: translateY(-10px);
}
.skill-card:hover::before {
 opacity: 0.1;
}
.skill-content {
 position: relative;
 z-index: 1;
}
.skill-icon {
 font-size: 3rem;
 margin-bottom: 1.5rem;
}
.skill-card h3 {
 font-size: 1.5rem;
 margin-bottom: 1rem;
 font-weight: 700;
}
.skill-card p {
 color: var(--text-secondary);
 line-height: 1.6;
}
/* 포트폴리오 섹션 */
.portfolio {
 padding: 10rem 4rem;
 max-width: 1600px;
 margin: 0 auto;
}
.filter-tabs {
 display: flex;
 justify-content: center;
 gap: 2rem;
 margin-bottom: 4rem;
}
.filter-btn {
 padding: 1rem 2rem;
 background: transparent;
 border: 2px solid var(--text-secondary);
 color: var(--text-secondary);
 border-radius: 100px;
 font-weight: 600;
 cursor: pointer;
 transition: all 0.3s;
 font-size: 0.9rem;
 text-transform: uppercase;
 letter-spacing: 0.1em;
}
.filter-btn.active, .filter-btn:hover {
 background: var(--accent);
 color: var(--bg-primary);
 border-color: var(--accent);
 transform: scale(1.05);
}
.portfolio-grid {
 display: grid;
 grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
 gap: 2rem;
}
.portfolio-item {
 position: relative;
 overflow: hidden;
 border-radius: 20px;
 height: 500px;
 cursor: pointer;
 transition: all 0.3s;
}
.portfolio-item::before {
 content: '';
 position: absolute;
 inset: 0;
 background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.8) 100%);
 z-index: 1;
 opacity: 0.9;
 transition: opacity 0.3s;
}
.portfolio-item:hover::before {
 opacity: 1;
}
.portfolio-bg {
 position: absolute;
 inset: 0;
 background: var(--bg-card);
}
.portfolio-bg img {
 width: 100%;
 height: 100%;
 object-fit: cover;
 transition: transform 0.6s;
}
.portfolio-item:hover .portfolio-bg img {
 transform: scale(1.1);
}
.portfolio-content {
 position: absolute;
 bottom: 0;
 left: 0;
 right: 0;
 padding: 3rem;
 z-index: 2;
 transform: translateY(20px);
 transition: transform 0.3s;
}
.portfolio-item:hover .portfolio-content {
 transform: translateY(0);
}
.portfolio-category {
 display: inline-block;
 padding: 0.5rem 1rem;
 background: var(--accent);
 color: var(--bg-primary);
 border-radius: 100px;
 font-size: 0.8rem;
 font-weight: 600;
 margin-bottom: 1rem;
 text-transform: uppercase;
 letter-spacing: 0.1em;
}
.portfolio-title {
 font-size: 2rem;
 font-weight: 800;
 margin-bottom: 0.5rem;
}
.portfolio-description {
 color: rgba(255, 255, 255, 0.8);
 font-size: 1rem;
 line-height: 1.5;
}
/* 모달 */
.modal {
 position: fixed;
 inset: 0;
 background: rgba(0, 0, 0, 0.95);
 z-index: 2000;
 display: none;
 align-items: center;
 justify-content: center;
 padding: 2rem;
 backdrop-filter: blur(10px);
 opacity: 0;
 transition: opacity 0.3s;
}
.modal-content {
 background: var(--bg-card);
 max-width: 1200px;
 width: 100%;
 max-height: 90vh;
 overflow: hidden;
 border-radius: 30px;
 position: relative;
 animation: modalFadeIn 0.3s ease-out;
 display: flex;
 flex-direction: column;
}
/* 모달 내부 스크롤 영역 */
.modal-scroll-wrapper {
 overflow-y: auto;
 height: 100%;
 margin-top: 0;
}
/* 모달 스크롤바 스타일링 */
.modal-scroll-wrapper::-webkit-scrollbar {
 width: 8px;
}
.modal-scroll-wrapper::-webkit-scrollbar-track {
 background: rgba(255, 255, 255, 0.1);
}
.modal-scroll-wrapper::-webkit-scrollbar-thumb {
 background: var(--accent);
 border-radius: 4px;
}
@keyframes modalFadeIn {
 from {
  opacity: 0;
  transform: scale(0.9);
 }
 to {
  opacity: 1;
  transform: scale(1);
 }
}
.modal-close {
 position: absolute;
 top: 2rem;
 right: 2rem;
 width: 50px;
 height: 50px;
 background: rgba(255, 255, 255, 0.1);
 border-radius: 50%;
 display: flex;
 align-items: center;
 justify-content: center;
 cursor: pointer;
 transition: all 0.3s;
 z-index: 20;
 backdrop-filter: blur(10px);
}
@media (max-width: 1264px) {
 .modal-close {
  right: 2rem;
 }
 .gallery-thumbnails {
  border-radius: 0;
 }
}
.modal-close:hover {
 background: var(--accent);
 transform: rotate(90deg);
}
.modal-close svg {
 width: 24px;
 height: 24px;
 stroke: white;
 stroke-width: 2;
}
.modal-header {
 position: relative;
 overflow: hidden;
 background: #1a1a1a;
}
/* 이미지 갤러리 스타일 */
.modal-gallery {
 position: relative;
 width: 100%;
 overflow: hidden;
}
/* 갤러리 메인 이미지 영역 */
.gallery-main {
 position: relative;
 width: 100%;
 background: #0a0a0a;
 margin-top: 0;
}
.gallery-main img {
 width: 100%;
 height: auto;
 display: block;
}
/* 갤러리 네비게이션 */
.gallery-nav {
 position: fixed;
 top: 50%;
 transform: translateY(-50%);
 width: 50px;
 height: 50px;
 border: 2px solid rgba(255, 255, 255, 0.3);
 border-radius: 50%;
 display: flex;
 align-items: center;
 justify-content: center;
 cursor: pointer;
 transition: all 0.3s;
 z-index: 25;
 backdrop-filter: blur(10px);
}
.gallery-nav:hover {
 background: var(--accent);
 border-color: var(--accent);
 transform: translateY(-50%) scale(1.1);
}
.gallery-prev {
 left: 20px;
}
.gallery-next {
 right: 20px;
}
.gallery-nav svg {
 width: 24px;
 height: 24px;
 stroke: white;
 stroke-width: 2;
}
/* 모달이 열렸을 때만 갤러리 네비게이션 표시 */
body:not(.modal-open) .gallery-nav {
 display: none !important;
}
/* 썸네일 스트립 - 상단 고정 */
.gallery-thumbnails {
 position: fixed;
 top: 60px;
 left: 50%;
 transform: translateX(-50%);
 z-index: 15;
 display: flex;
 gap: 10px;
 padding: 20px;
 background: rgba(10, 10, 10, 0.95);
 backdrop-filter: blur(10px);
 overflow-x: auto;
 scroll-behavior: smooth;
 border-bottom: 1px solid rgba(255, 255, 255, 0.1);
 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
 max-width: 1200px;
 width: 100%;
 border-radius: 20px 20px 0 0;
}
.gallery-thumbnails::-webkit-scrollbar {
 height: 6px;
}
.gallery-thumbnails::-webkit-scrollbar-track {
 background: rgba(255, 255, 255, 0.1);
}
.gallery-thumbnails::-webkit-scrollbar-thumb {
 background: var(--accent);
 border-radius: 3px;
}
.gallery-thumb {
 flex: 0 0 120px;
 height: 80px;
 border-radius: 8px;
 overflow: hidden;
 cursor: pointer;
 border: 2px solid transparent;
 transition: all 0.3s;
 opacity: 0.6;
}
.gallery-thumb.active {
 border-color: var(--accent);
 opacity: 1;
 box-shadow: 0 0 20px rgba(0, 255, 136, 0.3);
}
.gallery-thumb:hover {
 opacity: 1;
 transform: translateY(-2px);
}
.gallery-thumb img {
 width: 100%;
 height: 100%;
 object-fit: cover;
}
/* 이미지 인디케이터 */
.gallery-indicator {
 position: absolute;
 bottom: 20px;
 left: 50%;
 transform: translateX(-50%);
 display: flex;
 gap: 8px;
 padding: 10px 20px;
 background: rgba(0, 0, 0, 0.7);
 border-radius: 20px;
 z-index: 5;
}
.indicator-dot {
 width: 8px;
 height: 8px;
 border-radius: 50%;
 background: rgba(255, 255, 255, 0.5);
 cursor: pointer;
 transition: all 0.3s;
}
.indicator-dot.active {
 width: 24px;
 border-radius: 4px;
 background: var(--accent);
}
.modal-header img {
 width: 100%;
 height: auto;
 display: block;
}
.modal-body {
 padding: 4rem;
}
.modal-title {
 font-size: 3rem;
 font-weight: 900;
 margin-bottom: 2rem;
 letter-spacing: -0.03em;
}
.modal-info {
 display: grid;
 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
 gap: 2rem;
 margin-bottom: 3rem;
}
.info-item h4 {
 color: var(--text-secondary);
 font-size: 0.9rem;
 margin-bottom: 0.5rem;
 text-transform: uppercase;
 letter-spacing: 0.1em;
}
.info-item p {
 font-size: 1.1rem;
 font-weight: 600;
}
.modal-description {
 font-size: 1.2rem;
 line-height: 1.8;
 color: var(--text-secondary);
 margin-bottom: 3rem;
}
.modal-details {
 margin-bottom: 3rem;
}
.modal-details h4 {
 font-size: 1.3rem;
 font-weight: 700;
 margin-bottom: 1.5rem;
 color: var(--text-primary);
}
.modal-details ul {
 list-style: none;
}
.modal-details li {
 position: relative;
 padding-left: 2rem;
 margin-bottom: 1rem;
 font-size: 1.1rem;
 line-height: 1.6;
 color: var(--text-secondary);
}
.modal-details li::before {
 content: '•';
 position: absolute;
 left: 0;
 color: var(--accent);
 font-weight: bold;
 font-size: 1.5rem;
 line-height: 1;
}
.modal-achievements {
 margin-bottom: 3rem;
}
.modal-achievements h4 {
 font-size: 1.3rem;
 font-weight: 700;
 margin-bottom: 1.5rem;
 color: var(--accent);
}
.modal-achievements ul {
 list-style: none;
}
.modal-achievements li {
 position: relative;
 padding-left: 2rem;
 margin-bottom: 1rem;
 font-size: 1.1rem;
 line-height: 1.6;
 color: var(--text-secondary);
}
.modal-achievements li::before {
 content: '✓';
 position: absolute;
 left: 0;
 color: var(--accent);
 font-weight: bold;
 font-size: 1.2rem;
}
.modal-tags {
 display: flex;
 gap: 1rem;
 flex-wrap: wrap;
}
.modal-tag {
 padding: 0.75rem 1.5rem;
 background: rgba(255, 255, 255, 0.1);
 border-radius: 100px;
 font-size: 0.9rem;
 border: 1px solid rgba(255, 255, 255, 0.2);
}
/* Contact 섹션 */
.contact {
 padding: 10rem 4rem;
 background: var(--bg-secondary);
}
.contact-container {
 max-width: 1200px;
 margin: 0 auto;
 display: grid;
 grid-template-columns: 1fr 1fr;
 gap: 8rem;
}
.contact-info h2 {
 font-size: 4rem;
 font-weight: 900;
 margin-bottom: 2rem;
 letter-spacing: -0.03em;
}
.contact-info p {
 font-size: 1.3rem;
 color: var(--text-secondary);
 margin-bottom: 3rem;
 line-height: 1.6;
}
.contact-links {
 display: flex;
 flex-direction: column;
 gap: 1.5rem;
}
.contact-link {
 display: flex;
 align-items: center;
 gap: 1rem;
 color: var(--text-primary);
 text-decoration: none;
 font-size: 1.2rem;
 transition: all 0.3s;
}
.contact-link:hover {
 color: var(--accent);
 transform: translateX(10px);
}
.contact-form {
 display: flex;
 flex-direction: column;
 gap: 2rem;
}
.form-group input, .form-group textarea {
 width: 100%;
 padding: 1.5rem;
 background: var(--bg-card);
 border: 2px solid transparent;
 border-radius: 16px;
 color: var(--text-primary);
 font-family: inherit;
 font-size: 1rem;
 transition: all 0.3s;
}
.form-group input:focus, .form-group textarea:focus {
 outline: none;
 border-color: var(--accent);
}
.form-group textarea {
 min-height: 200px;
 resize: vertical;
}
.submit-btn {
 padding: 1.5rem 3rem;
 background: var(--accent);
 color: var(--bg-primary);
 border: none;
 border-radius: 100px;
 font-size: 1rem;
 font-weight: 700;
 text-transform: uppercase;
 letter-spacing: 0.1em;
 cursor: pointer;
 transition: all 0.3s;
 align-self: flex-start;
 position: relative;
}
.submit-btn:hover {
 transform: translateY(-3px);
 box-shadow: 0 20px 40px rgba(0, 255, 136, 0.3);
}
.submit-btn:disabled {
 background: #666;
 cursor: not-allowed;
 transform: none;
 box-shadow: none;
}
/* Footer */
.footer {
 padding: 5rem 0;
 background: var(--bg-primary);
 border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.footer-container {
 max-width: 1400px;
 margin: 0 auto;
 padding: 0 4rem;
}
.footer-content {
 display: flex;
 justify-content: space-between;
 align-items: center;
}
.footer-copyright {
 color: var(--text-secondary);
 font-size: 0.9rem;
 font-weight: 400;
 letter-spacing: 0.05em;
}
.footer-social {
 display: flex;
 gap: 2rem;
}
.social-link {
 color: var(--text-secondary);
 transition: all 0.3s;
}
.social-link svg {
 width: 24px;
 height: 24px;
}
.social-link:hover {
 color: var(--accent);
 transform: translateY(-3px);
}
/* 성공 메시지 애니메이션 */
@keyframes slideIn {
 from {
  opacity: 0;
  transform: translate(-50%, -60%);
 }
 to {
  opacity: 1;
  transform: translate(-50%, -50%);
 }
}
.success-message {
 position: fixed;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
 background: var(--accent);
 color: var(--bg-primary);
 padding: 2rem 3rem;
 border-radius: 12px;
 font-weight: bold;
 font-size: 1.2rem;
 z-index: 10000;
 box-shadow: 0 10px 30px rgba(0, 255, 136, 0.3);
 animation: slideIn 0.3s ease-out;
}
/* 스크롤 애니메이션 클래스 */
.scroll-hidden {
 opacity: 0;
}
.scroll-animate {
 transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
.fade-up {
 transform: translateY(50px);
}
.fade-left {
 transform: translateX(-50px);
}
.fade-right {
 transform: translateX(50px);
}
.scale {
 transform: scale(0.8);
}
.rotate {
 transform: rotate(-10deg) scale(0.9);
}
.scroll-visible {
 opacity: 1 !important;
 transform: translateY(0) translateX(0) scale(1) rotate(0) !important;
}
/* 스태거 애니메이션 */
.stagger {
 transition-delay: 0.1s;
}
.stagger:nth-child(2) {
 transition-delay: 0.2s;
}
.stagger:nth-child(3) {
 transition-delay: 0.3s;
}
.stagger:nth-child(4) {
 transition-delay: 0.4s;
}
.stagger:nth-child(5) {
 transition-delay: 0.5s;
}
.stagger:nth-child(6) {
 transition-delay: 0.6s;
}
/* 스크롤바 너비만큼 패딩 추가 (스크롤바가 사라질 때 레이아웃 shift 방지) */
body.modal-open {
 overflow: hidden !important;
 position: fixed !important;
 width: 100% !important;
}
/* 모달이 열렸을 때 네비게이션도 shift 방지 */
body.modal-open nav {
 padding-right: 17px;
}
@media (max-width: 1024px) {
 .about-content {
  grid-template-columns: 1fr;
  gap: 4rem;
 }
 .contact-container {
  grid-template-columns: 1fr;
  gap: 4rem;
 }
}
@media (max-width: 768px) {
 nav {
  padding: 1.5rem 2rem;
 }
 .nav-menu {
  display: none;
 }
 .hero h1 {
  font-size: 4rem;
 }
 .portfolio-grid {
  grid-template-columns: 1fr;
 }
 .modal-body {
  padding: 2rem;
 }
 .filter-tabs {
  flex-wrap: wrap;
  gap: 1rem;
 }
 .filter-btn {
  padding: 0.75rem 1.5rem;
  font-size: 0.8rem;
 }
 .footer {
  margin-top: 5rem;
 }
 .footer-container {
  padding: 0 2rem;
 }
 .footer-content {
  flex-direction: column;
  gap: 2rem;
  text-align: center;
 }
 .footer-copyright {
  order: 2;
 }
 .footer-social {
  order: 1;
 }
 /* 모바일에서 갤러리 네비게이션 조정 */
 .gallery-prev {
  left: 10px;
 }
 .gallery-next {
  right: 10px;
 }
 .gallery-nav {
  width: 40px;
  height: 40px;
 }
}
/* 320px 모바일 대응 */
@media (max-width: 480px) {
 /* 네비게이션 */
 nav {
  padding: 1rem;
 }
 .logo {
  font-size: 1.2rem;
 }
 /* 히어로 섹션 */
 .hero h1 {
  font-size: 2.5rem;
 }
 .hero-subtitle {
  font-size: 0.9rem;
 }
 .floating-el:nth-child(1) {
  width: 150px;
  height: 150px;
 }
 .floating-el:nth-child(2) {
  width: 100px;
  height: 100px;
 }
 .floating-el:nth-child(3) {
  width: 120px;
  height: 120px;
 }
 /* About 섹션 */
 .about {
  padding: 5rem 1.5rem;
 }
 .about-title {
  font-size: 4rem;
 }
 .about-info h2 {
  font-size: 2rem;
 }
 .about-info p {
  font-size: 1rem;
 }
 /* Skills 섹션 */
 .skills {
  padding: 5rem 1.5rem;
 }
 .section-header h2 {
  font-size: 2.5rem;
 }
 .section-header p {
  font-size: 1rem;
 }
 .skills-grid {
  grid-template-columns: 1fr;
  gap: 1.5rem;
 }
 .skill-card {
  padding: 2rem;
 }
 /* 포트폴리오 섹션 */
 .portfolio {
  padding: 5rem 1.5rem;
 }
 .portfolio-grid {
  grid-template-columns: 1fr;
  gap: 1.5rem;
 }
 .portfolio-item {
  height: 350px;
 }
 .portfolio-content {
  padding: 2rem;
 }
 .portfolio-title {
  font-size: 1.5rem;
 }
 .filter-tabs {
  gap: 0.5rem;
 }
 .filter-btn {
  padding: 0.5rem 1rem;
  font-size: 0.75rem;
 }
 /* Contact 섹션 */
 .contact {
  padding: 5rem 1.5rem;
 }
 .contact-info h2 {
  font-size: 2.5rem;
 }
 .contact-info p {
  font-size: 1.1rem;
 }
 .contact-link {
  font-size: 1rem;
 }
 .form-group input, .form-group textarea {
  padding: 1rem;
  font-size: 0.9rem;
 }
 .submit-btn {
  padding: 1rem 2rem;
  font-size: 0.9rem;
  width: 100%;
 }
 /* 모달 */
 .modal {
  padding: 1rem;
 }
 .modal-content {
  border-radius: 20px;
 }
 .modal-close {
  width: 40px;
  height: 40px;
  top: 1rem;
  right: 1rem;
 }
 .modal-title {
  font-size: 2rem;
 }
 .modal-body {
  padding: 1.5rem;
 }
 .modal-info {
  grid-template-columns: 1fr;
  gap: 1rem;
 }
 .modal-description {
  font-size: 1rem;
 }
 .modal-details {
  margin-bottom: 2rem;
 }
 .modal-details h4 {
  font-size: 1.1rem;
 }
 .modal-details li {
  font-size: 1rem;
  margin-bottom: 0.8rem;
 }
 .modal-achievements {
  margin-bottom: 2rem;
 }
 .modal-achievements h4 {
  font-size: 1.1rem;
 }
 .modal-achievements li {
  font-size: 1rem;
  margin-bottom: 0.8rem;
 }
 .modal-tags {
  gap: 0.5rem;
 }
 .modal-tag {
  padding: 0.5rem 1rem;
  font-size: 0.8rem;
 }
 /* 갤러리 */
 .gallery-thumbnails {
  padding: 15px;
  gap: 8px;
 }
 .gallery-thumb {
  flex: 0 0 80px;
  height: 60px;
 }
 /* Footer */
 .footer-container {
  padding: 0 1.5rem;
 }
 .footer-copyright {
  font-size: 0.8rem;
 }
}
/* 매우 작은 화면 (320px) 추가 최적화 */
@media (max-width: 360px) {
 .hero h1 {
  font-size: 2rem;
 }
 .about-title {
  font-size: 3rem;
 }
 .section-header h2 {
  font-size: 2rem;
 }
 .portfolio-item {
  height: 300px;
 }
 .contact-info h2 {
  font-size: 2rem;
 }
}