GiniGen AI commited on
Commit
71f4040
·
1 Parent(s): aa5eec2

라우터화·CSS 분리·Studio 압축 (작업 6~7)

Browse files

[구조 변경]
- site.css 신규: 기존 <style> 991줄 그대로 이관 + 팔레트 갱신
:root --bg-deep #0B1437 → #0E1B2A (INK)
--bg-mid #14215C → #33337A (NAVY)
--accent-cyan #00D9FF → #0AB4CC (CYAN)
- ax.html 신규: AX 종합병원 상세 (242줄) — 개별 title/meta description
- society.html 신규: 인공사회 상세 (186줄) — 개별 title/meta description
- studio-detail-backup.md 신규: 삭제된 Studio 상세 백업

[index.html 대폭 축소]
1737줄 → 435줄 (75% 감소, 목표 50% 이하 크게 초과 달성)
- <style> 인라인 → <link href='site.css'> 외부 참조
- #ax tab-content 통째 삭제 (→ ax.html 이관)
- #society tab-content 통째 삭제 (→ society.html 이관)
- #banana → #studio id 변경 + 3문장 요약 + CTA 한 개로 압축
- nav 탭 button → <a> 정적 링크로 전환
- hero pillar 카드 onclick: switchTab() → location.href='/ax.html' 등
- script switchTab() 시스템 제거, nav active state hash 기반으로 재작성
- particles 팔레트 첫 색을 #0AB4CC로 갱신

[nav 라우팅]
AX Hospital → /ax.html
Society → /society.html
Studio → #studio (index 내 앵커, ginigen.ai/ko로 유도하는 CTA만)
Proof/Press/Contact → #trust / #press / #contact (index 내 앵커 스크롤)

[체크리스트 검증]
✅ '유일|최초|사주|단 하나' 잔존 0건 (모든 파일)
✅ IP 실행 링크 0건 (주석 참조만 유지)
✅ index.html 길이 50% 이하 (25%로 축소)
✅ 모든 수상 이력에 (2024) / (2026.04) 연도 병기
✅ Studio CTA → ginigen.ai/ko
✅ 브랜드 팔레트 INK/NAVY/CYAN 반영

[알림]
- trust 섹션의 잔존 '유일 사례' 표현도 정리 → '국내 검증 사례 (2026.04)'
- ax.html meta description '한국 최초' → '국내 선도'
- hero-v1.mp4는 LFS 잔존 (git push 거부 회피) — src는 HF 절대 URL 유지

Files changed (5) hide show
  1. ax.html +242 -0
  2. index.html +28 -1331
  3. site.css +991 -0
  4. society.html +186 -0
  5. studio-detail-backup.md +32 -0
ax.html ADDED
@@ -0,0 +1,242 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>AX 종합병원 — LLM·서비스 통합 진단 SaaS · 지니젠AI</title>
7
+ <meta name="description" content="국내 선도 AI 모델·서비스 종합 진료 플랫폼. 6개 진료과 · 외주 5,000만 진단을 100만원에 · 3개월을 30분에. B2B PoC 신청.">
8
+ <meta name="keywords" content="AX 종합병원, LLM 진단, 모델 X-Ray, AI 기본법, 지니젠AI, Rogue-27B, B2B AI 진단, 미토스 대응">
9
+ <meta property="og:title" content="AX 종합병원 — 지니젠AI">
10
+ <meta property="og:description" content="블랙박스였던 LLM 내부를 X-Ray로 투시 진단. 6개 진료과 통합 SaaS.">
11
+ <meta property="og:type" content="website">
12
+ <meta property="og:url" content="https://ginigen.net/ax.html">
13
+ <meta property="og:image" content="https://huggingface.co/spaces/ginigen/AI/resolve/main/logo-stacked.png">
14
+ <link rel="icon" type="image/png" href="logo-stacked.png">
15
+ <link rel="apple-touch-icon" href="logo-stacked.png">
16
+ <link href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css" rel="stylesheet">
17
+ <link rel="stylesheet" href="site.css">
18
+ </head>
19
+ <body>
20
+ <!-- NAVIGATION -->
21
+ <nav class="nav-container">
22
+ <div class="nav-left">
23
+ <a href="/" class="logo" aria-label="GiniGen AI 홈">
24
+ <img src="logo.png" alt="GiniGen" class="logo-img">
25
+ <span class="logo-sub">AI</span>
26
+ </a>
27
+ <div class="tabs">
28
+ <a class="tab active" href="/ax.html">AX Hospital</a>
29
+ <a class="tab" href="/society.html">Society</a>
30
+ <a class="tab" href="https://www.ginigen.ai/ko" target="_blank" rel="noopener">Studio ↗</a>
31
+ <a class="tab" href="/#trust">Proof</a>
32
+ <a class="tab" href="/#press">Press</a>
33
+ <a class="tab" href="/#contact">Contact</a>
34
+ </div>
35
+ </div>
36
+ <!-- TODO: xray.ginigen.net 서브도메인 + SSL 적용 후 http://211.233.58.201:7906/ 로 복원 -->
37
+ <a class="powered-by live-link" href="#ax-poc-form" aria-label="AX X-Ray 데모 신청 (PoC 폼으로 이동)">
38
+ <span class="dot live-dot"></span>
39
+ <span>데모 신청</span>
40
+ <span class="live-arrow">↗</span>
41
+ </a>
42
+ </nav>
43
+
44
+ <!-- PARTICLES -->
45
+ <div class="particles" id="particles"></div>
46
+
47
+ <div class="container">
48
+ <!-- ============ AX 종합병원 ============ -->
49
+ <div id="ax" class="tab-content active">
50
+ <section class="detail-hero">
51
+ <div class="section-title">FOR ENTERPRISE · B2B</div>
52
+ <h2>국내 선도 AI 모델·서비스<br><span class="accent">종합 진료 플랫폼</span>.</h2>
53
+ <p class="lead">
54
+ 블랙박스였던 LLM 내부를 X-Ray로 투시 진단하고, 자동 처방·치료까지 한 플랫폼에서 완결합니다. 외주 5,000만원 진단을 100만원에, 3개월을 30분에.
55
+ </p>
56
+ <div class="hero-cta-row">
57
+ <a href="#ax-poc-form" class="btn btn-primary">
58
+ ✉ PoC 사전 신청
59
+ </a>
60
+ <a href="#pricing-ax" class="btn btn-ghost">
61
+ 💰 가격표 보기
62
+ </a>
63
+ </div>
64
+ <div class="hero-price-strip">
65
+ 외래 진단 <strong>100만원/회</strong> · 종합검진 <strong>1,000만원/년</strong> · 정부 라이선스 <strong>별도 협의</strong>
66
+ </div>
67
+ </section>
68
+
69
+ <section class="section" id="pricing-ax">
70
+ <div class="section-title">진료 가격 모델</div>
71
+ <h2 class="section-heading">한국 AX의 의료보험 구조.</h2>
72
+ <p class="section-sub">외래 100만 원부터 정부 라이선스(별도 협의)까지. 누구나 진단을 받을 수 있도록.</p>
73
+ <div class="pricing">
74
+ <div class="pricing-row head">
75
+ <div>등급</div><div>가격</div><div>내용</div><div>대상</div>
76
+ </div>
77
+ <div class="pricing-row">
78
+ <div class="tier">외래 (LLM 일반 진단)</div>
79
+ <div class="price">100만 / 회</div>
80
+ <div class="desc">Case 1·2 일반 검진 — 모델 능력 + 안전성</div>
81
+ <div class="target">기업 IT팀, 소규모 LLM 도입처</div>
82
+ </div>
83
+ <div class="pricing-row">
84
+ <div class="tier">정밀 (Layer 분석)</div>
85
+ <div class="price">500만 / 회</div>
86
+ <div class="desc">영상의학과 X-Ray 심층 분석 + 인과 추��</div>
87
+ <div class="target">금융·국방·의료 온프레미스 LLM</div>
88
+ </div>
89
+ <div class="pricing-row">
90
+ <div class="tier">응급실 (24h 콜)</div>
91
+ <div class="price">500만 / 년</div>
92
+ <div class="desc">미토스 응급 즉시 대응 + 5분 내 출동</div>
93
+ <div class="target">서비스 운영 중인 기업·기관</div>
94
+ </div>
95
+ <div class="pricing-row">
96
+ <div class="tier">종합검진 (연 회원)</div>
97
+ <div class="price">1,000만 / 년</div>
98
+ <div class="desc">6진료과 전체 진단 + 분기별 정기 검진</div>
99
+ <div class="target">대기업 R&D, AI 자회사 운영처</div>
100
+ </div>
101
+ <div class="pricing-row">
102
+ <div class="tier">정부 라이선스</div>
103
+ <div class="price">별도 협의</div>
104
+ <div class="desc">부처·지자체 라이선스 + 진단 전문의 양성</div>
105
+ <div class="target">정부 부처, 광역지자체</div>
106
+ </div>
107
+ </div>
108
+ </section>
109
+
110
+ <section class="section">
111
+ <div class="section-title">6개 진료과</div>
112
+ <h2 class="section-heading">한 병원에서 모든 진단·처방을 받는다.</h2>
113
+ <div class="feat-grid">
114
+ <div class="feat">
115
+ <div class="ico">🩻</div>
116
+ <h4>영상의학과 — 모델 X-Ray</h4>
117
+ <p>Activation Patching · Causal Tracing · Logit Lens 통합. 30층 LLM 각 layer에서 어느 지점이 환각·오류를 발생시키는지 정확히 식별.</p>
118
+ </div>
119
+ <div class="feat">
120
+ <div class="ico">🫀</div>
121
+ <h4>내과 — 모델 능력 진단</h4>
122
+ <p>정확도 · 환각 · 편향을 자동 측정. 한국어 문화·언어 이해(CLIcK 0.791) 포함 종합 검진.</p>
123
+ </div>
124
+ <div class="feat">
125
+ <div class="ico">⚕️</div>
126
+ <h4>외과 — 자동 처방·치료</h4>
127
+ <p>Fine-tuning · 증류(Distillation) · 교배(Crossbreeding) 자동 권고. Blackwell GPU 자동 할당·실행.</p>
128
+ </div>
129
+ <div class="feat">
130
+ <div class="ico">🧠</div>
131
+ <h4>정신의학과 — 안전성</h4>
132
+ <p>Alignment · Jailbreak · 프롬프트 인젝션 취약점 자동 점검. 미토스 류 보안 위협 사전 차단.</p>
133
+ </div>
134
+ <div class="feat">
135
+ <div class="ico">🚨</div>
136
+ <h4>응급실 — 24h 대응</h4>
137
+ <p>모델·서비스·앱 통합 응급 대응. 5분 내 대응, A/B 검증 후 안전 재배포 인증.</p>
138
+ </div>
139
+ <div class="feat">
140
+ <div class="ico">📜</div>
141
+ <h4>정책의학과 — AI 기본법 부합</h4>
142
+ <p>고영향 AI 영향평가·워터마크 자동 삽입·위험등급 자동 산출. 2026.01.26 시행 법령 자동 충족.</p>
143
+ </div>
144
+ </div>
145
+ </section>
146
+
147
+ <section class="section">
148
+ <div class="section-title">데모</div>
149
+ <h2 class="section-heading">실제 작동하는 플랫폼.</h2>
150
+ <div class="embed-container">
151
+ <div class="embed-placeholder">
152
+ <div class="pico">🩺</div>
153
+ <h4>AX 종합병원 데모 곧 공개</h4>
154
+ <p>Phase 1 PoC (금융 1사 · 공공 1기관 · 의료 1병원 · 제조 대기업 1곳) 진행 중. 정식 데모는 베타 출시와 함께 공개됩니다.</p>
155
+ <a href="#ax-poc-form">사전 PoC 신청하기</a>
156
+ </div>
157
+ </div>
158
+ </section>
159
+
160
+ <section class="section" id="ax-poc-form">
161
+ <div class="section-title">POC INQUIRY · 24H 응답</div>
162
+ <h2 class="section-heading">PoC 사전 신청 · 견적 문의.</h2>
163
+ <p class="section-sub">진단 대상 모델·서비스 규모·희망 일정을 알려주시면 담당자가 24시간 내 회신드립니다. 이메일은 <a href="mailto:contact@ginigen.net" style="color:var(--accent-cyan);">contact@ginigen.net</a>.</p>
164
+
165
+ <form class="contact-form" action="https://formspree.io/f/YOUR_FORM_ID" method="POST">
166
+ <div class="form-row">
167
+ <label class="form-field">
168
+ <span class="form-label">이름<span class="req">*</span></span>
169
+ <input type="text" name="name" required placeholder="홍길동" autocomplete="name">
170
+ </label>
171
+ <label class="form-field">
172
+ <span class="form-label">회사명<span class="req">*</span></span>
173
+ <input type="text" name="company" required placeholder="㈜OOOO" autocomplete="organization">
174
+ </label>
175
+ </div>
176
+
177
+ <label class="form-field">
178
+ <span class="form-label">LLM 종류<span class="req">*</span></span>
179
+ <select name="llm_type" required>
180
+ <option value="">— 선택해주세요 —</option>
181
+ <option value="inhouse">자체 학습 LLM (인하우스 from scratch)</option>
182
+ <option value="finetune">오픈소스 파인튜닝 (LLaMA · Qwen · Mistral 등)</option>
183
+ <option value="api">외부 API (OpenAI · Claude · Gemini 등)</option>
184
+ <option value="hybrid">하이브리드 (자체 + 외부 API 혼용)</option>
185
+ <option value="undecided">아직 결정 전</option>
186
+ <option value="other">기타</option>
187
+ </select>
188
+ </label>
189
+
190
+ <label class="form-field">
191
+ <span class="form-label">문의 내용<span class="req">*</span></span>
192
+ <textarea name="message" rows="6" required placeholder="진단 대상 모델·서비스 규모·희망 일정 등 자유롭게 작성해주세요."></textarea>
193
+ </label>
194
+
195
+ <input type="hidden" name="_subject" value="[지니젠AI · ginigen.net] AX 종합병원 PoC 문의">
196
+ <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">
197
+
198
+ <button type="submit" class="btn btn-primary form-submit">
199
+ ✉ PoC 신청 보내기
200
+ </button>
201
+ <div class="form-note">
202
+ 제출 시 Formspree를 통해 contact@ginigen.net 으로 전달됩니다. 영업·마케팅 외 목적의 무단 수집은 차단됩니다.
203
+ </div>
204
+ </form>
205
+ </section>
206
+ </div>
207
+ </div>
208
+
209
+ <!-- FOOTER -->
210
+ <footer class="footer">
211
+ <strong>(주) 지니젠AI</strong> · 대표 최선영 · 서울 강남구 강남대로 112길 47, 2F 424 · 사업자번호 763-88-03595<br>
212
+ 통신판매업 신고 2025-Seoul Gangnam-06701 · © 2026 GiniGen AI Inc.
213
+ <div class="footer-links">
214
+ <a href="/">홈</a>·
215
+ <a href="/society.html">인공사회</a>·
216
+ <a href="https://www.ginigen.ai" target="_blank">GiniGen Studio</a>·
217
+ <a href="/#press">Press</a>·
218
+ <a href="/#contact">Contact</a>
219
+ </div>
220
+ </footer>
221
+
222
+ <script>
223
+ const pc = document.getElementById('particles');
224
+ const palette = ['#0AB4CC', '#A855F7', '#D946EF', '#3B82F6'];
225
+ for (let i = 0; i < 26; i++) {
226
+ const p = document.createElement('div');
227
+ p.className = 'particle';
228
+ const size = 2 + Math.random() * 4;
229
+ const c = palette[i % palette.length];
230
+ p.style.width = size + 'px';
231
+ p.style.height = size + 'px';
232
+ p.style.left = Math.random() * 100 + '%';
233
+ p.style.bottom = -10 + 'px';
234
+ p.style.background = c;
235
+ p.style.boxShadow = `0 0 12px ${c}`;
236
+ p.style.animationDelay = (Math.random() * 25) + 's';
237
+ p.style.animationDuration = (18 + Math.random() * 14) + 's';
238
+ pc.appendChild(p);
239
+ }
240
+ </script>
241
+ </body>
242
+ </html>
index.html CHANGED
@@ -18,1019 +18,27 @@
18
  <link rel="icon" type="image/png" href="logo-stacked.png">
