ADD : 웹사이트 최초 패치
This commit is contained in:
commit
c4fc3530a8
129
README.md
Normal file
129
README.md
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# 밍글 스튜디오 웹사이트
|
||||||
|
|
||||||
|
밍글 스튜디오의 공식 웹사이트입니다. 창의적인 디자인 솔루션을 제공하는 디자인 스튜디오의 포트폴리오와 서비스를 소개합니다.
|
||||||
|
|
||||||
|
## 🚀 특징
|
||||||
|
|
||||||
|
- **반응형 디자인**: 모든 디바이스에서 최적화된 경험
|
||||||
|
- **모던한 UI/UX**: 세련된 디자인과 부드러운 애니메이션
|
||||||
|
- **인터랙티브 요소**: 호버 효과, 스크롤 애니메이션, 폼 검증
|
||||||
|
- **빠른 로딩**: 최적화된 코드로 빠른 페이지 로딩
|
||||||
|
- **접근성**: 모든 사용자를 위한 접근성 고려
|
||||||
|
|
||||||
|
## 📁 프로젝트 구조
|
||||||
|
|
||||||
|
```
|
||||||
|
mingle-website/
|
||||||
|
├── index.html # 메인 HTML 파일
|
||||||
|
├── styles.css # CSS 스타일시트
|
||||||
|
├── script.js # JavaScript 기능
|
||||||
|
└── README.md # 프로젝트 설명서
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 주요 섹션
|
||||||
|
|
||||||
|
### 1. 히어로 섹션
|
||||||
|
- 강력한 첫인상을 주는 그라데이션 배경
|
||||||
|
- 명확한 브랜드 메시지
|
||||||
|
- 행동 유도 버튼
|
||||||
|
|
||||||
|
### 2. 소개 섹션
|
||||||
|
- 회사 철학과 강점 소개
|
||||||
|
- 통계 데이터 시각화
|
||||||
|
- 애니메이션 효과
|
||||||
|
|
||||||
|
### 3. 서비스 섹션
|
||||||
|
- 4가지 주요 서비스 카드
|
||||||
|
- 아이콘과 설명
|
||||||
|
- 호버 효과
|
||||||
|
|
||||||
|
### 4. 포트폴리오 섹션
|
||||||
|
- 프로젝트 갤러리
|
||||||
|
- 이미지 호버 오버레이
|
||||||
|
- 카테고리별 분류
|
||||||
|
|
||||||
|
### 5. 연락처 섹션
|
||||||
|
- 연락처 정보
|
||||||
|
- 문의 폼
|
||||||
|
- 유효성 검사
|
||||||
|
|
||||||
|
## 🛠️ 기술 스택
|
||||||
|
|
||||||
|
- **HTML5**: 시맨틱 마크업
|
||||||
|
- **CSS3**: Flexbox, Grid, 애니메이션
|
||||||
|
- **JavaScript**: ES6+, DOM 조작, 이벤트 처리
|
||||||
|
- **Font Awesome**: 아이콘
|
||||||
|
- **Google Fonts**: Noto Sans KR
|
||||||
|
|
||||||
|
## 🚀 시작하기
|
||||||
|
|
||||||
|
1. 프로젝트 클론 또는 다운로드
|
||||||
|
2. `index.html` 파일을 웹 브라우저에서 열기
|
||||||
|
3. 로컬 서버에서 실행 (권장)
|
||||||
|
|
||||||
|
### 로컬 서버 실행
|
||||||
|
|
||||||
|
Python을 사용한 경우:
|
||||||
|
```bash
|
||||||
|
python -m http.server 8000
|
||||||
|
```
|
||||||
|
|
||||||
|
Node.js를 사용한 경우:
|
||||||
|
```bash
|
||||||
|
npx serve .
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📱 반응형 디자인
|
||||||
|
|
||||||
|
- **데스크톱**: 1200px 이상
|
||||||
|
- **태블릿**: 768px - 1199px
|
||||||
|
- **모바일**: 767px 이하
|
||||||
|
|
||||||
|
## 🎯 주요 기능
|
||||||
|
|
||||||
|
### 네비게이션
|
||||||
|
- 고정 헤더
|
||||||
|
- 스크롤 시 배경 변화
|
||||||
|
- 모바일 햄버거 메뉴
|
||||||
|
|
||||||
|
### 애니메이션
|
||||||
|
- 스크롤 시 요소 페이드인
|
||||||
|
- 숫자 카운팅 애니메이션
|
||||||
|
- 호버 효과
|
||||||
|
|
||||||
|
### 폼 처리
|
||||||
|
- 실시간 유효성 검사
|
||||||
|
- 성공/오류 알림
|
||||||
|
- 이메일 형식 검증
|
||||||
|
|
||||||
|
## 🔧 커스터마이징
|
||||||
|
|
||||||
|
### 색상 변경
|
||||||
|
`styles.css`에서 CSS 변수를 수정하여 색상을 변경할 수 있습니다:
|
||||||
|
|
||||||
|
```css
|
||||||
|
:root {
|
||||||
|
--primary-color: #6366f1;
|
||||||
|
--secondary-color: #8b5cf6;
|
||||||
|
--accent-color: #10b981;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 콘텐츠 수정
|
||||||
|
`index.html`에서 텍스트와 이미지를 수정하여 콘텐츠를 변경할 수 있습니다.
|
||||||
|
|
||||||
|
## 📞 연락처
|
||||||
|
|
||||||
|
프로젝트에 대한 문의사항이 있으시면 연락주세요:
|
||||||
|
|
||||||
|
- **이메일**: hello@minglestudio.com
|
||||||
|
- **전화**: 010-1234-5678
|
||||||
|
- **주소**: 서울특별시 강남구 테헤란로 123
|
||||||
|
|
||||||
|
## 📄 라이선스
|
||||||
|
|
||||||
|
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
© 2024 밍글 스튜디오. All rights reserved.
|
||||||
344
index.html
Normal file
344
index.html
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>밍글 스튜디오 - 모션캡쳐 창작 스튜디오</title>
|
||||||
|
<link rel="stylesheet" href="styles.css">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet">
|
||||||
|
<link href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||||||
|
<style>
|
||||||
|
body { font-family: 'Pretendard', 'Noto Sans KR', sans-serif; background: #f8fafc; color: #222; }
|
||||||
|
.section { padding: 5rem 0; }
|
||||||
|
.container { max-width: 1100px; margin: 0 auto; padding: 0 1.5rem; }
|
||||||
|
.section-header { text-align: center; margin-bottom: 3rem; }
|
||||||
|
.section-header h2 { font-size: 2.5rem; font-weight: 700; color: #222; }
|
||||||
|
.section-header p { color: #666; font-size: 1.1rem; }
|
||||||
|
.card { background: #fff; border-radius: 18px; box-shadow: 0 4px 24px rgba(0,0,0,0.06); padding: 2rem; margin-bottom: 2rem; }
|
||||||
|
.btn { display: inline-block; padding: 0.7rem 1.7rem; border-radius: 30px; font-weight: 600; text-decoration: none; transition: 0.2s; }
|
||||||
|
.btn-primary { background: #ff8800; color: #fff; }
|
||||||
|
.btn-primary:hover { background: #ff6600; }
|
||||||
|
.btn-secondary { background: #fff; color: #ff8800; border: 2px solid #ff8800; }
|
||||||
|
.btn-secondary:hover { background: #ff8800; color: #fff; }
|
||||||
|
.highlight { color: #ff8800; font-weight: 700; }
|
||||||
|
.table { width: 100%; border-collapse: collapse; background: #fff; margin-bottom: 1.5rem; }
|
||||||
|
.table th, .table td { border: 1px solid #e5e7eb; padding: 0.9rem 0.7rem; text-align: left; }
|
||||||
|
.table th { background: #f3f4f6; font-weight: 600; }
|
||||||
|
.table tr:nth-child(even) { background: #fafafa; }
|
||||||
|
.flex { display: flex; gap: 2rem; flex-wrap: wrap; }
|
||||||
|
.flex-col { flex-direction: column; }
|
||||||
|
.team-card { flex: 1 1 250px; min-width: 220px; background: #fff; border-radius: 14px; box-shadow: 0 2px 12px rgba(0,0,0,0.04); padding: 1.5rem; margin-bottom: 1.5rem; }
|
||||||
|
.team-card h4 { margin: 0.5rem 0 0.2rem; font-size: 1.1rem; }
|
||||||
|
.team-card .role { color: #ff8800; font-weight: 600; font-size: 1rem; }
|
||||||
|
.team-card .desc { color: #555; font-size: 0.98rem; }
|
||||||
|
.faq-list { margin: 0; padding: 0; list-style: none; }
|
||||||
|
.faq-list li { margin-bottom: 1.5rem; background: #fff; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.04); padding: 1.2rem 1.5rem; }
|
||||||
|
.faq-q { font-weight: 600; color: #222; }
|
||||||
|
.faq-a { color: #666; margin-top: 0.3rem; }
|
||||||
|
.portfolio-links a { display: block; margin-bottom: 0.5rem; color: #2563eb; text-decoration: underline; }
|
||||||
|
|
||||||
|
/* 네비게이션 메뉴 스타일 개선 */
|
||||||
|
.navbar { background: #fff; box-shadow: 0 2px 12px rgba(0,0,0,0.03); }
|
||||||
|
.nav-menu { display: flex; gap: 2.2rem; list-style: none; margin: 0; padding: 0; }
|
||||||
|
.nav-menu li { display: flex; align-items: center; }
|
||||||
|
.nav-menu a {
|
||||||
|
color: #ff8800;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 1.08rem;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 0.4rem 0.7rem;
|
||||||
|
border-radius: 8px;
|
||||||
|
transition: background 0.18s, color 0.18s;
|
||||||
|
}
|
||||||
|
.nav-menu a:hover, .nav-menu a:focus {
|
||||||
|
background: #fff3e0;
|
||||||
|
color: #d35400;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 포트폴리오 유튜브 임베드 그리드 개선 */
|
||||||
|
.youtube-embed-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 2rem;
|
||||||
|
margin-top: 2.5rem;
|
||||||
|
}
|
||||||
|
.youtube-embed-card {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 16px;
|
||||||
|
box-shadow: 0 2px 16px rgba(0,0,0,0.07);
|
||||||
|
padding: 1.2rem 1.2rem 1.5rem 1.2rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.youtube-embed-card .youtube-embed {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 420px;
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 2px 10px rgba(0,0,0,0.06);
|
||||||
|
}
|
||||||
|
.youtube-embed-card .yt-title {
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 0.7rem;
|
||||||
|
color: #222;
|
||||||
|
font-size: 1.08rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 900px) {
|
||||||
|
.youtube-embed-grid { grid-template-columns: 1fr; }
|
||||||
|
}
|
||||||
|
@media (max-width: 800px) { .flex { flex-direction: column; } }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar">
|
||||||
|
<div class="nav-container">
|
||||||
|
<div class="nav-logo" style="display:flex;align-items:center;gap:0.7rem;">
|
||||||
|
<img src="mingle logo.png" alt="밍글 스튜디오 로고" style="height:38px;width:auto;display:inline-block;vertical-align:middle;">
|
||||||
|
<span style="font-size:1.3rem;font-weight:700;color:#ff8800;letter-spacing:0.01em;">밍글 스튜디오</span>
|
||||||
|
</div>
|
||||||
|
<ul class="nav-menu">
|
||||||
|
<li><a href="#about">About</a></li>
|
||||||
|
<li><a href="#services">Services</a></li>
|
||||||
|
<li><a href="#team">Team</a></li>
|
||||||
|
<li><a href="#portfolio">Portfolio</a></li>
|
||||||
|
<li><a href="#contact">Contact</a></li>
|
||||||
|
<li><a href="#faq">FAQ</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- Hero -->
|
||||||
|
<section class="section" style="background:linear-gradient(120deg,#fff7ed 60%,#ffe0b2 100%);padding-top:7rem;">
|
||||||
|
<div class="container flex" style="align-items:center;">
|
||||||
|
<div style="flex:1;min-width:260px;">
|
||||||
|
<h1 style="font-size:2.7rem;font-weight:800;line-height:1.2;">섞임 속에서 피어나는 창조<br><span class="highlight">mingle studio</span></h1>
|
||||||
|
<p style="margin:1.2rem 0 2rem;color:#555;font-size:1.15rem;">다양한 창작자와 기술이 섞여 새로운 가치를 만들어내는 공간<br><span style="color:#ff8800;font-weight:600;">2025년 7월 1일 설립</span></p>
|
||||||
|
<a href="#about" class="btn btn-primary">회사 소개 보기</a>
|
||||||
|
</div>
|
||||||
|
<div style="flex:1;min-width:220px;text-align:center;">
|
||||||
|
<img src="mingle logo.png" alt="밍글 스튜디오 로고" style="max-width:260px;width:90%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- About -->
|
||||||
|
<section id="about" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2>About</h2>
|
||||||
|
<p><b>회사명:</b> 밍글 스튜디오 (mingle studio) | <b>설립일:</b> 2025년 7월 1일<br><b>슬로건:</b> “섞임 속에서 피어나는 창조 – mingle studio”<br><span style="font-size:0.95em;color:#888;">(의미: 다양한 창작자와 기술이 섞여 새로운 가치를 만들어내는 공간)</span></p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3 style="margin-bottom:0.7rem;">회사 소개</h3>
|
||||||
|
<p>밍글 스튜디오는 창작자와 기술, 사람과 사람 사이의 '어우러짐'을 통해 새로운 콘텐츠를 만들어가는 모션 캡쳐 기반의 창작 공간입니다.<br>2025년 설립 이후, 누구나 편하게 사용 가능한 스튜디오 대관 서비스를 중심으로 버추얼 콘텐츠 제작 환경을 제공합니다.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3 style="margin-bottom:0.7rem;">연혁 / 타임라인</h3>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr><th>날짜</th><th>이벤트</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>2025년 7월 1일</td><td>밍글 스튜디오 설립</td></tr>
|
||||||
|
<tr><td>(예정)</td><td>첫 상업 프로젝트 진행</td></tr>
|
||||||
|
<tr><td>(예정)</td><td>실시간 스트리밍 베타 개시</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Services -->
|
||||||
|
<section id="services" class="section" style="background:#fff;">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2>주요 서비스</h2>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr><th>서비스 항목</th><th>설명</th><th>비고</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td><b>모션캡쳐 스튜디오 대관</b></td><td>OptiTrack 기반, 실내 전신 캡쳐 가능 / 시간당 20만원</td><td>실시간 모니터링 가능</td></tr>
|
||||||
|
<tr><td><b>리타겟팅 서비스</b></td><td>캡쳐 데이터의 3D 모델 애니메이션 적용 지원</td><td>별도 문의 가능</td></tr>
|
||||||
|
<tr><td><b>실시간 스트리밍</b></td><td>현재 준비 중이며, 사전 문의 시 진행 가능</td><td>OBS, Unity 연동 지원 예정</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3 style="margin-bottom:0.7rem;">대관 서비스 안내</h3>
|
||||||
|
<table class="table">
|
||||||
|
<thead><tr><th>항목</th><th>내용</th></tr></thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td><b>이용 요금</b></td><td>시간당 <b>200,000원 (VAT 별도)</b></td></tr>
|
||||||
|
<tr><td><b>촬영 장비</b></td><td>OptiTrack (옵티트랙) 시스템, Rokoko Glove (로코코 장갑) 지원</td></tr>
|
||||||
|
<tr><td><b>공간 크기</b></td><td>7m x 6m (※ 9m x 6m으로 증축 예정)</td></tr>
|
||||||
|
<tr><td><b>리타겟팅 서비스</b></td><td>모션 데이터의 3D 모델 적용 가능 (문의 필요)</td></tr>
|
||||||
|
<tr><td><b>영상 촬영</b></td><td>뮤직비디오/퍼포먼스 등 별도 견적 (사전 협의 필수)</td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div style="margin-top:1.2rem;">
|
||||||
|
<b>예약 및 문의</b><br>
|
||||||
|
대관/견적 문의 및 협업 요청은 아래 이메일로 연락 주세요.<br>
|
||||||
|
문의 시 사용 목적(게임/공연/영상 등)과 희망 일정, 장비 필요 여부를 함께 적어주시면 빠른 응답이 가능합니다.<br>
|
||||||
|
<span style="color:#ff8800;font-weight:600;">이메일: minglestudio.mocap@gmail.com</span><br>
|
||||||
|
<span style="color:#888;">예약 폼: (추후 추가 예정)</span>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:1.2rem;">
|
||||||
|
<b>안내 사항</b>
|
||||||
|
<ul style="margin:0.5rem 0 0 1.2rem; color:#666;">
|
||||||
|
<li>공간 내에서 녹음/음성 녹취는 별도 장비 필요 시 사전 협의 바랍니다.</li>
|
||||||
|
<li>로코코 글러브는 손가락까지 세밀한 모션 수집이 가능합니다.</li>
|
||||||
|
<li>실시간 스트리밍 연동은 현재 준비 중이며 사전 테스트 가능 여부는 별도 협의합니다.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Team -->
|
||||||
|
<section id="team" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2>Team</h2>
|
||||||
|
<p>각 분야의 전문가들이 함께 협업하며 콘텐츠 제작을 지원합니다.</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex">
|
||||||
|
<div class="team-card">
|
||||||
|
<h4>김광진 (카닉)</h4>
|
||||||
|
<div class="role">TD / 테크니컬 디렉터</div>
|
||||||
|
<div class="desc">스튜디오 전체 기술 운영, 모션캡쳐 장비 관리, 음향 시스템, 엔진 프로그래밍 등</div>
|
||||||
|
</div>
|
||||||
|
<div class="team-card">
|
||||||
|
<h4>이승민 (야모)</h4>
|
||||||
|
<div class="role">모션캡쳐 디렉터</div>
|
||||||
|
<div class="desc">캡쳐 디렉팅, 배우 모션 클린업, 카메라 무빙, 퍼포먼스 연출 등</div>
|
||||||
|
</div>
|
||||||
|
<div class="team-card">
|
||||||
|
<h4>김희진 (제이제이)</h4>
|
||||||
|
<div class="role">3D 아티스트 / 운영 PM</div>
|
||||||
|
<div class="desc">배경/리소스 제작, 일정 조율, 인사 및 프로젝트 관리</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="color:#888;font-size:0.98rem;margin-top:1.2rem;">💬 팀 소개는 추후 프로필 이미지나 SNS 링크를 추가해 확장 가능합니다.</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Portfolio -->
|
||||||
|
<section id="portfolio" class="section" style="background:#fff;">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2>Portfolio</h2>
|
||||||
|
<p>밍글 스튜디오에서 제작하거나 협업한 영상 콘텐츠는 YouTube 링크를 통해 확인하실 수 있습니다.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card portfolio-links">
|
||||||
|
<b>📺 YouTube 채널 보기</b><br>
|
||||||
|
<a href="https://www.youtube.com/@mingle_studio" target="_blank">밍글 스튜디오 유튜브 바로가기</a>
|
||||||
|
<div style="margin-top:2.2rem;"></div>
|
||||||
|
<div class="section-header" style="margin-bottom:1.2rem;"><h3 style="color:#ff8800;">Long-Form</h3></div>
|
||||||
|
<div class="youtube-embed-grid">
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="220" src="https://www.youtube.com/embed/FecqTyUU6y0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section-header" style="margin:2.5rem 0 1.2rem 0;"><h3 style="color:#ff8800;">Shorts</h3></div>
|
||||||
|
<div class="youtube-embed-grid">
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="400" src="https://www.youtube.com/embed/OmpqKhMrb-U" title="YouTube Shorts" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="400" src="https://www.youtube.com/embed/hKwGjPfULFI" title="YouTube Shorts" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="400" src="https://www.youtube.com/embed/_blWj7UQtRc" title="YouTube Shorts" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="section-header" style="margin:2.5rem 0 1.2rem 0;"><h3 style="color:#ff8800;">실시간 방송 예시</h3></div>
|
||||||
|
<div class="youtube-embed-grid">
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="220" src="https://vod.sooplive.co.kr/player/159808721" title="미르 첫 모캡 방송" frameborder="0" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="220" src="https://vod.sooplive.co.kr/player/159683673" title="250510 춤짱자매즈 모캡 합방 (w. 호발)" frameborder="0" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="220" src="https://vod.sooplive.co.kr/player/159205533" title="크로아) 치요 X 마늘 3D 모션 캡쳐 합방" frameborder="0" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
<div class="youtube-embed-card">
|
||||||
|
<div class="youtube-embed"><iframe width="100%" height="220" src="https://vod.sooplive.co.kr/player/159299033" title="뉴걸의 첫 모캡방송! 춤 못 추면 댄스방송 하면 안 되나요?" frameborder="0" allowfullscreen></iframe></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:1.2rem;color:#888;">
|
||||||
|
🎬 업로드 예정 콘텐츠 예시:<br>
|
||||||
|
- 리타겟팅 예시 영상<br>
|
||||||
|
- 로코코 장갑 활용 시범 영상<br>
|
||||||
|
- 퍼포먼스 기반 뮤직비디오 촬영 사례<br>
|
||||||
|
- 실시간 스트리밍 테스트 영상 등
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Contact -->
|
||||||
|
<section id="contact" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2>Contact</h2>
|
||||||
|
<p>예약 문의 또는 협업 제안은 언제든지 이메일로 연락주세요.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<b>이메일</b>: minglestudio.mocap@gmail.com<br>
|
||||||
|
<b>연락처</b>: 010-9288-9190<br>
|
||||||
|
<b>주소</b>: (21330) 인천광역시 부평구 주부토로 236<br>
|
||||||
|
<b>인천테크노밸리 A동 B105호</b><br>
|
||||||
|
<div style="margin-top:1.2rem;">
|
||||||
|
<b>오시는 길</b><br>
|
||||||
|
- 인천 7호선 <b>갈산역</b> 하차 → 도보 약 7분 거리<br>
|
||||||
|
- 건물 내 지하 주차 가능 (※ 2시간 무료)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- FAQ -->
|
||||||
|
<section id="faq" class="section" style="background:#fff;">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2>FAQ – 자주 묻는 질문</h2>
|
||||||
|
</div>
|
||||||
|
<ul class="faq-list">
|
||||||
|
<li><div class="faq-q">Q1. 스튜디오 대관은 어떻게 예약하나요?</div><div class="faq-a">A. 이메일 문의 또는 예약 폼 작성 후 전달해주시면 됩니다.<br>📧 minglestudio.mocap@gmail.com</div></li>
|
||||||
|
<li><div class="faq-q">Q2. 최소 대관 시간은 어떻게 되나요?</div><div class="faq-a">A. 최소 대관은 2시간부터 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q3. 대관은 얼마나 전에 예약해야 하나요?</div><div class="faq-a">A. 최소 3~4일 전에 연락주시면 원활하게 준비가 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q4. 현장 결제가 가능한가요?</div><div class="faq-a">A. 네, 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q5. 세금계산서 발행이 가능한가요?</div><div class="faq-a">A. 네, 사업자용 세금계산서 발행 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q6. 예약금 제도와 환불 규정이 있나요?</div><div class="faq-a">A. 예약 시 총 대여 금액의 20%를 선결제하셔야 예약이 확정됩니다.<br><br>아래는 예시 환불 규정입니다 (법적 관점에서도 일반적인 수준):<br><table class="table"><thead><tr><th>취소 시점</th><th>환불 비율</th></tr></thead><tbody><tr><td>이용일 5일 전까지</td><td>100% 환불</td></tr><tr><td>이용일 3~4일 전</td><td>50% 환불</td></tr><tr><td>이용일 2일 이내</td><td>환불 불가</td></tr></tbody></table></div></li>
|
||||||
|
<li><div class="faq-q">Q7. 모션 캡쳐 데이터는 어떤 형식으로 제공되나요?</div><div class="faq-a">A. FBX, BHV, ANIM 포맷으로 제공되며, 문의 시 세부사항 안내해드립니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q8. 리타겟팅도 함께 제공되나요?</div><div class="faq-a">A. 기본 리타겟팅이 포함되어 있으며, 추가적인 클린업/후처리는 별도 견적 협의 후 제공됩니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q9. 실시간 미리보기나 스트리밍이 가능한가요?</div><div class="faq-a">A. 실시간 미리보기는 가능하며, 실시간 스트리밍은 지원 예정입니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q10. 장비 사용이 익숙하지 않아도 괜찮을까요?</div><div class="faq-a">A. 스튜디오에는 담당 인력이 배치되어 있어 장비 세팅 및 사용을 지원해드립니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q11. 얼굴 캡쳐나 음성 녹음도 가능한가요?</div><div class="faq-a">A. 가능합니다. 다만 예약 시 미리 요청해주셔야 하며, 별도 요금이 발생할 수 있습니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q12. 촬영한 데이터는 언제 받을 수 있나요?</div><div class="faq-a">A. 영업일 기준 1~2일 이내 전달드립니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q13. 녹화 시간에 제한이 있나요?</div><div class="faq-a">A. 녹화 시간 제한은 없으며, 대관 시간 내 자유롭게 녹화하실 수 있습니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q14. 추가 리타겟팅이나 수정 요청이 가능한가요?</div><div class="faq-a">A. 가능합니다. 다만 추가 비용이 발생할 수 있습니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q15. 탈의실이나 휴게 공간이 있나요?</div><div class="faq-a">A. 네, 탈의실과 간단한 휴게 공간이 마련되어 있습니다. 빵, 햄버거, 커피 등의 간단한 취식이 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q16. 몇 명까지 이용 가능한가요?</div><div class="faq-a">A. 촬영 인원 최대 4명, 대기 인원 포함 최대 10명까지 수용 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q17. 촬영 시 필요한 복장이나 준비물이 있나요?</div><div class="faq-a">A. 기본적으로 준비물은 없지만, 안경은 반사로 인해 캡쳐에 오류가 발생할 수 있어 렌즈 착용을 권장드립니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q18. 외부 팀이 장비만 사용할 수도 있나요?</div><div class="faq-a">A. 장비만 사용하는 경우에도 사전 협의가 필요합니다. 기술 지원 여부에 따라 사용 조건이 달라질 수 있으므로 문의 바랍니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q19. 주차는 가능한가요?</div><div class="faq-a">A. 네, 가능합니다.<br>기본 2시간 무료이며, 건물 내 시설(카페 등) 이용 시 추가 2시간, <b>최대 4시간 무료</b> 주차가 가능합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q20. 동물이나 아동도 촬영이 가능한가요?</div><div class="faq-a">A. 안전 및 장비 보호를 위해 동물 및 아동 출연은 현재 불가합니다.</div></li>
|
||||||
|
<li><div class="faq-q">Q21. 스튜디오 내부에서 자체 촬영을 해도 되나요?</div><div class="faq-a">A. 사전 문의 시 내부 촬영은 일시적으로 허용될 수 있습니다. 촬영 목적에 따라 협의가 필요합니다.</div></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer class="section" style="background:#222;color:#fff;padding:2.5rem 0 1.2rem;">
|
||||||
|
<div class="container" style="text-align:center;">
|
||||||
|
<div style="font-size:1.2rem;font-weight:700;letter-spacing:0.02em;">밍글 스튜디오 mingle studio</div>
|
||||||
|
<div style="margin:0.7rem 0 0.2rem;color:#ff8800;font-weight:600;">섞임 속에서 피어나는 창조</div>
|
||||||
|
<div style="color:#bbb;font-size:0.98rem;">© 2025 밍글 스튜디오. All rights reserved.</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
mingle logo.png
Normal file
BIN
mingle logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 156 KiB |
BIN
mingle-website.zip
Normal file
BIN
mingle-website.zip
Normal file
Binary file not shown.
246
script.js
Normal file
246
script.js
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
// DOM이 로드된 후 실행
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
|
||||||
|
// 모바일 네비게이션 토글
|
||||||
|
const hamburger = document.querySelector('.hamburger');
|
||||||
|
const navMenu = document.querySelector('.nav-menu');
|
||||||
|
|
||||||
|
hamburger.addEventListener('click', function() {
|
||||||
|
hamburger.classList.toggle('active');
|
||||||
|
navMenu.classList.toggle('active');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 네비게이션 링크 클릭 시 모바일 메뉴 닫기
|
||||||
|
document.querySelectorAll('.nav-link').forEach(link => {
|
||||||
|
link.addEventListener('click', () => {
|
||||||
|
hamburger.classList.remove('active');
|
||||||
|
navMenu.classList.remove('active');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 스무스 스크롤
|
||||||
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||||
|
anchor.addEventListener('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
const target = document.querySelector(this.getAttribute('href'));
|
||||||
|
if (target) {
|
||||||
|
target.scrollIntoView({
|
||||||
|
behavior: 'smooth',
|
||||||
|
block: 'start'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 네비게이션 스크롤 효과
|
||||||
|
window.addEventListener('scroll', function() {
|
||||||
|
const navbar = document.querySelector('.navbar');
|
||||||
|
if (window.scrollY > 100) {
|
||||||
|
navbar.style.background = 'rgba(255, 255, 255, 0.98)';
|
||||||
|
navbar.style.boxShadow = '0 2px 20px rgba(0, 0, 0, 0.1)';
|
||||||
|
} else {
|
||||||
|
navbar.style.background = 'rgba(255, 255, 255, 0.95)';
|
||||||
|
navbar.style.boxShadow = 'none';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 폼 제출 처리
|
||||||
|
const contactForm = document.querySelector('.contact-form form');
|
||||||
|
if (contactForm) {
|
||||||
|
contactForm.addEventListener('submit', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
// 폼 데이터 수집
|
||||||
|
const formData = new FormData(this);
|
||||||
|
const name = this.querySelector('input[type="text"]').value;
|
||||||
|
const email = this.querySelector('input[type="email"]').value;
|
||||||
|
const subject = this.querySelectorAll('input[type="text"]')[1].value;
|
||||||
|
const message = this.querySelector('textarea').value;
|
||||||
|
|
||||||
|
// 간단한 유효성 검사
|
||||||
|
if (!name || !email || !subject || !message) {
|
||||||
|
showNotification('모든 필드를 입력해주세요.', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isValidEmail(email)) {
|
||||||
|
showNotification('올바른 이메일 주소를 입력해주세요.', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 성공 메시지 표시 (실제로는 서버로 전송)
|
||||||
|
showNotification('메시지가 성공적으로 전송되었습니다!', 'success');
|
||||||
|
this.reset();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 이메일 유효성 검사 함수
|
||||||
|
function isValidEmail(email) {
|
||||||
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||||
|
return emailRegex.test(email);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 알림 표시 함수
|
||||||
|
function showNotification(message, type) {
|
||||||
|
// 기존 알림 제거
|
||||||
|
const existingNotification = document.querySelector('.notification');
|
||||||
|
if (existingNotification) {
|
||||||
|
existingNotification.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 새 알림 생성
|
||||||
|
const notification = document.createElement('div');
|
||||||
|
notification.className = `notification ${type}`;
|
||||||
|
notification.textContent = message;
|
||||||
|
|
||||||
|
// 스타일 적용
|
||||||
|
notification.style.cssText = `
|
||||||
|
position: fixed;
|
||||||
|
top: 20px;
|
||||||
|
right: 20px;
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
border-radius: 10px;
|
||||||
|
color: white;
|
||||||
|
font-weight: 600;
|
||||||
|
z-index: 10000;
|
||||||
|
transform: translateX(100%);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
${type === 'success' ? 'background: #10b981;' : 'background: #ef4444;'}
|
||||||
|
`;
|
||||||
|
|
||||||
|
document.body.appendChild(notification);
|
||||||
|
|
||||||
|
// 애니메이션
|
||||||
|
setTimeout(() => {
|
||||||
|
notification.style.transform = 'translateX(0)';
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
// 자동 제거
|
||||||
|
setTimeout(() => {
|
||||||
|
notification.style.transform = 'translateX(100%)';
|
||||||
|
setTimeout(() => {
|
||||||
|
notification.remove();
|
||||||
|
}, 300);
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 포트폴리오 아이템 호버 효과
|
||||||
|
const portfolioItems = document.querySelectorAll('.portfolio-item');
|
||||||
|
portfolioItems.forEach(item => {
|
||||||
|
item.addEventListener('mouseenter', function() {
|
||||||
|
this.style.transform = 'translateY(-10px)';
|
||||||
|
});
|
||||||
|
|
||||||
|
item.addEventListener('mouseleave', function() {
|
||||||
|
this.style.transform = 'translateY(0)';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 서비스 카드 호버 효과
|
||||||
|
const serviceCards = document.querySelectorAll('.service-card');
|
||||||
|
serviceCards.forEach(card => {
|
||||||
|
card.addEventListener('mouseenter', function() {
|
||||||
|
this.style.transform = 'translateY(-10px)';
|
||||||
|
});
|
||||||
|
|
||||||
|
card.addEventListener('mouseleave', function() {
|
||||||
|
this.style.transform = 'translateY(0)';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 통계 숫자 애니메이션
|
||||||
|
const statItems = document.querySelectorAll('.stat-item h3');
|
||||||
|
const observerOptions = {
|
||||||
|
threshold: 0.5,
|
||||||
|
rootMargin: '0px 0px -100px 0px'
|
||||||
|
};
|
||||||
|
|
||||||
|
const observer = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
const target = entry.target;
|
||||||
|
const finalValue = parseInt(target.textContent);
|
||||||
|
animateNumber(target, 0, finalValue, 2000);
|
||||||
|
observer.unobserve(target);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, observerOptions);
|
||||||
|
|
||||||
|
statItems.forEach(item => {
|
||||||
|
observer.observe(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 숫자 애니메이션 함수
|
||||||
|
function animateNumber(element, start, end, duration) {
|
||||||
|
const startTime = performance.now();
|
||||||
|
|
||||||
|
function updateNumber(currentTime) {
|
||||||
|
const elapsed = currentTime - startTime;
|
||||||
|
const progress = Math.min(elapsed / duration, 1);
|
||||||
|
|
||||||
|
const current = Math.floor(start + (end - start) * progress);
|
||||||
|
element.textContent = current + (element.textContent.includes('+') ? '+' : '');
|
||||||
|
|
||||||
|
if (progress < 1) {
|
||||||
|
requestAnimationFrame(updateNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
requestAnimationFrame(updateNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 스크롤 시 요소 페이드인 효과
|
||||||
|
const fadeElements = document.querySelectorAll('.service-card, .portfolio-item, .about-text, .about-stats');
|
||||||
|
const fadeObserver = new IntersectionObserver((entries) => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.isIntersecting) {
|
||||||
|
entry.target.style.opacity = '1';
|
||||||
|
entry.target.style.transform = 'translateY(0)';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, {
|
||||||
|
threshold: 0.1,
|
||||||
|
rootMargin: '0px 0px -50px 0px'
|
||||||
|
});
|
||||||
|
|
||||||
|
fadeElements.forEach(element => {
|
||||||
|
element.style.opacity = '0';
|
||||||
|
element.style.transform = 'translateY(30px)';
|
||||||
|
element.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
|
||||||
|
fadeObserver.observe(element);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 로딩 완료 후 초기 애니메이션
|
||||||
|
setTimeout(() => {
|
||||||
|
document.body.style.opacity = '1';
|
||||||
|
}, 100);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 페이지 로드 시 초기 설정
|
||||||
|
window.addEventListener('load', function() {
|
||||||
|
// 페이지 로딩 완료 후 추가 효과
|
||||||
|
const heroTitle = document.querySelector('.hero-title');
|
||||||
|
const heroSubtitle = document.querySelector('.hero-subtitle');
|
||||||
|
const heroButtons = document.querySelector('.hero-buttons');
|
||||||
|
|
||||||
|
if (heroTitle) {
|
||||||
|
setTimeout(() => {
|
||||||
|
heroTitle.style.opacity = '1';
|
||||||
|
heroTitle.style.transform = 'translateY(0)';
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (heroSubtitle) {
|
||||||
|
setTimeout(() => {
|
||||||
|
heroSubtitle.style.opacity = '1';
|
||||||
|
heroSubtitle.style.transform = 'translateY(0)';
|
||||||
|
}, 700);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (heroButtons) {
|
||||||
|
setTimeout(() => {
|
||||||
|
heroButtons.style.opacity = '1';
|
||||||
|
heroButtons.style.transform = 'translateY(0)';
|
||||||
|
}, 900);
|
||||||
|
}
|
||||||
|
});
|
||||||
675
styles.css
Normal file
675
styles.css
Normal file
@ -0,0 +1,675 @@
|
|||||||
|
/* 기본 스타일 리셋 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: 'Noto Sans KR', sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #333;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 네비게이션 */
|
||||||
|
.navbar {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
background: rgba(255, 255, 255, 0.95);
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
z-index: 1000;
|
||||||
|
padding: 1rem 0;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-logo h2 {
|
||||||
|
color: #6366f1;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu {
|
||||||
|
display: flex;
|
||||||
|
list-style: none;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 500;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link:hover {
|
||||||
|
color: #6366f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 2px;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 0;
|
||||||
|
background-color: #6366f1;
|
||||||
|
transition: width 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link:hover::after {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hamburger {
|
||||||
|
display: none;
|
||||||
|
flex-direction: column;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bar {
|
||||||
|
width: 25px;
|
||||||
|
height: 3px;
|
||||||
|
background-color: #333;
|
||||||
|
margin: 3px 0;
|
||||||
|
transition: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 히어로 섹션 */
|
||||||
|
.hero {
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
color: white;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="50" cy="50" r="1" fill="white" opacity="0.1"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 4rem;
|
||||||
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-title {
|
||||||
|
font-size: 3.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 1.2;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-subtitle {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
opacity: 0.9;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-buttons {
|
||||||
|
display: flex;
|
||||||
|
gap: 1rem;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
padding: 1rem 2rem;
|
||||||
|
border: none;
|
||||||
|
border-radius: 50px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary {
|
||||||
|
background: #6366f1;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary:hover {
|
||||||
|
background: #4f46e5;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 10px 25px rgba(99, 102, 241, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-secondary {
|
||||||
|
background: transparent;
|
||||||
|
color: white;
|
||||||
|
border: 2px solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-secondary:hover {
|
||||||
|
background: white;
|
||||||
|
color: #6366f1;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-graphic {
|
||||||
|
position: relative;
|
||||||
|
height: 400px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-element {
|
||||||
|
position: absolute;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: float 6s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-element:nth-child(1) {
|
||||||
|
top: 20%;
|
||||||
|
left: 20%;
|
||||||
|
animation-delay: 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-element:nth-child(2) {
|
||||||
|
top: 60%;
|
||||||
|
right: 20%;
|
||||||
|
animation-delay: 2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-element:nth-child(3) {
|
||||||
|
bottom: 20%;
|
||||||
|
left: 50%;
|
||||||
|
animation-delay: 4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes float {
|
||||||
|
0%, 100% { transform: translateY(0px); }
|
||||||
|
50% { transform: translateY(-20px); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 섹션 공통 스타일 */
|
||||||
|
section {
|
||||||
|
padding: 5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-header h2 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-header p {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
color: #666;
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 소개 섹션 */
|
||||||
|
.about {
|
||||||
|
background: #f8fafc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-content {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 2fr 1fr;
|
||||||
|
gap: 4rem;
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-text h3 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-text p {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
color: #666;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.strengths-list {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.strengths-list li {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
padding: 1rem;
|
||||||
|
background: white;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.strengths-list li:hover {
|
||||||
|
transform: translateX(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.strengths-list i {
|
||||||
|
color: #6366f1;
|
||||||
|
margin-right: 1rem;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-stats {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-item {
|
||||||
|
text-align: center;
|
||||||
|
padding: 2rem;
|
||||||
|
background: white;
|
||||||
|
border-radius: 15px;
|
||||||
|
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-item:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-item h3 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #6366f1;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-item p {
|
||||||
|
color: #666;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 서비스 섹션 */
|
||||||
|
.services-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card {
|
||||||
|
background: white;
|
||||||
|
padding: 2.5rem;
|
||||||
|
border-radius: 15px;
|
||||||
|
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
|
||||||
|
text-align: center;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
border: 1px solid #f1f5f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card:hover {
|
||||||
|
transform: translateY(-10px);
|
||||||
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-icon {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
background: linear-gradient(135deg, #6366f1, #8b5cf6);
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 0 auto 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-icon i {
|
||||||
|
font-size: 2rem;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card h3 {
|
||||||
|
font-size: 1.3rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-card p {
|
||||||
|
color: #666;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 포트폴리오 섹션 */
|
||||||
|
.portfolio {
|
||||||
|
background: #f8fafc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-item {
|
||||||
|
position: relative;
|
||||||
|
border-radius: 15px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-item:hover {
|
||||||
|
transform: translateY(-5px);
|
||||||
|
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-image {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-image img {
|
||||||
|
width: 100%;
|
||||||
|
height: 250px;
|
||||||
|
object-fit: cover;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-item:hover .portfolio-image img {
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-overlay {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
background: linear-gradient(transparent, rgba(0, 0, 0, 0.8));
|
||||||
|
color: white;
|
||||||
|
padding: 2rem;
|
||||||
|
transform: translateY(100%);
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-item:hover .portfolio-overlay {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-overlay h3 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-overlay p {
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 연락처 섹션 */
|
||||||
|
.contact-content {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info h3 {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info p {
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-details {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-item i {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
background: #6366f1;
|
||||||
|
color: white;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-item h4 {
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-item p {
|
||||||
|
color: #666;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-form {
|
||||||
|
background: white;
|
||||||
|
padding: 2.5rem;
|
||||||
|
border-radius: 15px;
|
||||||
|
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group input,
|
||||||
|
.form-group textarea {
|
||||||
|
width: 100%;
|
||||||
|
padding: 1rem;
|
||||||
|
border: 2px solid #e2e8f0;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-size: 1rem;
|
||||||
|
transition: border-color 0.3s ease;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group input:focus,
|
||||||
|
.form-group textarea:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: #6366f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group textarea {
|
||||||
|
resize: vertical;
|
||||||
|
min-height: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 푸터 */
|
||||||
|
.footer {
|
||||||
|
background: #1e293b;
|
||||||
|
color: white;
|
||||||
|
padding: 3rem 0 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-content {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||||
|
gap: 2rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-section h3,
|
||||||
|
.footer-section h4 {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-section p {
|
||||||
|
color: #cbd5e1;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-section ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-section ul li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-section ul li a {
|
||||||
|
color: #cbd5e1;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-section ul li a:hover {
|
||||||
|
color: #6366f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-links {
|
||||||
|
display: flex;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-links a {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background: #6366f1;
|
||||||
|
color: white;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-links a:hover {
|
||||||
|
background: #4f46e5;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-bottom {
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 2rem;
|
||||||
|
border-top: 1px solid #334155;
|
||||||
|
color: #cbd5e1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 반응형 디자인 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.hamburger {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu {
|
||||||
|
position: fixed;
|
||||||
|
left: -100%;
|
||||||
|
top: 70px;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: white;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
transition: 0.3s;
|
||||||
|
box-shadow: 0 10px 27px rgba(0, 0, 0, 0.05);
|
||||||
|
padding: 2rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu.active {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-container {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
text-align: center;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-title {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-content {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-content {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hero-buttons {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.services-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portfolio-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.hero-title {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-header h2 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
padding: 0.8rem 1.5rem;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user