From 241ac64c18e7c452e6d0a61156ffbedccdd2c689 Mon Sep 17 00:00:00 2001 From: Bernt Date: Wed, 8 Jul 2026 11:07:17 +0000 Subject: [PATCH] feat(quixzoom-asia): Partner-first rebuild v1.1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replaced Zoomer-only Landvex auth with full Partner model - New Partner section: Platform License, Local Operations, Payment Infrastructure, Revenue Share - 6 Partner Requirements: Local Entity, Payment Licenses, Technical Team, Local Network, Compliance, Capitalization - 6-step Authorization Process: Application → Due Diligence → Technical Assessment → Commercial Terms → Localization → Go-Live - Updated all 9 languages with partner translations - Added FAQ: 'Who operates quiXzoom?' + 'Can my company become a partner?' - Fixed JSON escaping issues (Chinese quotes) - Updated validation script for new partner keys BREAKING CHANGE: Landvex Authorization section replaced with Partner Program --- quixzoom-asia-pages/scripts/validate.js | 20 +- quixzoom-asia-pages/src/template.html | 216 ++++++++++++------ quixzoom-asia-pages/src/translations/en.json | 88 ++++--- quixzoom-asia-pages/src/translations/hi.json | 53 ++++- quixzoom-asia-pages/src/translations/id.json | 52 ++++- quixzoom-asia-pages/src/translations/ja.json | 50 +++- quixzoom-asia-pages/src/translations/ko.json | 53 ++++- quixzoom-asia-pages/src/translations/ms.json | 53 ++++- quixzoom-asia-pages/src/translations/th.json | 50 +++- quixzoom-asia-pages/src/translations/vi.json | 50 +++- .../src/translations/zh-cn.json | 50 +++- .../src/translations/zh-tw.json | 53 ++++- 12 files changed, 676 insertions(+), 112 deletions(-) diff --git a/quixzoom-asia-pages/scripts/validate.js b/quixzoom-asia-pages/scripts/validate.js index 2828321b3..eb341f394 100644 --- a/quixzoom-asia-pages/scripts/validate.js +++ b/quixzoom-asia-pages/scripts/validate.js @@ -9,7 +9,7 @@ const path = require('path'); const LANGUAGES = ['zh-cn', 'zh-tw', 'ja', 'ko', 'th', 'vi', 'id', 'ms', 'hi']; const REQUIRED_KEYS = [ 'TITLE', 'META_DESC', 'NAV_HOW', 'NAV_MISSIONS', 'NAV_EARNINGS', - 'NAV_LANDVEX', 'NAV_FAQ', 'CTA_START', 'HERO_BADGE', 'HERO_H1', + 'NAV_PARTNERS', 'NAV_FAQ', 'CTA_START', 'HERO_BADGE', 'HERO_H1', 'HERO_H1_EMPH', 'HERO_SUB', 'EMAIL_PLACEHOLDER', 'TRUST_LINE', 'STAT1_NUM', 'STAT1_LBL', 'STAT2_NUM', 'STAT2_LBL', 'STAT3_NUM', 'STAT3_LBL', 'STATS_1_VAL', 'STATS_1_LBL', 'STATS_2_VAL', 'STATS_2_LBL', @@ -22,12 +22,22 @@ const REQUIRED_KEYS = [ 'TIER1_F1', 'TIER1_F2', 'TIER1_F3', 'TIER2_NAME', 'TIER2_MISSIONS', 'TIER2_F1', 'TIER2_F2', 'TIER2_F3', 'TIER3_NAME', 'TIER3_MISSIONS', 'TIER3_F1', 'TIER3_F2', 'TIER3_F3', - 'AUTH_TITLE', 'AUTH_SUB', 'AUTH_VISUAL_TITLE', 'AUTH_VISUAL_DESC', - 'AUTH_B1', 'AUTH_B2', 'AUTH_B3', 'AUTH_B4', - 'AUTH_S1_TITLE', 'AUTH_S1_DESC', 'AUTH_S2_TITLE', 'AUTH_S2_DESC', - 'AUTH_S3_TITLE', 'AUTH_S3_DESC', 'AUTH_S4_TITLE', 'AUTH_S4_DESC', 'AUTH_CTA', + 'PARTNER_TITLE', 'PARTNER_SUB', 'PARTNER_HERO_DESC', + 'PARTNER_MODEL_TITLE', 'PARTNER_MODEL_SUB', + 'PARTNER_M1_TITLE', 'PARTNER_M1_DESC', 'PARTNER_M2_TITLE', 'PARTNER_M2_DESC', + 'PARTNER_M3_TITLE', 'PARTNER_M3_DESC', 'PARTNER_M4_TITLE', 'PARTNER_M4_DESC', + 'PARTNER_REQ_TITLE', 'PARTNER_REQ_SUB', + 'PARTNER_R1_TITLE', 'PARTNER_R1_DESC', 'PARTNER_R2_TITLE', 'PARTNER_R2_DESC', + 'PARTNER_R3_TITLE', 'PARTNER_R3_DESC', 'PARTNER_R4_TITLE', 'PARTNER_R4_DESC', + 'PARTNER_R5_TITLE', 'PARTNER_R5_DESC', 'PARTNER_R6_TITLE', 'PARTNER_R6_DESC', + 'PARTNER_AUTH_TITLE', 'PARTNER_AUTH_SUB', + 'PARTNER_A1_TITLE', 'PARTNER_A1_DESC', 'PARTNER_A2_TITLE', 'PARTNER_A2_DESC', + 'PARTNER_A3_TITLE', 'PARTNER_A3_DESC', 'PARTNER_A4_TITLE', 'PARTNER_A4_DESC', + 'PARTNER_A5_TITLE', 'PARTNER_A5_DESC', 'PARTNER_A6_TITLE', 'PARTNER_A6_DESC', + 'PARTNER_CTA', 'PARTNER_CTA_SUB', 'FAQ_TITLE', 'FAQ_SUB', 'FAQ_Q1', 'FAQ_A1', 'FAQ_Q2', 'FAQ_A2', 'FAQ_Q3', 'FAQ_A3', 'FAQ_Q4', 'FAQ_A4', 'FAQ_Q5', 'FAQ_A5', + 'FAQ_Q6', 'FAQ_A6', 'FAQ_Q7', 'FAQ_A7', 'FOOTER_TAGLINE', 'FOOTER_COL1_TITLE', 'FOOTER_COL1_L1', 'FOOTER_COL1_L2', 'FOOTER_COL1_L3', 'FOOTER_COL1_L4', 'FOOTER_COL2_TITLE', 'FOOTER_COL2_L1', 'FOOTER_COL2_L2', 'FOOTER_COL2_L3', 'FOOTER_COL3_TITLE', 'FOOTER_COL3_L1', diff --git a/quixzoom-asia-pages/src/template.html b/quixzoom-asia-pages/src/template.html index d722fec89..98b81bdf9 100644 --- a/quixzoom-asia-pages/src/template.html +++ b/quixzoom-asia-pages/src/template.html @@ -7,7 +7,6 @@ - @@ -116,20 +115,31 @@ .tier-features li { display: flex; align-items: flex-start; gap: 10px; font-size: 1rem; color: var(--text-body); padding: 6px 0; } .tier-features li::before { content: '✓'; display: block; width: 18px; height: 18px; min-width: 18px; background: var(--green); color: #fff; border-radius: 50%; text-align: center; line-height: 18px; font-size: .75rem; margin-top: 2px; } - /* Landvex Authorization */ - #landvex { background: var(--bg-off); } - .auth-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; } - .auth-visual { background: linear-gradient(135deg, var(--blue) 0%, var(--blue-dark) 100%); border-radius: var(--radius); padding: 48px; color: #fff; } - .auth-visual h3 { color: #fff; margin-bottom: 16px; } - .auth-visual p { color: rgba(255,255,255,.85); line-height: 1.6; margin-bottom: 24px; } - .auth-benefits { list-style: none; } - .auth-benefits li { display: flex; align-items: center; gap: 12px; padding: 10px 0; color: rgba(255,255,255,.9); } - .auth-benefits li::before { content: '★'; color: #FFD700; } - .auth-steps { display: flex; flex-direction: column; gap: 20px; } - .auth-step { display: flex; gap: 16px; align-items: flex-start; } - .auth-step-num { width: 36px; height: 36px; border-radius: 50%; background: var(--blue); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; flex-shrink: 0; } - .auth-step h4 { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 4px; } - .auth-step p { font-size: .875rem; color: var(--text-muted); line-height: 1.5; } + /* Partner Section */ + #partner { background: var(--bg-off); } + .partner-hero { text-align: center; padding: 80px 0 64px; } + .partner-hero h2 { margin-bottom: 16px; } + .partner-hero > p { font-size: 1.125rem; color: var(--text-muted); max-width: 700px; margin: 0 auto 48px; } + .partner-hero-desc { background: var(--bg); border-radius: var(--radius); padding: 32px; max-width: 800px; margin: 0 auto 48px; border-left: 4px solid var(--blue); } + .partner-hero-desc p { font-size: 1rem; color: var(--text-body); line-height: 1.7; } + .partner-model-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-bottom: 64px; } + .partner-model-card { background: var(--bg); border-radius: var(--radius); padding: 32px 24px; text-align: center; border: 1px solid #E8E8E8; } + .partner-model-card h3 { font-size: 1.125rem; margin-bottom: 12px; } + .partner-model-card p { font-size: .875rem; color: var(--text-muted); line-height: 1.6; } + .partner-req-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 64px; } + .partner-req-card { background: var(--bg); border-radius: var(--radius); padding: 28px 24px; border: 1px solid #E8E8E8; } + .partner-req-card h4 { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 8px; } + .partner-req-card p { font-size: .875rem; color: var(--text-muted); line-height: 1.6; } + .partner-steps { display: flex; flex-direction: column; gap: 16px; max-width: 800px; margin: 0 auto 48px; } + .partner-step { display: flex; gap: 20px; align-items: flex-start; background: var(--bg); border-radius: var(--radius); padding: 24px; border: 1px solid #E8E8E8; } + .partner-step-num { width: 40px; height: 40px; border-radius: 50%; background: var(--blue); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; flex-shrink: 0; } + .partner-step h4 { font-size: 1rem; font-weight: 700; color: var(--text); margin-bottom: 4px; } + .partner-step p { font-size: .875rem; color: var(--text-muted); line-height: 1.5; } + .partner-cta-box { background: linear-gradient(135deg, var(--blue) 0%, var(--blue-dark) 100%); border-radius: var(--radius); padding: 48px; text-align: center; color: #fff; } + .partner-cta-box h3 { color: #fff; margin-bottom: 12px; } + .partner-cta-box p { color: rgba(255,255,255,.85); margin-bottom: 24px; } + .btn-white { display: inline-block; background: #fff; color: var(--blue); padding: 16px 40px; border-radius: var(--radius-lg); font-size: 1rem; font-weight: 800; text-decoration: none; transition: transform .2s; } + .btn-white:hover { transform: translateY(-2px); } /* FAQ */ .faq-list { max-width: 760px; margin: 0 auto; } @@ -160,13 +170,16 @@ /* Responsive */ @media(max-width: 960px) { .hero-layout { grid-template-columns: 1fr; gap: 40px; } - .auth-grid { grid-template-columns: 1fr; } + .partner-model-grid { grid-template-columns: repeat(2, 1fr); } + .partner-req-grid { grid-template-columns: repeat(2, 1fr); } .footer-inner { grid-template-columns: 1fr 1fr; } } @media(max-width: 768px) { .steps-grid, .missions-grid, .earnings-grid { grid-template-columns: 1fr; } .stats-grid { grid-template-columns: repeat(2, 1fr); } .nav-links { display: none; } + .partner-model-grid { grid-template-columns: 1fr; } + .partner-req-grid { grid-template-columns: 1fr; } .footer-inner { grid-template-columns: 1fr; } .footer-bottom { flex-direction: column; align-items: flex-start; } } @@ -188,7 +201,7 @@ {{NAV_HOW}} {{NAV_MISSIONS}} {{NAV_EARNINGS}} - {{NAV_LANDVEX}} + {{NAV_PARTNERS}} {{NAV_FAQ}}
@@ -376,57 +389,124 @@
- -
+ +
-
-

{{AUTH_TITLE}}

-

{{AUTH_SUB}}

+
+

{{PARTNER_TITLE}}

+

{{PARTNER_SUB}}

+
+

{{PARTNER_HERO_DESC}}

+
-
-
-

{{AUTH_VISUAL_TITLE}}

-

{{AUTH_VISUAL_DESC}}

-
    -
  • {{AUTH_B1}}
  • -
  • {{AUTH_B2}}
  • -
  • {{AUTH_B3}}
  • -
  • {{AUTH_B4}}
  • -
+ +
+

{{PARTNER_MODEL_TITLE}}

+

{{PARTNER_MODEL_SUB}}

+
+
+
+

{{PARTNER_M1_TITLE}}

+

{{PARTNER_M1_DESC}}

-
-
-
1
-
-

{{AUTH_S1_TITLE}}

-

{{AUTH_S1_DESC}}

-
-
-
-
2
-
-

{{AUTH_S2_TITLE}}

-

{{AUTH_S2_DESC}}

-
-
-
-
3
-
-

{{AUTH_S3_TITLE}}

-

{{AUTH_S3_DESC}}

-
-
-
-
4
-
-

{{AUTH_S4_TITLE}}

-

{{AUTH_S4_DESC}}

-
-
-
- {{AUTH_CTA}} +
+

{{PARTNER_M2_TITLE}}

+

{{PARTNER_M2_DESC}}

+
+
+

{{PARTNER_M3_TITLE}}

+

{{PARTNER_M3_DESC}}

+
+
+

{{PARTNER_M4_TITLE}}

+

{{PARTNER_M4_DESC}}

+
+
+ +
+

{{PARTNER_REQ_TITLE}}

+

{{PARTNER_REQ_SUB}}

+
+
+
+

{{PARTNER_R1_TITLE}}

+

{{PARTNER_R1_DESC}}

+
+
+

{{PARTNER_R2_TITLE}}

+

{{PARTNER_R2_DESC}}

+
+
+

{{PARTNER_R3_TITLE}}

+

{{PARTNER_R3_DESC}}

+
+
+

{{PARTNER_R4_TITLE}}

+

{{PARTNER_R4_DESC}}

+
+
+

{{PARTNER_R5_TITLE}}

+

{{PARTNER_R5_DESC}}

+
+
+

{{PARTNER_R6_TITLE}}

+

{{PARTNER_R6_DESC}}

+
+
+ +
+

{{PARTNER_AUTH_TITLE}}

+

{{PARTNER_AUTH_SUB}}

+
+
+
+
1
+
+

{{PARTNER_A1_TITLE}}

+

{{PARTNER_A1_DESC}}

+
+
2
+
+

{{PARTNER_A2_TITLE}}

+

{{PARTNER_A2_DESC}}

+
+
+
+
3
+
+

{{PARTNER_A3_TITLE}}

+

{{PARTNER_A3_DESC}}

+
+
+
+
4
+
+

{{PARTNER_A4_TITLE}}

+

{{PARTNER_A4_DESC}}

+
+
+
+
5
+
+

{{PARTNER_A5_TITLE}}

+

{{PARTNER_A5_DESC}}

+
+
+
+
6
+
+

{{PARTNER_A6_TITLE}}

+

{{PARTNER_A6_DESC}}

+
+
+
+ +
+

{{PARTNER_CTA}}

+

{{PARTNER_CTA_SUB}}

+ {{PARTNER_CTA}} →
@@ -459,6 +539,14 @@ {{FAQ_Q5}}
{{FAQ_A5}}
+
+ {{FAQ_Q6}} +
{{FAQ_A6}}
+
+
+ {{FAQ_Q7}} +
{{FAQ_A7}}
+
@@ -478,7 +566,7 @@
  • {{FOOTER_COL1_L1}}
  • {{FOOTER_COL1_L2}}
  • {{FOOTER_COL1_L3}}
  • -
  • {{FOOTER_COL1_L4}}
  • +
  • {{FOOTER_COL1_L4}}