19
  <link rel="apple-touch-icon" href="logo-stacked.png">
20
  <link href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css" rel="stylesheet">
21
- <style>
22
- :root {
23
- --bg-deep: #0B1437;
24
- --bg-mid: #14215C;
25
- --bg-light: #1E3A8A;
26
- --accent-blue: #3B82F6;
27
- --accent-cyan: #00D9FF;
28
- --accent-violet: #A855F7;
29
- --accent-magenta: #D946EF;
30
- --accent-gold: #E5B584;
31
- --text-primary: #F8FAFC;
32
- --text-secondary: rgba(226, 232, 240, 0.78);
33
- --text-muted: rgba(226, 232, 240, 0.55);
34
- --surface: rgba(255, 255, 255, 0.06);
35
- --surface-hover: rgba(255, 255, 255, 0.10);
36
- --border: rgba(255, 255, 255, 0.10);
37
- --border-bright: rgba(0, 217, 255, 0.40);
38
- --border-violet: rgba(168, 85, 247, 0.40);
39
- --gradient-logo: linear-gradient(135deg, #3B82F6 0%, #A855F7 55%, #D946EF 100%);
40
- --gradient-aurora: linear-gradient(135deg, #00D9FF 0%, #3B82F6 35%, #A855F7 75%, #D946EF 100%);
41
- }
42
-
43
- * { margin: 0; padding: 0; box-sizing: border-box; }
44
-
45
- html { scroll-behavior: smooth; }
46
- [id] { scroll-margin-top: 100px; }
47
-
48
- body {
49
- font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', sans-serif;
50
- background: var(--bg-deep);
51
- background-image:
52
- radial-gradient(ellipse 80% 50% at 20% 0%, rgba(59, 130, 246, 0.18) 0%, transparent 50%),
53
- radial-gradient(ellipse 70% 60% at 80% 30%, rgba(0, 217, 255, 0.12) 0%, transparent 50%),
54
- radial-gradient(ellipse 55% 45% at 90% 75%, rgba(168, 85, 247, 0.14) 0%, transparent 60%),
55
- radial-gradient(ellipse 50% 40% at 10% 90%, rgba(217, 70, 239, 0.08) 0%, transparent 60%),
56
- radial-gradient(ellipse 60% 50% at 50% 100%, rgba(30, 58, 138, 0.30) 0%, transparent 60%);
57
- color: var(--text-primary);
58
- min-height: 100vh;
59
- overflow-x: hidden;
60
- line-height: 1.6;
61
- }
62
-
63
- /* ============ NAVIGATION ============ */
64
- .nav-container {
65
- position: fixed;
66
- top: 0; left: 0; right: 0;
67
- background: rgba(11, 20, 55, 0.72);
68
- backdrop-filter: blur(16px);
69
- -webkit-backdrop-filter: blur(16px);
70
- border-bottom: 1px solid var(--border);
71
- z-index: 1000;
72
- padding: 16px 40px;
73
- display: flex;
74
- justify-content: space-between;
75
- align-items: center;
76
- }
77
- .nav-left { display: flex; align-items: center; gap: 36px; }
78
- .logo {
79
- display: flex;
80
- align-items: center;
81
- gap: 10px;
82
- cursor: pointer;
83
- text-decoration: none;
84
- height: 32px;
85
- }
86
- .logo-img {
87
- height: 26px;
88
- width: auto;
89
- display: block;
90
- filter: drop-shadow(0 0 14px rgba(167, 139, 250, 0.32));
91
- transition: filter 0.25s ease;
92
- }
93
- .logo:hover .logo-img {
94
- filter: drop-shadow(0 0 18px rgba(167, 139, 250, 0.55));
95
- }
96
- .logo-sub {
97
- font-size: 11px;
98
- color: var(--text-muted);
99
- font-weight: 600;
100
- letter-spacing: 1.2px;
101
- padding: 3px 7px;
102
- border: 1px solid var(--border);
103
- border-radius: 6px;
104
- }
105
- .tabs { display: flex; gap: 6px; }
106
- .tab {
107
- color: var(--text-secondary);
108
- text-decoration: none;
109
- font-size: 14.5px;
110
- font-weight: 600;
111
- padding: 8px 16px;
112
- border-radius: 8px;
113
- transition: all 0.25s ease;
114
- cursor: pointer;
115
- border: none;
116
- background: transparent;
117
- }
118
- .tab:hover { background: var(--surface-hover); color: var(--text-primary); }
119
- .tab.active {
120
- background: linear-gradient(135deg, rgba(59, 130, 246, 0.22) 0%, rgba(168, 85, 247, 0.18) 60%, rgba(0, 217, 255, 0.14) 100%);
121
- color: var(--accent-cyan);
122
- border: 1px solid var(--border-bright);
123
- }
124
- .powered-by {
125
- color: var(--text-muted);
126
- font-size: 12px;
127
- display: flex;
128
- align-items: center;
129
- gap: 8px;
130
- }
131
- .powered-by .dot {
132
- width: 6px; height: 6px; border-radius: 50%;
133
- background: #10B981;
134
- box-shadow: 0 0 8px #10B981;
135
- animation: pulse 2s infinite;
136
- }
137
- @keyframes pulse { 0%,100%{opacity:1;} 50%{opacity:0.4;} }
138
-
139
- .live-link {
140
- text-decoration: none;
141
- color: var(--text-secondary);
142
- padding: 7px 14px;
143
- border: 1px solid var(--border);
144
- border-radius: 999px;
145
- transition: all 0.2s ease;
146
- font-weight: 600;
147
- font-size: 12.5px;
148
- }
149
- .live-link:hover {
150
- color: var(--accent-cyan);
151
- border-color: var(--border-bright);
152
- background: var(--surface-hover);
153
- }
154
- .live-dot {
155
- background: #EF4444 !important;
156
- box-shadow: 0 0 10px #EF4444 !important;
157
- }
158
- .live-arrow {
159
- font-size: 11px;
160
- opacity: 0.7;
161
- transition: transform 0.2s;
162
- margin-left: 2px;
163
- }
164
- .live-link:hover .live-arrow {
165
- transform: translate(2px, -2px);
166
- opacity: 1;
167
- }
168
-
169
- /* ============ PARTICLES (Network Nodes) ============ */
170
- .particles {
171
- position: fixed;
172
- inset: 0;
173
- overflow: hidden;
174
- z-index: 1;
175
- pointer-events: none;
176
- }
177
- .particle {
178
- position: absolute;
179
- width: 3px; height: 3px;
180
- background: var(--accent-cyan);
181
- border-radius: 50%;
182
- box-shadow: 0 0 12px var(--accent-cyan);
183
- opacity: 0.4;
184
- animation: drift 25s infinite ease-in-out;
185
- }
186
- @keyframes drift {
187
- 0%, 100% { transform: translateY(0) translateX(0); opacity: 0.2; }
188
- 50% { transform: translateY(-60vh) translateX(40px); opacity: 0.6; }
189
- }
190
-
191
- /* ============ MAIN ============ */
192
- .container {
193
- position: relative;
194
- z-index: 10;
195
- max-width: 1240px;
196
- margin: 0 auto;
197
- padding: 110px 24px 80px;
198
- }
199
-
200
- .tab-content { display: none; animation: fadeIn 0.5s ease; }
201
- .tab-content.active { display: block; }
202
- @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
203
-
204
- /* ============ HERO ============ */
205
- .hero {
206
- position: relative;
207
- margin: -110px calc(50% - 50vw) 0;
208
- width: 100vw;
209
- padding: 160px 24px 100px;
210
- min-height: 760px;
211
- display: flex;
212
- flex-direction: column;
213
- justify-content: center;
214
- align-items: center;
215
- text-align: center;
216
- overflow: hidden;
217
- }
218
- .hero-bg {
219
- position: absolute;
220
- inset: 0;
221
- z-index: 0;
222
- overflow: hidden;
223
- background: var(--bg-deep);
224
- }
225
- .hero-bg video {
226
- width: 100%;
227
- height: 100%;
228
- object-fit: cover;
229
- display: block;
230
- }
231
- .hero-overlay {
232
- position: absolute;
233
- inset: 0;
234
- z-index: 1;
235
- background:
236
- linear-gradient(180deg,
237
- rgba(11, 20, 55, 0.55) 0%,
238
- rgba(11, 20, 55, 0.40) 40%,
239
- rgba(11, 20, 55, 0.85) 92%,
240
- var(--bg-deep) 100%),
241
- radial-gradient(ellipse at 78% 28%, rgba(168, 85, 247, 0.14) 0%, transparent 55%),
242
- radial-gradient(ellipse at 22% 72%, rgba(0, 217, 255, 0.10) 0%, transparent 55%),
243
- radial-gradient(ellipse at center, transparent 0%, rgba(11, 20, 55, 0.45) 100%);
244
- pointer-events: none;
245
- }
246
- .hero-content {
247
- position: relative;
248
- z-index: 2;
249
- max-width: 820px;
250
- width: 100%;
251
- }
252
- .hero-badge {
253
- display: inline-flex;
254
- align-items: center;
255
- gap: 8px;
256
- padding: 8px 16px;
257
- background: rgba(229, 181, 132, 0.12);
258
- border: 1px solid rgba(229, 181, 132, 0.35);
259
- border-radius: 999px;
260
- font-size: 12.5px;
261
- font-weight: 600;
262
- color: var(--accent-gold);
263
- margin-bottom: 24px;
264
- letter-spacing: 0.3px;
265
- }
266
- .hero h1 {
267
- font-size: clamp(36px, 6vw, 64px);
268
- font-weight: 800;
269
- line-height: 1.15;
270
- letter-spacing: -1.5px;
271
- margin-bottom: 20px;
272
- text-shadow: 0 4px 30px rgba(0, 0, 0, 0.50);
273
- }
274
- .hero h1 .accent {
275
- background: var(--gradient-aurora);
276
- -webkit-background-clip: text;
277
- -webkit-text-fill-color: transparent;
278
- background-clip: text;
279
- }
280
- .hero p {
281
- font-size: clamp(15px, 2vw, 19px);
282
- color: var(--text-secondary);
283
- max-width: 720px;
284
- margin: 0 auto 36px;
285
- line-height: 1.7;
286
- text-shadow: 0 2px 16px rgba(0, 0, 0, 0.45);
287
- }
288
- .hero-stats {
289
- display: grid;
290
- grid-template-columns: repeat(3, 1fr);
291
- gap: 16px;
292
- max-width: 760px;
293
- margin: 0 auto;
294
- }
295
- .hero-stat {
296
- background: var(--surface);
297
- border: 1px solid var(--border);
298
- border-radius: 14px;
299
- padding: 20px 16px;
300
- backdrop-filter: blur(8px);
301
- }
302
- .hero-stat .num {
303
- font-size: 28px;
304
- font-weight: 800;
305
- background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-violet) 100%);
306
- -webkit-background-clip: text;
307
- -webkit-text-fill-color: transparent;
308
- background-clip: text;
309
- letter-spacing: -0.5px;
310
- }
311
- .hero-stat .label {
312
- font-size: 13px;
313
- color: var(--text-secondary);
314
- margin-top: 4px;
315
- }
316
-
317
- /* ============ SECTION TITLE ============ */
318
- .section {
319
- margin-top: 110px;
320
- }
321
- .tab-content > .section:first-of-type {
322
- margin-top: 60px;
323
- }
324
- .section-title {
325
- font-size: 11.5px;
326
- font-weight: 600;
327
- color: var(--accent-violet);
328
- letter-spacing: 1.6px;
329
- text-transform: uppercase;
330
- margin-bottom: 14px;
331
- display: inline-flex;
332
- align-items: center;
333
- gap: 10px;
334
- opacity: 0.85;
335
- }
336
- .section-title::before {
337
- content: '';
338
- width: 22px;
339
- height: 1px;
340
- background: var(--accent-violet);
341
- opacity: 0.5;
342
- }
343
- .section-heading {
344
- font-size: clamp(28px, 3.6vw, 40px);
345
- font-weight: 700;
346
- line-height: 1.18;
347
- letter-spacing: -0.6px;
348
- margin-bottom: 18px;
349
- }
350
- .section-sub {
351
- font-size: 16px;
352
- color: var(--text-secondary);
353
- max-width: 680px;
354
- margin-bottom: 44px;
355
- line-height: 1.7;
356
- font-weight: 400;
357
- }
358
-
359
- /* ============ 3 PILLARS ============ */
360
- .pillars {
361
- display: grid;
362
- grid-template-columns: repeat(3, 1fr);
363
- gap: 20px;
364
- }
365
- .pillar {
366
- position: relative;
367
- background: linear-gradient(160deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.01) 100%);
368
- border: 1px solid var(--border);
369
- border-radius: 18px;
370
- padding: 36px 28px;
371
- transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
372
- overflow: hidden;
373
- cursor: pointer;
374
- backdrop-filter: blur(12px);
375
- -webkit-backdrop-filter: blur(12px);
376
- }
377
- .pillar::before {
378
- content: '';
379
- position: absolute;
380
- top: 0; left: 0; right: 0;
381
- height: 3px;
382
- background: var(--gradient);
383
- opacity: 0.8;
384
- }
385
- .pillar:hover {
386
- transform: translateY(-3px);
387
- border-color: var(--border-bright);
388
- box-shadow:
389
- 0 16px 40px rgba(0, 217, 255, 0.10),
390
- 0 8px 24px rgba(168, 85, 247, 0.09);
391
- }
392
- .pillar[data-color="cyan"] { --gradient: linear-gradient(90deg, #00D9FF, #3B82F6); }
393
- .pillar[data-color="blue"] { --gradient: linear-gradient(90deg, #3B82F6, #A855F7, #D946EF); }
394
- .pillar[data-color="gold"] { --gradient: linear-gradient(90deg, #E5B584, #D946EF); }
395
-
396
- .pillar-icon {
397
- width: 52px; height: 52px;
398
- border-radius: 14px;
399
- background: var(--gradient);
400
- display: flex;
401
- align-items: center;
402
- justify-content: center;
403
- font-size: 26px;
404
- margin-bottom: 18px;
405
- box-shadow: 0 8px 20px rgba(0, 217, 255, 0.18);
406
- }
407
- .pillar-tag {
408
- display: inline-block;
409
- font-size: 11px;
410
- font-weight: 700;
411
- color: var(--accent-cyan);
412
- letter-spacing: 1.5px;
413
- margin-bottom: 8px;
414
- }
415
- .pillar h3 {
416
- font-size: 23px;
417
- font-weight: 700;
418
- margin-bottom: 12px;
419
- letter-spacing: -0.6px;
420
- }
421
- .pillar .tagline {
422
- font-size: 14.5px;
423
- color: var(--text-secondary);
424
- line-height: 1.7;
425
- margin-bottom: 20px;
426
- font-weight: 400;
427
- }
428
- .pillar ul {
429
- list-style: none;
430
- padding: 0;
431
- border-top: 1px solid var(--border);
432
- padding-top: 16px;
433
- }
434
- .pillar ul li {
435
- font-size: 13.5px;
436
- color: var(--text-muted);
437
- padding: 5px 0;
438
- display: flex;
439
- align-items: flex-start;
440
- gap: 8px;
441
- }
442
- .pillar ul li::before {
443
- content: '◆';
444
- color: var(--accent-cyan);
445
- font-size: 8px;
446
- margin-top: 6px;
447
- flex-shrink: 0;
448
- }
449
- .pillar-cta {
450
- display: inline-block;
451
- margin-top: 18px;
452
- font-size: 13px;
453
- font-weight: 700;
454
- color: var(--accent-cyan);
455
- text-decoration: none;
456
- transition: gap 0.2s;
457
- }
458
- .pillar-cta:hover { gap: 12px; }
459
- .pillar-cta::after { content: ' →'; }
460
-
461
- /* ============ TRUST BAR ============ */
462
- .trust-bar {
463
- margin-top: 70px;
464
- background: linear-gradient(135deg, rgba(229, 181, 132, 0.10) 0%, rgba(168, 85, 247, 0.07) 50%, rgba(0, 217, 255, 0.06) 100%);
465
- border: 1px solid rgba(229, 181, 132, 0.25);
466
- border-radius: 20px;
467
- padding: 32px 28px;
468
- }
469
- .trust-bar-head {
470
- display: flex;
471
- align-items: center;
472
- gap: 12px;
473
- margin-bottom: 22px;
474
- flex-wrap: wrap;
475
- }
476
- .trust-bar-head .gold-badge {
477
- background: linear-gradient(135deg, #E5B584, #F2D2A8);
478
- color: #1F2937;
479
- font-size: 11px;
480
- font-weight: 800;
481
- padding: 5px 12px;
482
- border-radius: 6px;
483
- letter-spacing: 1px;
484
- }
485
- .trust-bar-head h3 {
486
- font-size: 20px;
487
- font-weight: 800;
488
- letter-spacing: -0.5px;
489
- }
490
- .trust-grid {
491
- display: grid;
492
- grid-template-columns: repeat(4, 1fr);
493
- gap: 16px;
494
- }
495
- .trust-item {
496
- text-align: left;
497
- }
498
- .trust-item .val {
499
- font-size: 22px;
500
- font-weight: 800;
501
- color: var(--accent-gold);
502
- letter-spacing: -0.5px;
503
- }
504
- .trust-item .lbl {
505
- font-size: 12.5px;
506
- color: var(--text-secondary);
507
- margin-top: 4px;
508
- line-height: 1.4;
509
- }
510
-
511
- /* ============ TRENDS ============ */
512
- .trends-grid {
513
- display: grid;
514
- grid-template-columns: repeat(3, 1fr);
515
- gap: 14px;
516
- }
517
- .trend-card {
518
- background: var(--surface);
519
- border: 1px solid var(--border);
520
- border-radius: 14px;
521
- padding: 22px 20px;
522
- }
523
- .trend-card .yr {
524
- font-size: 11px;
525
- font-weight: 700;
526
- color: var(--accent-cyan);
527
- letter-spacing: 1px;
528
- margin-bottom: 8px;
529
- }
530
- .trend-card h4 {
531
- font-size: 16px;
532
- font-weight: 700;
533
- margin-bottom: 8px;
534
- line-height: 1.3;
535
- }
536
- .trend-card p {
537
- font-size: 13px;
538
- color: var(--text-secondary);
539
- line-height: 1.55;
540
- }
541
- .trend-card .stat {
542
- margin-top: 10px;
543
- font-size: 13px;
544
- color: var(--accent-gold);
545
- font-weight: 700;
546
- }
547
-
548
- /* ============ DETAIL PAGES (AX / Society / Studio) ============ */
549
- .detail-hero {
550
- text-align: left;
551
- padding: 50px 0 30px;
552
- }
553
- .detail-hero h2 {
554
- font-size: clamp(32px, 4.6vw, 50px);
555
- font-weight: 700;
556
- line-height: 1.12;
557
- letter-spacing: -1px;
558
- margin-bottom: 22px;
559
- }
560
- .detail-hero .accent {
561
- background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-violet) 100%);
562
- -webkit-background-clip: text;
563
- -webkit-text-fill-color: transparent;
564
- background-clip: text;
565
- }
566
- .detail-hero .lead {
567
- font-size: 17.5px;
568
- color: var(--text-secondary);
569
- max-width: 720px;
570
- line-height: 1.7;
571
- font-weight: 400;
572
- }
573
-
574
- .hero-cta-row {
575
- display: flex;
576
- gap: 12px;
577
- margin-top: 28px;
578
- flex-wrap: wrap;
579
- }
580
- .btn {
581
- display: inline-flex;
582
- align-items: center;
583
- gap: 8px;
584
- padding: 14px 26px;
585
- border-radius: 999px;
586
- font-weight: 700;
587
- font-size: 15px;
588
- text-decoration: none;
589
- transition: all 0.2s ease;
590
- border: 1px solid transparent;
591
- cursor: pointer;
592
- }
593
- .btn-primary {
594
- background: var(--gradient-logo);
595
- color: white;
596
- box-shadow:
597
- 0 10px 28px rgba(168, 85, 247, 0.28),
598
- 0 6px 18px rgba(0, 217, 255, 0.18);
599
- }
600
- .btn-primary:hover {
601
- transform: translateY(-2px);
602
- box-shadow:
603
- 0 14px 38px rgba(217, 70, 239, 0.36),
604
- 0 8px 22px rgba(0, 217, 255, 0.22);
605
- }
606
- .btn-ghost {
607
- background: var(--surface);
608
- color: var(--accent-cyan);
609
- border-color: var(--border-bright);
610
- }
611
- .btn-ghost:hover {
612
- background: var(--surface-hover);
613
- border-color: var(--accent-cyan);
614
- }
615
- .hero-price-strip {
616
- margin-top: 22px;
617
- padding: 14px 20px;
618
- background: linear-gradient(135deg, rgba(229, 181, 132, 0.10) 0%, rgba(0, 217, 255, 0.06) 100%);
619
- border: 1px solid rgba(229, 181, 132, 0.30);
620
- border-radius: 12px;
621
- font-size: 14px;
622
- color: var(--text-secondary);
623
- display: inline-block;
624
- }
625
- .hero-price-strip strong {
626
- color: var(--accent-gold);
627
- font-weight: 800;
628
- }
629
-
630
- /* ============ CONTACT FORM (Formspree) ============ */
631
- .contact-form {
632
- display: flex;
633
- flex-direction: column;
634
- gap: 18px;
635
- max-width: 720px;
636
- margin-top: 30px;
637
- background: var(--surface);
638
- border: 1px solid var(--border);
639
- border-radius: 18px;
640
- padding: 32px 30px;
641
- backdrop-filter: blur(12px);
642
- -webkit-backdrop-filter: blur(12px);
643
- }
644
- .form-row {
645
- display: grid;
646
- grid-template-columns: 1fr 1fr;
647
- gap: 16px;
648
- }
649
- .form-field {
650
- display: flex;
651
- flex-direction: column;
652
- gap: 8px;
653
- }
654
- .form-label {
655
- font-size: 11.5px;
656
- font-weight: 600;
657
- color: var(--accent-violet);
658
- letter-spacing: 1.4px;
659
- text-transform: uppercase;
660
- }
661
- .form-label .req { color: var(--accent-magenta); margin-left: 3px; }
662
- .contact-form input,
663
- .contact-form select,
664
- .contact-form textarea {
665
- padding: 13px 16px;
666
- background: rgba(11, 20, 55, 0.40);
667
- border: 1px solid var(--border);
668
- border-radius: 12px;
669
- color: var(--text-primary);
670
- font-family: inherit;
671
- font-size: 15px;
672
- transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
673
- }
674
- .contact-form input::placeholder,
675
- .contact-form textarea::placeholder {
676
- color: var(--text-muted);
677
- }
678
- .contact-form input:focus,
679
- .contact-form select:focus,
680
- .contact-form textarea:focus {
681
- outline: none;
682
- border-color: var(--accent-cyan);
683
- background: rgba(11, 20, 55, 0.55);
684
- box-shadow: 0 0 0 3px rgba(0, 217, 255, 0.12);
685
- }
686
- .contact-form textarea { resize: vertical; line-height: 1.6; min-height: 120px; }
687
- .contact-form select {
688
- cursor: pointer;
689
- appearance: none;
690
- -webkit-appearance: none;
691
- background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%23A855F7' d='M6 8L0 0h12z'/></svg>");
692
- background-repeat: no-repeat;
693
- background-position: right 16px center;
694
- padding-right: 40px;
695
- }
696
- .contact-form select option {
697
- background: var(--bg-deep);
698
- color: var(--text-primary);
699
- }
700
- .form-submit {
701
- margin-top: 6px;
702
- align-self: flex-start;
703
- border: none;
704
- font-family: inherit;
705
- font-size: 15px;
706
- cursor: pointer;
707
- }
708
- .form-note {
709
- font-size: 12.5px;
710
- color: var(--text-muted);
711
- line-height: 1.55;
712
- margin-top: 4px;
713
- }
714
- @media (max-width: 700px) {
715
- .form-row { grid-template-columns: 1fr; }
716
- .contact-form { padding: 24px 20px; }
717
- }
718
-
719
- .feat-grid {
720
- display: grid;
721
- grid-template-columns: repeat(3, 1fr);
722
- gap: 16px;
723
- margin-top: 30px;
724
- }
725
- .feat {
726
- background: var(--surface);
727
- border: 1px solid var(--border);
728
- border-radius: 16px;
729
- padding: 24px 22px;
730
- transition: all 0.25s;
731
- }
732
- .feat:hover {
733
- border-color: var(--border-bright);
734
- background: var(--surface-hover);
735
- transform: translateY(-2px);
736
- box-shadow: 0 10px 24px rgba(168, 85, 247, 0.08);
737
- }
738
- .feat { transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
739
- .feat .ico {
740
- font-size: 24px;
741
- margin-bottom: 12px;
742
- }
743
- .feat h4 {
744
- font-size: 17px;
745
- font-weight: 700;
746
- margin-bottom: 8px;
747
- }
748
- .feat p { font-size: 14px; color: var(--text-secondary); line-height: 1.55; }
749
-
750
- /* ============ PRICING TABLE ============ */
751
- .pricing {
752
- margin-top: 40px;
753
- background: var(--surface);
754
- border: 1px solid var(--border);
755
- border-radius: 18px;
756
- padding: 28px 24px;
757
- }
758
- .pricing-row {
759
- display: grid;
760
- grid-template-columns: 1.4fr 0.8fr 2fr 1fr;
761
- gap: 16px;
762
- padding: 16px 0;
763
- border-bottom: 1px solid var(--border);
764
- align-items: center;
765
- }
766
- .pricing-row:last-child { border-bottom: none; }
767
- .pricing-row.head {
768
- font-size: 11.5px;
769
- font-weight: 700;
770
- color: var(--accent-cyan);
771
- letter-spacing: 1.2px;
772
- padding-bottom: 12px;
773
- text-transform: uppercase;
774
- }
775
- .pricing-row .tier { font-weight: 700; }
776
- .pricing-row .price { font-weight: 800; color: var(--accent-gold); font-size: 17px; }
777
- .pricing-row .desc { font-size: 13.5px; color: var(--text-secondary); }
778
- .pricing-row .target { font-size: 13px; color: var(--text-muted); }
779
-
780
- /* ============ INFOGRAPHIC for NationalOS ============ */
781
- .society-graph {
782
- margin-top: 30px;
783
- background: linear-gradient(135deg, rgba(59, 130, 246, 0.10) 0%, rgba(168, 85, 247, 0.08) 55%, rgba(0, 217, 255, 0.05) 100%);
784
- border: 1px solid var(--border);
785
- border-radius: 20px;
786
- padding: 36px 28px;
787
- text-align: center;
788
- }
789
- .society-graph .big {
790
- font-size: clamp(48px, 8vw, 80px);
791
- font-weight: 900;
792
- background: var(--gradient-aurora);
793
- -webkit-background-clip: text;
794
- -webkit-text-fill-color: transparent;
795
- background-clip: text;
796
- letter-spacing: -2px;
797
- line-height: 1;
798
- }
799
- .society-graph .big-lbl {
800
- font-size: 14px;
801
- color: var(--text-secondary);
802
- margin-top: 4px;
803
- }
804
- .society-stats {
805
- display: grid;
806
- grid-template-columns: repeat(4, 1fr);
807
- gap: 12px;
808
- margin-top: 28px;
809
- }
810
- .society-stat {
811
- background: rgba(255,255,255,0.05);
812
- border: 1px solid var(--border);
813
- border-radius: 12px;
814
- padding: 18px 12px;
815
- }
816
- .society-stat .v { font-size: 22px; font-weight: 800; color: var(--accent-cyan); }
817
- .society-stat .l { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
818
-
819
- /* ============ IFRAME EMBED ============ */
820
- .embed-container {
821
- margin-top: 36px;
822
- background: var(--surface);
823
- border: 1px solid var(--border);
824
- border-radius: 18px;
825
- padding: 16px;
826
- min-height: 540px;
827
- }
828
- .embed-container iframe {
829
- width: 100%;
830
- height: 600px;
831
- border: none;
832
- border-radius: 12px;
833
- background: white;
834
- }
835
- .embed-placeholder {
836
- display: flex;
837
- flex-direction: column;
838
- align-items: center;
839
- justify-content: center;
840
- min-height: 360px;
841
- color: var(--text-muted);
842
- text-align: center;
843
- padding: 30px;
844
- }
845
- .embed-placeholder .pico { font-size: 38px; margin-bottom: 14px; }
846
- .embed-placeholder h4 { font-size: 18px; color: var(--text-primary); margin-bottom: 8px; }
847
- .embed-placeholder a {
848
- display: inline-block;
849
- margin-top: 18px;
850
- background: linear-gradient(135deg, var(--accent-blue), var(--accent-cyan));
851
- color: white;
852
- text-decoration: none;
853
- padding: 12px 24px;
854
- border-radius: 999px;
855
- font-weight: 700;
856
- font-size: 14px;
857
- transition: transform 0.2s;
858
- }
859
- .embed-placeholder a:hover { transform: translateY(-2px); }
860
-
861
- /* ============ CONTACT ============ */
862
- .contact-grid {
863
- display: grid;
864
- grid-template-columns: 1fr 1fr;
865
- gap: 20px;
866
- margin-top: 30px;
867
- }
868
- .contact-card {
869
- background: var(--surface);
870
- border: 1px solid var(--border);
871
- border-radius: 18px;
872
- padding: 28px;
873
- }
874
- .contact-card h4 {
875
- font-size: 18px;
876
- font-weight: 700;
877
- margin-bottom: 12px;
878
- }
879
- .contact-card p { font-size: 14.5px; color: var(--text-secondary); line-height: 1.65; }
880
- .contact-card .ml {
881
- display: inline-block;
882
- margin-top: 14px;
883
- color: var(--accent-cyan);
884
- text-decoration: none;
885
- font-weight: 700;
886
- font-size: 14px;
887
- }
888
-
889
- /* ============ PRESS ============ */
890
- .press-grid {
891
- display: grid;
892
- grid-template-columns: repeat(2, 1fr);
893
- gap: 20px;
894
- margin-top: 30px;
895
- }
896
- .press-card {
897
- background: var(--surface);
898
- border: 1px solid var(--border);
899
- border-radius: 18px;
900
- padding: 26px 24px;
901
- text-decoration: none;
902
- color: inherit;
903
- transition: all 0.25s ease;
904
- display: flex;
905
- flex-direction: column;
906
- gap: 12px;
907
- }
908
- .press-card:hover {
909
- border-color: var(--border-bright);
910
- background: var(--surface-hover);
911
- transform: translateY(-2px);
912
- box-shadow: 0 12px 28px rgba(0, 217, 255, 0.08);
913
- }
914
- .press-meta {
915
- display: flex;
916
- align-items: center;
917
- justify-content: space-between;
918
- font-size: 12.5px;
919
- letter-spacing: 0.5px;
920
- }
921
- .press-outlet {
922
- color: var(--accent-cyan);
923
- font-weight: 800;
924
- letter-spacing: 1.2px;
925
- text-transform: uppercase;
926
- }
927
- .press-date {
928
- color: var(--text-muted);
929
- }
930
- .press-title {
931
- font-size: 18px;
932
- font-weight: 800;
933
- line-height: 1.35;
934
- color: var(--text-primary);
935
- letter-spacing: -0.3px;
936
- margin: 0;
937
- }
938
- .press-summary {
939
- font-size: 14px;
940
- color: var(--text-secondary);
941
- line-height: 1.6;
942
- margin: 0;
943
- }
944
- .press-footer {
945
- display: flex;
946
- justify-content: space-between;
947
- align-items: center;
948
- margin-top: auto;
949
- padding-top: 8px;
950
- }
951
- .press-byline {
952
- font-size: 12px;
953
- color: var(--text-muted);
954
- }
955
- .press-cta {
956
- color: var(--accent-cyan);
957
- font-weight: 700;
958
- font-size: 14px;
959
- }
960
- .press-card:hover .press-cta {
961
- text-decoration: underline;
962
- }
963
- .press-note {
964
- margin-top: 24px;
965
- padding: 16px 20px;
966
- background: rgba(229, 181, 132, 0.06);
967
- border: 1px solid rgba(229, 181, 132, 0.20);
968
- border-radius: 12px;
969
- font-size: 13.5px;
970
- color: var(--text-secondary);
971
- line-height: 1.6;
972
- }
973
- .press-note strong {
974
- color: var(--accent-gold);
975
- font-weight: 800;
976
- }
977
-
978
- /* ============ FOOTER ============ */
979
- .footer {
980
- margin-top: 80px;
981
- padding: 28px 24px;
982
- border-top: 1px solid var(--border);
983
- text-align: center;
984
- color: var(--text-muted);
985
- font-size: 12.5px;
986
- line-height: 1.7;
987
- }
988
- .footer strong { color: var(--text-secondary); }
989
- .footer-links { margin-top: 10px; }
990
- .footer-links a { color: var(--text-muted); text-decoration: none; margin: 0 8px; }
991
- .footer-links a:hover { color: var(--accent-cyan); }
992
-
993
- /* ============ RESPONSIVE ============ */
994
- @media (max-width: 900px) {
995
- .pillars, .trust-grid, .trends-grid, .feat-grid, .society-stats, .contact-grid, .press-grid {
996
- grid-template-columns: 1fr;
997
- }
998
- .hero-stats { grid-template-columns: repeat(3, 1fr); }
999
- .nav-container { padding: 12px 16px; flex-direction: column; gap: 10px; }
1000
- .nav-left { flex-direction: column; gap: 10px; width: 100%; }
1001
- .tabs { flex-wrap: wrap; justify-content: center; }
1002
- .container { padding-top: 180px; }
1003
- .hero { margin-top: -180px; padding: 220px 20px 60px; min-height: 640px; }
1004
- .pricing-row { grid-template-columns: 1fr; gap: 6px; padding: 14px 0; }
1005
- .pricing-row.head { display: none; }
1006
- .pricing-row .price { font-size: 20px; }
1007
- }
1008
- @media (max-width: 480px) {
1009
- .hero-stats { grid-template-columns: 1fr; }
1010
- .society-stats { grid-template-columns: repeat(2, 1fr); }
1011
- .tab { font-size: 13px; padding: 6px 10px; }
1012
- }
1013
- </style>
1014
  </head>
1015
  <body>
1016
  <!-- NAVIGATION -->
1017
  <nav class="nav-container">
1018
  <div class="nav-left">
1019
- <a href="#home" class="logo" onclick="switchTab('home'); return false;" aria-label="GiniGen AI 홈">
1020
  <img src="logo.png" alt="GiniGen" class="logo-img">
1021
  <span class="logo-sub">AI</span>
1022
  </a>
1023
  <div class="tabs">
1024
- <button class="tab" data-tab="ax">AX Hospital</button>
1025
- <button class="tab" data-tab="society">Society</button>
1026
- <button class="tab" data-tab="banana">Studio</button>
1027
- <button class="tab" data-tab="trust">Proof</button>
1028
- <button class="tab" data-tab="press">Press</button>
1029
- <button class="tab" data-tab="contact">Contact</button>
1030
  </div>
1031
  </div>
1032
  <!-- TODO: xray.ginigen.net 서브도메인 + SSL 적용 후 http://211.233.58.201:7906/ 로 복원 -->
1033
- <a class="powered-by live-link" href="#ax-poc-form" onclick="switchTab('ax'); setTimeout(function(){var el=document.getElementById('ax-poc-form'); if(el) el.scrollIntoView({behavior:'smooth'});}, 120); return false;" aria-label="AX X-Ray 데모 신청 (PoC 폼으로 이동)">
1034
  <span class="dot live-dot"></span>
1035
  <span>데모 신청</span>
1036
  <span class="live-arrow">↗</span>
@@ -1084,7 +92,7 @@
1084
  </p>
1085
  <div class="pillars">
1086
 
1087
- <div class="pillar" data-color="cyan" onclick="switchTab('ax')">
1088
  <div class="pillar-icon">🩺</div>
1089
  <div class="pillar-tag">FOR ENTERPRISE · B2B</div>
1090
  <h3>AX 종합병원</h3>
@@ -1098,7 +106,7 @@
1098
  <span class="pillar-cta">상세 보기</span>
1099
  </div>
1100
 
1101
- <div class="pillar" data-color="blue" onclick="switchTab('society')">
1102
  <div class="pillar-icon">🌐</div>
1103
  <div class="pillar-tag">FOR GOVERNMENT · B2G</div>
1104
  <h3>인공사회 (NationalOS)</h3>
@@ -1112,7 +120,7 @@
1112
  <span class="pillar-cta">상세 보기</span>
1113
  </div>
1114
 
1115
- <div class="pillar" data-color="gold" onclick="switchTab('banana')">
1116
  <div class="pillar-icon">🎬</div>
1117
  <div class="pillar-tag">FOR CREATORS · B2B+B2C</div>
1118
  <h3>GiniGen Studio</h3>
@@ -1203,321 +211,18 @@
1203
  </section>
1204
  </div>
1205
 
1206
- <!-- ============ AX 종합병원 ============ -->
1207
- <div id="ax" class="tab-content">
1208
- <section class="detail-hero">
1209
- <div class="section-title">FOR ENTERPRISE · B2B</div>
1210
- <h2>국내 선도 AI 모델·서비스<br><span class="accent">종합 진료 플랫폼</span>.</h2>
1211
- <p class="lead">
1212
- 블랙박스였던 LLM 내부를 X-Ray로 투시 진단하고, 자동 처방·치료까지 한 플랫폼에서 완결합니다. 외주 5,000만원 진단을 100만원에, 3개월을 30분에.
1213
- </p>
1214
- <div class="hero-cta-row">
1215
- <a href="#ax-poc-form" class="btn btn-primary">
1216
- ✉ PoC 사전 신청
1217
- </a>
1218
- <a href="#pricing-ax" class="btn btn-ghost">
1219
- 💰 가격표 보기
1220
- </a>
1221
- </div>
1222
- <div class="hero-price-strip">
1223
- 외래 진단 <strong>100만원/회</strong> · 종합검진 <strong>1,000만원/년</strong> · 정부 라이선스 <strong>별도 협의</strong>
1224
- </div>
1225
- </section>
1226
-
1227
- <section class="section" id="pricing-ax">
1228
- <div class="section-title">진료 가격 모델</div>
1229
- <h2 class="section-heading">한국 AX의 의료보험 구조.</h2>
1230
- <p class="section-sub">외래 100만 원부터 정부 라이선스(별도 협의)까지. 누구나 진단을 받을 수 있도록.</p>
1231
- <div class="pricing">
1232
- <div class="pricing-row head">
1233
- <div>등급</div><div>가격</div><div>내용</div><div>대상</div>
1234
- </div>
1235
- <div class="pricing-row">
1236
- <div class="tier">외래 (LLM 일반 진단)</div>
1237
- <div class="price">100만 / 회</div>
1238
- <div class="desc">Case 1·2 일반 검진 — 모델 능력 + 안전성</div>
1239
- <div class="target">기업 IT팀, 소규모 LLM 도입처</div>
1240
- </div>
1241
- <div class="pricing-row">
1242
- <div class="tier">정밀 (Layer 분석)</div>
1243
- <div class="price">500만 / 회</div>
1244
- <div class="desc">영상의학과 X-Ray 심층 분석 + 인과 추적</div>
1245
- <div class="target">금융·국방·의료 온프레미스 LLM</div>
1246
- </div>
1247
- <div class="pricing-row">
1248
- <div class="tier">응급실 (24h 콜)</div>
1249
- <div class="price">500만 / 년</div>
1250
- <div class="desc">미토스 응급 즉시 대응 + 5분 내 출동</div>
1251
- <div class="target">서비스 운영 중인 기업·기관</div>
1252
- </div>
1253
- <div class="pricing-row">
1254
- <div class="tier">종합검진 (연 회원)</div>
1255
- <div class="price">1,000만 / 년</div>
1256
- <div class="desc">6진료과 전체 진단 + 분기별 정기 검진</div>
1257
- <div class="target">대기업 R&D, AI 자회사 운영처</div>
1258
- </div>
1259
- <div class="pricing-row">
1260
- <div class="tier">정부 라이선스</div>
1261
- <div class="price">별도 협의</div>
1262
- <div class="desc">부처·지자체 라이선스 + 진단 전문의 양성</div>
1263
- <div class="target">정부 부처, 광역지자체</div>
1264
- </div>
1265
- </div>
1266
- </section>
1267
-
1268
- <section class="section">
1269
- <div class="section-title">6개 진료과</div>
1270
- <h2 class="section-heading">한 병원에서 모든 진단·처방을 받는다.</h2>
1271
- <div class="feat-grid">
1272
- <div class="feat">
1273
- <div class="ico">🩻</div>
1274
- <h4>영상의학과 — 모델 X-Ray</h4>
1275
- <p>Activation Patching · Causal Tracing · Logit Lens 통합. 30층 LLM 각 layer에서 어느 지점이 환각·오류를 발생시키는지 정확히 식별.</p>
1276
- </div>
1277
- <div class="feat">
1278
- <div class="ico">🫀</div>
1279
- <h4>내과 — 모델 능력 진단</h4>
1280
- <p>정확도 · 환각 · 편향을 자동 측정. 한국어 문화·언어 이해(CLIcK 0.791) 포함 종합 검진.</p>
1281
- </div>
1282
- <div class="feat">
1283
- <div class="ico">⚕️</div>
1284
- <h4>외과 — 자동 처방·치료</h4>
1285
- <p>Fine-tuning · 증류(Distillation) · 교배(Crossbreeding) 자동 권고. Blackwell GPU 자동 할당·실행.</p>
1286
- </div>
1287
- <div class="feat">
1288
- <div class="ico">🧠</div>
1289
- <h4>정신의학과 — 안전성</h4>
1290
- <p>Alignment · Jailbreak · 프롬프트 인젝션 취약점 자동 점검. 미토스 류 보안 위협 사전 차단.</p>
1291
- </div>
1292
- <div class="feat">
1293
- <div class="ico">🚨</div>
1294
- <h4>응급실 — 24h 대응</h4>
1295
- <p>모델·서비스·앱 통합 응급 대응. 5분 내 대응, A/B 검증 후 안전 재배포 인증.</p>
1296
- </div>
1297
- <div class="feat">
1298
- <div class="ico">📜</div>
1299
- <h4>정책의학과 — AI 기본법 부합</h4>
1300
- <p>고영향 AI 영향평가·워터마크 자동 삽입·위험등급 자동 산출. 2026.01.26 시행 법령 자동 충족.</p>
1301
- </div>
1302
- </div>
1303
- </section>
1304
-
1305
- <section class="section">
1306
- <div class="section-title">데모</div>
1307
- <h2 class="section-heading">실제 작동하는 플랫폼.</h2>
1308
- <div class="embed-container">
1309
- <div class="embed-placeholder">
1310
- <div class="pico">🩺</div>
1311
- <h4>AX 종합병원 데모 곧 공개</h4>
1312
- <p>Phase 1 PoC (금융 1사 · 공공 1기관 · 의료 1병원 · 제조 대기업 1곳) 진행 중. 정식 데모는 베타 출시와 함께 공개됩니다.</p>
1313
- <a href="#ax-poc-form">사전 PoC 신청하기</a>
1314
- </div>
1315
- </div>
1316
- </section>
1317
-
1318
- <section class="section" id="ax-poc-form">
1319
- <div class="section-title">POC INQUIRY · 24H 응답</div>
1320
- <h2 class="section-heading">PoC 사전 신청 · 견적 문의.</h2>
1321
- <p class="section-sub">진단 대상 모델·서비스 규모·희망 일정을 알려주시면 담당자가 24시간 내 회신드립니다. 이메일은 <a href="mailto:contact@ginigen.net" style="color:var(--accent-cyan);">contact@ginigen.net</a>.</p>
1322
-
1323
- <form class="contact-form" action="https://formspree.io/f/YOUR_FORM_ID" method="POST">
1324
- <div class="form-row">
1325
- <label class="form-field">
1326
- <span class="form-label">이름<span class="req">*</span></span>
1327
- <input type="text" name="name" required placeholder="홍길동" autocomplete="name">
1328
- </label>
1329
- <label class="form-field">
1330
- <span class="form-label">회사명<span class="req">*</span></span>
1331
- <input type="text" name="company" required placeholder="㈜OOOO" autocomplete="organization">
1332
- </label>
1333
- </div>
1334
-
1335
- <label class="form-field">
1336
- <span class="form-label">LLM 종류<span class="req">*</span></span>
1337
- <select name="llm_type" required>
1338
- <option value="">— 선택해주세요 —</option>
1339
- <option value="inhouse">자체 학습 LLM (인하우스 from scratch)</option>
1340
- <option value="finetune">오픈소스 파인튜닝 (LLaMA · Qwen · Mistral 등)</option>
1341
- <option value="api">외부 API (OpenAI · Claude · Gemini 등)</option>
1342
- <option value="hybrid">하이브리드 (자체 + 외부 API 혼용)</option>
1343
- <option value="undecided">아직 결정 전</option>
1344
- <option value="other">기타</option>
1345
- </select>
1346
- </label>
1347
-
1348
- <label class="form-field">
1349
- <span class="form-label">문의 내용<span class="req">*</span></span>
1350
- <textarea name="message" rows="6" required placeholder="진단 대상 모델·서비스 규모·희망 일정 등 자유롭게 작성해주세요."></textarea>
1351
- </label>
1352
-
1353
- <input type="hidden" name="_subject" value="[지니젠AI · ginigen.net] AX 종합병원 PoC 문의">
1354
- <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">
1355
-
1356
- <button type="submit" class="btn btn-primary form-submit">
1357
- ✉ PoC 신청 보내기
1358
- </button>
1359
- <div class="form-note">
1360
- 제출 시 Formspree를 통해 contact@ginigen.net 으로 전달됩니다. 영업·마케팅 외 목적의 무단 수집은 차단됩니다.
1361
- </div>
1362
- </form>
1363
- </section>
1364
- </div>
1365
-
1366
- <!-- ============ 인공사회 ============ -->
1367
- <div id="society" class="tab-content">
1368
- <section class="detail-hero">
1369
- <div class="section-title">FOR GOVERNMENT · B2G</div>
1370
- <h2>한국 사회를<br><span class="accent">디지털로 먼저 살아보다</span>.</h2>
1371
- <p class="lead">
1372
- NationalOS는 인구통계·생애주기 기반으로 계층화된 5,200만 한국 페르소나 위에 576,000명의 LIVE NPC를 실시간으로 운용합니다. 정책·전환을 적용하면 6개월 후 무엇이 일어나는가 — 실행 전에 확인하세요.
1373
- </p>
1374
- </section>
1375
-
1376
- <section class="society-graph">
1377
- <div class="big">576,000</div>
1378
- <div class="big-lbl">LIVE NPCs · 지금 이 순간 실시간으로 살아 움직이는 디지털 시민들</div>
1379
- <div class="society-stats">
1380
- <div class="society-stat">
1381
- <div class="v">5,200만</div>
1382
- <div class="l">인구통계·생애주기 계층화 페르소나</div>
1383
- </div>
1384
- <div class="society-stat">
1385
- <div class="v">144</div>
1386
- <div class="l">Blackwell GPU (VIDRAFT 연합)</div>
1387
- </div>
1388
- <div class="society-stat">
1389
- <div class="v">6개월 → 3h</div>
1390
- <div class="l">시뮬레이션 시간 단축</div>
1391
- </div>
1392
- <div class="society-stat">
1393
- <div class="v">KR→JP→CN→US</div>
1394
- <div class="l">확장 로드맵</div>
1395
- </div>
1396
- </div>
1397
- </section>
1398
-
1399
- <section class="section">
1400
- <div class="section-title">LIVE DEMO · 3D</div>
1401
- <h2 class="section-heading">576,000 NPC, 실시간 3D 시뮬레이션.</h2>
1402
- <p class="section-sub">VIDRAFT NationalOS Live3D — 한반도 위 디지털 시민의 실시간 흐름을 브라우저에서 직접 확인.</p>
1403
- <div class="embed-container" style="min-height: 720px; padding: 12px;">
1404
- <iframe src="https://vidraft-nationalos.hf.space/live3d.html"
1405
- allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; xr-spatial-tracking"
1406
- allowfullscreen
1407
- loading="lazy"
1408
- style="width:100%; height:700px; border:none; border-radius:12px; background:#0B1437; display:block;"
1409
- title="NationalOS Live3D">
1410
- </iframe>
1411
- </div>
1412
- </section>
1413
-
1414
- <section class="section">
1415
- <div class="section-title">3 USE CASES</div>
1416
- <h2 class="section-heading">정부·기업·금융 — 디지털 트윈으로 검증하기.</h2>
1417
- <div class="feat-grid">
1418
- <div class="feat">
1419
- <div class="ico">🏛️</div>
1420
- <h4>정부 정책 사전 검증</h4>
1421
- <p>광역지자체·부처 정책을 5,200만 페르소나에 적용. 시민 반응·경제 효과·세대 갈등을 사전 시뮬레이션.</p>
1422
- </div>
1423
- <div class="feat">
1424
- <div class="ico">🏢</div>
1425
- <h4>기업 조직 디지털 트윈</h4>
1426
- <p>콜센터 300명 = 300 NPC. AI 전환 시나리오 적용 후 생산성·이직률·고객만족도 변화를 6개월 후까지 미리 본다.</p>
1427
- </div>
1428
- <div class="feat">
1429
- <div class="ico">💼</div>
1430
- <h4>금융·전자상거래 (Afford-X)</h4>
1431
- <p>VIDRAFT World Model 기반. 신상품·요금제·캠페인이 시장에서 어떻게 반응할지 디지털 사회에서 먼저 테스트.</p>
1432
- </div>
1433
- </div>
1434
- </section>
1435
-
1436
- <section class="section">
1437
- <div class="section-title">PHILOSOPHY</div>
1438
- <h2 class="section-heading">"FFN as Society"</h2>
1439
- <p class="section-sub">
1440
- AI는 더 이상 도구가 아니라 사회 자체의 모형이 됩니다. 우리는 한국 사회의 다층 구조 — 세대·지역·산업·가치관 — 를 인구통계·생애주기 차원의 계층 변수로 인코딩하여, "한국적 의사결정"을 시뮬레이션 가능한 형태로 코드화했습니다.
1441
- </p>
1442
- <div class="feat-grid">
1443
- <div class="feat">
1444
- <div class="ico">📊</div>
1445
- <h4>인구통계·생애주기 계층화</h4>
1446
- <p>출생 연도·성별·지역·세대를 차원으로 5,200만 페르소나 분포 재구성.</p>
1447
- </div>
1448
- <div class="feat">
1449
- <div class="ico">⚡</div>
1450
- <h4>LIVE NPC</h4>
1451
- <p>576K NPC가 24시간 실시간으로 의사결정·소비·이동. PoC가 아닌 가동 중인 인프라.</p>
1452
- </div>
1453
- <div class="feat">
1454
- <div class="ico">🌏</div>
1455
- <h4>아시아 확장</h4>
1456
- <p>한국 검증 후 일본·중국·미국 페르소나로 확장. 글로벌 정책 시뮬레이션 표준화.</p>
1457
- </div>
1458
- </div>
1459
- </section>
1460
- </div>
1461
-
1462
- <!-- ============ GiniGen Studio ============ -->
1463
- <div id="banana" class="tab-content">
1464
  <section class="detail-hero">
1465
  <div class="section-title">FOR CREATORS · B2B + B2C</div>
1466
  <h2>대량 한글 텍스트를 깨짐 없이 렌더링하는<br><span class="accent">한글 특화 AI 콘텐츠 스튜디오</span>.</h2>
1467
  <p class="lead">
1468
- 영상 · 이미지 · 카드뉴스 · 웹툰 · 음악. AI 영상 모델이 한국어 텍스트를 망뜨릴 때, GiniGen Studio는 100% 보존합니다. 기업 홍보부터 1인 크리이터까지.
1469
  </p>
1470
- </section>
1471
-
1472
- <section class="section">
1473
- <div class="section-title">CORE VALUE</div>
1474
- <h2 class="section-heading">왜 GiniGen Studio인가.</h2>
1475
- <div class="feat-grid">
1476
- <div class="feat">
1477
- <div class="ico">🇰🇷</div>
1478
- <h4>한국어 100% 보존</h4>
1479
- <p>한글 텍스트 렌더링을 최우선으로 최적화한 AI 영상·이미지 스튜디오. 글로벌 모델의 한계를 해결.</p>
1480
- </div>
1481
- <div class="feat">
1482
- <div class="ico">🎬</div>
1483
- <h4>대용량 텍스트 지원</h4>
1484
- <p>장문 영상 스크립트·웹툰 한 화 분량을 한 번에. 글자 수 제약 없이 콘텐츠 생성.</p>
1485
- </div>
1486
- <div class="feat">
1487
- <div class="ico">⚙️</div>
1488
- <h4>5종 통합 워크플로우</h4>
1489
- <p>영상 → 이미지 ��� 카드뉴스 → 웹툰 → 음악. 한 프로젝트에서 모두 연결.</p>
1490
- </div>
1491
- </div>
1492
- </section>
1493
-
1494
- <section class="section">
1495
- <div class="section-title">TWO MARKETS</div>
1496
- <h2 class="section-heading">B2B와 B2C, 양면 전략.</h2>
1497
- <div class="feat-grid" style="grid-template-columns: 1fr 1fr;">
1498
- <div class="feat">
1499
- <div class="ico">🏢</div>
1500
- <h4>B2B — 기업 홍보 영상 자동화</h4>
1501
- <p>마케팅팀 · 광고대행사 · 미디어 기업 대상. 한국어 광고 영상·기업 IR 영상·소셜 콘텐츠를 시간/10·비용/20으로 단축.</p>
1502
- </div>
1503
- <div class="feat">
1504
- <div class="ico">🎨</div>
1505
- <h4>B2C — 1인 크리에이터 도구</h4>
1506
- <p>웹툰 작가 · 카드뉴스 운영자 · 음악 콘텐츠 크리에이터 대상. 카드뉴스부터 웹툰 한 화까지 1인이 끝낸다.</p>
1507
- </div>
1508
- </div>
1509
- </section>
1510
-
1511
- <section class="section">
1512
- <div class="section-title">LIVE PLATFORM</div>
1513
- <h2 class="section-heading">지금 바로 사용 가능합니다.</h2>
1514
- <div class="embed-container">
1515
- <div class="embed-placeholder">
1516
- <div class="pico">🎬</div>
1517
- <h4>GiniGen Studio 정식 운영 중</h4>
1518
- <p>ginigen.ai 도메인에서 정식 서비스 운영 중. Quick Start · Content Studio · Pro Studio · Tools 라인업 제공.</p>
1519
- <a href="https://www.ginigen.ai" target="_blank">ginigen.ai에서 시작하기</a>
1520
- </div>
1521
  </div>
1522
  </section>
1523
  </div>
@@ -1539,7 +244,7 @@
1539
  <div class="feat">
1540
  <div class="ico">🏅</div>
1541
  <h4>과기정통부 + NIA · K-AI 리더보드</h4>
1542
- <p><strong>Rogue-28B-MIX 종합 2위 (0.559) · Rogue-28B-KR 5위 (0.530)</strong><br>1위와 점수 차 0.011. 한 회사가 Top 5에 동시 등재된 유일 사례. API 호출 없이 모델 자체 성능 평가.</p>
1543
  </div>
1544
  <div class="feat">
1545
  <div class="ico">⚡</div>
@@ -1698,26 +403,18 @@
1698
  </footer>
1699
 
1700
  <script>
1701
- // ============ TAB SWITCHING ============
1702
- function switchTab(name) {
1703
- document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));
1704
- document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
1705
- const btn = document.querySelector(`.tab[data-tab="${name}"]`);
1706
- const con = document.getElementById(name);
1707
- if (btn) btn.classList.add('active');
1708
- if (con) con.classList.add('active');
1709
- window.scrollTo({ top: 0, behavior: 'smooth' });
1710
- }
1711
- document.querySelectorAll('.tab').forEach(tab => {
1712
- tab.addEventListener('click', e => {
1713
- e.preventDefault();
1714
- switchTab(tab.getAttribute('data-tab'));
1715
  });
1716
- });
1717
 
1718
  // ============ PARTICLES ============
1719
  const pc = document.getElementById('particles');
1720
- const palette = ['#00D9FF', '#A855F7', '#D946EF', '#3B82F6'];
1721
  for (let i = 0; i < 26; i++) {
1722
  const p = document.createElement('div');
1723
  p.className = 'particle';
 
18
  <link rel="icon" type="image/png" href="logo-stacked.png">
19
  <link rel="apple-touch-icon" href="logo-stacked.png">
20
  <link href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css" rel="stylesheet">
21
+ <link rel="stylesheet" href="site.css">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  </head>
23
  <body>
24
  <!-- NAVIGATION -->
25
  <nav class="nav-container">
26
  <div class="nav-left">
27
+ <a href="/" class="logo" aria-label="GiniGen AI 홈">
28
  <img src="logo.png" alt="GiniGen" class="logo-img">
29
  <span class="logo-sub">AI</span>
30
  </a>
31
  <div class="tabs">
32
+ <a class="tab" href="/ax.html">AX Hospital</a>
33
+ <a class="tab" href="/society.html">Society</a>
34
+ <a class="tab" href="#studio">Studio</a>
35
+ <a class="tab" href="#trust">Proof</a>
36
+ <a class="tab" href="#press">Press</a>
37
+ <a class="tab" href="#contact">Contact</a>
38
  </div>
39
  </div>
40
  <!-- TODO: xray.ginigen.net 서브도메인 + SSL 적용 후 http://211.233.58.201:7906/ 로 복원 -->
41
+ <a class="powered-by live-link" href="/ax.html#ax-poc-form" aria-label="AX X-Ray 데모 신청 (PoC 폼으로 이동)">
42
  <span class="dot live-dot"></span>
43
  <span>데모 신청</span>
44
  <span class="live-arrow">↗</span>
 
92
  </p>
93
  <div class="pillars">
94
 
95
+ <div class="pillar" data-color="cyan" onclick="location.href='/ax.html'">
96
  <div class="pillar-icon">🩺</div>
97
  <div class="pillar-tag">FOR ENTERPRISE · B2B</div>
98
  <h3>AX 종합병원</h3>
 
106
  <span class="pillar-cta">상세 보기</span>
107
  </div>
108
 
109
+ <div class="pillar" data-color="blue" onclick="location.href='/society.html'">
110
  <div class="pillar-icon">🌐</div>
111
  <div class="pillar-tag">FOR GOVERNMENT · B2G</div>
112
  <h3>인공사회 (NationalOS)</h3>
 
120
  <span class="pillar-cta">상세 보기</span>
121
  </div>
122
 
123
+ <div class="pillar" data-color="gold" onclick="location.href='#studio'">
124
  <div class="pillar-icon">🎬</div>
125
  <div class="pillar-tag">FOR CREATORS · B2B+B2C</div>
126
  <h3>GiniGen Studio</h3>
 
211
  </section>
212
  </div>
213
 
214
+ <!-- ============ GiniGen Studio (압축 · ginigen.ai로 퍼널 이관) ============ -->
215
+ <div id="studio" class="tab-content">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  <section class="detail-hero">
217
  <div class="section-title">FOR CREATORS · B2B + B2C</div>
218
  <h2>대량 한글 텍스트를 깨짐 없이 렌더링하는<br><span class="accent">한글 특화 AI 콘텐츠 스튜디오</span>.</h2>
219
  <p class="lead">
220
+ 영상·카드뉴스·웹툰·음악 하나의 워크플우에서 생성합니다. HuggingFace 100만 MAU실사용으로 검증한 한글 콘텐츠 파이프라인 실제 서비스는 ginigen.ai서 운영 중.
221
  </p>
222
+ <div class="hero-cta-row">
223
+ <a href="https://www.ginigen.ai/ko" target="_blank" rel="noopener" class="btn btn-primary">
224
+ 🎬 지니젠 스튜디오 시작하기 ↗
225
+ </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
226
  </div>
227
  </section>
228
  </div>
 
244
  <div class="feat">
245
  <div class="ico">🏅</div>
246
  <h4>과기정통부 + NIA · K-AI 리더보드</h4>
247
+ <p><strong>Rogue-28B-MIX 종합 2위 (0.559) · Rogue-28B-KR 5위 (0.530)</strong><br>1위와 점수 차 0.011. 한 회사가 Top 5에 동시 등재된 국내 검증 사례 (2026.04). API 호출 없이 모델 자체 성능 평가.</p>
248
  </div>
249
  <div class="feat">
250
  <div class="ico">⚡</div>
 
403
  </footer>
404
 
405
  <script>
406
+ // ============ NAV ACTIVE STATE ============
407
+ (function() {
408
+ const hash = location.hash || '';
409
+ document.querySelectorAll('.tabs .tab').forEach(tab => {
410
+ const href = tab.getAttribute('href');
411
+ if (hash && href === hash) tab.classList.add('active');
 
 
 
 
 
 
 
 
412
  });
413
+ })();
414
 
415
  // ============ PARTICLES ============
416
  const pc = document.getElementById('particles');
417
+ const palette = ['#0AB4CC', '#A855F7', '#D946EF', '#3B82F6'];
418
  for (let i = 0; i < 26; i++) {
419
  const p = document.createElement('div');
420
  p.className = 'particle';
site.css ADDED
@@ -0,0 +1,991 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --bg-deep: #0E1B2A;
3
+ --bg-mid: #33337A;
4
+ --bg-light: #1E3A8A;
5
+ --accent-blue: #3B82F6;
6
+ --accent-cyan: #0AB4CC;
7
+ --accent-violet: #A855F7;
8
+ --accent-magenta: #D946EF;
9
+ --accent-gold: #E5B584;
10
+ --text-primary: #F8FAFC;
11
+ --text-secondary: rgba(226, 232, 240, 0.78);
12
+ --text-muted: rgba(226, 232, 240, 0.55);
13
+ --surface: rgba(255, 255, 255, 0.06);
14
+ --surface-hover: rgba(255, 255, 255, 0.10);
15
+ --border: rgba(255, 255, 255, 0.10);
16
+ --border-bright: rgba(0, 217, 255, 0.40);
17
+ --border-violet: rgba(168, 85, 247, 0.40);
18
+ --gradient-logo: linear-gradient(135deg, #3B82F6 0%, #A855F7 55%, #D946EF 100%);
19
+ --gradient-aurora: linear-gradient(135deg, #00D9FF 0%, #3B82F6 35%, #A855F7 75%, #D946EF 100%);
20
+ }
21
+
22
+ * { margin: 0; padding: 0; box-sizing: border-box; }
23
+
24
+ html { scroll-behavior: smooth; }
25
+ [id] { scroll-margin-top: 100px; }
26
+
27
+ body {
28
+ font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', sans-serif;
29
+ background: var(--bg-deep);
30
+ background-image:
31
+ radial-gradient(ellipse 80% 50% at 20% 0%, rgba(59, 130, 246, 0.18) 0%, transparent 50%),
32
+ radial-gradient(ellipse 70% 60% at 80% 30%, rgba(0, 217, 255, 0.12) 0%, transparent 50%),
33
+ radial-gradient(ellipse 55% 45% at 90% 75%, rgba(168, 85, 247, 0.14) 0%, transparent 60%),
34
+ radial-gradient(ellipse 50% 40% at 10% 90%, rgba(217, 70, 239, 0.08) 0%, transparent 60%),
35
+ radial-gradient(ellipse 60% 50% at 50% 100%, rgba(30, 58, 138, 0.30) 0%, transparent 60%);
36
+ color: var(--text-primary);
37
+ min-height: 100vh;
38
+ overflow-x: hidden;
39
+ line-height: 1.6;
40
+ }
41
+
42
+ /* ============ NAVIGATION ============ */
43
+ .nav-container {
44
+ position: fixed;
45
+ top: 0; left: 0; right: 0;
46
+ background: rgba(11, 20, 55, 0.72);
47
+ backdrop-filter: blur(16px);
48
+ -webkit-backdrop-filter: blur(16px);
49
+ border-bottom: 1px solid var(--border);
50
+ z-index: 1000;
51
+ padding: 16px 40px;
52
+ display: flex;
53
+ justify-content: space-between;
54
+ align-items: center;
55
+ }
56
+ .nav-left { display: flex; align-items: center; gap: 36px; }
57
+ .logo {
58
+ display: flex;
59
+ align-items: center;
60
+ gap: 10px;
61
+ cursor: pointer;
62
+ text-decoration: none;
63
+ height: 32px;
64
+ }
65
+ .logo-img {
66
+ height: 26px;
67
+ width: auto;
68
+ display: block;
69
+ filter: drop-shadow(0 0 14px rgba(167, 139, 250, 0.32));
70
+ transition: filter 0.25s ease;
71
+ }
72
+ .logo:hover .logo-img {
73
+ filter: drop-shadow(0 0 18px rgba(167, 139, 250, 0.55));
74
+ }
75
+ .logo-sub {
76
+ font-size: 11px;
77
+ color: var(--text-muted);
78
+ font-weight: 600;
79
+ letter-spacing: 1.2px;
80
+ padding: 3px 7px;
81
+ border: 1px solid var(--border);
82
+ border-radius: 6px;
83
+ }
84
+ .tabs { display: flex; gap: 6px; }
85
+ .tab {
86
+ color: var(--text-secondary);
87
+ text-decoration: none;
88
+ font-size: 14.5px;
89
+ font-weight: 600;
90
+ padding: 8px 16px;
91
+ border-radius: 8px;
92
+ transition: all 0.25s ease;
93
+ cursor: pointer;
94
+ border: none;
95
+ background: transparent;
96
+ }
97
+ .tab:hover { background: var(--surface-hover); color: var(--text-primary); }
98
+ .tab.active {
99
+ background: linear-gradient(135deg, rgba(59, 130, 246, 0.22) 0%, rgba(168, 85, 247, 0.18) 60%, rgba(0, 217, 255, 0.14) 100%);
100
+ color: var(--accent-cyan);
101
+ border: 1px solid var(--border-bright);
102
+ }
103
+ .powered-by {
104
+ color: var(--text-muted);
105
+ font-size: 12px;
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 8px;
109
+ }
110
+ .powered-by .dot {
111
+ width: 6px; height: 6px; border-radius: 50%;
112
+ background: #10B981;
113
+ box-shadow: 0 0 8px #10B981;
114
+ animation: pulse 2s infinite;
115
+ }
116
+ @keyframes pulse { 0%,100%{opacity:1;} 50%{opacity:0.4;} }
117
+
118
+ .live-link {
119
+ text-decoration: none;
120
+ color: var(--text-secondary);
121
+ padding: 7px 14px;
122
+ border: 1px solid var(--border);
123
+ border-radius: 999px;
124
+ transition: all 0.2s ease;
125
+ font-weight: 600;
126
+ font-size: 12.5px;
127
+ }
128
+ .live-link:hover {
129
+ color: var(--accent-cyan);
130
+ border-color: var(--border-bright);
131
+ background: var(--surface-hover);
132
+ }
133
+ .live-dot {
134
+ background: #EF4444 !important;
135
+ box-shadow: 0 0 10px #EF4444 !important;
136
+ }
137
+ .live-arrow {
138
+ font-size: 11px;
139
+ opacity: 0.7;
140
+ transition: transform 0.2s;
141
+ margin-left: 2px;
142
+ }
143
+ .live-link:hover .live-arrow {
144
+ transform: translate(2px, -2px);
145
+ opacity: 1;
146
+ }
147
+
148
+ /* ============ PARTICLES (Network Nodes) ============ */
149
+ .particles {
150
+ position: fixed;
151
+ inset: 0;
152
+ overflow: hidden;
153
+ z-index: 1;
154
+ pointer-events: none;
155
+ }
156
+ .particle {
157
+ position: absolute;
158
+ width: 3px; height: 3px;
159
+ background: var(--accent-cyan);
160
+ border-radius: 50%;
161
+ box-shadow: 0 0 12px var(--accent-cyan);
162
+ opacity: 0.4;
163
+ animation: drift 25s infinite ease-in-out;
164
+ }
165
+ @keyframes drift {
166
+ 0%, 100% { transform: translateY(0) translateX(0); opacity: 0.2; }
167
+ 50% { transform: translateY(-60vh) translateX(40px); opacity: 0.6; }
168
+ }
169
+
170
+ /* ============ MAIN ============ */
171
+ .container {
172
+ position: relative;
173
+ z-index: 10;
174
+ max-width: 1240px;
175
+ margin: 0 auto;
176
+ padding: 110px 24px 80px;
177
+ }
178
+
179
+ .tab-content { display: block; }
180
+ .tab-content.active { display: block; }
181
+ @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
182
+
183
+ /* ============ HERO ============ */
184
+ .hero {
185
+ position: relative;
186
+ margin: -110px calc(50% - 50vw) 0;
187
+ width: 100vw;
188
+ padding: 160px 24px 100px;
189
+ min-height: 760px;
190
+ display: flex;
191
+ flex-direction: column;
192
+ justify-content: center;
193
+ align-items: center;
194
+ text-align: center;
195
+ overflow: hidden;
196
+ }
197
+ .hero-bg {
198
+ position: absolute;
199
+ inset: 0;
200
+ z-index: 0;
201
+ overflow: hidden;
202
+ background: var(--bg-deep);
203
+ }
204
+ .hero-bg video {
205
+ width: 100%;
206
+ height: 100%;
207
+ object-fit: cover;
208
+ display: block;
209
+ }
210
+ .hero-overlay {
211
+ position: absolute;
212
+ inset: 0;
213
+ z-index: 1;
214
+ background:
215
+ linear-gradient(180deg,
216
+ rgba(11, 20, 55, 0.55) 0%,
217
+ rgba(11, 20, 55, 0.40) 40%,
218
+ rgba(11, 20, 55, 0.85) 92%,
219
+ var(--bg-deep) 100%),
220
+ radial-gradient(ellipse at 78% 28%, rgba(168, 85, 247, 0.14) 0%, transparent 55%),
221
+ radial-gradient(ellipse at 22% 72%, rgba(0, 217, 255, 0.10) 0%, transparent 55%),
222
+ radial-gradient(ellipse at center, transparent 0%, rgba(11, 20, 55, 0.45) 100%);
223
+ pointer-events: none;
224
+ }
225
+ .hero-content {
226
+ position: relative;
227
+ z-index: 2;
228
+ max-width: 820px;
229
+ width: 100%;
230
+ }
231
+ .hero-badge {
232
+ display: inline-flex;
233
+ align-items: center;
234
+ gap: 8px;
235
+ padding: 8px 16px;
236
+ background: rgba(229, 181, 132, 0.12);
237
+ border: 1px solid rgba(229, 181, 132, 0.35);
238
+ border-radius: 999px;
239
+ font-size: 12.5px;
240
+ font-weight: 600;
241
+ color: var(--accent-gold);
242
+ margin-bottom: 24px;
243
+ letter-spacing: 0.3px;
244
+ }
245
+ .hero h1 {
246
+ font-size: clamp(36px, 6vw, 64px);
247
+ font-weight: 800;
248
+ line-height: 1.15;
249
+ letter-spacing: -1.5px;
250
+ margin-bottom: 20px;
251
+ text-shadow: 0 4px 30px rgba(0, 0, 0, 0.50);
252
+ }
253
+ .hero h1 .accent {
254
+ background: var(--gradient-aurora);
255
+ -webkit-background-clip: text;
256
+ -webkit-text-fill-color: transparent;
257
+ background-clip: text;
258
+ }
259
+ .hero p {
260
+ font-size: clamp(15px, 2vw, 19px);
261
+ color: var(--text-secondary);
262
+ max-width: 720px;
263
+ margin: 0 auto 36px;
264
+ line-height: 1.7;
265
+ text-shadow: 0 2px 16px rgba(0, 0, 0, 0.45);
266
+ }
267
+ .hero-stats {
268
+ display: grid;
269
+ grid-template-columns: repeat(3, 1fr);
270
+ gap: 16px;
271
+ max-width: 760px;
272
+ margin: 0 auto;
273
+ }
274
+ .hero-stat {
275
+ background: var(--surface);
276
+ border: 1px solid var(--border);
277
+ border-radius: 14px;
278
+ padding: 20px 16px;
279
+ backdrop-filter: blur(8px);
280
+ }
281
+ .hero-stat .num {
282
+ font-size: 28px;
283
+ font-weight: 800;
284
+ background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-violet) 100%);
285
+ -webkit-background-clip: text;
286
+ -webkit-text-fill-color: transparent;
287
+ background-clip: text;
288
+ letter-spacing: -0.5px;
289
+ }
290
+ .hero-stat .label {
291
+ font-size: 13px;
292
+ color: var(--text-secondary);
293
+ margin-top: 4px;
294
+ }
295
+
296
+ /* ============ SECTION TITLE ============ */
297
+ .section {
298
+ margin-top: 110px;
299
+ }
300
+ .tab-content > .section:first-of-type {
301
+ margin-top: 60px;
302
+ }
303
+ .section-title {
304
+ font-size: 11.5px;
305
+ font-weight: 600;
306
+ color: var(--accent-violet);
307
+ letter-spacing: 1.6px;
308
+ text-transform: uppercase;
309
+ margin-bottom: 14px;
310
+ display: inline-flex;
311
+ align-items: center;
312
+ gap: 10px;
313
+ opacity: 0.85;
314
+ }
315
+ .section-title::before {
316
+ content: '';
317
+ width: 22px;
318
+ height: 1px;
319
+ background: var(--accent-violet);
320
+ opacity: 0.5;
321
+ }
322
+ .section-heading {
323
+ font-size: clamp(28px, 3.6vw, 40px);
324
+ font-weight: 700;
325
+ line-height: 1.18;
326
+ letter-spacing: -0.6px;
327
+ margin-bottom: 18px;
328
+ }
329
+ .section-sub {
330
+ font-size: 16px;
331
+ color: var(--text-secondary);
332
+ max-width: 680px;
333
+ margin-bottom: 44px;
334
+ line-height: 1.7;
335
+ font-weight: 400;
336
+ }
337
+
338
+ /* ============ 3 PILLARS ============ */
339
+ .pillars {
340
+ display: grid;
341
+ grid-template-columns: repeat(3, 1fr);
342
+ gap: 20px;
343
+ }
344
+ .pillar {
345
+ position: relative;
346
+ background: linear-gradient(160deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.01) 100%);
347
+ border: 1px solid var(--border);
348
+ border-radius: 18px;
349
+ padding: 36px 28px;
350
+ transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
351
+ overflow: hidden;
352
+ cursor: pointer;
353
+ backdrop-filter: blur(12px);
354
+ -webkit-backdrop-filter: blur(12px);
355
+ }
356
+ .pillar::before {
357
+ content: '';
358
+ position: absolute;
359
+ top: 0; left: 0; right: 0;
360
+ height: 3px;
361
+ background: var(--gradient);
362
+ opacity: 0.8;
363
+ }
364
+ .pillar:hover {
365
+ transform: translateY(-3px);
366
+ border-color: var(--border-bright);
367
+ box-shadow:
368
+ 0 16px 40px rgba(0, 217, 255, 0.10),
369
+ 0 8px 24px rgba(168, 85, 247, 0.09);
370
+ }
371
+ .pillar[data-color="cyan"] { --gradient: linear-gradient(90deg, #00D9FF, #3B82F6); }
372
+ .pillar[data-color="blue"] { --gradient: linear-gradient(90deg, #3B82F6, #A855F7, #D946EF); }
373
+ .pillar[data-color="gold"] { --gradient: linear-gradient(90deg, #E5B584, #D946EF); }
374
+
375
+ .pillar-icon {
376
+ width: 52px; height: 52px;
377
+ border-radius: 14px;
378
+ background: var(--gradient);
379
+ display: flex;
380
+ align-items: center;
381
+ justify-content: center;
382
+ font-size: 26px;
383
+ margin-bottom: 18px;
384
+ box-shadow: 0 8px 20px rgba(0, 217, 255, 0.18);
385
+ }
386
+ .pillar-tag {
387
+ display: inline-block;
388
+ font-size: 11px;
389
+ font-weight: 700;
390
+ color: var(--accent-cyan);
391
+ letter-spacing: 1.5px;
392
+ margin-bottom: 8px;
393
+ }
394
+ .pillar h3 {
395
+ font-size: 23px;
396
+ font-weight: 700;
397
+ margin-bottom: 12px;
398
+ letter-spacing: -0.6px;
399
+ }
400
+ .pillar .tagline {
401
+ font-size: 14.5px;
402
+ color: var(--text-secondary);
403
+ line-height: 1.7;
404
+ margin-bottom: 20px;
405
+ font-weight: 400;
406
+ }
407
+ .pillar ul {
408
+ list-style: none;
409
+ padding: 0;
410
+ border-top: 1px solid var(--border);
411
+ padding-top: 16px;
412
+ }
413
+ .pillar ul li {
414
+ font-size: 13.5px;
415
+ color: var(--text-muted);
416
+ padding: 5px 0;
417
+ display: flex;
418
+ align-items: flex-start;
419
+ gap: 8px;
420
+ }
421
+ .pillar ul li::before {
422
+ content: '◆';
423
+ color: var(--accent-cyan);
424
+ font-size: 8px;
425
+ margin-top: 6px;
426
+ flex-shrink: 0;
427
+ }
428
+ .pillar-cta {
429
+ display: inline-block;
430
+ margin-top: 18px;
431
+ font-size: 13px;
432
+ font-weight: 700;
433
+ color: var(--accent-cyan);
434
+ text-decoration: none;
435
+ transition: gap 0.2s;
436
+ }
437
+ .pillar-cta:hover { gap: 12px; }
438
+ .pillar-cta::after { content: ' →'; }
439
+
440
+ /* ============ TRUST BAR ============ */
441
+ .trust-bar {
442
+ margin-top: 70px;
443
+ background: linear-gradient(135deg, rgba(229, 181, 132, 0.10) 0%, rgba(168, 85, 247, 0.07) 50%, rgba(0, 217, 255, 0.06) 100%);
444
+ border: 1px solid rgba(229, 181, 132, 0.25);
445
+ border-radius: 20px;
446
+ padding: 32px 28px;
447
+ }
448
+ .trust-bar-head {
449
+ display: flex;
450
+ align-items: center;
451
+ gap: 12px;
452
+ margin-bottom: 22px;
453
+ flex-wrap: wrap;
454
+ }
455
+ .trust-bar-head .gold-badge {
456
+ background: linear-gradient(135deg, #E5B584, #F2D2A8);
457
+ color: #1F2937;
458
+ font-size: 11px;
459
+ font-weight: 800;
460
+ padding: 5px 12px;
461
+ border-radius: 6px;
462
+ letter-spacing: 1px;
463
+ }
464
+ .trust-bar-head h3 {
465
+ font-size: 20px;
466
+ font-weight: 800;
467
+ letter-spacing: -0.5px;
468
+ }
469
+ .trust-grid {
470
+ display: grid;
471
+ grid-template-columns: repeat(4, 1fr);
472
+ gap: 16px;
473
+ }
474
+ .trust-item {
475
+ text-align: left;
476
+ }
477
+ .trust-item .val {
478
+ font-size: 22px;
479
+ font-weight: 800;
480
+ color: var(--accent-gold);
481
+ letter-spacing: -0.5px;
482
+ }
483
+ .trust-item .lbl {
484
+ font-size: 12.5px;
485
+ color: var(--text-secondary);
486
+ margin-top: 4px;
487
+ line-height: 1.4;
488
+ }
489
+
490
+ /* ============ TRENDS ============ */
491
+ .trends-grid {
492
+ display: grid;
493
+ grid-template-columns: repeat(3, 1fr);
494
+ gap: 14px;
495
+ }
496
+ .trend-card {
497
+ background: var(--surface);
498
+ border: 1px solid var(--border);
499
+ border-radius: 14px;
500
+ padding: 22px 20px;
501
+ }
502
+ .trend-card .yr {
503
+ font-size: 11px;
504
+ font-weight: 700;
505
+ color: var(--accent-cyan);
506
+ letter-spacing: 1px;
507
+ margin-bottom: 8px;
508
+ }
509
+ .trend-card h4 {
510
+ font-size: 16px;
511
+ font-weight: 700;
512
+ margin-bottom: 8px;
513
+ line-height: 1.3;
514
+ }
515
+ .trend-card p {
516
+ font-size: 13px;
517
+ color: var(--text-secondary);
518
+ line-height: 1.55;
519
+ }
520
+ .trend-card .stat {
521
+ margin-top: 10px;
522
+ font-size: 13px;
523
+ color: var(--accent-gold);
524
+ font-weight: 700;
525
+ }
526
+
527
+ /* ============ DETAIL PAGES (AX / Society / Studio) ============ */
528
+ .detail-hero {
529
+ text-align: left;
530
+ padding: 50px 0 30px;
531
+ }
532
+ .detail-hero h2 {
533
+ font-size: clamp(32px, 4.6vw, 50px);
534
+ font-weight: 700;
535
+ line-height: 1.12;
536
+ letter-spacing: -1px;
537
+ margin-bottom: 22px;
538
+ }
539
+ .detail-hero .accent {
540
+ background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-violet) 100%);
541
+ -webkit-background-clip: text;
542
+ -webkit-text-fill-color: transparent;
543
+ background-clip: text;
544
+ }
545
+ .detail-hero .lead {
546
+ font-size: 17.5px;
547
+ color: var(--text-secondary);
548
+ max-width: 720px;
549
+ line-height: 1.7;
550
+ font-weight: 400;
551
+ }
552
+
553
+ .hero-cta-row {
554
+ display: flex;
555
+ gap: 12px;
556
+ margin-top: 28px;
557
+ flex-wrap: wrap;
558
+ }
559
+ .btn {
560
+ display: inline-flex;
561
+ align-items: center;
562
+ gap: 8px;
563
+ padding: 14px 26px;
564
+ border-radius: 999px;
565
+ font-weight: 700;
566
+ font-size: 15px;
567
+ text-decoration: none;
568
+ transition: all 0.2s ease;
569
+ border: 1px solid transparent;
570
+ cursor: pointer;
571
+ }
572
+ .btn-primary {
573
+ background: var(--gradient-logo);
574
+ color: white;
575
+ box-shadow:
576
+ 0 10px 28px rgba(168, 85, 247, 0.28),
577
+ 0 6px 18px rgba(0, 217, 255, 0.18);
578
+ }
579
+ .btn-primary:hover {
580
+ transform: translateY(-2px);
581
+ box-shadow:
582
+ 0 14px 38px rgba(217, 70, 239, 0.36),
583
+ 0 8px 22px rgba(0, 217, 255, 0.22);
584
+ }
585
+ .btn-ghost {
586
+ background: var(--surface);
587
+ color: var(--accent-cyan);
588
+ border-color: var(--border-bright);
589
+ }
590
+ .btn-ghost:hover {
591
+ background: var(--surface-hover);
592
+ border-color: var(--accent-cyan);
593
+ }
594
+ .hero-price-strip {
595
+ margin-top: 22px;
596
+ padding: 14px 20px;
597
+ background: linear-gradient(135deg, rgba(229, 181, 132, 0.10) 0%, rgba(0, 217, 255, 0.06) 100%);
598
+ border: 1px solid rgba(229, 181, 132, 0.30);
599
+ border-radius: 12px;
600
+ font-size: 14px;
601
+ color: var(--text-secondary);
602
+ display: inline-block;
603
+ }
604
+ .hero-price-strip strong {
605
+ color: var(--accent-gold);
606
+ font-weight: 800;
607
+ }
608
+
609
+ /* ============ CONTACT FORM (Formspree) ============ */
610
+ .contact-form {
611
+ display: flex;
612
+ flex-direction: column;
613
+ gap: 18px;
614
+ max-width: 720px;
615
+ margin-top: 30px;
616
+ background: var(--surface);
617
+ border: 1px solid var(--border);
618
+ border-radius: 18px;
619
+ padding: 32px 30px;
620
+ backdrop-filter: blur(12px);
621
+ -webkit-backdrop-filter: blur(12px);
622
+ }
623
+ .form-row {
624
+ display: grid;
625
+ grid-template-columns: 1fr 1fr;
626
+ gap: 16px;
627
+ }
628
+ .form-field {
629
+ display: flex;
630
+ flex-direction: column;
631
+ gap: 8px;
632
+ }
633
+ .form-label {
634
+ font-size: 11.5px;
635
+ font-weight: 600;
636
+ color: var(--accent-violet);
637
+ letter-spacing: 1.4px;
638
+ text-transform: uppercase;
639
+ }
640
+ .form-label .req { color: var(--accent-magenta); margin-left: 3px; }
641
+ .contact-form input,
642
+ .contact-form select,
643
+ .contact-form textarea {
644
+ padding: 13px 16px;
645
+ background: rgba(11, 20, 55, 0.40);
646
+ border: 1px solid var(--border);
647
+ border-radius: 12px;
648
+ color: var(--text-primary);
649
+ font-family: inherit;
650
+ font-size: 15px;
651
+ transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
652
+ }
653
+ .contact-form input::placeholder,
654
+ .contact-form textarea::placeholder {
655
+ color: var(--text-muted);
656
+ }
657
+ .contact-form input:focus,
658
+ .contact-form select:focus,
659
+ .contact-form textarea:focus {
660
+ outline: none;
661
+ border-color: var(--accent-cyan);
662
+ background: rgba(11, 20, 55, 0.55);
663
+ box-shadow: 0 0 0 3px rgba(0, 217, 255, 0.12);
664
+ }
665
+ .contact-form textarea { resize: vertical; line-height: 1.6; min-height: 120px; }
666
+ .contact-form select {
667
+ cursor: pointer;
668
+ appearance: none;
669
+ -webkit-appearance: none;
670
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%23A855F7' d='M6 8L0 0h12z'/></svg>");
671
+ background-repeat: no-repeat;
672
+ background-position: right 16px center;
673
+ padding-right: 40px;
674
+ }
675
+ .contact-form select option {
676
+ background: var(--bg-deep);
677
+ color: var(--text-primary);
678
+ }
679
+ .form-submit {
680
+ margin-top: 6px;
681
+ align-self: flex-start;
682
+ border: none;
683
+ font-family: inherit;
684
+ font-size: 15px;
685
+ cursor: pointer;
686
+ }
687
+ .form-note {
688
+ font-size: 12.5px;
689
+ color: var(--text-muted);
690
+ line-height: 1.55;
691
+ margin-top: 4px;
692
+ }
693
+ @media (max-width: 700px) {
694
+ .form-row { grid-template-columns: 1fr; }
695
+ .contact-form { padding: 24px 20px; }
696
+ }
697
+
698
+ .feat-grid {
699
+ display: grid;
700
+ grid-template-columns: repeat(3, 1fr);
701
+ gap: 16px;
702
+ margin-top: 30px;
703
+ }
704
+ .feat {
705
+ background: var(--surface);
706
+ border: 1px solid var(--border);
707
+ border-radius: 16px;
708
+ padding: 24px 22px;
709
+ transition: all 0.25s;
710
+ }
711
+ .feat:hover {
712
+ border-color: var(--border-bright);
713
+ background: var(--surface-hover);
714
+ transform: translateY(-2px);
715
+ box-shadow: 0 10px 24px rgba(168, 85, 247, 0.08);
716
+ }
717
+ .feat { transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); }
718
+ .feat .ico {
719
+ font-size: 24px;
720
+ margin-bottom: 12px;
721
+ }
722
+ .feat h4 {
723
+ font-size: 17px;
724
+ font-weight: 700;
725
+ margin-bottom: 8px;
726
+ }
727
+ .feat p { font-size: 14px; color: var(--text-secondary); line-height: 1.55; }
728
+
729
+ /* ============ PRICING TABLE ============ */
730
+ .pricing {
731
+ margin-top: 40px;
732
+ background: var(--surface);
733
+ border: 1px solid var(--border);
734
+ border-radius: 18px;
735
+ padding: 28px 24px;
736
+ }
737
+ .pricing-row {
738
+ display: grid;
739
+ grid-template-columns: 1.4fr 0.8fr 2fr 1fr;
740
+ gap: 16px;
741
+ padding: 16px 0;
742
+ border-bottom: 1px solid var(--border);
743
+ align-items: center;
744
+ }
745
+ .pricing-row:last-child { border-bottom: none; }
746
+ .pricing-row.head {
747
+ font-size: 11.5px;
748
+ font-weight: 700;
749
+ color: var(--accent-cyan);
750
+ letter-spacing: 1.2px;
751
+ padding-bottom: 12px;
752
+ text-transform: uppercase;
753
+ }
754
+ .pricing-row .tier { font-weight: 700; }
755
+ .pricing-row .price { font-weight: 800; color: var(--accent-gold); font-size: 17px; }
756
+ .pricing-row .desc { font-size: 13.5px; color: var(--text-secondary); }
757
+ .pricing-row .target { font-size: 13px; color: var(--text-muted); }
758
+
759
+ /* ============ INFOGRAPHIC for NationalOS ============ */
760
+ .society-graph {
761
+ margin-top: 30px;
762
+ background: linear-gradient(135deg, rgba(59, 130, 246, 0.10) 0%, rgba(168, 85, 247, 0.08) 55%, rgba(0, 217, 255, 0.05) 100%);
763
+ border: 1px solid var(--border);
764
+ border-radius: 20px;
765
+ padding: 36px 28px;
766
+ text-align: center;
767
+ }
768
+ .society-graph .big {
769
+ font-size: clamp(48px, 8vw, 80px);
770
+ font-weight: 900;
771
+ background: var(--gradient-aurora);
772
+ -webkit-background-clip: text;
773
+ -webkit-text-fill-color: transparent;
774
+ background-clip: text;
775
+ letter-spacing: -2px;
776
+ line-height: 1;
777
+ }
778
+ .society-graph .big-lbl {
779
+ font-size: 14px;
780
+ color: var(--text-secondary);
781
+ margin-top: 4px;
782
+ }
783
+ .society-stats {
784
+ display: grid;
785
+ grid-template-columns: repeat(4, 1fr);
786
+ gap: 12px;
787
+ margin-top: 28px;
788
+ }
789
+ .society-stat {
790
+ background: rgba(255,255,255,0.05);
791
+ border: 1px solid var(--border);
792
+ border-radius: 12px;
793
+ padding: 18px 12px;
794
+ }
795
+ .society-stat .v { font-size: 22px; font-weight: 800; color: var(--accent-cyan); }
796
+ .society-stat .l { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
797
+
798
+ /* ============ IFRAME EMBED ============ */
799
+ .embed-container {
800
+ margin-top: 36px;
801
+ background: var(--surface);
802
+ border: 1px solid var(--border);
803
+ border-radius: 18px;
804
+ padding: 16px;
805
+ min-height: 540px;
806
+ }
807
+ .embed-container iframe {
808
+ width: 100%;
809
+ height: 600px;
810
+ border: none;
811
+ border-radius: 12px;
812
+ background: white;
813
+ }
814
+ .embed-placeholder {
815
+ display: flex;
816
+ flex-direction: column;
817
+ align-items: center;
818
+ justify-content: center;
819
+ min-height: 360px;
820
+ color: var(--text-muted);
821
+ text-align: center;
822
+ padding: 30px;
823
+ }
824
+ .embed-placeholder .pico { font-size: 38px; margin-bottom: 14px; }
825
+ .embed-placeholder h4 { font-size: 18px; color: var(--text-primary); margin-bottom: 8px; }
826
+ .embed-placeholder a {
827
+ display: inline-block;
828
+ margin-top: 18px;
829
+ background: linear-gradient(135deg, var(--accent-blue), var(--accent-cyan));
830
+ color: white;
831
+ text-decoration: none;
832
+ padding: 12px 24px;
833
+ border-radius: 999px;
834
+ font-weight: 700;
835
+ font-size: 14px;
836
+ transition: transform 0.2s;
837
+ }
838
+ .embed-placeholder a:hover { transform: translateY(-2px); }
839
+
840
+ /* ============ CONTACT ============ */
841
+ .contact-grid {
842
+ display: grid;
843
+ grid-template-columns: 1fr 1fr;
844
+ gap: 20px;
845
+ margin-top: 30px;
846
+ }
847
+ .contact-card {
848
+ background: var(--surface);
849
+ border: 1px solid var(--border);
850
+ border-radius: 18px;
851
+ padding: 28px;
852
+ }
853
+ .contact-card h4 {
854
+ font-size: 18px;
855
+ font-weight: 700;
856
+ margin-bottom: 12px;
857
+ }
858
+ .contact-card p { font-size: 14.5px; color: var(--text-secondary); line-height: 1.65; }
859
+ .contact-card .ml {
860
+ display: inline-block;
861
+ margin-top: 14px;
862
+ color: var(--accent-cyan);
863
+ text-decoration: none;
864
+ font-weight: 700;
865
+ font-size: 14px;
866
+ }
867
+
868
+ /* ============ PRESS ============ */
869
+ .press-grid {
870
+ display: grid;
871
+ grid-template-columns: repeat(2, 1fr);
872
+ gap: 20px;
873
+ margin-top: 30px;
874
+ }
875
+ .press-card {
876
+ background: var(--surface);
877
+ border: 1px solid var(--border);
878
+ border-radius: 18px;
879
+ padding: 26px 24px;
880
+ text-decoration: none;
881
+ color: inherit;
882
+ transition: all 0.25s ease;
883
+ display: flex;
884
+ flex-direction: column;
885
+ gap: 12px;
886
+ }
887
+ .press-card:hover {
888
+ border-color: var(--border-bright);
889
+ background: var(--surface-hover);
890
+ transform: translateY(-2px);
891
+ box-shadow: 0 12px 28px rgba(0, 217, 255, 0.08);
892
+ }
893
+ .press-meta {
894
+ display: flex;
895
+ align-items: center;
896
+ justify-content: space-between;
897
+ font-size: 12.5px;
898
+ letter-spacing: 0.5px;
899
+ }
900
+ .press-outlet {
901
+ color: var(--accent-cyan);
902
+ font-weight: 800;
903
+ letter-spacing: 1.2px;
904
+ text-transform: uppercase;
905
+ }
906
+ .press-date {
907
+ color: var(--text-muted);
908
+ }
909
+ .press-title {
910
+ font-size: 18px;
911
+ font-weight: 800;
912
+ line-height: 1.35;
913
+ color: var(--text-primary);
914
+ letter-spacing: -0.3px;
915
+ margin: 0;
916
+ }
917
+ .press-summary {
918
+ font-size: 14px;
919
+ color: var(--text-secondary);
920
+ line-height: 1.6;
921
+ margin: 0;
922
+ }
923
+ .press-footer {
924
+ display: flex;
925
+ justify-content: space-between;
926
+ align-items: center;
927
+ margin-top: auto;
928
+ padding-top: 8px;
929
+ }
930
+ .press-byline {
931
+ font-size: 12px;
932
+ color: var(--text-muted);
933
+ }
934
+ .press-cta {
935
+ color: var(--accent-cyan);
936
+ font-weight: 700;
937
+ font-size: 14px;
938
+ }
939
+ .press-card:hover .press-cta {
940
+ text-decoration: underline;
941
+ }
942
+ .press-note {
943
+ margin-top: 24px;
944
+ padding: 16px 20px;
945
+ background: rgba(229, 181, 132, 0.06);
946
+ border: 1px solid rgba(229, 181, 132, 0.20);
947
+ border-radius: 12px;
948
+ font-size: 13.5px;
949
+ color: var(--text-secondary);
950
+ line-height: 1.6;
951
+ }
952
+ .press-note strong {
953
+ color: var(--accent-gold);
954
+ font-weight: 800;
955
+ }
956
+
957
+ /* ============ FOOTER ============ */
958
+ .footer {
959
+ margin-top: 80px;
960
+ padding: 28px 24px;
961
+ border-top: 1px solid var(--border);
962
+ text-align: center;
963
+ color: var(--text-muted);
964
+ font-size: 12.5px;
965
+ line-height: 1.7;
966
+ }
967
+ .footer strong { color: var(--text-secondary); }
968
+ .footer-links { margin-top: 10px; }
969
+ .footer-links a { color: var(--text-muted); text-decoration: none; margin: 0 8px; }
970
+ .footer-links a:hover { color: var(--accent-cyan); }
971
+
972
+ /* ============ RESPONSIVE ============ */
973
+ @media (max-width: 900px) {
974
+ .pillars, .trust-grid, .trends-grid, .feat-grid, .society-stats, .contact-grid, .press-grid {
975
+ grid-template-columns: 1fr;
976
+ }
977
+ .hero-stats { grid-template-columns: repeat(3, 1fr); }
978
+ .nav-container { padding: 12px 16px; flex-direction: column; gap: 10px; }
979
+ .nav-left { flex-direction: column; gap: 10px; width: 100%; }
980
+ .tabs { flex-wrap: wrap; justify-content: center; }
981
+ .container { padding-top: 180px; }
982
+ .hero { margin-top: -180px; padding: 220px 20px 60px; min-height: 640px; }
983
+ .pricing-row { grid-template-columns: 1fr; gap: 6px; padding: 14px 0; }
984
+ .pricing-row.head { display: none; }
985
+ .pricing-row .price { font-size: 20px; }
986
+ }
987
+ @media (max-width: 480px) {
988
+ .hero-stats { grid-template-columns: 1fr; }
989
+ .society-stats { grid-template-columns: repeat(2, 1fr); }
990
+ .tab { font-size: 13px; padding: 6px 10px; }
991
+ }
society.html ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>인공사회 · NationalOS — 576,000 LIVE NPC 정책 시뮬레이션 · 지니젠AI</title>
7
+ <meta name="description" content="5,200만 한국 페르소나 위 576,000 LIVE NPC 실시간 운용. 정부 정책·기업 조직·금융 상품을 시장 투입 전에 시뮬레이션. 6개월치 시뮬레이션을 3시간에.">
8
+ <meta name="keywords" content="인공사회, NationalOS, 디지털 트윈, 정책 시뮬레이션, LIVE NPC, 지니젠AI, B2G, VIDRAFT">
9
+ <meta property="og:title" content="인공사회 (NationalOS) — 지니젠AI">
10
+ <meta property="og:description" content="576,000명의 디지털 시민이 당신의 정책을 먼저 살아봅니다. 6개월 시뮬레이션을 3시간에.">
11
+ <meta property="og:type" content="website">
12
+ <meta property="og:url" content="https://ginigen.net/society.html">
13
+ <meta property="og:image" content="https://huggingface.co/spaces/ginigen/AI/resolve/main/logo-stacked.png">
14
+ <link rel="icon" type="image/png" href="logo-stacked.png">
15
+ <link rel="apple-touch-icon" href="logo-stacked.png">
16
+ <link href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css" rel="stylesheet">
17
+ <link rel="stylesheet" href="site.css">
18
+ </head>
19
+ <body>
20
+ <!-- NAVIGATION -->
21
+ <nav class="nav-container">
22
+ <div class="nav-left">
23
+ <a href="/" class="logo" aria-label="GiniGen AI 홈">
24
+ <img src="logo.png" alt="GiniGen" class="logo-img">
25
+ <span class="logo-sub">AI</span>
26
+ </a>
27
+ <div class="tabs">
28
+ <a class="tab" href="/ax.html">AX Hospital</a>
29
+ <a class="tab active" href="/society.html">Society</a>
30
+ <a class="tab" href="https://www.ginigen.ai/ko" target="_blank" rel="noopener">Studio ↗</a>
31
+ <a class="tab" href="/#trust">Proof</a>
32
+ <a class="tab" href="/#press">Press</a>
33
+ <a class="tab" href="/#contact">Contact</a>
34
+ </div>
35
+ </div>
36
+ <!-- TODO: xray.ginigen.net 서브도메인 + SSL 적용 후 http://211.233.58.201:7906/ 로 복원 -->
37
+ <a class="powered-by live-link" href="/ax.html#ax-poc-form" aria-label="데모 신청 (PoC 폼으로 이동)">
38
+ <span class="dot live-dot"></span>
39
+ <span>데모 신청</span>
40
+ <span class="live-arrow">↗</span>
41
+ </a>
42
+ </nav>
43
+
44
+ <!-- PARTICLES -->
45
+ <div class="particles" id="particles"></div>
46
+
47
+ <div class="container">
48
+ <!-- ============ 인공사회 ============ -->
49
+ <div id="society" class="tab-content active">
50
+ <section class="detail-hero">
51
+ <div class="section-title">FOR GOVERNMENT · B2G</div>
52
+ <h2>한국 사회를<br><span class="accent">디지털로 먼저 살아보다</span>.</h2>
53
+ <p class="lead">
54
+ NationalOS는 인구통계·생애주기 기반으로 계층화된 5,200만 한국 페르소나 위에 576,000명의 LIVE NPC를 실시간으로 운용합니다. 정책·전환을 적용하면 6개월 후 무엇이 일어나는가 — 실행 전에 확인하세요.
55
+ </p>
56
+ </section>
57
+
58
+ <section class="society-graph">
59
+ <div class="big">576,000</div>
60
+ <div class="big-lbl">LIVE NPCs · 지금 이 순간 실시간으로 살아 움직이는 디지털 시민들</div>
61
+ <div class="society-stats">
62
+ <div class="society-stat">
63
+ <div class="v">5,200만</div>
64
+ <div class="l">인구통계·생애주기 계층화 페르소나</div>
65
+ </div>
66
+ <div class="society-stat">
67
+ <div class="v">144</div>
68
+ <div class="l">Blackwell GPU (VIDRAFT 연합)</div>
69
+ </div>
70
+ <div class="society-stat">
71
+ <div class="v">6개월 → 3h</div>
72
+ <div class="l">시뮬레이션 시간 단축</div>
73
+ </div>
74
+ <div class="society-stat">
75
+ <div class="v">KR→JP→CN→US</div>
76
+ <div class="l">확장 로드맵</div>
77
+ </div>
78
+ </div>
79
+ </section>
80
+
81
+ <section class="section">
82
+ <div class="section-title">LIVE DEMO · 3D</div>
83
+ <h2 class="section-heading">576,000 NPC, 실시간 3D 시뮬레이션.</h2>
84
+ <p class="section-sub">VIDRAFT NationalOS Live3D — 한반도 위 디지털 시민의 실시간 흐름을 브라우저에서 직접 확인.</p>
85
+ <div class="embed-container" style="min-height: 720px; padding: 12px;">
86
+ <iframe src="https://vidraft-nationalos.hf.space/live3d.html"
87
+ allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; xr-spatial-tracking"
88
+ allowfullscreen
89
+ loading="lazy"
90
+ style="width:100%; height:700px; border:none; border-radius:12px; background:#0E1B2A; display:block;"
91
+ title="NationalOS Live3D">
92
+ </iframe>
93
+ </div>
94
+ </section>
95
+
96
+ <section class="section">
97
+ <div class="section-title">3 USE CASES</div>
98
+ <h2 class="section-heading">정부·기업·금융 — 디지털 트윈으로 검증하기.</h2>
99
+ <div class="feat-grid">
100
+ <div class="feat">
101
+ <div class="ico">🏛️</div>
102
+ <h4>정부 정책 사전 검증</h4>
103
+ <p>광역지자체·부처 정책을 5,200만 페르소나에 적용. 시민 반응·경제 효과·세대 갈등을 사전 시뮬레이션.</p>
104
+ </div>
105
+ <div class="feat">
106
+ <div class="ico">🏢</div>
107
+ <h4>기업 조직 디지털 트윈</h4>
108
+ <p>콜센터 300명 = 300 NPC. AI 전환 시나리오 적용 후 생산성·이직률·고객만족도 변화를 6개월 후까지 미리 본다.</p>
109
+ </div>
110
+ <div class="feat">
111
+ <div class="ico">💼</div>
112
+ <h4>금융·전자상거래 (Afford-X)</h4>
113
+ <p>VIDRAFT World Model 기반. 신상품·요금제·캠페인이 시장에서 어떻게 반응할지 디지털 사회에서 먼저 테스트.</p>
114
+ </div>
115
+ </div>
116
+ </section>
117
+
118
+ <section class="section">
119
+ <div class="section-title">PHILOSOPHY</div>
120
+ <h2 class="section-heading">"FFN as Society"</h2>
121
+ <p class="section-sub">
122
+ AI는 더 이상 도구가 아니라 사회 자체의 모형이 됩니다. 우리는 한국 사회의 다층 구조 — 세대·지역·산업·가치관 — 를 인구통계·생애주기 차원의 계층 변수로 인코딩하여, "한국적 의사결정"을 시뮬레이션 가능한 형태로 코드화했습니다.
123
+ </p>
124
+ <div class="feat-grid">
125
+ <div class="feat">
126
+ <div class="ico">📊</div>
127
+ <h4>인구통계·생애주기 계층화</h4>
128
+ <p>출생 연도·성별·지역·세대를 차원으로 5,200만 페르소나 분포 재구성.</p>
129
+ </div>
130
+ <div class="feat">
131
+ <div class="ico">⚡</div>
132
+ <h4>LIVE NPC</h4>
133
+ <p>576K NPC가 24시간 실시간으로 의사결정·소비·이동. PoC가 아닌 가동 중인 인프라.</p>
134
+ </div>
135
+ <div class="feat">
136
+ <div class="ico">🌏</div>
137
+ <h4>아시아 확장</h4>
138
+ <p>한국 검증 후 일본·중국·미국 페르소나로 확장. 글로벌 정책 시뮬레이션 표준화.</p>
139
+ </div>
140
+ </div>
141
+ </section>
142
+
143
+ <section class="section" style="text-align:center; padding-top: 40px;">
144
+ <div class="hero-cta-row" style="justify-content:center;">
145
+ <a href="/ax.html#ax-poc-form" class="btn btn-primary">
146
+ ✉ B2G PoC 문의 신청
147
+ </a>
148
+ </div>
149
+ </section>
150
+ </div>
151
+ </div>
152
+
153
+ <!-- FOOTER -->
154
+ <footer class="footer">
155
+ <strong>(주) 지니젠AI</strong> · 대표 최선영 · 서울 강남구 강남대로 112길 47, 2F 424 · 사업자번호 763-88-03595<br>
156
+ 통신판매업 신고 2025-Seoul Gangnam-06701 · © 2026 GiniGen AI Inc.
157
+ <div class="footer-links">
158
+ <a href="/">홈</a>·
159
+ <a href="/ax.html">AX 종합병원</a>·
160
+ <a href="https://www.ginigen.ai" target="_blank">GiniGen Studio</a>·
161
+ <a href="/#press">Press</a>·
162
+ <a href="/#contact">Contact</a>
163
+ </div>
164
+ </footer>
165
+
166
+ <script>
167
+ const pc = document.getElementById('particles');
168
+ const palette = ['#0AB4CC', '#A855F7', '#D946EF', '#3B82F6'];
169
+ for (let i = 0; i < 26; i++) {
170
+ const p = document.createElement('div');
171
+ p.className = 'particle';
172
+ const size = 2 + Math.random() * 4;
173
+ const c = palette[i % palette.length];
174
+ p.style.width = size + 'px';
175
+ p.style.height = size + 'px';
176
+ p.style.left = Math.random() * 100 + '%';
177
+ p.style.bottom = -10 + 'px';
178
+ p.style.background = c;
179
+ p.style.boxShadow = `0 0 12px ${c}`;
180
+ p.style.animationDelay = (Math.random() * 25) + 's';
181
+ p.style.animationDuration = (18 + Math.random() * 14) + 's';
182
+ pc.appendChild(p);
183
+ }
184
+ </script>
185
+ </body>
186
+ </html>
studio-detail-backup.md ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # GiniGen Studio 상세 섹션 백업
2
+
3
+ **백업 사유**: index.html 라우터화 작업 시 Studio 섹션을 3문장 요약 + CTA로 압축하며 이관.
4
+ **원본 위치**: 이전 index.html의 `<div id="banana" class="tab-content">` 블록.
5
+ **퍼널 정책**: `.net` = 회사/계약, `.ai` = 제품/결제. Studio 상세는 [ginigen.ai/ko](https://www.ginigen.ai/ko)로 이관.
6
+
7
+ ---
8
+
9
+ ## FOR CREATORS · B2B + B2C
10
+
11
+ # 대량 한글 텍스트를 깨짐 없이 렌더링하는 한글 특화 AI 콘텐츠 스튜디오.
12
+
13
+ 영상 · 이미지 · 카드뉴스 · 웹툰 · 음악. 글로벌 AI 영상 모델이 한국어 텍스트를 망가뜨릴 때, GiniGen Studio는 100% 보존합니다. 기업 홍보부터 1인 크리에이터까지.
14
+
15
+ ## CORE VALUE — 왜 GiniGen Studio인가.
16
+
17
+ - 🇰🇷 **한국어 100% 보존** — 한글 텍스트 렌더링을 최우선으로 최적화한 AI 영상·이미지 스튜디오. 글로벌 모델의 한계를 해결.
18
+ - 🎬 **대용량 텍스트 지원** — 장문 영상 스크립트·웹툰 한 화 분량을 한 번에. 글자 수 제약 없이 콘텐츠 생성.
19
+ - ⚙️ **5종 통합 워크플로우** — 영상 → 이미지 → 카드뉴스 → 웹툰 → 음악. 한 프로젝트에서 모두 연결.
20
+
21
+ ## TWO MARKETS — B2B와 B2C, 양면 전략.
22
+
23
+ - 🏢 **B2B — 기업 홍보 영상 자동화** — 마케팅팀 · 광고대행사 · 미디어 기업 대상. 한국어 광고 영상·기업 IR 영상·소셜 콘텐츠를 시간/10·비용/20으로 단축.
24
+ - 🎨 **B2C — 1인 크리에이터 도구** — 웹툰 작가 · 카드뉴스 운영자 · 음악 콘텐츠 크리에이터 대상. 카드뉴스부터 웹툰 한 화까지 1인이 끝낸다.
25
+
26
+ ## LIVE PLATFORM — 지금 바로 사용 가능합니다.
27
+
28
+ 🎬 **GiniGen Studio 정식 운영 중** — [ginigen.ai](https://www.ginigen.ai) 도메인에서 정식 서비스 운영 중. Quick Start · Content Studio · Pro Studio · Tools 라인업 제공.
29
+
30
+ ---
31
+
32
+ 이 콘텐츠는 [ginigen.ai/ko](https://www.ginigen.ai/ko) 도메인의 제품 소개 페이지로 이관해야 합니다.