/* Creative Portfolio Theme Styles */ /* CSS Variables for Creative Theme */ :root { --primary-color: #ff6b6b; --secondary-color: #040aea; --accent-color: #45b7d1; --tertiary-color: #96ceb4; --quaternary-color: #feca57; --text-primary: #2c3e50; --text-secondary: #7f8c8d; --text-light: #bdc3c7; --bg-primary: #ffffff; --bg-secondary: #f8f9fa; --bg-tertiary: #ecf0f1; --bg-card: #ffffff; --border-color: #e9ecef; --border-light: #f1f3f4; --shadow-sm: 0 2px 4px 0 rgb(0 0 0 / 0.1); --shadow-md: 0 4px 8px 0 rgb(0 0 0 / 0.1); --shadow-lg: 0 8px 16px 0 rgb(0 0 0 / 0.1); --shadow-xl: 0 16px 32px 0 rgb(0 0 0 / 0.1); --radius-sm: 0.5rem; --radius-md: 0.75rem; --radius-lg: 1rem; --radius-xl: 1.5rem; --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 1.5rem; --spacing-lg: 2rem; --spacing-xl: 3rem; --spacing-2xl: 4rem; } /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; color: var(--text-primary); background-color: var(--bg-primary); /* overflow-x: hidden; */ } .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--spacing-md); } /* Hero Section */ .hero-section { position: relative; min-height: 100vh; display: flex; align-items: center; background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 100%); overflow: hidden; } .hero-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; } .hero-shapes { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .shape { position: absolute; border-radius: 50%; animation: float-shape 6s ease-in-out infinite; } .shape-1 { width: 200px; height: 200px; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); top: 10%; left: 10%; animation-delay: 0s; } .shape-2 { width: 150px; height: 150px; background: linear-gradient(135deg, var(--accent-color), var(--tertiary-color)); top: 60%; right: 15%; animation-delay: 2s; } .shape-3 { width: 100px; height: 100px; background: linear-gradient(135deg, var(--quaternary-color), var(--primary-color)); bottom: 20%; left: 20%; animation-delay: 4s; } .shape-4 { width: 80px; height: 80px; background: linear-gradient(135deg, var(--secondary-color), var(--accent-color)); top: 30%; right: 30%; animation-delay: 1s; } @keyframes float-shape { 0%, 100% { transform: translateY(0px) rotate(0deg); } 50% { transform: translateY(-20px) rotate(180deg); } } .hero-content { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-2xl); align-items: center; width: 100%; z-index: 1; } .hero-text { max-width: 600px; } .hero-badge { display: inline-block; padding: var(--spacing-xs) var(--spacing-sm); background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; border-radius: var(--radius-sm); margin-bottom: var(--spacing-md); box-shadow: var(--shadow-md); } .hero-title { margin-bottom: var(--spacing-md); } .title-line { display: block; font-size: clamp(2.5rem, 5vw, 4rem); font-weight: 800; line-height: 1.1; margin-bottom: var(--spacing-xs); } .gradient-text { background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 50%, var(--accent-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .hero-subtitle { font-size: 1.25rem; color: var(--text-secondary); margin-bottom: var(--spacing-xl); line-height: 1.7; } .hero-cta { display: flex; gap: var(--spacing-md); margin-bottom: var(--spacing-2xl); flex-wrap: wrap; } .btn-primary, .btn-secondary { display: inline-flex; align-items: center; padding: var(--spacing-sm) var(--spacing-lg); border-radius: var(--radius-md); font-weight: 600; text-decoration: none; transition: all 0.3s ease; border: 2px solid transparent; position: relative; overflow: hidden; } .btn-primary { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; box-shadow: var(--shadow-md); } .btn-primary:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); } .btn-secondary { background: transparent; color: var(--text-primary); border-color: var(--border-color); } .btn-secondary:hover { background: var(--bg-tertiary); border-color: var(--primary-color); color: var(--primary-color); } .hero-visual { display: flex; justify-content: center; align-items: center; } .creative-showcase { position: relative; width: 400px; height: 400px; } .showcase-item { position: absolute; width: 120px; height: 120px; background: var(--bg-card); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; animation: showcase-float 4s ease-in-out infinite; } .showcase-item:hover { transform: scale(1.1); box-shadow: var(--shadow-xl); } .item-1 { top: 0; left: 50%; transform: translateX(-50%); background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; animation-delay: 0s; } .item-2 { top: 50%; right: 0; transform: translateY(-50%); background: linear-gradient(135deg, var(--accent-color), var(--tertiary-color)); color: white; animation-delay: 1s; } .item-3 { bottom: 0; left: 0; background: linear-gradient(135deg, var(--quaternary-color), var(--primary-color)); color: white; animation-delay: 2s; } .item-4 { top: 50%; left: 0; transform: translateY(-50%); background: linear-gradient(135deg, var(--secondary-color), var(--accent-color)); color: white; animation-delay: 3s; } .item-content { text-align: center; } .item-icon { font-size: 2rem; margin-bottom: var(--spacing-xs); } .item-content h4 { font-size: 0.875rem; font-weight: 600; } @keyframes showcase-float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } /* Portfolio Section */ .portfolio-section { padding: var(--spacing-2xl) 0; background: var(--bg-primary); } .section-header { text-align: center; margin-bottom: var(--spacing-2xl); } .section-badge { display: inline-block; padding: var(--spacing-xs) var(--spacing-sm); background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; border-radius: var(--radius-sm); margin-bottom: var(--spacing-md); box-shadow: var(--shadow-md); } .section-title { font-size: 2.5rem; font-weight: 700; margin-bottom: var(--spacing-md); color: var(--text-primary); } .section-subtitle { font-size: 1.125rem; color: var(--text-secondary); max-width: 600px; margin: 0 auto; } .portfolio-filter { display: flex; justify-content: center; gap: var(--spacing-sm); margin-bottom: var(--spacing-2xl); flex-wrap: wrap; } .filter-btn { padding: var(--spacing-sm) var(--spacing-md); background: transparent; border: 2px solid var(--border-color); border-radius: var(--radius-md); color: var(--text-secondary); font-weight: 600; cursor: pointer; transition: all 0.3s ease; } .filter-btn.active, .filter-btn:hover { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); border-color: transparent; color: white; box-shadow: var(--shadow-md); } .portfolio-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: var(--spacing-xl); } .portfolio-item { background: var(--bg-card); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); transition: all 0.3s ease; opacity: 1; transform: scale(1); } .portfolio-item:hover { transform: translateY(-10px); box-shadow: var(--shadow-xl); } .portfolio-image { position: relative; height: 250px; overflow: hidden; } .portfolio-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } .portfolio-item:hover .portfolio-image img { transform: scale(1.1); } .portfolio-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(255, 107, 107, 0.9), rgba(78, 205, 196, 0.9)); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity 0.3s ease; } .portfolio-item:hover .portfolio-overlay { opacity: 1; } .overlay-content { text-align: center; color: white; padding: var(--spacing-md); } .overlay-content h3 { font-size: 1.25rem; font-weight: 600; margin-bottom: var(--spacing-sm); } .overlay-content p { font-size: 0.875rem; margin-bottom: var(--spacing-md); opacity: 0.9; } .btn-view { display: inline-block; padding: var(--spacing-xs) var(--spacing-md); background: white; color: var(--primary-color); border-radius: var(--radius-sm); text-decoration: none; font-weight: 600; font-size: 0.875rem; transition: all 0.3s ease; } .btn-view:hover { background: var(--bg-tertiary); transform: translateY(-2px); } /* Process Section */ .process-section { padding: var(--spacing-2xl) 0; background: var(--bg-secondary); } .process-timeline { position: relative; max-width: 800px; margin: 0 auto; } .process-timeline::before { content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 2px; height: 100%; background: linear-gradient(to bottom, var(--primary-color), var(--secondary-color)); } .process-step { display: flex; align-items: center; margin-bottom: var(--spacing-2xl); position: relative; opacity: 0; transform: translateY(30px); } .process-step.animate-in { opacity: 1; transform: translateY(0); } .process-step:nth-child(even) { flex-direction: row-reverse; } .step-number { width: 60px; height: 60px; background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; font-weight: 700; box-shadow: var(--shadow-lg); position: relative; z-index: 1; } .step-content { flex: 1; background: var(--bg-card); padding: var(--spacing-xl); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); margin: 0 var(--spacing-xl); } .step-content h3 { font-size: 1.5rem; font-weight: 600; margin-bottom: var(--spacing-sm); color: var(--text-primary); } .step-content p { color: var(--text-secondary); margin-bottom: var(--spacing-md); line-height: 1.6; } .step-features { list-style: none; padding: 0; } .step-features li { padding: var(--spacing-xs) 0; color: var(--text-secondary); position: relative; padding-left: var(--spacing-lg); font-size: 0.875rem; } .step-features li::before { content: '✓'; position: absolute; left: 0; color: var(--primary-color); font-weight: bold; } /* Skills Section */ .skills-section { padding: var(--spacing-2xl) 0; background: var(--bg-primary); } .skills-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-xl); } .skill-category { background: var(--bg-card); padding: var(--spacing-xl); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border: 1px solid var(--border-color); transition: all 0.3s ease; opacity: 0; transform: translateY(30px); } .skill-category.animate-in { opacity: 1; transform: translateY(0); } .skill-category:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); } .skill-icon { font-size: 3rem; margin-bottom: var(--spacing-md); text-align: center; } .skill-category h3 { font-size: 1.25rem; font-weight: 600; margin-bottom: var(--spacing-md); color: var(--text-primary); text-align: center; } .skill-items { display: flex; flex-direction: column; gap: var(--spacing-md); } .skill-item { display: flex; flex-direction: column; gap: var(--spacing-xs); } .skill-name { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); } .skill-level { height: 8px; background: var(--bg-tertiary); border-radius: var(--radius-sm); overflow: hidden; } .skill-bar { height: 100%; background: linear-gradient(90deg, var(--primary-color), var(--secondary-color)); border-radius: var(--radius-sm); transition: width 1s ease; } /* Testimonials Section */ .testimonials-section { padding: var(--spacing-2xl) 0; background: var(--bg-secondary); } .testimonials-slider { position: relative; max-width: 800px; margin: 0 auto; } .testimonial-slide { display: none; opacity: 0; transition: opacity 0.5s ease; } .testimonial-slide.active { display: block; opacity: 1; } .testimonial-content { background: var(--bg-card); padding: var(--spacing-2xl); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); text-align: center; } .testimonial-text p { font-size: 1.25rem; font-style: italic; color: var(--text-primary); margin-bottom: var(--spacing-xl); line-height: 1.7; } .testimonial-author { display: flex; align-items: center; justify-content: center; gap: var(--spacing-md); } .author-photo { width: 60px; height: 60px; border-radius: 50%; overflow: hidden; border: 3px solid var(--primary-color); } .author-photo img { width: 100%; height: 100%; object-fit: cover; } .author-info h4 { font-size: 1.125rem; font-weight: 600; color: var(--text-primary); margin-bottom: var(--spacing-xs); } .author-info p { color: var(--text-secondary); font-size: 0.875rem; } .testimonial-controls { display: flex; justify-content: center; gap: var(--spacing-sm); margin-top: var(--spacing-xl); } .testimonial-prev, .testimonial-next { width: 50px; height: 50px; background: var(--bg-card); border: 2px solid var(--border-color); border-radius: 50%; font-size: 1.5rem; color: var(--text-primary); cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; } .testimonial-prev:hover, .testimonial-next:hover { background: linear-gradient(135deg, var(--primary-color), var(--secondary-color)); border-color: transparent; color: white; transform: scale(1.1); } /* CTA Section */ .cta-section { padding: var(--spacing-2xl) 0; background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%); color: white; } .cta-content { text-align: center; max-width: 600px; margin: 0 auto; } .cta-text h2 { font-size: 2.5rem; font-weight: 700; margin-bottom: var(--spacing-md); } .cta-text p { font-size: 1.125rem; opacity: 0.9; margin-bottom: var(--spacing-xl); line-height: 1.6; } .cta-buttons { display: flex; gap: var(--spacing-md); justify-content: center; flex-wrap: wrap; } .btn-primary-large, .btn-secondary-large { display: inline-flex; align-items: center; padding: var(--spacing-md) var(--spacing-xl); border-radius: var(--radius-md); font-weight: 600; text-decoration: none; font-size: 1.125rem; transition: all 0.3s ease; border: 2px solid transparent; } .btn-primary-large { background: white; color: var(--primary-color); box-shadow: var(--shadow-lg); } .btn-primary-large:hover { background: var(--bg-tertiary); transform: translateY(-3px); box-shadow: var(--shadow-xl); } .btn-secondary-large { background: transparent; color: white; border-color: rgba(255, 255, 255, 0.3); } .btn-secondary-large:hover { background: rgba(255, 255, 255, 0.1); border-color: white; } /* Responsive Design */ /* Animation Classes */ .animate-in { animation: fadeInUp 0.6s ease-out forwards; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } /* Accessibility */ /* Print Styles */