Compare commits
12 Commits
8aefa24b2a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 00bbf193e4 | |||
| 8735a88ef6 | |||
| c2e4e2763f | |||
| 79847ae4fb | |||
| 9a5359d179 | |||
| 76198b98b5 | |||
| 4cdf50c27b | |||
| 1b741bbe0b | |||
| 310efb823f | |||
| d663486b44 | |||
| 50a9cc99ce | |||
| f65464128f |
@@ -1,4 +1,5 @@
|
|||||||
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
||||||
const cards=[["01","两种数字人模式","既可基于经授权的照片、视频与声音,创建真人创作者当前或年轻时期的 AI 分身;也可从形象、人设到故事完全从零打造原创数字人 IP。"],["02","内容产能可扩展","把一个创意延展到短视频、图文、语音与多语言版本。"],["03","关系持续被经营","从评论到私聊建立连续体验,让高意向粉丝得到自然回应。"],["04","变现不止一种","组合订阅、付费内容、打赏、专属互动等收入路径。"],["05","全程授权可控","合作前明确形象版本、使用场景、授权范围、内容红线与审核机制。"],["06","全链路转化跟踪","跟踪内容曝光、评论互动、私信承接、私域沉淀到付费转化的关键数据,定位每一环节的流失与机会,并持续提供针对性的优化方案。"]];
|
const cards=[["01","Two AI Avatar Models","Create an authorized avatar from a creator’s photos, videos, and voice—using their current or younger image—or build an entirely original digital human IP from identity to story."],["02","Scalable Content Output","Extend one idea into short videos, images, written posts, voice content, and multiple languages."],["03","Always-On Fan Relationships","Create a continuous experience from comments to DMs, ensuring high-intent fans receive relevant, timely responses."],["04","Multiple Revenue Streams","Combine subscriptions, paid content, tips, and exclusive interactions to diversify creator income."],["05","Creator-Controlled Authorization","Define the approved image, use cases, authorization scope, content boundaries, and review process before launch."],["06","Full-Funnel Conversion Tracking","Track content reach, comment engagement, DM conversion, community retention, and payments. We identify drop-offs and opportunities, then provide ongoing optimization strategies."]];
|
||||||
export default function Advantages(){return <SiteShell><main><PageHero eyebrow="WHY PARTNER WITH US" title={<>你的影响力不该被<br/><span className="accent">时间与平台</span>限制。</>} description="我们把 AI 技术、内容运营与粉丝商业化合成一套服务,让创作者专注于真正不可替代的部分:表达、审美与信任。" extra={<Link className="link" href="/process">查看合作流程 <b>→</b></Link>}/><section className="section shell"><div className="adv-grid">{cards.map(x=><article key={x[0]}><span>{x[0]}</span><h2>{x[1]}</h2><p>{x[2]}</p></article>)}</div></section><section className="section comparison"><div className="shell"><div className="title-row"><div><p className="kicker">A BETTER MODEL</p><h2>把分散工作,变成同一条增长链路</h2></div></div><div className="table"><div><b>关键环节</b><b>传统运营</b><b>AI 创作者合作</b></div>{[["内容生产","依赖单次拍摄与个人时间","一次创意,多形态持续延展"],["粉丝互动","容易漏掉重要回应","分层承接评论与私聊关系"],["商业化","以广告和平台分成为主","建立多元、可持续粉丝收入"],["转化分析","数据分散、难以定位流失环节","贯通内容、评论、私信、私域与付费数据,持续优化转化"]].map(r=><div key={r[0]}>{r.map((c,i)=><span className={i===2?"positive":""} key={c}>{c}</span>)}</div>)}</div></div></section><Cta/></main></SiteShell>}
|
export default function Advantages(){return <SiteShell><main><PageHero eyebrow="WHY PARTNER WITH US" title={<>Your influence should not be limited by<br/><span className="accent">time or platforms</span>.</>} description="We combine AI technology, content operations, and fan monetization into one service—so creators can focus on what cannot be replaced: voice, taste, and trust." extra={<Link className="link" href="/process">See How It Works <b>→</b></Link>}/><section className="section shell"><div className="adv-grid">{cards.map(x=><article key={x[0]}><span>{x[0]}</span><h2>{x[1]}</h2><p>{x[2]}</p></article>)}</div></section><FunnelFeature/><section className="section comparison"><div className="shell"><div className="title-row"><div><p className="kicker">A BETTER MODEL</p><h2>Turn fragmented work into one growth engine</h2></div></div><div className="table"><div><b>Key Area</b><b>Traditional Operations</b><b>AI Creator Partnership</b></div>{[["Content Production","Dependent on one-off shoots and creator time","One idea, continuously extended across formats"],["Fan Engagement","High-value conversations are easily missed","Segment and carry relationships from comments into DMs"],["Monetization","Primarily ads and platform revenue share","Build diverse, sustainable fan revenue"],["Conversion Analytics","Fragmented data makes drop-offs hard to identify","Connect content, comments, DMs, community, and payment data to improve conversion"]].map(r=><div key={r[0]}>{r.map((c,i)=><span className={i===2?"positive":""} key={c}>{c}</span>)}</div>)}</div></div></section><Cta/></main></SiteShell>}
|
||||||
function Cta(){return <section className="cta compact shell"><div><p className="kicker">FIND YOUR GROWTH LEVER</p><h2>先从最适合你的一个增长点开始。</h2></div><Link className="btn primary" href="/contact">获取合作建议 <b>→</b></Link></section>}
|
function FunnelFeature(){const steps=[["01","Content","Reach & Clicks"],["02","Comments","Engagement & Intent"],["03","DMs","Relationship Handoff"],["04","Community","Ongoing Nurture"],["05","Payment","Revenue & Repeat Purchase"]];return <section className="section funnel-feature"><div className="shell"><div className="funnel-head"><div><p className="kicker">FULL-FUNNEL CONVERSION TRACKING</p><h2>From every piece of content<br/>to every dollar earned</h2></div><p>We go beyond measuring reach. We track how fans discover content, engage, move into DMs and private communities, and ultimately convert into paying and repeat customers.</p></div><div className="funnel-track">{steps.map((x,i)=><article key={x[0]}><span>{x[0]}</span><strong>{x[1]}</strong><small>{x[2]}</small>{i<steps.length-1&&<b>→</b>}</article>)}</div><div className="funnel-results"><span>Track key conversion rates</span><span>Identify drop-offs and high-value fans</span><span>Deliver continuous optimization strategies</span></div></div></section>}
|
||||||
|
function Cta(){return <section className="cta compact shell"><div><p className="kicker">FIND YOUR GROWTH LEVER</p><h2>Start with the growth opportunity that fits you best</h2></div><Link className="btn primary" href="/contact">Get a Partnership Recommendation <b>→</b></Link></section>}
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
||||||
const cases=[["CASE 01","成熟个人创作者","让年轻时期的经典形象,以 AI 数字人重新连接粉丝","拥有大量具有情感记忆的经典照片与作品,但个人时间有限,旧内容也难以持续产生新的互动与商业价值。",["建立年轻时期授权 AI 分身","还原经典形象与表达风格","扩展多语言数字人内容"],["经典内容唤醒","跨市场触达","粉丝互动深度"],"purple"],["CASE 02","原创数字人 IP","从零打造一个可长期运营的虚拟创作者","没有真人原型和现成粉丝资产,需要从目标人群出发,完整建立外形、人设、故事、内容风格与关系体验。",["原创形象与世界观","多平台内容冷启动","评论与私聊关系运营"],["人设认知度","粉丝增长","单粉丝价值"],"coral"],["CASE 03","MCN / Agency","为多个创作者建立可复制的增长基础设施","不同账号依赖不同团队,内容、互动和收入数据分散,经验难复制。",["标准化创作者上架","共享运营规则","统一数据复盘"],["上架效率","运营一致性","矩阵收入"],"blue"]] as const;
|
const scenarios=[["SCENARIO 01","Established Individual Creator","Reconnect fans with an iconic younger image through an AI avatar","You have classic photos and work with strong emotional value, but limited personal time makes it difficult to generate new engagement and revenue consistently.",["Build an authorized younger-era AI avatar","Recreate the iconic image and communication style","Expand multilingual digital human content"],["Reawaken classic content","Reach new markets","Deepen fan engagement"],"purple"],["SCENARIO 02","Original Digital Human IP","Build a virtual creator designed for long-term growth","With no real-person prototype or existing audience, we develop the appearance, persona, story, content style, and fan relationship experience around a defined target audience.",["Original identity and content universe","Multi-platform content launch","Comment and DM relationship operations"],["Persona recognition","Audience growth","Revenue per fan"],"coral"],["SCENARIO 03","MCN / Agency","Build scalable growth infrastructure for multiple creators","Different accounts rely on separate teams, while content, engagement, and revenue data remain fragmented and difficult to replicate.",["Standardized creator onboarding","Shared operating playbooks","Unified performance analysis"],["Onboarding efficiency","Operating consistency","Portfolio revenue"],"blue"]] as const;
|
||||||
export default function Cases(){return <SiteShell><main><PageHero eyebrow="PARTNERSHIP CASES" title={<>不同起点,<br/>同一件事:<span className="accent">放大价值</span>。</>} description="以下为原型阶段的典型合作场景,用于展示方法与指标结构;正式上线时可替换为已授权案例和可核验数据。"/><section className="section shell case-list">{cases.map(x=><article className="case" key={x[0]}><div className={`case-art ${x[6]}`}><span>{x[0]}</span><div><i/><i/><i/></div><strong>{x[1]}</strong></div><div className="case-copy"><small>{x[1]}</small><h2>{x[2]}</h2><section><b>合作挑战</b><p>{x[3]}</p></section><section><b>合作方案</b><p className="tags">{x[4].map(t=><span key={t}>{t}</span>)}</p></section><section><b>重点指标</b><p className="metrics">{x[5].map(t=><span key={t}>↗ {t}</span>)}</p></section></div></article>)}</section><section className="cta compact shell"><div><p className="kicker">YOUR CASE STARTS HERE</p><h2>你的合作路径,从真实资源出发。</h2></div><Link className="btn primary" href="/contact">聊聊你的情况 <b>→</b></Link></section></main></SiteShell>}
|
export default function Cases(){return <SiteShell><main><PageHero eyebrow="PARTNERSHIP SCENARIOS" title={<>Different starting points.<br/>One goal: <span className="accent">amplify value</span></>} description="These are typical partnership scenarios and service paths—not customer success stories. Your solution will be tailored to your image assets, audience foundation, and commercial goals."/><section className="section shell case-list">{scenarios.map(x=><article className="case" key={x[0]}><div className={`case-art ${x[6]}`}><span>{x[0]}</span><div><i/><i/><i/></div><strong>{x[1]}</strong></div><div className="case-copy"><small>{x[1]}</small><h2>{x[2]}</h2><section><b>BEST FOR</b><p>{x[3]}</p></section><section><b>WHAT WE PROVIDE</b><p className="tags">{x[4].map(t=><span key={t}>{t}</span>)}</p></section><section><b>GROWTH FOCUS</b><p className="metrics">{x[5].map(t=><span key={t}>↗ {t}</span>)}</p></section></div></article>)}</section><section className="cta compact shell"><div><p className="kicker">YOUR SCENARIO STARTS HERE</p><h2>Your partnership path starts with your real assets</h2></div><Link className="btn primary" href="/contact">Tell Us About Your Goals <b>→</b></Link></section></main></SiteShell>}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
import { ContactForm } from "../../components/ContactForm";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
import { ContactForm } from "../../components/ContactForm";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
||||||
export default function Contact(){return <SiteShell><main><PageHero eyebrow="START A PARTNERSHIP" title={<>下一条增长曲线,<br/>从一次<span className="accent">认真沟通</span>开始。</>} description="留下基本信息与合作目标。我们会先判断最值得验证的场景,再决定是否进入更深入的合作设计。"/><section className="section shell contact"><aside><p className="kicker">WHAT HAPPENS NEXT</p><h2>提交后,你会得到什么?</h2><ol>{[["01","合作适配判断","判断现阶段是否适合。"],["02","优先场景建议","给出最值得先测试的场景。"],["03","下一步沟通安排","有合作空间时进入具体方案。"]].map(x=><li key={x[0]}><span>{x[0]}</span><div><strong>{x[1]}</strong><p>{x[2]}</p></div></li>)}</ol><div className="privacy"><strong>隐私提示</strong><p>请勿提交身份证件、账号密码或未公开的敏感商业数据。</p></div></aside><ContactForm/></section></main></SiteShell>}
|
export default function Contact(){return <SiteShell><main><PageHero eyebrow="START A PARTNERSHIP" title={<>Your next growth curve<br/>starts with an <span className="accent">honest conversation</span></>} description="Share a few details about your creator profile and goals. We’ll identify the strongest opportunity to validate before designing a deeper partnership."/><section className="section shell contact"><aside><p className="kicker">WHAT HAPPENS NEXT</p><h2>What happens after you submit?</h2><ol>{[["01","Partnership Fit Review","We assess whether the timing and opportunity are a strong fit."],["02","Priority Opportunity","We recommend the most valuable scenario to test first."],["03","Next-Step Conversation","If there is a strong fit, we move into solution design."]].map(x=><li key={x[0]}><span>{x[0]}</span><div><strong>{x[1]}</strong><p>{x[2]}</p></div></li>)}</ol><div className="privacy"><strong>Privacy Note</strong><p>Do not submit identity documents, account passwords, or confidential business information.</p></div></aside><ContactForm/></section></main></SiteShell>}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirectToLegalDocument } from "../legalDocumentRedirect";
|
||||||
|
|
||||||
|
export default function AutoRenewalAgreementRedirect() {
|
||||||
|
redirectToLegalDocument("auto-renewal-agreement");
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirectToLegalDocument } from "../legalDocumentRedirect";
|
||||||
|
|
||||||
|
export default function DataDeletionRedirect() {
|
||||||
|
redirectToLegalDocument("data-deletion");
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirect } from "next/navigation";
|
||||||
|
|
||||||
|
export function redirectToLegalDocument(documentName: string): never {
|
||||||
|
redirect(`/${documentName}.html`);
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirectToLegalDocument } from "../legalDocumentRedirect";
|
||||||
|
|
||||||
|
export default function MembershipAgreementRedirect() {
|
||||||
|
redirectToLegalDocument("membership-agreement");
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirectToLegalDocument } from "../legalDocumentRedirect";
|
||||||
|
|
||||||
|
export default function PrivacyPolicyRedirect() {
|
||||||
|
redirectToLegalDocument("privacy-policy");
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirectToLegalDocument } from "../legalDocumentRedirect";
|
||||||
|
|
||||||
|
export default function ServiceTermsRedirect() {
|
||||||
|
redirectToLegalDocument("service-terms");
|
||||||
|
}
|
||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
||||||
const qs=[["没有真人创作者,也可以纯做数字人 IP 吗?","可以。我们可以从目标人群出发,从零设计数字人的外形、姓名、性格、故事与内容世界观,再建立内容生产、粉丝互动和商业化路径,不需要绑定任何真人原型。"],["可以制作创作者年轻时期的 AI 分身吗?","可以。经创作者或合法权利方明确授权后,我们可以基于年轻时期的照片、视频、声音与作品资料,制作相应时期的 AI 数字人;具体形象版本、使用场景和授权期限会在合作前约定。"],["AI 分身会不会取代创作者本人?","不会。AI 分身延展创作者已经建立的形象与表达;核心创意、授权边界与重大商业决策仍由创作者掌握。"],["如何确保 AI 内容符合我的形象?","合作初期会共同建立创作者 AI 手册,包含形象时期、语气、价值观、视觉规范、禁区和审核机制。"],["我的肖像、声音和内容版权归谁?","具体权利与使用范围会在正式合作协议中清晰约定。默认仅在获得授权的场景和期限内使用。"],["合作一定要同时做所有服务吗?","不需要。可以从 AI 数字人内容、评论运营、私聊关系或付费内容中的一个场景开始。"],["可以覆盖哪些平台和市场?","合作可适配主流内容、社交与粉丝平台;跨市场扩展会结合账号基础、用户画像与当地条件判断。"],["如何衡量合作是否有效?","不同阶段关注内容触达、互动进入率、粉丝留存、关系深度、付费转化与单粉丝价值。"],["第一步需要准备什么?","若基于真人,可提供主要账号、粉丝规模和希望使用的形象时期;若打造原创 IP,只需说明目标市场、受众和希望探索的方向。"]];
|
const qs=[["Can I build a digital human IP without a real creator?","Yes. We can start with your target audience and design the digital human’s appearance, name, personality, story, and content universe from scratch—then build the content, fan engagement, and monetization system without using any real-person prototype."],["Can you create an AI avatar of a creator’s younger self?","Yes. With clear authorization from the creator or legal rights holder, we can use photos, videos, voice, and work from that period to create a younger-era AI avatar. The approved image, use cases, and authorization term are agreed before production."],["How do you ensure AI content stays true to my image?","At the start of the partnership, we create a Creator AI Guide covering the approved image era, tone of voice, values, visual standards, prohibited topics, and review process."],["Who owns my image, voice, and content rights?","Ownership and usage rights are defined clearly in the formal partnership agreement. By default, assets are used only within the authorized use cases and term."],["Do I need to use every service at once?","No. You can begin with one focused opportunity, such as AI avatar content, comment operations, DM relationships, or premium content."],["Which markets and platforms do you support?","Our services are designed for global markets, with a focus on North America, Europe, Latin America, and Southeast Asia. We support major content, social, messaging, and fan platforms, with the final market and platform mix based on your audience, account foundation, and local operating conditions."],["How do you measure partnership success?","Account revenue growth is the primary measure of success. We compare total revenue, paying users, payment conversion, repeat purchase, and revenue per fan before and after the partnership—supported by full-funnel data from content and comments to DMs, community, and payment."],["What do I need to get started?","For a real-person avatar, share your key accounts, audience size, and the image era you want to explore. For an original digital human IP, simply describe your target market, audience, and initial direction."]];
|
||||||
export default function FAQ(){return <SiteShell><main><PageHero eyebrow="FREQUENTLY ASKED QUESTIONS" title={<>在开始之前,<br/>先把<span className="accent">重要问题</span>说清楚。</>} description="关于原创数字人 IP、真人与年轻时期分身、合作边界、版权与效果衡量,这里整理了最常问的问题。" extra={<Link className="link" href="/contact">还有其他问题?联系团队 <b>→</b></Link>}/><section className="section shell faq"><aside><p className="kicker">9 QUESTIONS</p><h2>透明,是长期合作的开始。</h2><p>点击问题查看详细回答。</p></aside><div>{qs.map((x,i)=><details key={x[0]} open={i===0}><summary><span>{String(i+1).padStart(2,"0")}</span>{x[0]}<i>+</i></summary><p>{x[1]}</p></details>)}</div></section><section className="cta compact shell"><div><p className="kicker">LET'S TALK</p><h2>真实情况不同,最好的答案也会不同。</h2></div><Link className="btn primary" href="/contact">联系合作团队 <b>→</b></Link></section></main></SiteShell>}
|
export default function FAQ(){return <SiteShell><main><PageHero eyebrow="FREQUENTLY ASKED QUESTIONS" title={<>Before we begin,<br/>let’s make the <span className="accent">important things clear</span></>} description="Answers about original digital human IP, current and younger-era creator avatars, partnership boundaries, rights, and performance measurement." extra={<Link className="link" href="/contact">Have another question? Contact us <b>→</b></Link>}/><section className="section shell faq"><aside><p className="kicker">8 QUESTIONS</p><h2>Transparency is where long-term partnerships begin</h2><p>Select a question to view the answer.</p></aside><div>{qs.map((x,i)=><details key={x[0]} open={i===0}><summary><span>{String(i+1).padStart(2,"0")}</span>{x[0]}<i>+</i></summary><p>{x[1]}</p></details>)}</div></section><section className="cta compact shell"><div><p className="kicker">LET'S TALK</p><h2>Every creator is different. The best answer should be, too</h2></div><Link className="btn primary" href="/contact">Contact the Partnership Team <b>→</b></Link></section></main></SiteShell>}
|
||||||
|
|||||||
@@ -43,3 +43,56 @@ footer{background:radial-gradient(circle at 15% 0,rgba(112,64,232,.16),transpare
|
|||||||
|
|
||||||
/* Keep the white CTA readable against the dark partnership section. */
|
/* Keep the white CTA readable against the dark partnership section. */
|
||||||
.dark .btn.pale{color:var(--ink)}
|
.dark .btn.pale{color:var(--ink)}
|
||||||
|
|
||||||
|
/* Featured full-funnel conversion service */
|
||||||
|
.funnel-feature{position:relative;color:#fff;background:radial-gradient(circle at 82% 18%,rgba(155,101,255,.38),transparent 30%),linear-gradient(135deg,#15121c 0%,#20172f 58%,#37215d 100%);overflow:hidden}
|
||||||
|
.funnel-feature:before{content:"";position:absolute;width:520px;height:520px;right:-180px;bottom:-300px;border:1px solid rgba(255,255,255,.12);border-radius:50%;box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 140px rgba(255,255,255,.018)}
|
||||||
|
.funnel-head{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:100px;align-items:end;margin-bottom:72px}.funnel-head h2{margin:0;font:700 clamp(44px,4.8vw,70px)/1.18 "Songti SC","STSong",serif;letter-spacing:-.055em}.funnel-head>p{margin:0;color:#c9c2d2;font-size:18px;line-height:1.9}
|
||||||
|
.funnel-track{position:relative;z-index:1;display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.funnel-track article{position:relative;min-height:190px;padding:26px 24px;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.17);border-radius:20px;background:rgba(255,255,255,.055);backdrop-filter:blur(10px)}.funnel-track article:last-child{color:var(--ink);background:linear-gradient(145deg,#a875ff,#c5a3ff);border-color:transparent;box-shadow:0 20px 55px rgba(143,86,238,.32)}.funnel-track span{color:#a875ff;font:600 16px Georgia}.funnel-track article:last-child span{color:#3b1a70}.funnel-track strong{margin:auto 0 8px;font-size:23px}.funnel-track small{color:#9d96a7}.funnel-track article:last-child small{color:#432b62}.funnel-track b{position:absolute;right:-21px;top:50%;z-index:3;width:30px;height:30px;display:grid;place-items:center;color:#fff;background:#6f38e8;border-radius:50%;transform:translateY(-50%)}
|
||||||
|
.funnel-results{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:22px}.funnel-results span{padding:17px 20px;text-align:center;color:#ddd6e7;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(255,255,255,.04)}
|
||||||
|
@media(max-width:1040px){.funnel-head{gap:50px}.funnel-track{grid-template-columns:repeat(5,minmax(150px,1fr));overflow-x:auto;padding-bottom:8px}.funnel-track article{min-height:170px}.funnel-track b{display:none}}
|
||||||
|
@media(max-width:760px){.funnel-head{grid-template-columns:1fr;gap:28px;margin-bottom:45px}.funnel-head>p{font-size:16px}.funnel-track{grid-template-columns:1fr;overflow:visible}.funnel-track article{min-height:135px}.funnel-results{grid-template-columns:1fr}.funnel-results span{border-radius:16px;text-align:left}}
|
||||||
|
|
||||||
|
/* Homepage: AI Creator Economy declaration */
|
||||||
|
.economy-section{position:relative;min-height:880px;display:flex;align-items:center;color:#fff;background:radial-gradient(circle at 78% 42%,rgba(169,112,255,.34),transparent 33%),radial-gradient(circle at 6% 92%,rgba(115,63,210,.18),transparent 28%),linear-gradient(135deg,#15121c 0%,#211830 55%,#3a2461 100%);overflow:hidden}.economy-section:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:56px 56px;mask-image:linear-gradient(to right,#000,transparent 72%)}
|
||||||
|
.economy-grid{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:80px;align-items:center;padding-top:100px;padding-bottom:100px}.economy-copy .eyebrow{color:#a978ff}.economy-copy h2{margin:0;font:800 clamp(56px,6.3vw,94px)/.94 var(--font-geist-sans),Arial,sans-serif;letter-spacing:-.065em}.economy-copy h2 span{color:#9c6bff}.economy-copy>p:not(.eyebrow){max-width:690px;margin:38px 0 0;color:#b9b5c0;font-size:18px;line-height:1.9}.economy-actions{display:flex;align-items:center;gap:30px;margin-top:38px}.economy-btn{color:#09090b;background:#fff;border-radius:999px}.economy-actions small{color:#8f8997}
|
||||||
|
.revenue-visual{position:relative;min-height:710px;display:grid;place-items:center}.revenue-glow{position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(142,86,255,.44),rgba(91,46,180,.12) 48%,transparent 70%);filter:blur(12px)}.revenue-phone{position:relative;z-index:2;width:min(385px,78vw);min-height:700px;padding:28px 25px;color:#fff;background:linear-gradient(165deg,#17171d,#070708 65%);border:1px solid rgba(255,255,255,.22);border-radius:54px;box-shadow:0 45px 110px rgba(0,0,0,.6),inset 0 0 0 7px #020203;overflow:hidden}.revenue-phone:before{content:"";position:absolute;top:13px;left:50%;width:112px;height:27px;background:#000;border-radius:20px;transform:translateX(-50%)}.phone-top{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;margin:20px 7px 42px;color:#aaa;font-size:11px;letter-spacing:.17em}.phone-top i{width:9px;height:9px;background:#7e48ef;border-radius:50%;box-shadow:0 0 15px #8d5aff}.phone-top b{letter-spacing:2px}.phone-greeting{display:flex;flex-direction:column}.phone-greeting>span{color:#9a70f4;font-size:11px;font-weight:750;letter-spacing:.18em}.phone-greeting strong{margin-top:15px;font-size:30px;line-height:1.25}.phone-greeting small{margin-top:8px;color:#777}.revenue-amount{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-top:24px}.revenue-amount strong{font:700 38px/1 Georgia,serif;letter-spacing:-.04em}.revenue-amount span{color:#76717c;font-size:10px}.revenue-chart{height:125px;margin:18px 0 20px;padding:10px 14px 0;display:flex;align-items:flex-end;gap:12px;border-bottom:1px solid #333;background:linear-gradient(180deg,rgba(128,77,235,.08),transparent)}.revenue-chart div{flex:1;min-height:25%;background:linear-gradient(180deg,#a776ff,#6030d7);border-radius:7px 7px 0 0;box-shadow:0 0 18px rgba(128,77,235,.18)}.revenue-chart div:nth-child(2){height:38%}.revenue-chart div:nth-child(3){height:50%}.revenue-chart div:nth-child(4){height:63%}.revenue-chart div:nth-child(5){height:77%}.revenue-chart div:nth-child(6){height:96%;background:linear-gradient(180deg,#c5a7ff,#7b43ed)}.revenue-list{display:grid;gap:9px}.revenue-list>div{display:grid;grid-template-columns:35px 1fr 28px;align-items:center;padding:13px 14px;border:1px solid #24242b;border-radius:13px;background:#111116}.revenue-list i{color:#8051df;font:600 11px Georgia;font-style:normal}.revenue-list span{font-size:13px}.revenue-list b{color:#a776ff;text-align:right}.revenue-float{position:absolute;z-index:3;min-width:215px;padding:17px 19px;display:flex;flex-direction:column;gap:6px;color:#111;background:rgba(255,255,255,.94);border-radius:18px;box-shadow:0 20px 55px rgba(0,0,0,.28);backdrop-filter:blur(10px)}.revenue-float small{color:#746f7a;font-size:11px}.revenue-float strong{font-size:14px}.revenue-float strong em{margin-left:12px;color:#4b257d;font-size:11px;font-style:normal}.revenue-float.top{right:-22px;top:125px}.revenue-float.bottom{left:-38px;bottom:105px;background:linear-gradient(135deg,#a97aff,#d2b9ff)}
|
||||||
|
@media(max-width:1040px){.economy-section{min-height:auto}.economy-grid{grid-template-columns:1fr;gap:55px}.economy-copy h2{max-width:850px}.revenue-visual{min-height:660px}.revenue-float.top{right:8%}.revenue-float.bottom{left:8%}}
|
||||||
|
@media(max-width:760px){.economy-grid{padding-top:80px;padding-bottom:80px}.economy-copy h2{font-size:clamp(48px,15vw,68px)}.economy-copy>p:not(.eyebrow){font-size:16px}.economy-actions{align-items:flex-start;flex-direction:column;gap:18px}.revenue-visual{min-height:660px}.revenue-phone{min-height:650px;padding:25px 20px;border-radius:42px}.revenue-float{min-width:170px;padding:13px}.revenue-float.top{right:-5px;top:100px}.revenue-float.bottom{left:-5px;bottom:90px}.phone-greeting strong{font-size:25px}.revenue-amount strong{font-size:31px}.revenue-chart{height:110px}.revenue-list>div{padding:11px 12px}}
|
||||||
|
|
||||||
|
.form-honey{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
|
||||||
|
|
||||||
|
/* English typography and long-copy layout refinements */
|
||||||
|
body{overflow-wrap:break-word}
|
||||||
|
.hero h1,.page-hero h1,.split h2,.title-row h2,.cta h2,.principles h2,.funnel-head h2,.case-copy h2,.case-art>strong,.faq aside h2,.contact aside h2,.success h2{font-family:var(--font-geist-sans),Arial,sans-serif;font-weight:780;letter-spacing:-.055em}
|
||||||
|
.hero h1{font-size:clamp(54px,5.4vw,82px);line-height:1.01}
|
||||||
|
.page-hero h1{font-size:clamp(50px,5vw,74px);line-height:1.02;text-transform:uppercase}
|
||||||
|
.split h2,.title-row h2,.cta h2,.principles h2{line-height:1.06}
|
||||||
|
.funnel-head h2{line-height:1.02}
|
||||||
|
.accent{white-space:normal}
|
||||||
|
.lead{line-height:1.72}
|
||||||
|
.btn{height:auto;min-height:56px;padding-top:15px;padding-bottom:15px;line-height:1.2;text-align:center}
|
||||||
|
.portrait-card strong{bottom:90px;font-family:var(--font-geist-sans),Arial,sans-serif;font-size:29px;line-height:1.05}.portrait-card small{bottom:62px}.orbit-label{bottom:10px}
|
||||||
|
.twin-card strong{font-size:19px;line-height:1.2}.original-card strong{font-size:19px;line-height:1.2}
|
||||||
|
.service-grid article{min-width:0;min-height:390px}.service-grid h3{font-size:22px;line-height:1.15}.service-grid p{font-size:15px;line-height:1.65}
|
||||||
|
.flow article{min-width:0;min-height:205px}.flow strong{font-size:18px;line-height:1.25}.flow small{line-height:1.35}
|
||||||
|
.scenario{min-width:0;min-height:430px}.scenario h3{max-width:100%;font-family:var(--font-geist-sans),Arial,sans-serif;font-size:27px;line-height:1.18;letter-spacing:-.035em}.scenario p{line-height:1.45}
|
||||||
|
.adv-grid article{min-width:0;min-height:365px}.adv-grid h2{margin-top:58px;font-size:22px;line-height:1.18}.adv-grid p{font-size:15px;line-height:1.65}
|
||||||
|
.funnel-track article{min-width:0}.funnel-track strong{font-size:20px;line-height:1.2}.funnel-track small{line-height:1.35}
|
||||||
|
.table span,.table b{min-width:0;overflow-wrap:anywhere}
|
||||||
|
.process-list article{grid-template-columns:58px minmax(190px,.72fr) minmax(0,1.25fr) minmax(145px,.68fr)}.process-list h2{font-family:var(--font-geist-sans),Arial,sans-serif;font-size:24px;line-height:1.18;letter-spacing:-.03em}.process-list p{min-width:0}.process-list strong{max-width:190px;text-align:right;line-height:1.35;overflow-wrap:anywhere}
|
||||||
|
.principles>div:last-child article{grid-template-columns:45px minmax(180px,.75fr) minmax(0,1fr)}.principles article strong{line-height:1.3}.principles article p{min-width:0;line-height:1.55}
|
||||||
|
.case-art>strong{max-width:340px;font-size:35px;line-height:1.08}.case-copy h2{font-size:34px;line-height:1.16}.case-copy section{grid-template-columns:135px minmax(0,1fr)}.case-copy section b{line-height:1.35}.case-copy section p{min-width:0}
|
||||||
|
.faq summary{grid-template-columns:50px minmax(0,1fr) 30px;line-height:1.35}.faq aside h2{font-size:32px;line-height:1.12}
|
||||||
|
.contact aside h2{font-size:34px;line-height:1.12}.form label,.form legend{line-height:1.35}.checks span{line-height:1.25}
|
||||||
|
@media(max-width:1040px){.page-hero h1{font-size:clamp(46px,6.5vw,66px)}.process-list article{grid-template-columns:52px minmax(170px,.8fr) minmax(0,1.2fr)}.process-list strong{grid-column:2/-1;justify-self:start;max-width:none;text-align:left}.case-copy section{grid-template-columns:115px minmax(0,1fr)}}
|
||||||
|
@media(max-width:760px){.hero h1{font-size:clamp(45px,13vw,62px)}.page-hero h1{font-size:clamp(40px,11.5vw,56px);line-height:1.04}.split h2,.title-row h2,.cta h2,.principles h2,.funnel-head h2{font-size:clamp(38px,10vw,52px)}.service-grid article,.adv-grid article,.scenario{min-height:auto}.process-list article{grid-template-columns:42px minmax(0,1fr);gap:18px}.process-list article>p,.process-list article>strong{grid-column:2}.principles>div:last-child article{grid-template-columns:38px minmax(0,1fr)}.principles article p{grid-column:2}.case-art>strong{font-size:30px}.case-copy h2{font-size:29px}.case-copy section{grid-template-columns:1fr;gap:10px}.faq summary{grid-template-columns:38px minmax(0,1fr) 24px;font-size:17px}.form-row{grid-template-columns:1fr}}
|
||||||
|
|
||||||
|
/* Only one service card is highlighted at a time. */
|
||||||
|
.service-grid:hover article:first-child:not(:hover){color:var(--ink);background:rgba(255,255,255,.70);box-shadow:0 12px 36px rgba(38,24,64,.045)}
|
||||||
|
.service-grid:hover article:first-child:not(:hover)>span{color:var(--purple)}
|
||||||
|
.service-grid:hover article:first-child:not(:hover) p{color:var(--muted)}
|
||||||
|
|
||||||
|
/* Legal links added for the migrated CozSweet agreements. */
|
||||||
|
.footer-main nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
|
||||||
|
@media(max-width:760px){.footer-main nav{grid-template-columns:1fr 1fr}.footer-main nav div:last-child{grid-column:1/-1}}
|
||||||
|
|||||||
+2
-2
@@ -13,8 +13,8 @@ const geistMono = Geist_Mono({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "COZCREATOR|AI 创作者合作服务",
|
title: "COZCREATOR | AI Creator Partnership",
|
||||||
description: "提供真人授权 AI 分身、年轻时期 AI 分身、原创数字人 IP、内容增长、粉丝关系运营与商业化服务。",
|
description: "Authorized AI avatars, younger-era creator avatars, original digital human IP, content growth, fan relationship management, and monetization.",
|
||||||
other: {
|
other: {
|
||||||
"codex-preview": "development",
|
"codex-preview": "development",
|
||||||
},
|
},
|
||||||
|
|||||||
+40
-24
@@ -2,10 +2,10 @@ import Link from "next/link";
|
|||||||
import { SiteShell } from "../components/SiteShell";
|
import { SiteShell } from "../components/SiteShell";
|
||||||
|
|
||||||
const services = [
|
const services = [
|
||||||
["01", "AI 数字人", "既可基于创作者当前或年轻时期形象打造授权分身,也可从零创建原创数字人 IP。"],
|
["01", "AI Avatars", "Create an authorized avatar based on a creator’s current or younger image—or build an original digital human IP from scratch."],
|
||||||
["02", "内容增长", "把一次创意延展为多平台、多语言、多形态内容资产。"],
|
["02", "Content Growth", "Turn one idea into multilingual, multi-format content assets for multiple platforms."],
|
||||||
["03", "关系运营", "承接评论与私聊,让粉丝被回应、被理解、愿意留下。"],
|
["03", "Fan Relationships", "Carry conversations from comments into DMs, so fans feel seen, understood, and motivated to stay."],
|
||||||
["04", "粉丝变现", "组合订阅、付费内容、打赏与专属互动,构建长期收入。"],
|
["04", "Fan Monetization", "Combine subscriptions, paid content, tips, and exclusive interactions to build recurring revenue."],
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
@@ -14,36 +14,52 @@ export default function Home() {
|
|||||||
<div className="shell hero-grid">
|
<div className="shell hero-grid">
|
||||||
<div className="hero-copy">
|
<div className="hero-copy">
|
||||||
<p className="eyebrow">AI CREATOR PARTNERSHIP</p>
|
<p className="eyebrow">AI CREATOR PARTNERSHIP</p>
|
||||||
<h1>让你的影响力,<br/>拥有第二条<span className="accent">增长曲线</span></h1>
|
<h1>Turn your influence<br/>into a second <span className="accent">growth curve</span></h1>
|
||||||
<p className="lead">既可以为真人创作者打造当前或年轻时期的 AI 分身,也可以从零创建没有真人原型的原创数字人 IP,并持续生产内容、经营粉丝关系,让粉丝关系转化为可持续的商业收入。</p>
|
<p className="lead">Create an AI avatar based on a real creator’s current or younger image—or launch a fully original digital human IP with no real-person prototype. We produce content, nurture fan relationships, and turn those relationships into sustainable revenue.</p>
|
||||||
<div className="actions"><Link className="btn primary" href="/contact">申请合作 <b>→</b></Link><Link className="link" href="/cases">查看合作案例 <b>→</b></Link></div>
|
<div className="actions"><Link className="btn primary" href="/contact">Apply to Partner <b>→</b></Link><Link className="link" href="/cases">Explore Scenarios <b>→</b></Link></div>
|
||||||
</div>
|
</div>
|
||||||
<div className="hero-art" aria-label="AI 创作者增长系统示意">
|
<div className="hero-art" aria-label="AI creator growth system illustration">
|
||||||
<div className="portrait-card"><span>CREATOR</span><div className="portrait-shape"><i/><i/><i/></div><strong>真实影响力</strong><small>表达 · 审美 · 信任</small></div>
|
<div className="portrait-card"><span>CREATOR</span><div className="portrait-shape"><i/><i/><i/></div><strong>Real Influence</strong><small>Voice · Taste · Trust</small></div>
|
||||||
<div className="twin-card"><span>AI AVATAR</span><strong>经典形象新生</strong><small>当前 · 年轻时期 · 声音</small></div>
|
<div className="twin-card"><span>AI AVATAR</span><strong>Iconic Image, Reborn</strong><small>Current · Younger Era · Voice</small></div>
|
||||||
<div className="original-card"><span>ORIGINAL IP</span><strong>从零创造</strong><small>形象 · 人设 · 世界观</small></div>
|
<div className="original-card"><span>ORIGINAL IP</span><strong>Built from Zero</strong><small>Identity · Persona · World</small></div>
|
||||||
<div className="orbit-label">AI 数字人已连接 <i/></div>
|
<div className="orbit-label">AI avatar connected <i/></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="shell proof"><div><i>✦</i>A complete creator growth system</div><div><strong>1:1</strong><span>Tailored Partnership</span></div><div><strong>4</strong><span>Core Growth Modules</span></div><div><strong>∞</strong><span>Scalable Opportunities</span></div></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section className="economy-section">
|
||||||
|
<div className="shell economy-grid">
|
||||||
|
<div className="economy-copy">
|
||||||
|
<p className="eyebrow">COZSWEET CREATOR REVENUE ENGINE</p>
|
||||||
|
<h2>THE AI CREATOR<br/>ECONOMY HAS<br/><span>ARRIVED</span></h2>
|
||||||
|
<p>Cozsweet does more than help you create content. We turn content-driven traffic into lasting fan relationships—and monetize those relationships through subscriptions, paid chats, premium content, tips, and exclusive interactions.</p>
|
||||||
|
<div className="economy-actions"><Link className="btn economy-btn" href="/advantages">Explore Revenue Growth <b>→</b></Link><small>From reach, to relationships, to revenue</small></div>
|
||||||
|
</div>
|
||||||
|
<div className="revenue-visual" aria-label="Cozsweet creator revenue system illustration">
|
||||||
|
<div className="revenue-glow"/>
|
||||||
|
<div className="revenue-phone">
|
||||||
|
<div className="phone-top"><i/><span>COZSWEET</span><b>•••</b></div>
|
||||||
|
<div className="phone-greeting"><span>CREATOR REVENUE</span><strong>Grow Multiple Revenue Streams</strong><small>Your content value is being converted</small></div>
|
||||||
|
<div className="revenue-amount"><strong>$12,680</strong><span>Monthly revenue · Demo data</span></div>
|
||||||
|
<div className="revenue-chart"><div/><div/><div/><div/><div/><div/></div>
|
||||||
|
<div className="revenue-list"><div><i>01</i><span>Subscriptions</span><b>↗</b></div><div><i>02</i><span>Paid Chats</span><b>↗</b></div><div><i>03</i><span>Premium Content</span><b>↗</b></div><div><i>04</i><span>Fan Tips</span><b>↗</b></div></div>
|
||||||
|
</div>
|
||||||
|
<div className="revenue-float top"><small>FAN RELATIONSHIPS</small><strong>Comments → DMs → Community</strong></div>
|
||||||
|
<div className="revenue-float bottom"><small>Monthly growth · Demo data</small><strong>+$3,280 <em>↑ 35%</em></strong></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="shell proof"><div><i>✦</i>一套完整的创作者增长系统</div><div><strong>1:1</strong><span>专属合作方案</span></div><div><strong>4</strong><span>核心增长模块</span></div><div><strong>∞</strong><span>可扩展场景</span></div></div>
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="section shell">
|
<section className="section shell">
|
||||||
<div className="split"><div><p className="kicker">OUR MODEL</p><h2>不是替代创作者,<br/>而是放大创作者。</h2></div><div className="model-copy"><p>已有真人创作者,我们放大其形象、表达与粉丝信任;没有真人原型,也可以从零定义形象、人设与故事,打造完全原创的数字人 IP。</p><div className="model-paths"><span><i/>真人授权分身</span><span><i/>原创数字人 IP</span></div></div></div>
|
<div className="split"><div><p className="kicker">OUR MODEL</p><h2>Not here to replace creators.<br/>Here to amplify them</h2></div><div className="model-copy"><p>For established creators, we amplify their image, voice, and fan trust. Without a real-person prototype, we can define a new identity, persona, and story from the ground up to build an entirely original digital human IP.</p><div className="model-paths"><span><i/>Authorized Creator Avatar</span><span><i/>Original Digital Human IP</span></div></div></div>
|
||||||
<div className="service-grid">{services.map(([no,title,text])=><article key={no}><span>{no}</span><div/><h3>{title}</h3><p>{text}</p></article>)}</div>
|
<div className="service-grid">{services.map(([no,title,text])=><article key={no}><span>{no}</span><div/><h3>{title}</h3><p>{text}</p></article>)}</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section className="section dark"><div className="shell"><div className="split light"><div><p className="kicker">PARTNERSHIP VALUE</p><h2>从“做更多内容”,<br/>到“经营更多价值”。</h2></div><Link className="btn pale" href="/advantages">了解合作优势 <b>→</b></Link></div><div className="flow">{[["01","持续触达粉丝","扩大内容覆盖"],["02","互动被回应","建立关系"],["03","信任被沉淀","形成资产"],["04","影响力变现","持续增长"]].map((x,i)=><article className={i===3?"hot":""} key={x[0]}><span>{x[0]}</span><strong>{x[1]}</strong><small>{x[2]}</small></article>)}</div></div></section>
|
<section className="section dark"><div className="shell"><div className="split light"><div><p className="kicker">PARTNERSHIP VALUE</p><h2>From creating more content<br/>to building more value</h2></div><Link className="btn pale" href="/advantages">Why Partner With Us <b>→</b></Link></div><div className="flow">{[["01","Reach More Fans","Expand Content Reach"],["02","Respond at Scale","Build Relationships"],["03","Compound Trust","Create an Asset"],["04","Monetize Influence","Grow Recurring Revenue"]].map((x,i)=><article className={i===3?"hot":""} key={x[0]}><span>{x[0]}</span><strong>{x[1]}</strong><small>{x[2]}</small></article>)}</div></div></section>
|
||||||
|
|
||||||
<section className="section shell">
|
<section className="section shell"><div className="title-row"><div><p className="kicker">PARTNERSHIP SCENARIOS</p><h2>Flexible models for different stages</h2></div><Link className="link" href="/cases">View All Scenarios <b>→</b></Link></div><div className="scenario-grid">{[["Individual Creators","Keep your current and iconic younger image creating value","AI Avatar · Younger-Era Avatar · Multi-Platform Content","purple"],["Original Digital Human IP","Build a virtual creator designed for long-term growth and monetization","Original Persona · Content Matrix · Fan Relationships","coral"],["MCN / Agency","Use one system to grow and monetize multiple creators","Scalable Onboarding · Standard Workflows · Data Insights","blue"]].map(([label,title,tags,color])=><article className={`scenario ${color}`} key={label}><span>{label}</span><h3>{title}</h3><p>{tags}</p><Link href="/cases">↗</Link></article>)}</div></section>
|
||||||
<div className="title-row"><div><p className="kicker">USE CASES</p><h2>适配不同阶段的合作方式</h2></div><Link className="link" href="/cases">查看全部案例 <b>→</b></Link></div>
|
|
||||||
<div className="scenario-grid">{[
|
|
||||||
["个人创作者","让当前形象与年轻时期的经典形象持续创造价值","AI 数字人 · 年轻时期分身 · 多平台内容","purple"],
|
|
||||||
["原创数字人 IP","从零打造可持续运营和商业化的虚拟创作者","原创人设 · 内容矩阵 · 粉丝关系","coral"],
|
|
||||||
["MCN / Agency","用一套系统承接多个创作者增长与变现","批量上架 · 标准流程 · 数据复盘","blue"],
|
|
||||||
].map(([label,title,tags,color])=><article className={`scenario ${color}`} key={label}><span>{label}</span><h3>{title}</h3><p>{tags}</p><Link href="/cases">↗</Link></article>)}</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section className="cta shell"><div><p className="kicker">START A PARTNERSHIP</p><h2>你带来影响力,<br/>我们把它经营得更远。</h2></div><div><p>告诉我们你的创作者类型、粉丝规模与当前目标,我们会据此设计第一版合作路径。</p><Link className="btn primary" href="/contact">开始合作 <b>→</b></Link></div></section>
|
<section className="cta shell"><div><p className="kicker">START A PARTNERSHIP</p><h2>You bring the influence.<br/>We take it further</h2></div><div><p>Tell us about your creator profile, audience size, and current goals. We’ll design an initial partnership path around your real assets.</p><Link className="btn primary" href="/contact">Start a Partnership <b>→</b></Link></div></section>
|
||||||
</main></SiteShell>;
|
</main></SiteShell>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import { redirect } from "next/navigation";
|
||||||
|
|
||||||
|
export default function PrivacyPolicyRedirect() {
|
||||||
|
redirect("/privacy-policy.html");
|
||||||
|
}
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
import Link from "next/link";import { PageHero } from "../../components/PageHero";import { SiteShell } from "../../components/SiteShell";
|
||||||
const steps=[["01","合作诊断","了解内容资产、核心粉丝、平台分布与商业目标,找到最值得优先验证的机会。","合作机会地图"],["02","形象模式与边界","选择真人当前形象、年轻时期经典形象,或完全原创的数字人模式,并定义人设、故事、使用场景、授权范围和审核规则。","数字人 IP 手册"],["03","AI 数字人制作","授权分身基于照片、视频与声音素材完成校准;原创数字人则从外形、声音、性格与内容世界观开始构建。","可测试版本"],["04","小范围验证","选择一个平台或场景开始,观察触达、互动、留存与付费信号。","验证数据"],["05","规模化增长","扩展内容形态、渠道和变现路径,形成可复用运营节奏。","长期增长计划"]];
|
const steps=[["01","Partnership Diagnosis","Review your content assets, core audience, platform mix, and commercial goals to identify the highest-priority opportunity.","Opportunity Map"],["02","Avatar Model & Boundaries","Choose a current-image avatar, an iconic younger-era avatar, or a fully original digital human. Then define the persona, story, use cases, authorization scope, and review rules.","Digital Human IP Guide"],["03","AI Avatar Production","Calibrate authorized avatars from photos, videos, and voice assets—or build an original digital human from appearance, voice, personality, and content universe.","Testable Version"],["04","Focused Validation","Start with one platform or use case and measure reach, engagement, retention, and payment signals.","Validation Data"],["05","Scale Growth","Expand content formats, channels, and monetization paths into a repeatable operating rhythm.","Long-Term Growth Plan"]];
|
||||||
export default function Process(){return <SiteShell><main><PageHero eyebrow="HOW WE WORK" title={<>从第一次沟通,<br/>到一套<span className="accent">长期增长系统</span>。</>} description="我们从小范围验证开始,让每一步都可看、可控、可复盘。合作范围随真实结果逐步扩展。" extra={<Link className="btn primary small" href="/contact">开始合作评估 <b>→</b></Link>}/><section className="section shell process-list">{steps.map(x=><article key={x[0]}><span>{x[0]}</span><h2>{x[1]}</h2><p>{x[2]}</p><strong>输出:{x[3]}</strong></article>)}</section><section className="section dark"><div className="shell principles"><div><p className="kicker">OUR PRINCIPLES</p><h2>合作过程中,<br/>你始终拥有决定权。</h2></div><div>{[["01","先验证,再扩大","用真实反馈决定投入。"],["02","先定边界,再创作","内容与互动在授权范围内运行。"],["03","长期价值优先","不透支粉丝信任。"]].map(x=><article key={x[0]}><span>{x[0]}</span><strong>{x[1]}</strong><p>{x[2]}</p></article>)}</div></div></section><section className="cta compact shell"><div><p className="kicker">READY WHEN YOU ARE</p><h2>告诉我们你现在最想解决的问题。</h2></div><Link className="btn primary" href="/contact">提交合作意向 <b>→</b></Link></section></main></SiteShell>}
|
export default function Process(){return <SiteShell><main><PageHero eyebrow="HOW WE WORK" title={<>From our first conversation<br/>to a <span className="accent">long-term growth system</span></>} description="We begin with focused validation, keeping every step visible, controlled, and measurable. The partnership expands as real results emerge." extra={<Link className="btn primary small" href="/contact">Start a Partnership Review <b>→</b></Link>}/><section className="section shell process-list">{steps.map(x=><article key={x[0]}><span>{x[0]}</span><h2>{x[1]}</h2><p>{x[2]}</p><strong>DELIVERABLE: {x[3]}</strong></article>)}</section><section className="section dark"><div className="shell principles"><div><p className="kicker">OUR PRINCIPLES</p><h2>You stay in control<br/>throughout the partnership</h2></div><div>{[["01","Validate Before Scaling","Let real feedback guide investment."],["02","Set Boundaries Before Creating","Content and interactions stay within the authorized scope."],["03","Prioritize Long-Term Value","Never sacrifice fan trust for short-term results."]].map(x=><article key={x[0]}><span>{x[0]}</span><strong>{x[1]}</strong><p>{x[2]}</p></article>)}</div></div></section><section className="cta compact shell"><div><p className="kicker">READY WHEN YOU ARE</p><h2>Tell us what you want to solve first</h2></div><Link className="btn primary" href="/contact">Submit Your Interest <b>→</b></Link></section></main></SiteShell>}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
"use client";import { FormEvent,useState } from "react";
|
"use client";
|
||||||
const interests=["真人授权 AI 分身","年轻时期 AI 分身","原创数字人 IP","内容增长","评论与私聊运营","粉丝变现","MCN / Agency 合作"];
|
import { useEffect, useState } from "react";
|
||||||
export function ContactForm(){const [sent,setSent]=useState(false);function submit(e:FormEvent){e.preventDefault();setSent(true)}if(sent)return <div className="success" role="status"><i>✓</i><p className="eyebrow">INQUIRY SAVED</p><h2>合作意向已记录。</h2><p>这是网站原型的交互演示。正式上线时,可将表单接入邮箱、CRM 或企业协作工具。</p><button className="link" type="button" onClick={()=>setSent(false)}>继续填写一份 <b>→</b></button></div>;return <form className="form" onSubmit={submit}><div className="form-row"><label>你的称呼<input required placeholder="怎么称呼你"/></label><label>合作身份<select required defaultValue=""><option value="" disabled>请选择</option><option>个人创作者</option><option>艺人 / 经纪团队</option><option>原创数字人 IP / 项目方</option><option>MCN / Agency</option><option>品牌或平台</option></select></label></div><label>主要账号或作品链接<input required type="url" placeholder="https://"/></label><div className="form-row"><label>主要平台<select required defaultValue=""><option value="" disabled>请选择</option><option>Facebook</option><option>Instagram</option><option>TikTok</option><option>YouTube</option><option>其他</option></select></label><label>粉丝规模<select required defaultValue=""><option value="" disabled>请选择</option><option>尚未创建</option><option>1 万以下</option><option>1–10 万</option><option>10–100 万</option><option>100 万以上</option></select></label></div><fieldset><legend>感兴趣的合作方向</legend><div className="checks">{interests.map(x=><label key={x}><input type="checkbox"/><span>{x}</span></label>)}</div></fieldset><label>你现在最想解决的问题<textarea rows={5} placeholder="例如:想从零打造一个面向拉美市场的原创数字人 IP……"/></label><label className="consent"><input required type="checkbox"/><span>我同意团队仅为评估本次合作而使用以上信息。</span></label><button className="btn primary submit" type="submit">提交合作意向 <b>→</b></button><p className="note">原型演示:当前不会向外部系统发送数据。</p></form>}
|
const interests = ["Current-Image AI Avatar","Younger-Era AI Avatar","Original Digital Human IP","Content Growth","Comment & DM Operations","Fan Monetization","Full-Funnel Conversion Analytics"];
|
||||||
|
const returnUrl = "https://ai-creator-partnership.liuxiaorong2025.chatgpt.site/contact?sent=1";
|
||||||
|
export function ContactForm(){const [sent,setSent]=useState(false);useEffect(()=>{if(new URLSearchParams(window.location.search).get("sent")==="1")setSent(true)},[]);if(sent)return <div className="success" role="status"><i>✓</i><p className="eyebrow">INQUIRY SENT</p><h2>Your partnership inquiry has been sent</h2><p>Your information has been delivered to our partnership team. We’ll review your account foundation and goals, then contact you if there is a strong fit.</p><button className="link" type="button" onClick={()=>{window.history.replaceState({},"","/contact");setSent(false)}}>Submit Another Inquiry <b>→</b></button></div>;return <form className="form" action="https://formsubmit.co/liuxiaorong2018@gmail.com" method="POST"><input type="hidden" name="_subject" value="COZCREATOR: New Creator Partnership Inquiry"/><input type="hidden" name="_template" value="table"/><input type="hidden" name="_next" value={returnUrl}/><input type="text" name="_honey" className="form-honey" tabIndex={-1} autoComplete="off"/><div className="form-row"><label>Your Name<input name="Name" required placeholder="How should we address you?"/></label><label>Partner Type<select name="Partner Type" required defaultValue=""><option value="" disabled>Select one</option><option>Individual Creator</option><option>Talent / Management Team</option><option>Original Digital Human IP / Project</option><option>MCN / Agency</option><option>Brand or Platform</option></select></label></div><label>Email or WhatsApp<input name="Contact Details" required placeholder="How can we reach you?"/></label><label>Main Account or Portfolio URL<input name="Account or Portfolio URL" required type="url" placeholder="https://"/></label><div className="form-row"><label>Primary Platform<select name="Primary Platform" required defaultValue=""><option value="" disabled>Select one</option><option>Facebook</option><option>Instagram</option><option>TikTok</option><option>YouTube</option><option>Other</option></select></label><label>Audience Size<select name="Audience Size" required defaultValue=""><option value="" disabled>Select one</option><option>Not launched yet</option><option>Under 10K</option><option>10K–100K</option><option>100K–1M</option><option>Over 1M</option></select></label></div><fieldset><legend>Partnership Interests</legend><div className="checks">{interests.map(x=><label key={x}><input name="Partnership Interests" value={x} type="checkbox"/><span>{x}</span></label>)}</div></fieldset><label>What is the main problem you want to solve?<textarea name="Partnership Goals" rows={5} placeholder="For example: I want to build an original digital human IP for the Latin American market…"/></label><label className="consent"><input required type="checkbox"/><span>I agree that the team may use this information solely to evaluate this partnership inquiry.</span></label><button className="btn primary submit" type="submit">Submit Partnership Inquiry <b>→</b></button><p className="note">Your inquiry will be sent directly to our partnership team.</p></form>}
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import Link from "next/link";
|
import Link from "next/link";import {usePathname} from "next/navigation";import {useState} from "react";
|
||||||
import { usePathname } from "next/navigation";
|
const links=[["/","Home"],["/advantages","Why Us"],["/process","How It Works"],["/cases","Scenarios"],["/faq","FAQ"],["/contact","Contact"]];
|
||||||
import { useState } from "react";
|
export function SiteNav(){const path=usePathname();const [open,setOpen]=useState(false);return <header><div className="shell nav"><Link className="brand" href="/" onClick={()=>setOpen(false)}>COZ<span>CREATOR</span></Link><button className="menu" type="button" aria-label={open?"Close navigation":"Open navigation"} aria-expanded={open} onClick={()=>setOpen(!open)}><i/><i/></button><nav className={open?"open":""}>{links.map(([href,label])=><Link className={path===href?"active":""} href={href} key={href} onClick={()=>setOpen(false)}>{label}</Link>)}<Link className="nav-cta" href="/contact">Become a Partner</Link></nav></div></header>}
|
||||||
const links=[["/","首页"],["/advantages","合作优势"],["/process","合作流程"],["/cases","案例展示"],["/faq","常见问题"],["/contact","联系"]];
|
|
||||||
export function SiteNav(){const path=usePathname();const [open,setOpen]=useState(false);return <header><div className="shell nav"><Link className="brand" href="/" onClick={()=>setOpen(false)}>COZ<span>CREATOR</span></Link><button className="menu" type="button" aria-label={open?"关闭导航":"打开导航"} aria-expanded={open} onClick={()=>setOpen(!open)}><i/><i/></button><nav className={open?"open":""}>{links.map(([href,label])=><Link className={path===href?"active":""} href={href} key={href} onClick={()=>setOpen(false)}>{label}</Link>)}<Link className="nav-cta" href="/contact">成为合作伙伴</Link></nav></div></header>}
|
|
||||||
|
|||||||
@@ -2,4 +2,47 @@ import Link from "next/link";
|
|||||||
import type { ReactNode } from "react";
|
import type { ReactNode } from "react";
|
||||||
import { SiteNav } from "./SiteNav";
|
import { SiteNav } from "./SiteNav";
|
||||||
|
|
||||||
export function SiteShell({children}:{children:ReactNode}) { return <div className="site"><SiteNav/>{children}<footer><div className="shell footer-main"><div><Link className="brand inverted" href="/">COZ<span>CREATOR</span></Link><p>让 AI 延展创作者的内容、关系与商业价值。</p></div><nav><div><strong>探索</strong><Link href="/advantages">合作优势</Link><Link href="/process">合作流程</Link><Link href="/cases">案例展示</Link></div><div><strong>合作</strong><Link href="/faq">常见问题</Link><Link href="/contact">联系团队</Link><Link href="/contact">申请合作</Link></div></nav></div><div className="shell footer-bottom"><span>© 2026 COZCREATOR</span><span>真人 AI 分身 · 原创数字人 IP · 关系运营 · 粉丝变现</span></div></footer></div> }
|
export function SiteShell({ children }: { children: ReactNode }) {
|
||||||
|
return (
|
||||||
|
<div className="site">
|
||||||
|
<SiteNav />
|
||||||
|
{children}
|
||||||
|
<footer>
|
||||||
|
<div className="shell footer-main">
|
||||||
|
<div>
|
||||||
|
<Link className="brand inverted" href="/">
|
||||||
|
COZ<span>CREATOR</span>
|
||||||
|
</Link>
|
||||||
|
<p>Extending creator content, fan relationships, and revenue with AI.</p>
|
||||||
|
</div>
|
||||||
|
<nav>
|
||||||
|
<div>
|
||||||
|
<strong>Explore</strong>
|
||||||
|
<Link href="/advantages">Why Us</Link>
|
||||||
|
<Link href="/process">How It Works</Link>
|
||||||
|
<Link href="/cases">Partnership Scenarios</Link>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Partner</strong>
|
||||||
|
<Link href="/faq">FAQ</Link>
|
||||||
|
<Link href="/contact">Contact Us</Link>
|
||||||
|
<Link href="/contact">Apply to Partner</Link>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Legal</strong>
|
||||||
|
<a href="/cozsweet/privacy-policy.html">Privacy Policy</a>
|
||||||
|
<a href="/cozsweet/data-deletion.html">Data Deletion</a>
|
||||||
|
<a href="/cozsweet/membership-agreement.html">Membership Agreement</a>
|
||||||
|
<a href="/cozsweet/auto-renewal-agreement.html">Auto-Renewal Agreement</a>
|
||||||
|
<a href="/cozsweet/service-terms.html">Terms of Service</a>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
<div className="shell footer-bottom">
|
||||||
|
<span>© 2026 COZCREATOR</span>
|
||||||
|
<span>Authorized AI Avatars · Original Digital IP · Fan Relationships · Monetization</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@
|
|||||||
"dev": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vite",
|
"dev": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vite",
|
||||||
"build": "bash scripts/build-verified.sh",
|
"build": "bash scripts/build-verified.sh",
|
||||||
"start": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vinext start",
|
"start": "WRANGLER_LOG_PATH=.wrangler/wrangler.log vinext start",
|
||||||
"test": "npm run build && node --test tests/rendered-html.test.mjs",
|
"test": "npm run build && node --test tests/*.test.mjs",
|
||||||
"validate:artifact": "bash scripts/validate-artifact.sh",
|
"validate:artifact": "bash scripts/validate-artifact.sh",
|
||||||
"lint": "bash scripts/sites-env.sh -- eslint . --ignore-pattern dist --ignore-pattern .next",
|
"lint": "bash scripts/sites-env.sh -- eslint . --ignore-pattern dist --ignore-pattern .next",
|
||||||
"db:generate": "bash scripts/sites-env.sh -- drizzle-kit generate"
|
"db:generate": "bash scripts/sites-env.sh -- drizzle-kit generate"
|
||||||
|
|||||||
@@ -0,0 +1,270 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Auto-Renewal Service Agreement for CozSweet - Domies Technology Limited">
|
||||||
|
<title>Auto-Renewal Service Agreement - CozSweet</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #595959;
|
||||||
|
background: #fff;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
[data-custom-class='body'], [data-custom-class='body'] * {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='title'], [data-custom-class='title'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 26px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='subtitle'], [data-custom-class='subtitle'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_1'], [data-custom-class='heading_1'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 19px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_2'], [data-custom-class='heading_2'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 17px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='body_text'], [data-custom-class='body_text'] * {
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='link'], [data-custom-class='link'] * {
|
||||||
|
color: #3030F1 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
word-break: break-word !important;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
ul > li > ul {
|
||||||
|
list-style-type: circle;
|
||||||
|
}
|
||||||
|
ol li {
|
||||||
|
font-family: Arial;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
margin: 15px 0;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
border: 1px solid black;
|
||||||
|
padding: 8px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
background: #f5f5f5;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #000;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
}
|
||||||
|
h1 { font-size: 26px; }
|
||||||
|
h2 { font-size: 19px; }
|
||||||
|
h3 { font-size: 17px; }
|
||||||
|
a {
|
||||||
|
color: #3030F1;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
margin-top: 40px;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div data-custom-class="body">
|
||||||
|
|
||||||
|
<div><strong><span style="font-size: 26px;"><span data-custom-class="title"><h1>AUTO-RENEWAL SERVICE AGREEMENT</h1></span></span></strong></div>
|
||||||
|
<div><span style="color: rgb(127, 127, 127);"><strong><span style="font-size: 15px;"><span data-custom-class="subtitle">Last updated <strong>January 01, 2025</strong></span></span></strong></span></div>
|
||||||
|
<div><br></div><div><br></div><div><br></div>
|
||||||
|
|
||||||
|
<div style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 15px;"><span data-custom-class="body_text"><strong>IMPORTANT NOTICE: THIS AGREEMENT AUTHORIZES AUTOMATIC RECURRING CHARGES TO YOUR PAYMENT METHOD. PLEASE READ IT CAREFULLY BEFORE SUBSCRIBING.</strong></span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 15px;"><span data-custom-class="body_text">This Auto-Renewal Service Agreement ("<strong>Agreement</strong>") is entered into between you ("<strong>User</strong>" or "<strong>you</strong>") and <strong>Domies Technology Limited</strong> ("<strong>we</strong>," "<strong>us</strong>," or "<strong>our</strong>"), and governs the automatic renewal feature applicable to CozSweet subscription plans. This Agreement supplements and is incorporated into the <a href="membership-agreement.html" data-custom-class="link">Membership Service Agreement</a>. By subscribing to any CozSweet plan, you expressly authorize us to charge your designated payment method on a recurring basis as described below.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Questions or concerns?</strong> Contact us at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a> and we will respond within 3 business days.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div><div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<div id="toc" style="line-height: 1.5;"><span style="font-size: 15px;"><span style="color: rgb(0, 0, 0);"><strong><span data-custom-class="heading_1"><h2>TABLE OF CONTENTS</h2></span></strong></span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#howworks"><span style="color: rgb(0, 58, 250);">1. HOW AUTO-RENEWAL WORKS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#plans"><span style="color: rgb(0, 58, 250);">2. SUBSCRIPTION PLANS AND BILLING AMOUNTS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#billing"><span style="color: rgb(0, 58, 250);">3. BILLING CYCLE AND CHARGE TIMING</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#failed"><span style="color: rgb(0, 58, 250);">4. FAILED PAYMENTS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#notifications"><span style="color: rgb(0, 58, 250);">5. RENEWAL NOTIFICATIONS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#cancel"><span style="color: rgb(0, 58, 250);">6. HOW TO CANCEL AUTO-RENEWAL</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#pricechanges"><span style="color: rgb(0, 58, 250);">7. PRICE CHANGES</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#refunds"><span style="color: rgb(0, 58, 250);">8. REFUNDS FOR RENEWED SUBSCRIPTIONS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#minors"><span style="color: rgb(0, 58, 250);">9. AGE RESTRICTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#privacy"><span style="color: rgb(0, 58, 250);">10. PAYMENT INFORMATION AND PRIVACY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#governing"><span style="color: rgb(0, 58, 250);">11. GOVERNING LAW AND DISPUTE RESOLUTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#updates"><span style="color: rgb(0, 58, 250);">12. UPDATES TO THIS AGREEMENT</span></a></span></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 1 -->
|
||||||
|
<div id="howworks" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>1. HOW AUTO-RENEWAL WORKS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">When you subscribe to a CozSweet membership plan, auto-renewal is enabled by default. This means that unless you cancel before the end of your current billing period, your subscription will automatically renew for an additional period of the same duration, and your designated payment method will be charged the then-current subscription fee without further action required from you.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Auto-renewal is designed to ensure uninterrupted access to your Membership Services. You may disable it at any time; see Section 6 for cancellation instructions.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 2 -->
|
||||||
|
<div id="plans" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>2. SUBSCRIPTION PLANS AND BILLING AMOUNTS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The following subscription plans are subject to auto-renewal:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th><span data-custom-class="body_text">Plan</span></th>
|
||||||
|
<th><span data-custom-class="body_text">Billing Cycle</span></th>
|
||||||
|
<th><span data-custom-class="body_text">Renewal Amount</span></th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><span data-custom-class="body_text">Monthly Membership</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Every 30 days</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Current monthly plan price at time of renewal</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><span data-custom-class="body_text">Quarterly Membership</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Every 90 days</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Current quarterly plan price at time of renewal</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><span data-custom-class="body_text">Annual Membership</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Every 365 days</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Current annual plan price at time of renewal</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The specific price applicable to your subscription plan is displayed on the purchase screen before you confirm your subscription. Prices may vary by region due to local currency, exchange rates, and applicable taxes.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 3 -->
|
||||||
|
<div id="billing" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>3. BILLING CYCLE AND CHARGE TIMING</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Your payment method will be charged automatically within 24 hours before the end of each billing period. The renewal charge initiates the next subscription period, which begins immediately upon the expiration of the current period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Example:</strong> If your monthly subscription activates on January 1, your payment method will be charged on or around January 30 for the next 30-day period beginning February 1.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Charges are processed by the Stripe or Coolpays through the payment method associated with your account on that platform. The transaction will appear on your payment statement as a charge from the applicable payment platform.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 4 -->
|
||||||
|
<div id="failed" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>4. FAILED PAYMENTS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If a renewal charge fails due to insufficient funds, an expired payment method, or any other reason, the following process applies:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">The system may automatically retry the charge up to 3 times at approximately 24-hour intervals;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">We will notify you via in-app notification or registered email of the failed payment;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">If all retry attempts fail, your membership will expire at the end of the current billing period and your account will be downgraded to the free tier;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">To restore your membership, you will need to manually subscribe again with a valid payment method.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We recommend ensuring that your payment method on file with the applicable payment platform remains current and valid to avoid service interruption.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 5 -->
|
||||||
|
<div id="notifications" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>5. RENEWAL NOTIFICATIONS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We will send you a renewal reminder via in-app push notification and/or your registered email address before each automatic renewal. Please ensure that:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Push notifications are enabled for the CozSweet application on your device;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Your registered email address is current and you regularly check it.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Failure to receive a notification due to disabled push notifications, an incorrect email address, or messages being filtered as spam does not exempt you from the renewal charge.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 6 -->
|
||||||
|
<div id="cancel" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>6. HOW TO CANCEL AUTO-RENEWAL</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">You may cancel auto-renewal at any time through your account settings on the applicable payment platform (Stripe or Coolpays) (Stripe or Coolpays). Cancellation must be completed at least 24 hours before the end of the current billing period to take effect for the upcoming renewal. After cancellation, you will retain access to Membership Services through the end of the current billing period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We are not responsible for failed cancellations resulting from your failure to follow the correct procedures or meet the cancellation deadline.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 7 -->
|
||||||
|
<div id="pricechanges" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>7. PRICE CHANGES</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We reserve the right to change the price of any subscription plan at any time. If we increase the price of your current plan, we will provide at least 30 days' advance notice by in-app notification or registered email. The new price will apply starting from the first renewal cycle that occurs after the notice period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If you do not wish to continue at the new price, you must cancel your subscription before the new price takes effect. Your continued subscription after a price change constitutes your acceptance of the new price.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 8 -->
|
||||||
|
<div id="refunds" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>8. REFUNDS FOR RENEWED SUBSCRIPTIONS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Renewal charges are generally non-refundable once processed. We may, at our sole discretion, approve a refund in the following circumstances:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">You request a refund within 24 hours of the renewal charge and have not used any premium features during that renewed period;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">A verified technical failure on our end rendered the Membership Services completely inaccessible for more than 72 continuous hours during the renewed period;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Applicable consumer protection laws in your jurisdiction provide a mandatory right to a refund.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">To request a refund, contact us at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>. Alternatively, you may request a refund directly through the Stripe or Coolpays in accordance with their respective refund policies. Please note that platform-level refund decisions are ultimately made by the respective platform and are outside our control.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 9 -->
|
||||||
|
<div id="minors" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>9. AGE RESTRICTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Auto-renewal subscriptions are available only to individuals who are at least 18 years of age and no older than 60 years of age. <strong>Individuals under 18 or over 60 are not permitted to subscribe to any auto-renewing plan or make any payment under this Agreement.</strong> Any subscription completed in violation of this age restriction will be subject to immediate termination without refund.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If a subscription has been made in violation of this age restriction, the account holder or their legal guardian should contact us immediately at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a> to request cancellation.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 10 -->
|
||||||
|
<div id="privacy" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>10. PAYMENT INFORMATION AND PRIVACY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">All payment transactions are processed exclusively through the Stripe or Coolpays. We do not directly collect or store your payment card or bank account details. For information on how we handle your data, please refer to our <a href="privacy-policy.html" data-custom-class="link">Privacy Policy</a>.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 11 -->
|
||||||
|
<div id="governing" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>11. GOVERNING LAW AND DISPUTE RESOLUTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement shall be governed by and construed in accordance with the laws of Hong Kong Special Administrative Region, without regard to its conflict of law principles.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Any dispute arising out of or in connection with this Agreement shall first be resolved through good-faith negotiation. If unresolved within 30 days, the dispute shall be referred to and finally resolved by arbitration administered by the Hong Kong International Arbitration Centre (HKIAC) in accordance with its administered arbitration rules in force at the time of the dispute.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 12 -->
|
||||||
|
<div id="updates" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>12. UPDATES TO THIS AGREEMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We may update this Agreement from time to time. Updated versions will be published within the CozSweet application. If a material change adversely affects your rights, we will provide at least 30 days' advance notice. Your continued use of the auto-renewal feature after the effective date of any update constitutes your acceptance of the revised Agreement.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement constitutes a part of the <a href="membership-agreement.html" data-custom-class="link">Membership Service Agreement</a> and has equal legal effect. In the event of any conflict between this Agreement and the Membership Service Agreement with respect to auto-renewal matters, this Agreement shall prevail.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
<p>© 2025 Domies Technology Limited |
|
||||||
|
<a href="membership-agreement.html">Membership Service Agreement</a> |
|
||||||
|
<a href="privacy-policy.html">Privacy Policy</a> |
|
||||||
|
<a href="https://www.banlv-ai.com/">Home</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,270 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Auto-Renewal Service Agreement for CozSweet - Domies Technology Limited">
|
||||||
|
<title>Auto-Renewal Service Agreement - CozSweet</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #595959;
|
||||||
|
background: #fff;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
[data-custom-class='body'], [data-custom-class='body'] * {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='title'], [data-custom-class='title'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 26px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='subtitle'], [data-custom-class='subtitle'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_1'], [data-custom-class='heading_1'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 19px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_2'], [data-custom-class='heading_2'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 17px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='body_text'], [data-custom-class='body_text'] * {
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='link'], [data-custom-class='link'] * {
|
||||||
|
color: #3030F1 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
word-break: break-word !important;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
ul > li > ul {
|
||||||
|
list-style-type: circle;
|
||||||
|
}
|
||||||
|
ol li {
|
||||||
|
font-family: Arial;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
margin: 15px 0;
|
||||||
|
}
|
||||||
|
th, td {
|
||||||
|
border: 1px solid black;
|
||||||
|
padding: 8px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
background: #f5f5f5;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #000;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
}
|
||||||
|
h1 { font-size: 26px; }
|
||||||
|
h2 { font-size: 19px; }
|
||||||
|
h3 { font-size: 17px; }
|
||||||
|
a {
|
||||||
|
color: #3030F1;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
margin-top: 40px;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div data-custom-class="body">
|
||||||
|
|
||||||
|
<div><strong><span style="font-size: 26px;"><span data-custom-class="title"><h1>AUTO-RENEWAL SERVICE AGREEMENT</h1></span></span></strong></div>
|
||||||
|
<div><span style="color: rgb(127, 127, 127);"><strong><span style="font-size: 15px;"><span data-custom-class="subtitle">Last updated <strong>January 01, 2025</strong></span></span></strong></span></div>
|
||||||
|
<div><br></div><div><br></div><div><br></div>
|
||||||
|
|
||||||
|
<div style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 15px;"><span data-custom-class="body_text"><strong>IMPORTANT NOTICE: THIS AGREEMENT AUTHORIZES AUTOMATIC RECURRING CHARGES TO YOUR PAYMENT METHOD. PLEASE READ IT CAREFULLY BEFORE SUBSCRIBING.</strong></span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 15px;"><span data-custom-class="body_text">This Auto-Renewal Service Agreement ("<strong>Agreement</strong>") is entered into between you ("<strong>User</strong>" or "<strong>you</strong>") and <strong>Domies Technology Limited</strong> ("<strong>we</strong>," "<strong>us</strong>," or "<strong>our</strong>"), and governs the automatic renewal feature applicable to CozSweet subscription plans. This Agreement supplements and is incorporated into the <a href="membership-agreement.html" data-custom-class="link">Membership Service Agreement</a>. By subscribing to any CozSweet plan, you expressly authorize us to charge your designated payment method on a recurring basis as described below.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Questions or concerns?</strong> Contact us at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a> and we will respond within 3 business days.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div><div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<div id="toc" style="line-height: 1.5;"><span style="font-size: 15px;"><span style="color: rgb(0, 0, 0);"><strong><span data-custom-class="heading_1"><h2>TABLE OF CONTENTS</h2></span></strong></span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#howworks"><span style="color: rgb(0, 58, 250);">1. HOW AUTO-RENEWAL WORKS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#plans"><span style="color: rgb(0, 58, 250);">2. SUBSCRIPTION PLANS AND BILLING AMOUNTS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#billing"><span style="color: rgb(0, 58, 250);">3. BILLING CYCLE AND CHARGE TIMING</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#failed"><span style="color: rgb(0, 58, 250);">4. FAILED PAYMENTS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#notifications"><span style="color: rgb(0, 58, 250);">5. RENEWAL NOTIFICATIONS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#cancel"><span style="color: rgb(0, 58, 250);">6. HOW TO CANCEL AUTO-RENEWAL</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#pricechanges"><span style="color: rgb(0, 58, 250);">7. PRICE CHANGES</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#refunds"><span style="color: rgb(0, 58, 250);">8. REFUNDS FOR RENEWED SUBSCRIPTIONS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#minors"><span style="color: rgb(0, 58, 250);">9. AGE RESTRICTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#privacy"><span style="color: rgb(0, 58, 250);">10. PAYMENT INFORMATION AND PRIVACY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#governing"><span style="color: rgb(0, 58, 250);">11. GOVERNING LAW AND DISPUTE RESOLUTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#updates"><span style="color: rgb(0, 58, 250);">12. UPDATES TO THIS AGREEMENT</span></a></span></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 1 -->
|
||||||
|
<div id="howworks" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>1. HOW AUTO-RENEWAL WORKS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">When you subscribe to a CozSweet membership plan, auto-renewal is enabled by default. This means that unless you cancel before the end of your current billing period, your subscription will automatically renew for an additional period of the same duration, and your designated payment method will be charged the then-current subscription fee without further action required from you.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Auto-renewal is designed to ensure uninterrupted access to your Membership Services. You may disable it at any time; see Section 6 for cancellation instructions.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 2 -->
|
||||||
|
<div id="plans" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>2. SUBSCRIPTION PLANS AND BILLING AMOUNTS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The following subscription plans are subject to auto-renewal:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th><span data-custom-class="body_text">Plan</span></th>
|
||||||
|
<th><span data-custom-class="body_text">Billing Cycle</span></th>
|
||||||
|
<th><span data-custom-class="body_text">Renewal Amount</span></th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><span data-custom-class="body_text">Monthly Membership</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Every 30 days</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Current monthly plan price at time of renewal</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><span data-custom-class="body_text">Quarterly Membership</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Every 90 days</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Current quarterly plan price at time of renewal</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><span data-custom-class="body_text">Annual Membership</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Every 365 days</span></td>
|
||||||
|
<td><span data-custom-class="body_text">Current annual plan price at time of renewal</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The specific price applicable to your subscription plan is displayed on the purchase screen before you confirm your subscription. Prices may vary by region due to local currency, exchange rates, and applicable taxes.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 3 -->
|
||||||
|
<div id="billing" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>3. BILLING CYCLE AND CHARGE TIMING</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Your payment method will be charged automatically within 24 hours before the end of each billing period. The renewal charge initiates the next subscription period, which begins immediately upon the expiration of the current period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Example:</strong> If your monthly subscription activates on January 1, your payment method will be charged on or around January 30 for the next 30-day period beginning February 1.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Charges are processed by the Stripe or Coolpays through the payment method associated with your account on that platform. The transaction will appear on your payment statement as a charge from the applicable payment platform.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 4 -->
|
||||||
|
<div id="failed" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>4. FAILED PAYMENTS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If a renewal charge fails due to insufficient funds, an expired payment method, or any other reason, the following process applies:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">The system may automatically retry the charge up to 3 times at approximately 24-hour intervals;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">We will notify you via in-app notification or registered email of the failed payment;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">If all retry attempts fail, your membership will expire at the end of the current billing period and your account will be downgraded to the free tier;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">To restore your membership, you will need to manually subscribe again with a valid payment method.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We recommend ensuring that your payment method on file with the applicable payment platform remains current and valid to avoid service interruption.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 5 -->
|
||||||
|
<div id="notifications" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>5. RENEWAL NOTIFICATIONS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We will send you a renewal reminder via in-app push notification and/or your registered email address before each automatic renewal. Please ensure that:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Push notifications are enabled for the CozSweet application on your device;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Your registered email address is current and you regularly check it.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Failure to receive a notification due to disabled push notifications, an incorrect email address, or messages being filtered as spam does not exempt you from the renewal charge.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 6 -->
|
||||||
|
<div id="cancel" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>6. HOW TO CANCEL AUTO-RENEWAL</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">You may cancel auto-renewal at any time through your account settings on the applicable payment platform (Stripe or Coolpays) (Stripe or Coolpays). Cancellation must be completed at least 24 hours before the end of the current billing period to take effect for the upcoming renewal. After cancellation, you will retain access to Membership Services through the end of the current billing period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We are not responsible for failed cancellations resulting from your failure to follow the correct procedures or meet the cancellation deadline.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 7 -->
|
||||||
|
<div id="pricechanges" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>7. PRICE CHANGES</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We reserve the right to change the price of any subscription plan at any time. If we increase the price of your current plan, we will provide at least 30 days' advance notice by in-app notification or registered email. The new price will apply starting from the first renewal cycle that occurs after the notice period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If you do not wish to continue at the new price, you must cancel your subscription before the new price takes effect. Your continued subscription after a price change constitutes your acceptance of the new price.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 8 -->
|
||||||
|
<div id="refunds" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>8. REFUNDS FOR RENEWED SUBSCRIPTIONS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Renewal charges are generally non-refundable once processed. We may, at our sole discretion, approve a refund in the following circumstances:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">You request a refund within 24 hours of the renewal charge and have not used any premium features during that renewed period;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">A verified technical failure on our end rendered the Membership Services completely inaccessible for more than 72 continuous hours during the renewed period;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Applicable consumer protection laws in your jurisdiction provide a mandatory right to a refund.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">To request a refund, contact us at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>. Alternatively, you may request a refund directly through the Stripe or Coolpays in accordance with their respective refund policies. Please note that platform-level refund decisions are ultimately made by the respective platform and are outside our control.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 9 -->
|
||||||
|
<div id="minors" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>9. AGE RESTRICTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Auto-renewal subscriptions are available only to individuals who are at least 18 years of age and no older than 60 years of age. <strong>Individuals under 18 or over 60 are not permitted to subscribe to any auto-renewing plan or make any payment under this Agreement.</strong> Any subscription completed in violation of this age restriction will be subject to immediate termination without refund.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If a subscription has been made in violation of this age restriction, the account holder or their legal guardian should contact us immediately at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a> to request cancellation.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 10 -->
|
||||||
|
<div id="privacy" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>10. PAYMENT INFORMATION AND PRIVACY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">All payment transactions are processed exclusively through the Stripe or Coolpays. We do not directly collect or store your payment card or bank account details. For information on how we handle your data, please refer to our <a href="privacy-policy.html" data-custom-class="link">Privacy Policy</a>.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 11 -->
|
||||||
|
<div id="governing" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>11. GOVERNING LAW AND DISPUTE RESOLUTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement shall be governed by and construed in accordance with the laws of Hong Kong Special Administrative Region, without regard to its conflict of law principles.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Any dispute arising out of or in connection with this Agreement shall first be resolved through good-faith negotiation. If unresolved within 30 days, the dispute shall be referred to and finally resolved by arbitration administered by the Hong Kong International Arbitration Centre (HKIAC) in accordance with its administered arbitration rules in force at the time of the dispute.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 12 -->
|
||||||
|
<div id="updates" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>12. UPDATES TO THIS AGREEMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We may update this Agreement from time to time. Updated versions will be published within the CozSweet application. If a material change adversely affects your rights, we will provide at least 30 days' advance notice. Your continued use of the auto-renewal feature after the effective date of any update constitutes your acceptance of the revised Agreement.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement constitutes a part of the <a href="membership-agreement.html" data-custom-class="link">Membership Service Agreement</a> and has equal legal effect. In the event of any conflict between this Agreement and the Membership Service Agreement with respect to auto-renewal matters, this Agreement shall prevail.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
<p>© 2025 Domies Technology Limited |
|
||||||
|
<a href="membership-agreement.html">Membership Service Agreement</a> |
|
||||||
|
<a href="privacy-policy.html">Privacy Policy</a> |
|
||||||
|
<a href="https://www.banlv-ai.com/">Home</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Data Deletion – CozSweet</title>
|
||||||
|
<style>
|
||||||
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
background: #f7f8fa;
|
||||||
|
color: #1a1a2e;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background: #ffffff;
|
||||||
|
border-bottom: 1px solid #e8eaf0;
|
||||||
|
padding: 18px 32px;
|
||||||
|
}
|
||||||
|
header .brand {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #3a5bd9;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
flex: 1;
|
||||||
|
max-width: 760px;
|
||||||
|
margin: 48px auto;
|
||||||
|
padding: 0 24px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0,0,0,.08);
|
||||||
|
padding: 48px 48px 40px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
color: #1a1a2e;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #3e4458;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
a { color: #3a5bd9; text-decoration: none; }
|
||||||
|
a:hover { text-decoration: underline; }
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
padding: 28px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #8b93a8;
|
||||||
|
}
|
||||||
|
footer a { color: #3a5bd9; text-decoration: none; }
|
||||||
|
footer a:hover { text-decoration: underline; }
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
.card { padding: 32px 22px; }
|
||||||
|
h1 { font-size: 18px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<a href="https://www.banlv-ai.com/" class="brand">CozSweet</a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="card">
|
||||||
|
<h1>HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?</h1>
|
||||||
|
<p>
|
||||||
|
Based on the applicable laws of your country or state of residence in the US, you may have the
|
||||||
|
right to request access to the personal information we collect from you, details about how we
|
||||||
|
have processed it, correct inaccuracies, or delete your personal information. You may also have
|
||||||
|
the right to withdraw your consent to our processing of your personal information. These rights
|
||||||
|
may be limited in some circumstances by applicable law. To request to review, update, or delete
|
||||||
|
your personal information, please visit:
|
||||||
|
<a href="https://forms.gle/VqLXZWU9qf8kmUC46" target="_blank" rel="noopener">https://forms.gle/VqLXZWU9qf8kmUC46</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>© 2024 伴旅智导科技有限公司 · Shenzhen |
|
||||||
|
<a href="https://www.banlv-ai.com/cozsweet/privacy-policy.html">Privacy Policy</a>
|
||||||
|
</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,288 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Membership Service Agreement for CozSweet - Domies Technology Limited">
|
||||||
|
<title>Membership Service Agreement - CozSweet</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #595959;
|
||||||
|
background: #fff;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
[data-custom-class='body'], [data-custom-class='body'] * {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='title'], [data-custom-class='title'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 26px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='subtitle'], [data-custom-class='subtitle'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_1'], [data-custom-class='heading_1'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 19px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_2'], [data-custom-class='heading_2'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 17px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='body_text'], [data-custom-class='body_text'] * {
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='link'], [data-custom-class='link'] * {
|
||||||
|
color: #3030F1 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
word-break: break-word !important;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
ul > li > ul {
|
||||||
|
list-style-type: circle;
|
||||||
|
}
|
||||||
|
ol li {
|
||||||
|
font-family: Arial;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #000;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
}
|
||||||
|
h1 { font-size: 26px; }
|
||||||
|
h2 { font-size: 19px; }
|
||||||
|
h3 { font-size: 17px; }
|
||||||
|
a {
|
||||||
|
color: #3030F1;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
margin-top: 40px;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div data-custom-class="body">
|
||||||
|
|
||||||
|
<div><strong><span style="font-size: 26px;"><span data-custom-class="title"><h1>MEMBERSHIP SERVICE AGREEMENT</h1></span></span></strong></div>
|
||||||
|
<div><span style="color: rgb(127, 127, 127);"><strong><span style="font-size: 15px;"><span data-custom-class="subtitle">Last updated <strong>January 01, 2025</strong></span></span></strong></span></div>
|
||||||
|
<div><br></div><div><br></div><div><br></div>
|
||||||
|
|
||||||
|
<div style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 15px;"><span data-custom-class="body_text">This Membership Service Agreement ("<strong>Agreement</strong>") is entered into between you ("<strong>User</strong>" or "<strong>you</strong>") and <strong>Domies Technology Limited</strong> ("<strong>we</strong>," "<strong>us</strong>," or "<strong>our</strong>"), governing your access to and use of CozSweet membership services ("<strong>Membership Services</strong>"). By subscribing to, activating, or otherwise using the Membership Services, you confirm that you have read, understood, and agreed to be bound by this Agreement in its entirety.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Questions or concerns?</strong> If you have any questions about this Agreement, please contact us at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div><div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<div id="toc" style="line-height: 1.5;"><span style="font-size: 15px;"><span style="color: rgb(0, 0, 0);"><strong><span data-custom-class="heading_1"><h2>TABLE OF CONTENTS</h2></span></strong></span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#parties"><span style="color: rgb(0, 58, 250);">1. PARTIES TO THIS AGREEMENT</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#services"><span style="color: rgb(0, 58, 250);">2. MEMBERSHIP SERVICES DESCRIPTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#eligibility"><span style="color: rgb(0, 58, 250);">3. ELIGIBILITY AND ACCOUNT REQUIREMENTS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#fees"><span style="color: rgb(0, 58, 250);">4. FEES AND PAYMENT</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#term"><span style="color: rgb(0, 58, 250);">5. MEMBERSHIP TERM AND RENEWAL</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#refunds"><span style="color: rgb(0, 58, 250);">6. CANCELLATION AND REFUND POLICY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#prohibited"><span style="color: rgb(0, 58, 250);">7. PROHIBITED CONDUCT</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#ip"><span style="color: rgb(0, 58, 250);">8. INTELLECTUAL PROPERTY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#privacy"><span style="color: rgb(0, 58, 250);">9. PRIVACY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#modifications"><span style="color: rgb(0, 58, 250);">10. MODIFICATIONS TO SERVICES</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#termination"><span style="color: rgb(0, 58, 250);">11. TERMINATION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#disclaimer"><span style="color: rgb(0, 58, 250);">12. DISCLAIMER OF WARRANTIES</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#liability"><span style="color: rgb(0, 58, 250);">13. LIMITATION OF LIABILITY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#governing"><span style="color: rgb(0, 58, 250);">14. GOVERNING LAW AND DISPUTE RESOLUTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#updates"><span style="color: rgb(0, 58, 250);">15. UPDATES TO THIS AGREEMENT</span></a></span></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 1 -->
|
||||||
|
<div id="parties" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>1. PARTIES TO THIS AGREEMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement is made between:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>User:</strong> Any individual or entity that subscribes to or uses CozSweet Membership Services.</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Company:</strong> Domies Technology Limited, a company registered in Hong Kong, China, with its principal office at Hi-Tech Industrial Park, Hong Kong. Contact email: <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 2 -->
|
||||||
|
<div id="services" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>2. MEMBERSHIP SERVICES DESCRIPTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">CozSweet Membership Services provide Users with access to premium features within the CozSweet application, including but not limited to:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Unlimited access to advanced AI-powered photo editing tools and filters</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Priority access to new feature releases and beta programs</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Ad-free experience across all in-app features</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Expanded cloud storage for saved projects and assets</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Dedicated member-only customer support</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Exclusive member discounts on future product offerings</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The specific features available under each membership tier are displayed on the subscription page at the time of purchase. We reserve the right to modify the features included in Membership Services with reasonable prior notice to Users.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 3 -->
|
||||||
|
<div id="eligibility" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>3. ELIGIBILITY AND ACCOUNT REQUIREMENTS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">To subscribe to Membership Services, you must:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Be at least 18 years of age and no older than 60 years of age at the time of subscription;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Hold a valid, active CozSweet account with accurate and current registration information;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Possess a valid payment method accepted by the applicable payment platform (Stripe or Coolpays);</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Agree to and comply with the terms of this Agreement and our Privacy Policy.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Age Restriction:</strong> Individuals under 18 years of age or over 60 years of age are <strong>not permitted</strong> to purchase or hold a CozSweet membership or make any payment under this Agreement. Any subscription completed in violation of this age restriction will be subject to immediate termination without refund.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">You are responsible for maintaining the confidentiality of your account credentials and for all activities occurring under your account. Membership is personal and non-transferable; sharing, selling, or otherwise transferring your membership to another person is strictly prohibited.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 4 -->
|
||||||
|
<div id="fees" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>4. FEES AND PAYMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Membership fees are clearly displayed on the subscription page before you complete your purchase. All fees are charged in the currency applicable to your region as determined by the payment platform (Stripe or Coolpays).</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Payment is processed by the respective payment platform using your registered payment method. We do not directly collect or store your payment card information. All transactions are subject to the payment terms of the applicable platform.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Fees are inclusive of any applicable taxes. Actual amounts charged may vary due to exchange rate fluctuations or changes in local tax rates. The amount confirmed at the time of purchase is the amount you will be charged.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Price changes:</strong> We reserve the right to adjust membership pricing. If we change the price of your current subscription plan, we will notify you at least 30 days in advance. The new price will apply starting from your next billing cycle.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 5 -->
|
||||||
|
<div id="term" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>5. MEMBERSHIP TERM AND RENEWAL</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Membership Services are offered on the following subscription terms:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Monthly Membership:</strong> Valid for 30 calendar days from the date of activation.</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Quarterly Membership:</strong> Valid for 90 calendar days from the date of activation.</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Annual Membership:</strong> Valid for 365 calendar days from the date of activation.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Unless cancelled prior to the end of the current billing period, your membership will automatically renew for an equivalent subscription period. Automatic renewal is governed by our <a href="auto-renewal-agreement.html" data-custom-class="link">Auto-Renewal Service Agreement</a>.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Upon expiration of a membership that has not been renewed, your account will revert to the free tier. Content you created during the membership period will remain accessible, but premium features will no longer be available.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 6 -->
|
||||||
|
<div id="refunds" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>6. CANCELLATION AND REFUND POLICY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Cancellation:</strong> You may cancel your membership at any time through the subscription management settings of the Stripe or Coolpays. Cancellation takes effect at the end of the current billing period; you will retain access to Membership Services through that date.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Refunds:</strong> Due to the digital nature of our services, membership fees are generally non-refundable once the membership has been activated. Exceptions may apply in the following circumstances:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">You request a refund within 24 hours of purchase and have not used any premium features;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">A verified technical failure on our end renders the Membership Services completely inaccessible for more than 72 continuous hours;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Applicable consumer protection laws in your jurisdiction provide a mandatory right to a refund.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Refund requests should be submitted to <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>. We will process eligible requests within 5 business days. For purchases made through the Stripe or Coolpays, refunds are also subject to those payment platforms' own refund policies.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 7 -->
|
||||||
|
<div id="prohibited" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>7. PROHIBITED CONDUCT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">When using Membership Services, you agree not to:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Share, resell, rent, or otherwise transfer your membership credentials or benefits to any third party;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Use technical or other means to circumvent, disable, or interfere with membership verification or access controls;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Use the Membership Services for any unlawful purpose or in violation of any applicable laws or regulations;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Upload, transmit, or distribute content that is pornographic, violent, discriminatory, defamatory, or otherwise violates public order or morality;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Infringe upon the intellectual property, privacy, or other rights of any third party;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Engage in any activity that disrupts, damages, or impairs the operation of the CozSweet platform or its infrastructure.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We reserve the right to immediately suspend or permanently terminate your membership without refund if you violate any of the above prohibitions.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 8 -->
|
||||||
|
<div id="ip" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>8. INTELLECTUAL PROPERTY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The CozSweet application, including all software code, interface design, AI models, filter assets, graphics, and other content, is the exclusive property of Domies Technology Limited and is protected by applicable intellectual property laws in China and internationally.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Your membership grants you a limited, personal, non-exclusive, non-transferable, revocable license to access and use the Membership Services for personal, non-commercial purposes only. No intellectual property rights are transferred to you under this Agreement.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 9 -->
|
||||||
|
<div id="privacy" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>9. PRIVACY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Your use of the Membership Services is also governed by our <a href="privacy-policy.html" data-custom-class="link">Privacy Policy</a>, which is incorporated into this Agreement by reference. Please review it to understand our practices.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 10 -->
|
||||||
|
<div id="modifications" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>10. MODIFICATIONS TO SERVICES</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We reserve the right to modify, upgrade, or discontinue any aspect of the Membership Services at any time. In the event of a material change that adversely affects your membership benefits, we will provide at least 30 days' advance notice via in-app notification or registered email.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If you do not accept the material changes, you may cancel your membership before the changes take effect and request a pro-rated refund for the unused portion of your current billing period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 11 -->
|
||||||
|
<div id="termination" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>11. TERMINATION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We may suspend or terminate your membership and access to the Membership Services at our sole discretion, with immediate effect and without prior notice, if:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">You breach any provision of this Agreement;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">We are required to do so by applicable law or a court order;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Your conduct causes or is likely to cause harm to other users, third parties, or us.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Upon termination due to your breach, no refund will be issued. You may terminate this Agreement at any time by cancelling your membership subscription.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 12 -->
|
||||||
|
<div id="disclaimer" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>12. DISCLAIMER OF WARRANTIES</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">THE MEMBERSHIP SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WE DO NOT WARRANT THAT THE SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, OR FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 13 -->
|
||||||
|
<div id="liability" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>13. LIMITATION OF LIABILITY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL WE BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING OUT OF OR RELATED TO YOUR USE OF, OR INABILITY TO USE, THE MEMBERSHIP SERVICES, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Our total aggregate liability to you for any claims arising under this Agreement shall not exceed the total membership fees you paid to us in the three (3) months immediately preceding the event giving rise to the claim.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 14 -->
|
||||||
|
<div id="governing" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>14. GOVERNING LAW AND DISPUTE RESOLUTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement shall be governed by and construed in accordance with the laws of Hong Kong Special Administrative Region, without regard to its conflict of law principles.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Any dispute, controversy, or claim arising out of or relating to this Agreement, or the breach, termination, or validity thereof, shall first be resolved through good-faith negotiation between the parties. If the dispute cannot be resolved through negotiation within 30 days, it shall be referred to and finally resolved by arbitration administered by the Hong Kong International Arbitration Centre (HKIAC) in accordance with its administered arbitration rules in force at the time of the dispute.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 15 -->
|
||||||
|
<div id="updates" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>15. UPDATES TO THIS AGREEMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We may update this Agreement from time to time to reflect changes in our services, applicable laws, or business practices. Updated versions will be published within the CozSweet application. Your continued use of the Membership Services after the effective date of any update constitutes your acceptance of the revised Agreement. If you do not agree to any update, you should cancel your membership before the update takes effect.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
<p>© 2025 Domies Technology Limited |
|
||||||
|
<a href="auto-renewal-agreement.html">Auto-Renewal Agreement</a> |
|
||||||
|
<a href="privacy-policy.html">Privacy Policy</a> |
|
||||||
|
<a href="https://www.banlv-ai.com/">Home</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,97 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Data Deletion – CozSweet</title>
|
||||||
|
<style>
|
||||||
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
background: #f7f8fa;
|
||||||
|
color: #1a1a2e;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background: #ffffff;
|
||||||
|
border-bottom: 1px solid #e8eaf0;
|
||||||
|
padding: 18px 32px;
|
||||||
|
}
|
||||||
|
header .brand {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #3a5bd9;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
flex: 1;
|
||||||
|
max-width: 760px;
|
||||||
|
margin: 48px auto;
|
||||||
|
padding: 0 24px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow: 0 2px 12px rgba(0,0,0,.08);
|
||||||
|
padding: 48px 48px 40px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
color: #1a1a2e;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #3e4458;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
a { color: #3a5bd9; text-decoration: none; }
|
||||||
|
a:hover { text-decoration: underline; }
|
||||||
|
footer {
|
||||||
|
text-align: center;
|
||||||
|
padding: 28px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #8b93a8;
|
||||||
|
}
|
||||||
|
footer a { color: #3a5bd9; text-decoration: none; }
|
||||||
|
footer a:hover { text-decoration: underline; }
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
.card { padding: 32px 22px; }
|
||||||
|
h1 { font-size: 18px; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<a href="https://www.banlv-ai.com/" class="brand">CozSweet</a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="card">
|
||||||
|
<h1>HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?</h1>
|
||||||
|
<p>
|
||||||
|
Based on the applicable laws of your country or state of residence in the US, you may have the
|
||||||
|
right to request access to the personal information we collect from you, details about how we
|
||||||
|
have processed it, correct inaccuracies, or delete your personal information. You may also have
|
||||||
|
the right to withdraw your consent to our processing of your personal information. These rights
|
||||||
|
may be limited in some circumstances by applicable law. To request to review, update, or delete
|
||||||
|
your personal information, please visit:
|
||||||
|
<a href="https://forms.gle/VqLXZWU9qf8kmUC46" target="_blank" rel="noopener">https://forms.gle/VqLXZWU9qf8kmUC46</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>© 2024 伴旅智导科技有限公司 · Shenzhen |
|
||||||
|
<a href="https://www.banlv-ai.com/cozsweet/privacy-policy.html">Privacy Policy</a>
|
||||||
|
</p>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,288 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Membership Service Agreement for CozSweet - Domies Technology Limited">
|
||||||
|
<title>Membership Service Agreement - CozSweet</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #595959;
|
||||||
|
background: #fff;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
[data-custom-class='body'], [data-custom-class='body'] * {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='title'], [data-custom-class='title'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 26px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='subtitle'], [data-custom-class='subtitle'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_1'], [data-custom-class='heading_1'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 19px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='heading_2'], [data-custom-class='heading_2'] * {
|
||||||
|
font-family: Arial !important;
|
||||||
|
font-size: 17px !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='body_text'], [data-custom-class='body_text'] * {
|
||||||
|
color: #595959 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
}
|
||||||
|
[data-custom-class='link'], [data-custom-class='link'] * {
|
||||||
|
color: #3030F1 !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
font-family: Arial !important;
|
||||||
|
word-break: break-word !important;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style-type: square;
|
||||||
|
}
|
||||||
|
ul > li > ul {
|
||||||
|
list-style-type: circle;
|
||||||
|
}
|
||||||
|
ol li {
|
||||||
|
font-family: Arial;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #000;
|
||||||
|
margin: 20px 0 10px 0;
|
||||||
|
}
|
||||||
|
h1 { font-size: 26px; }
|
||||||
|
h2 { font-size: 19px; }
|
||||||
|
h3 { font-size: 17px; }
|
||||||
|
a {
|
||||||
|
color: #3030F1;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
margin-top: 40px;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div data-custom-class="body">
|
||||||
|
|
||||||
|
<div><strong><span style="font-size: 26px;"><span data-custom-class="title"><h1>MEMBERSHIP SERVICE AGREEMENT</h1></span></span></strong></div>
|
||||||
|
<div><span style="color: rgb(127, 127, 127);"><strong><span style="font-size: 15px;"><span data-custom-class="subtitle">Last updated <strong>January 01, 2025</strong></span></span></strong></span></div>
|
||||||
|
<div><br></div><div><br></div><div><br></div>
|
||||||
|
|
||||||
|
<div style="line-height: 1.5;"><span style="color: rgb(89, 89, 89); font-size: 15px;"><span data-custom-class="body_text">This Membership Service Agreement ("<strong>Agreement</strong>") is entered into between you ("<strong>User</strong>" or "<strong>you</strong>") and <strong>Domies Technology Limited</strong> ("<strong>we</strong>," "<strong>us</strong>," or "<strong>our</strong>"), governing your access to and use of CozSweet membership services ("<strong>Membership Services</strong>"). By subscribing to, activating, or otherwise using the Membership Services, you confirm that you have read, understood, and agreed to be bound by this Agreement in its entirety.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Questions or concerns?</strong> If you have any questions about this Agreement, please contact us at <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div><div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<div id="toc" style="line-height: 1.5;"><span style="font-size: 15px;"><span style="color: rgb(0, 0, 0);"><strong><span data-custom-class="heading_1"><h2>TABLE OF CONTENTS</h2></span></strong></span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#parties"><span style="color: rgb(0, 58, 250);">1. PARTIES TO THIS AGREEMENT</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#services"><span style="color: rgb(0, 58, 250);">2. MEMBERSHIP SERVICES DESCRIPTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#eligibility"><span style="color: rgb(0, 58, 250);">3. ELIGIBILITY AND ACCOUNT REQUIREMENTS</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#fees"><span style="color: rgb(0, 58, 250);">4. FEES AND PAYMENT</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#term"><span style="color: rgb(0, 58, 250);">5. MEMBERSHIP TERM AND RENEWAL</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#refunds"><span style="color: rgb(0, 58, 250);">6. CANCELLATION AND REFUND POLICY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#prohibited"><span style="color: rgb(0, 58, 250);">7. PROHIBITED CONDUCT</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#ip"><span style="color: rgb(0, 58, 250);">8. INTELLECTUAL PROPERTY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#privacy"><span style="color: rgb(0, 58, 250);">9. PRIVACY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#modifications"><span style="color: rgb(0, 58, 250);">10. MODIFICATIONS TO SERVICES</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#termination"><span style="color: rgb(0, 58, 250);">11. TERMINATION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#disclaimer"><span style="color: rgb(0, 58, 250);">12. DISCLAIMER OF WARRANTIES</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#liability"><span style="color: rgb(0, 58, 250);">13. LIMITATION OF LIABILITY</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#governing"><span style="color: rgb(0, 58, 250);">14. GOVERNING LAW AND DISPUTE RESOLUTION</span></a></span></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><a data-custom-class="link" href="#updates"><span style="color: rgb(0, 58, 250);">15. UPDATES TO THIS AGREEMENT</span></a></span></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 1 -->
|
||||||
|
<div id="parties" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>1. PARTIES TO THIS AGREEMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement is made between:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>User:</strong> Any individual or entity that subscribes to or uses CozSweet Membership Services.</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Company:</strong> Domies Technology Limited, a company registered in Hong Kong, China, with its principal office at Hi-Tech Industrial Park, Hong Kong. Contact email: <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 2 -->
|
||||||
|
<div id="services" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>2. MEMBERSHIP SERVICES DESCRIPTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">CozSweet Membership Services provide Users with access to premium features within the CozSweet application, including but not limited to:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Unlimited access to advanced AI-powered photo editing tools and filters</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Priority access to new feature releases and beta programs</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Ad-free experience across all in-app features</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Expanded cloud storage for saved projects and assets</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Dedicated member-only customer support</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Exclusive member discounts on future product offerings</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The specific features available under each membership tier are displayed on the subscription page at the time of purchase. We reserve the right to modify the features included in Membership Services with reasonable prior notice to Users.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 3 -->
|
||||||
|
<div id="eligibility" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>3. ELIGIBILITY AND ACCOUNT REQUIREMENTS</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">To subscribe to Membership Services, you must:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Be at least 18 years of age and no older than 60 years of age at the time of subscription;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Hold a valid, active CozSweet account with accurate and current registration information;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Possess a valid payment method accepted by the applicable payment platform (Stripe or Coolpays);</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Agree to and comply with the terms of this Agreement and our Privacy Policy.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Age Restriction:</strong> Individuals under 18 years of age or over 60 years of age are <strong>not permitted</strong> to purchase or hold a CozSweet membership or make any payment under this Agreement. Any subscription completed in violation of this age restriction will be subject to immediate termination without refund.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">You are responsible for maintaining the confidentiality of your account credentials and for all activities occurring under your account. Membership is personal and non-transferable; sharing, selling, or otherwise transferring your membership to another person is strictly prohibited.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 4 -->
|
||||||
|
<div id="fees" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>4. FEES AND PAYMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Membership fees are clearly displayed on the subscription page before you complete your purchase. All fees are charged in the currency applicable to your region as determined by the payment platform (Stripe or Coolpays).</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Payment is processed by the respective payment platform using your registered payment method. We do not directly collect or store your payment card information. All transactions are subject to the payment terms of the applicable platform.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Fees are inclusive of any applicable taxes. Actual amounts charged may vary due to exchange rate fluctuations or changes in local tax rates. The amount confirmed at the time of purchase is the amount you will be charged.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Price changes:</strong> We reserve the right to adjust membership pricing. If we change the price of your current subscription plan, we will notify you at least 30 days in advance. The new price will apply starting from your next billing cycle.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 5 -->
|
||||||
|
<div id="term" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>5. MEMBERSHIP TERM AND RENEWAL</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Membership Services are offered on the following subscription terms:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Monthly Membership:</strong> Valid for 30 calendar days from the date of activation.</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Quarterly Membership:</strong> Valid for 90 calendar days from the date of activation.</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;"><strong>Annual Membership:</strong> Valid for 365 calendar days from the date of activation.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Unless cancelled prior to the end of the current billing period, your membership will automatically renew for an equivalent subscription period. Automatic renewal is governed by our <a href="auto-renewal-agreement.html" data-custom-class="link">Auto-Renewal Service Agreement</a>.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Upon expiration of a membership that has not been renewed, your account will revert to the free tier. Content you created during the membership period will remain accessible, but premium features will no longer be available.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 6 -->
|
||||||
|
<div id="refunds" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>6. CANCELLATION AND REFUND POLICY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Cancellation:</strong> You may cancel your membership at any time through the subscription management settings of the Stripe or Coolpays. Cancellation takes effect at the end of the current billing period; you will retain access to Membership Services through that date.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text"><strong>Refunds:</strong> Due to the digital nature of our services, membership fees are generally non-refundable once the membership has been activated. Exceptions may apply in the following circumstances:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">You request a refund within 24 hours of purchase and have not used any premium features;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">A verified technical failure on our end renders the Membership Services completely inaccessible for more than 72 continuous hours;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Applicable consumer protection laws in your jurisdiction provide a mandatory right to a refund.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Refund requests should be submitted to <a href="mailto:contact@banlv-ai.com" data-custom-class="link">contact@banlv-ai.com</a>. We will process eligible requests within 5 business days. For purchases made through the Stripe or Coolpays, refunds are also subject to those payment platforms' own refund policies.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 7 -->
|
||||||
|
<div id="prohibited" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>7. PROHIBITED CONDUCT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">When using Membership Services, you agree not to:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Share, resell, rent, or otherwise transfer your membership credentials or benefits to any third party;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Use technical or other means to circumvent, disable, or interfere with membership verification or access controls;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Use the Membership Services for any unlawful purpose or in violation of any applicable laws or regulations;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Upload, transmit, or distribute content that is pornographic, violent, discriminatory, defamatory, or otherwise violates public order or morality;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Infringe upon the intellectual property, privacy, or other rights of any third party;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Engage in any activity that disrupts, damages, or impairs the operation of the CozSweet platform or its infrastructure.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We reserve the right to immediately suspend or permanently terminate your membership without refund if you violate any of the above prohibitions.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 8 -->
|
||||||
|
<div id="ip" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>8. INTELLECTUAL PROPERTY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">The CozSweet application, including all software code, interface design, AI models, filter assets, graphics, and other content, is the exclusive property of Domies Technology Limited and is protected by applicable intellectual property laws in China and internationally.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Your membership grants you a limited, personal, non-exclusive, non-transferable, revocable license to access and use the Membership Services for personal, non-commercial purposes only. No intellectual property rights are transferred to you under this Agreement.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 9 -->
|
||||||
|
<div id="privacy" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>9. PRIVACY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Your use of the Membership Services is also governed by our <a href="privacy-policy.html" data-custom-class="link">Privacy Policy</a>, which is incorporated into this Agreement by reference. Please review it to understand our practices.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 10 -->
|
||||||
|
<div id="modifications" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>10. MODIFICATIONS TO SERVICES</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We reserve the right to modify, upgrade, or discontinue any aspect of the Membership Services at any time. In the event of a material change that adversely affects your membership benefits, we will provide at least 30 days' advance notice via in-app notification or registered email.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">If you do not accept the material changes, you may cancel your membership before the changes take effect and request a pro-rated refund for the unused portion of your current billing period.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 11 -->
|
||||||
|
<div id="termination" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>11. TERMINATION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We may suspend or terminate your membership and access to the Membership Services at our sole discretion, with immediate effect and without prior notice, if:</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<ul>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">You breach any provision of this Agreement;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">We are required to do so by applicable law or a court order;</span></li>
|
||||||
|
<li data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size: 15px;">Your conduct causes or is likely to cause harm to other users, third parties, or us.</span></li>
|
||||||
|
</ul>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Upon termination due to your breach, no refund will be issued. You may terminate this Agreement at any time by cancelling your membership subscription.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 12 -->
|
||||||
|
<div id="disclaimer" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>12. DISCLAIMER OF WARRANTIES</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">THE MEMBERSHIP SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. WE DO NOT WARRANT THAT THE SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, OR FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 13 -->
|
||||||
|
<div id="liability" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>13. LIMITATION OF LIABILITY</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL WE BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES ARISING OUT OF OR RELATED TO YOUR USE OF, OR INABILITY TO USE, THE MEMBERSHIP SERVICES, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Our total aggregate liability to you for any claims arising under this Agreement shall not exceed the total membership fees you paid to us in the three (3) months immediately preceding the event giving rise to the claim.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 14 -->
|
||||||
|
<div id="governing" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>14. GOVERNING LAW AND DISPUTE RESOLUTION</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">This Agreement shall be governed by and construed in accordance with the laws of Hong Kong Special Administrative Region, without regard to its conflict of law principles.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">Any dispute, controversy, or claim arising out of or relating to this Agreement, or the breach, termination, or validity thereof, shall first be resolved through good-faith negotiation between the parties. If the dispute cannot be resolved through negotiation within 30 days, it shall be referred to and finally resolved by arbitration administered by the Hong Kong International Arbitration Centre (HKIAC) in accordance with its administered arbitration rules in force at the time of the dispute.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
<!-- 15 -->
|
||||||
|
<div id="updates" style="line-height: 1.5;"><strong><span data-custom-class="heading_1"><h2>15. UPDATES TO THIS AGREEMENT</h2></span></strong></div>
|
||||||
|
<div style="line-height: 1.5;"><span style="font-size: 15px;"><span data-custom-class="body_text">We may update this Agreement from time to time to reflect changes in our services, applicable laws, or business practices. Updated versions will be published within the CozSweet application. Your continued use of the Membership Services after the effective date of any update constitutes your acceptance of the revised Agreement. If you do not agree to any update, you should cancel your membership before the update takes effect.</span></span></div>
|
||||||
|
<div style="line-height: 1.5;"><br></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
<p>© 2025 Domies Technology Limited |
|
||||||
|
<a href="auto-renewal-agreement.html">Auto-Renewal Agreement</a> |
|
||||||
|
<a href="privacy-policy.html">Privacy Policy</a> |
|
||||||
|
<a href="https://www.banlv-ai.com/">Home</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,139 @@
|
|||||||
|
import assert from "node:assert/strict";
|
||||||
|
import { readFile } from "node:fs/promises";
|
||||||
|
import test from "node:test";
|
||||||
|
|
||||||
|
const legalDocuments = [
|
||||||
|
{
|
||||||
|
path: "../public/privacy-policy.html",
|
||||||
|
title: "Privacy Policy - CozSweet",
|
||||||
|
marker: "PRIVACY POLICY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/data-deletion.html",
|
||||||
|
title: "Data Deletion – CozSweet",
|
||||||
|
marker: "HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/membership-agreement.html",
|
||||||
|
title: "Membership Service Agreement - CozSweet",
|
||||||
|
marker: "MEMBERSHIP SERVICE AGREEMENT",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/auto-renewal-agreement.html",
|
||||||
|
title: "Auto-Renewal Service Agreement - CozSweet",
|
||||||
|
marker: "AUTO-RENEWAL SERVICE AGREEMENT",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/service-terms.html",
|
||||||
|
title: "Terms of Service - elio",
|
||||||
|
marker: "DESCRIPTION OF SERVICE",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/cozsweet/privacy-policy.html",
|
||||||
|
title: "Privacy Policy - CozSweet",
|
||||||
|
marker: "BUYER PROTECTION POLICY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/cozsweet/data-deletion.html",
|
||||||
|
title: "Data Deletion – CozSweet",
|
||||||
|
marker: "HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/cozsweet/membership-agreement.html",
|
||||||
|
title: "Membership Service Agreement - CozSweet",
|
||||||
|
marker: "MEMBERSHIP SERVICE AGREEMENT",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/cozsweet/auto-renewal-agreement.html",
|
||||||
|
title: "Auto-Renewal Service Agreement - CozSweet",
|
||||||
|
marker: "AUTO-RENEWAL SERVICE AGREEMENT",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "../public/cozsweet/service-terms.html",
|
||||||
|
title: "Terms of Service - elio",
|
||||||
|
marker: "DESCRIPTION OF SERVICE",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const document of legalDocuments) {
|
||||||
|
test(`includes ${document.title}`, async () => {
|
||||||
|
const html = await readFile(new URL(document.path, import.meta.url), "utf8");
|
||||||
|
|
||||||
|
assert.match(html, new RegExp(`<title>${document.title}</title>`));
|
||||||
|
assert.ok(html.includes(document.marker));
|
||||||
|
assert.ok(html.length > 1_000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
test("keeps both privacy policy URLs byte-identical", async () => {
|
||||||
|
const rootPolicy = await readFile(
|
||||||
|
new URL("../public/privacy-policy.html", import.meta.url),
|
||||||
|
);
|
||||||
|
const cozsweetPolicy = await readFile(
|
||||||
|
new URL("../public/cozsweet/privacy-policy.html", import.meta.url),
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.deepEqual(cozsweetPolicy, rootPolicy);
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const documentName of [
|
||||||
|
"data-deletion",
|
||||||
|
"membership-agreement",
|
||||||
|
"auto-renewal-agreement",
|
||||||
|
"service-terms",
|
||||||
|
]) {
|
||||||
|
test(`keeps both ${documentName} URLs byte-identical`, async () => {
|
||||||
|
const rootDocument = await readFile(
|
||||||
|
new URL(`../public/${documentName}.html`, import.meta.url),
|
||||||
|
);
|
||||||
|
const cozsweetDocument = await readFile(
|
||||||
|
new URL(`../public/cozsweet/${documentName}.html`, import.meta.url),
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.deepEqual(cozsweetDocument, rootDocument);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
test("exposes all legal documents from the site footer", async () => {
|
||||||
|
const source = await readFile(
|
||||||
|
new URL("../components/SiteShell.tsx", import.meta.url),
|
||||||
|
"utf8",
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const href of [
|
||||||
|
"/cozsweet/privacy-policy.html",
|
||||||
|
"/cozsweet/data-deletion.html",
|
||||||
|
"/cozsweet/membership-agreement.html",
|
||||||
|
"/cozsweet/auto-renewal-agreement.html",
|
||||||
|
"/cozsweet/service-terms.html",
|
||||||
|
]) {
|
||||||
|
assert.ok(source.includes(`href="${href}"`), `Missing footer link: ${href}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test("redirects the legacy .html URLs through the worker", async () => {
|
||||||
|
const source = await readFile(
|
||||||
|
new URL("../worker/index.ts", import.meta.url),
|
||||||
|
"utf8",
|
||||||
|
);
|
||||||
|
|
||||||
|
for (const documentName of [
|
||||||
|
"privacy-policy",
|
||||||
|
"data-deletion",
|
||||||
|
"membership-agreement",
|
||||||
|
"auto-renewal-agreement",
|
||||||
|
"service-terms",
|
||||||
|
]) {
|
||||||
|
assert.ok(
|
||||||
|
source.includes(
|
||||||
|
`"/cozsweet/${documentName}.html": "/${documentName}.html"`,
|
||||||
|
),
|
||||||
|
`Missing legacy redirect: ${documentName}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
source.includes('"/cozsweet/data-deletion/": "/data-deletion.html"'),
|
||||||
|
"Missing trailing-slash data deletion redirect",
|
||||||
|
);
|
||||||
|
});
|
||||||
@@ -19,6 +19,19 @@ interface ExecutionContext {
|
|||||||
passThroughOnException(): void;
|
passThroughOnException(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LEGAL_DOCUMENT_REDIRECTS: Record<string, string> = {
|
||||||
|
"/cozsweet/privacy-policy.html": "/privacy-policy.html",
|
||||||
|
"/cozsweet/data-deletion.html": "/data-deletion.html",
|
||||||
|
"/cozsweet/membership-agreement.html": "/membership-agreement.html",
|
||||||
|
"/cozsweet/auto-renewal-agreement.html": "/auto-renewal-agreement.html",
|
||||||
|
"/cozsweet/service-terms.html": "/service-terms.html",
|
||||||
|
"/cozsweet/privacy-policy/": "/privacy-policy.html",
|
||||||
|
"/cozsweet/data-deletion/": "/data-deletion.html",
|
||||||
|
"/cozsweet/membership-agreement/": "/membership-agreement.html",
|
||||||
|
"/cozsweet/auto-renewal-agreement/": "/auto-renewal-agreement.html",
|
||||||
|
"/cozsweet/service-terms/": "/service-terms.html",
|
||||||
|
};
|
||||||
|
|
||||||
// Image security config. SVG sources with .svg extension auto-skip the
|
// Image security config. SVG sources with .svg extension auto-skip the
|
||||||
// optimization endpoint on the client side (served directly, no proxy).
|
// optimization endpoint on the client side (served directly, no proxy).
|
||||||
// To route SVGs through the optimizer (with security headers), set
|
// To route SVGs through the optimizer (with security headers), set
|
||||||
@@ -29,6 +42,11 @@ const worker = {
|
|||||||
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
||||||
const url = new URL(request.url);
|
const url = new URL(request.url);
|
||||||
|
|
||||||
|
const legalDocumentPath = LEGAL_DOCUMENT_REDIRECTS[url.pathname];
|
||||||
|
if (legalDocumentPath) {
|
||||||
|
return Response.redirect(new URL(legalDocumentPath, request.url), 308);
|
||||||
|
}
|
||||||
|
|
||||||
if (url.pathname === "/_vinext/image") {
|
if (url.pathname === "/_vinext/image") {
|
||||||
const allowedWidths = [...DEFAULT_DEVICE_SIZES, ...DEFAULT_IMAGE_SIZES];
|
const allowedWidths = [...DEFAULT_DEVICE_SIZES, ...DEFAULT_IMAGE_SIZES];
|
||||||
return handleImageOptimization(request, {
|
return handleImageOptimization(request, {
|
||||||
|
|||||||
Reference in New Issue
Block a user