From b558ab116f02b7e5b92792f0daa1ccb07b4ae8e7 Mon Sep 17 00:00:00 2001 From: Rocky <72559939+hkgood@users.noreply.github.com> Date: Thu, 20 Aug 2026 15:15:22 +0800 Subject: [PATCH] fix(site): rebuild landing page narrative --- docs/assets/site.css | 2598 +++++++++++++++++++++++++----------------- docs/assets/site.js | 38 +- docs/index.html | 995 +++++++--------- 3 files changed, 1948 insertions(+), 1683 deletions(-) diff --git a/docs/assets/site.css b/docs/assets/site.css index 76cae57..50f694a 100644 --- a/docs/assets/site.css +++ b/docs/assets/site.css @@ -1,44 +1,39 @@ :root { color-scheme: light dark; - --canvas: #f5f6f3; + --canvas: #eef2f6; --surface: #ffffff; - --surface-subtle: #eceeea; - --surface-inverse: #121412; - --text: #171a17; - --text-secondary: #606660; - --text-tertiary: #898f8a; - --stroke: rgba(23, 26, 23, 0.11); - --stroke-strong: rgba(23, 26, 23, 0.18); - --accent: #32794a; - --accent-hover: #28643c; - --accent-soft: rgba(50, 121, 74, 0.1); - --on-accent: #ffffff; - --inverse-text: #f4f6f4; - --inverse-secondary: #aeb4af; - --inverse-stroke: rgba(255, 255, 255, 0.12); - --radius-xl: 28px; - --radius-lg: 22px; + --surface-soft: #f7f9fb; + --surface-strong: #e5eaf0; + --ink: #111416; + --ink-secondary: #5f676e; + --ink-tertiary: #8b949c; + --line: rgba(17, 20, 22, 0.1); + --line-strong: rgba(17, 20, 22, 0.18); + --accent: #2d8a57; + --accent-strong: #237247; + --accent-soft: rgba(45, 138, 87, 0.1); + --inverse: #f4f7f5; + --inverse-secondary: #aab2ad; + --inverse-line: rgba(255, 255, 255, 0.12); + --content: min(1200px, calc(100vw - 64px)); + --radius-xl: 32px; + --radius-lg: 24px; --radius-md: 16px; - --content: min(1120px, calc(100vw - 48px)); } html[data-theme="dark"] { - --canvas: #0d0f0e; - --surface: #151816; - --surface-subtle: #1c1f1d; - --surface-inverse: #f1f3f1; - --text: #f1f3f1; - --text-secondary: #a6aca7; - --text-tertiary: #777d78; - --stroke: rgba(255, 255, 255, 0.1); - --stroke-strong: rgba(255, 255, 255, 0.17); - --accent: #73b889; - --accent-hover: #88c79a; - --accent-soft: rgba(115, 184, 137, 0.12); - --on-accent: #102016; - --inverse-text: #f4f6f4; - --inverse-secondary: #aeb4af; - --inverse-stroke: rgba(255, 255, 255, 0.12); + --canvas: #0c0e0f; + --surface: #191c1e; + --surface-soft: #222628; + --surface-strong: #2b3033; + --ink: #f2f4f3; + --ink-secondary: #aab0ac; + --ink-tertiary: #737a75; + --line: rgba(255, 255, 255, 0.09); + --line-strong: rgba(255, 255, 255, 0.16); + --accent: #6fbd8a; + --accent-strong: #82ca99; + --accent-soft: rgba(111, 189, 138, 0.12); } * { @@ -47,7 +42,7 @@ html[data-theme="dark"] { html { scroll-behavior: smooth; - scroll-padding-top: 88px; + scroll-padding-top: 96px; background: var(--canvas); } @@ -55,7 +50,7 @@ body { margin: 0; overflow-x: hidden; background: var(--canvas); - color: var(--text); + color: var(--ink); font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Helvetica Neue", Arial, sans-serif; font-size: 16px; @@ -109,8 +104,8 @@ h3 { left: 12px; padding: 9px 14px; border-radius: 999px; - background: var(--text); - color: var(--canvas); + background: var(--ink); + color: var(--surface); transform: translateY(-160%); } @@ -121,7 +116,7 @@ h3 { .site-nav { position: fixed; z-index: 50; - top: 14px; + top: 18px; right: 0; left: 0; width: var(--content); @@ -129,22 +124,24 @@ h3 { } .nav-shell { - display: flex; + display: grid; + grid-template-columns: 1fr auto 1fr; align-items: center; - justify-content: space-between; min-height: 56px; - padding: 7px 9px 7px 14px; - border: 1px solid var(--stroke); - border-radius: 999px; - background: color-mix(in srgb, var(--surface) 86%, transparent); - backdrop-filter: blur(22px) saturate(130%); - -webkit-backdrop-filter: blur(22px) saturate(130%); + padding: 7px 8px 7px 15px; + border: 1px solid var(--line); + border-radius: 18px; + background: color-mix(in srgb, var(--surface) 82%, transparent); + box-shadow: 0 10px 32px rgba(17, 20, 22, 0.04); + backdrop-filter: blur(22px) saturate(140%); + -webkit-backdrop-filter: blur(22px) saturate(140%); } .brand { display: inline-flex; - gap: 9px; + gap: 10px; align-items: center; + justify-self: start; font-size: 0.94rem; font-weight: 700; letter-spacing: -0.015em; @@ -163,9 +160,15 @@ h3 { } .nav-links { - gap: clamp(16px, 2vw, 28px); - color: var(--text-secondary); - font-size: 0.86rem; + gap: 30px; + color: var(--ink-secondary); + font-size: 0.84rem; + font-weight: 550; +} + +.nav-actions { + gap: 4px; + justify-self: end; } .nav-links a, @@ -177,11 +180,32 @@ h3 { .nav-links a:focus-visible, .footer-links a:hover, .footer-links a:focus-visible { - color: var(--text); + color: var(--ink); } -.nav-actions { - gap: 4px; +.icon-button, +.language-button { + display: inline-grid; + min-width: 40px; + height: 40px; + padding: 0 11px; + border: 0; + border-radius: 11px; + background: transparent; + cursor: pointer; + place-items: center; +} + +.icon-button:hover, +.language-button:hover, +.icon-button:focus-visible, +.language-button:focus-visible { + background: var(--surface-strong); +} + +.language-button { + font-size: 0.76rem; + font-weight: 700; } .icon-button.mobile-menu-button, @@ -193,155 +217,235 @@ h3 { gap: 4px; margin-top: 8px; padding: 8px; - border: 1px solid var(--stroke); - border-radius: 18px; + border: 1px solid var(--line); + border-radius: 16px; background: color-mix(in srgb, var(--surface) 94%, transparent); - backdrop-filter: blur(22px) saturate(130%); - -webkit-backdrop-filter: blur(22px) saturate(130%); + box-shadow: 0 14px 34px rgba(17, 20, 22, 0.08); + backdrop-filter: blur(22px); + -webkit-backdrop-filter: blur(22px); } .mobile-nav a { - padding: 11px 13px; - border-radius: 11px; - color: var(--text-secondary); - font-size: 0.88rem; + padding: 11px 14px; + border-radius: 10px; + color: var(--ink-secondary); + font-size: 0.84rem; font-weight: 650; + text-align: center; } .mobile-nav a:hover, .mobile-nav a:focus-visible { - background: var(--surface-subtle); - color: var(--text); -} - -.icon-button, -.language-button { - display: inline-grid; - min-width: 40px; - height: 40px; - padding: 0 11px; - border: 0; - border-radius: 999px; - background: transparent; - cursor: pointer; - place-items: center; -} - -.icon-button:hover, -.language-button:hover, -.icon-button:focus-visible, -.language-button:focus-visible { - background: var(--surface-subtle); -} - -.language-button { - font-size: 0.78rem; - font-weight: 700; + background: var(--surface-strong); + color: var(--ink); } .material-symbols-rounded { - font-variation-settings: "FILL" 0, "wght" 430, "GRAD" 0, "opsz" 24; + display: inline-grid; + width: 1.35em; + height: 1.35em; + font-size: 0 !important; + line-height: 1; + place-items: center; +} + +.material-symbols-rounded::before { + font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", sans-serif; + line-height: 1; +} + +.mobile-menu-button .material-symbols-rounded, +#themeToggle .material-symbols-rounded { + display: none; +} + +.mobile-menu-button::before { + width: 17px; + height: 12px; + border-top: 1.5px solid currentColor; + border-bottom: 1.5px solid currentColor; + content: ""; +} + +.mobile-menu-button[aria-expanded="true"]::before { + width: auto; + height: auto; + border: 0; + content: "×"; + font-size: 1.4rem; + font-weight: 300; +} + +#themeToggle::before { + content: "◐"; + font-size: 1.05rem; +} + +html[data-theme="dark"] #themeToggle::before { + content: "☀"; + font-size: 1rem; +} + +.scroll-cue .material-symbols-rounded::before, +.stage-arrow::before { + content: "↓"; + font-size: 1rem; +} + +.stage-arrow, +.clipboard-source > .material-symbols-rounded, +.correction-chip .material-symbols-rounded, +.outline-action .material-symbols-rounded { + width: 22px; + height: 22px; +} + +.assistant-tabs > .material-symbols-rounded::before { + content: "•••"; + font-size: 0.72rem; + letter-spacing: 0.08em; +} + +.round-control:first-child .material-symbols-rounded::before { + content: "↶"; + font-size: 1.15rem; +} + +.round-control:last-child .material-symbols-rounded::before { + content: "↑"; + font-size: 1.05rem; +} + +.mic-control .material-symbols-rounded::before { + content: "●"; + font-size: 0.72rem; +} + +.gesture-grid .material-symbols-rounded, +.skill-actions .material-symbols-rounded { + display: none; +} + +.clipboard-source > .material-symbols-rounded::before { + content: "⧉"; + font-size: 1.35rem; +} + +.correction-chip .material-symbols-rounded::before { + content: "✓"; + font-size: 0.95rem; +} + +.privacy-proof > div > .material-symbols-rounded::before { + content: "◈"; + font-size: 1.55rem; +} + +.ios-symbol .material-symbols-rounded::before { + content: "⌨"; + font-size: 2.25rem; +} + +.ios-symbol .material-symbols-rounded { + width: 46px; + height: 46px; +} + +.outline-action .material-symbols-rounded::before { + content: "⌘"; + font-size: 1rem; } .hero { position: relative; - min-height: 820px; - padding: 152px 0 72px; + display: grid; + min-height: 100svh; + padding: 132px 0 92px; overflow: hidden; - background: #0b0d0c; - color: var(--inverse-text); + place-items: center; } -.hero-beams, -.hero-scrim, -.hero-glow { +.hero-orb { position: absolute; - inset: 0; -} - -.hero-beams { - opacity: 0.52; -} - -.hero-beams canvas { - width: 100%; - height: 100%; -} - -.hero-scrim { - background: rgba(11, 13, 12, 0.38); + top: 42%; + left: 50%; + width: min(760px, 84vw); + aspect-ratio: 1; + border-radius: 50%; + background: radial-gradient( + circle, + color-mix(in srgb, var(--accent) 12%, transparent) 0%, + color-mix(in srgb, #7ea7d8 8%, transparent) 38%, + transparent 70% + ); + filter: blur(8px); pointer-events: none; -} - -.hero-glow { - display: none; + transform: translate(-50%, -50%); } .hero-inner { position: relative; - z-index: 2; - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(430px, 0.95fr); - gap: clamp(48px, 7vw, 88px); + z-index: 1; + display: flex; align-items: center; width: var(--content); - margin: auto; + max-width: 920px; + flex-direction: column; + text-align: center; } -.eyebrow { +.launch-pill { display: inline-flex; - gap: 8px; + gap: 9px; align-items: center; - margin: 0 0 17px; - color: var(--text-secondary); - font-size: 0.75rem; - font-weight: 700; - letter-spacing: 0.1em; - text-transform: uppercase; + margin-bottom: clamp(54px, 8vh, 86px); + padding: 9px 14px; + border: 1px solid var(--line); + border-radius: 999px; + background: color-mix(in srgb, var(--surface) 72%, transparent); + color: var(--ink-secondary); + font-size: 0.76rem; + font-weight: 650; + box-shadow: 0 10px 34px rgba(17, 20, 22, 0.05); } -html[data-lang="zh"] .eyebrow { - letter-spacing: 0.06em; - text-transform: none; -} - -.hero .eyebrow { - color: var(--inverse-secondary); -} - -.eyebrow::before { - width: 6px; - height: 6px; +.launch-dot { + width: 7px; + height: 7px; border-radius: 50%; background: var(--accent); - content: ""; + box-shadow: 0 0 0 4px var(--accent-soft); } .hero h1 { - max-width: 690px; - margin-bottom: 24px; - font-size: clamp(3.7rem, 6.8vw, 6.2rem); - font-weight: 720; + max-width: 900px; + margin-bottom: 25px; + font-size: clamp(3.6rem, 5.6vw, 4.5rem); + font-weight: 700; letter-spacing: -0.055em; - line-height: 1; + line-height: 1.02; +} + +.hero h1 > span { + display: block; } html[data-lang="zh"] .hero h1 { - font-size: clamp(3rem, 5vw, 4rem); - font-weight: 700; - letter-spacing: -0.03em; - line-height: 1.08; + max-width: 840px; + font-size: clamp(3.25rem, 5vw, 4rem); + letter-spacing: -0.035em; + line-height: 1.12; } -.hero-accent { - color: #d7ded9; +.hero-muted { + color: var(--ink-tertiary); } .hero-copy { - max-width: 620px; - margin-bottom: 28px; - color: #b4bbb6; - font-size: clamp(1.02rem, 1.4vw, 1.16rem); + max-width: 700px; + margin-bottom: 29px; + color: var(--ink-secondary); + font-size: clamp(1.02rem, 1.5vw, 1.18rem); line-height: 1.75; } @@ -349,7 +453,7 @@ html[data-lang="zh"] .hero h1 { .download-actions { display: flex; flex-wrap: wrap; - gap: 11px; + gap: 14px; align-items: center; } @@ -360,942 +464,1123 @@ html[data-lang="zh"] .hero h1 { .store-badge img { width: auto; - height: 46px; + height: 48px; } .store-badge:hover, .store-badge:focus-visible { - opacity: 0.88; + opacity: 0.86; transform: translateY(-1px); } -.secondary-button, -.primary-button { +.text-action { display: inline-flex; - gap: 8px; align-items: center; - justify-content: center; min-height: 46px; - padding: 0 18px; - border: 1px solid rgba(255, 255, 255, 0.16); - border-radius: 13px; - background: rgba(255, 255, 255, 0.07); - color: #f1f3f1; - font-size: 0.88rem; + padding: 0 15px; + color: var(--ink-secondary); + font-size: 0.86rem; font-weight: 650; - backdrop-filter: blur(12px); } -.primary-button { - border-color: transparent; - background: var(--accent); - color: var(--on-accent); +.text-action::after { + margin-left: 7px; + content: "↗"; +} + +.text-action:hover, +.text-action:focus-visible { + color: var(--ink); } .hero-note { - margin: 15px 0 0; - color: #828983; - font-size: 0.78rem; -} - -.hero-visual { - position: relative; - width: 100%; - max-width: 560px; - margin-left: auto; -} - -.illustration-label { - margin-bottom: 10px; - color: #858c86; - font-size: 0.7rem; - letter-spacing: 0.08em; - text-align: right; - text-transform: uppercase; -} - -html[data-lang="zh"] .illustration-label { - letter-spacing: 0.04em; - text-transform: none; -} - -.input-console { - overflow: hidden; - border: 1px solid rgba(255, 255, 255, 0.13); - border-radius: 26px; - background: rgba(23, 26, 24, 0.88); - backdrop-filter: blur(20px); -} - -.console-toolbar { - display: grid; - grid-template-columns: 44px 1fr 44px; - align-items: center; - min-height: 58px; - padding: 0 13px; - border-bottom: 1px solid rgba(255, 255, 255, 0.09); -} - -.console-brand { - display: grid; - width: 34px; - height: 34px; - border-radius: 11px; - background: var(--accent); - color: var(--on-accent); - font-size: 0.67rem; - font-weight: 800; - place-items: center; -} - -.mode-tabs { - display: flex; - gap: 4px; - justify-content: center; -} - -.mode-tab { - padding: 6px 10px; - border-radius: 999px; - color: #858c86; + margin: 18px 0 0; + color: var(--ink-tertiary); font-size: 0.74rem; - font-weight: 650; } -.mode-tab.is-active { - background: rgba(255, 255, 255, 0.09); - color: #f1f3f1; -} - -.console-menu { - justify-self: end; - color: #858c86; -} - -.console-content { - min-height: 350px; - padding: clamp(26px, 5vw, 42px); -} - -.console-kicker, -.visual-label { - margin-bottom: 9px; - color: #858c86; - font-size: 0.72rem; - font-weight: 650; - letter-spacing: 0.06em; - text-transform: uppercase; -} - -html[data-lang="zh"] .console-kicker, -html[data-lang="zh"] .visual-label { - letter-spacing: 0.04em; - text-transform: none; -} - -.console-transcript { - max-width: 430px; - margin-bottom: 30px; - color: #f1f3f1; - font-size: clamp(1.35rem, 2.6vw, 2rem); - font-weight: 600; - letter-spacing: -0.025em; - line-height: 1.38; -} - -.console-result { - display: grid; - gap: 7px; - padding: 17px 18px; - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 16px; - background: rgba(255, 255, 255, 0.045); -} - -.result-label { - color: var(--accent); - font-size: 0.72rem; - font-weight: 700; -} - -.result-copy { - color: #b9c0ba; - font-size: 0.92rem; -} - -.console-footer { - display: grid; - grid-template-columns: 1fr auto 1fr; +.scroll-cue { + position: absolute; + bottom: 26px; + left: 50%; + display: inline-flex; + gap: 8px; align-items: center; - padding: 15px 22px 18px; - border-top: 1px solid rgba(255, 255, 255, 0.09); + color: var(--ink-tertiary); + font-size: 0.72rem; + transform: translateX(-50%); } -.console-action, -.console-mic { - display: grid; - width: 42px; - height: 42px; - border-radius: 50%; - background: rgba(255, 255, 255, 0.075); - color: #aeb4af; - place-items: center; -} - -.console-action:last-child { - justify-self: end; -} - -.console-mic { - width: 54px; - height: 54px; - background: var(--accent); - color: var(--on-accent); -} - -.hero-caption { - display: flex; - gap: 9px; - justify-content: center; - margin-top: 14px; - color: #858c86; - font-size: 0.75rem; -} - -.trust-strip { - position: relative; - z-index: 3; - display: grid; - grid-template-columns: repeat(4, 1fr); - width: var(--content); - margin: 64px auto 0; - border-top: 1px solid rgba(255, 255, 255, 0.11); - border-bottom: 1px solid rgba(255, 255, 255, 0.11); -} - -.trust-item { - min-height: 92px; - padding: 20px 22px; - border-right: 1px solid rgba(255, 255, 255, 0.11); -} - -.trust-item:last-child { - border-right: 0; -} - -.trust-item strong, -.trust-item span { - display: block; -} - -.trust-item strong { - margin-bottom: 4px; - color: #f0f2f0; - font-size: 0.93rem; -} - -.trust-item span { - color: #858c86; - font-size: 0.78rem; +.scroll-cue .material-symbols-rounded { + font-size: 17px; } .section { - padding: clamp(76px, 9vw, 116px) 0; -} - -.section-dark { - background: #151715; - color: var(--inverse-text); -} - -html[data-theme="dark"] .section-dark { - background: #111311; -} - -.section-dark::before { - display: none; + padding: clamp(96px, 10vw, 150px) 0; } .section-inner { - position: relative; width: var(--content); margin: auto; } -.section-heading { - max-width: 780px; - margin-bottom: clamp(36px, 5vw, 58px); +.product-section { + background: var(--surface); } -.section-heading h2 { - margin-bottom: 18px; - font-size: clamp(2.4rem, 4.6vw, 4rem); +.eyebrow { + display: inline-flex; + gap: 8px; + align-items: center; + margin: 0 0 15px; + color: var(--ink-secondary); + font-size: 0.72rem; font-weight: 700; - letter-spacing: -0.045em; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +html[data-lang="zh"] .eyebrow { + letter-spacing: 0.06em; + text-transform: none; +} + +.eyebrow::before { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--accent); + content: ""; +} + +.center-heading { + max-width: 830px; + margin: 0 auto clamp(52px, 7vw, 84px); + text-align: center; +} + +.center-heading.compact { + margin-bottom: clamp(42px, 6vw, 68px); +} + +.center-heading h2, +.scene-copy h2, +.split-heading h2, +.faq-layout h2 { + margin-bottom: 18px; + font-size: clamp(2.55rem, 4.2vw, 3.5rem); + font-weight: 700; + letter-spacing: -0.05em; line-height: 1.06; } -html[data-lang="zh"] .section-heading h2 { - font-size: clamp(2.1rem, 4vw, 3.25rem); - letter-spacing: -0.025em; - line-height: 1.12; +html[data-lang="zh"] .center-heading h2, +html[data-lang="zh"] .scene-copy h2, +html[data-lang="zh"] .split-heading h2, +html[data-lang="zh"] .faq-layout h2 { + font-size: clamp(2.25rem, 3.8vw, 3.15rem); + letter-spacing: -0.03em; + line-height: 1.14; } -.section-heading p { - max-width: 680px; - margin-bottom: 0; - color: var(--text-secondary); +.faq-layout h2 { + font-size: clamp(2.3rem, 3.5vw, 3rem); +} + +html[data-lang="zh"] .faq-layout h2 { + font-size: clamp(2.1rem, 3vw, 2.65rem); +} + +.center-heading > p:last-child, +.scene-copy > p, +.split-heading > p { + color: var(--ink-secondary); font-size: clamp(1rem, 1.4vw, 1.12rem); line-height: 1.75; } -.section-dark .eyebrow, -.section-dark .section-heading p { - color: var(--inverse-secondary); +.center-heading > p:last-child { + max-width: 700px; + margin: auto; } -.feature-stage { - display: grid; - grid-template-columns: minmax(0, 0.9fr) minmax(440px, 1.1fr); - gap: clamp(44px, 7vw, 88px); - align-items: start; -} - -.feature-copy { - padding-top: 12px; -} - -.feature-copy h3 { - margin-bottom: 16px; - font-size: clamp(2rem, 3.4vw, 2.85rem); - font-weight: 680; - letter-spacing: -0.04em; - line-height: 1.1; -} - -html[data-lang="zh"] .feature-copy h3 { - font-size: clamp(1.8rem, 3vw, 2.3rem); - letter-spacing: -0.02em; - line-height: 1.18; -} - -.feature-copy > p { - max-width: 590px; - color: var(--text-secondary); - font-size: 1.02rem; - line-height: 1.75; -} - -.section-dark .feature-copy > p { - color: var(--inverse-secondary); -} - -.feature-list { - display: grid; - gap: 12px; - margin: 26px 0 0; - padding: 0; - list-style: none; -} - -.feature-list li { - display: flex; - gap: 10px; - align-items: flex-start; -} - -.feature-list .material-symbols-rounded { - margin-top: 2px; - color: var(--text-tertiary); - font-size: 19px; -} - -.section-dark .feature-list .material-symbols-rounded { - color: var(--inverse-secondary); -} - -.workflow-visual { - display: grid; - border: 1px solid var(--stroke); +.product-stage { + overflow: hidden; + border: 1px solid var(--line); border-radius: var(--radius-xl); - background: var(--surface); - color: var(--text); + background: var(--surface-soft); + box-shadow: 0 30px 80px rgba(30, 42, 52, 0.08); } -.workflow-step { +.stage-bar { display: grid; - grid-template-columns: 42px 34px 1fr; - gap: 15px; + grid-template-columns: 1fr auto 1fr; align-items: center; - min-height: 128px; - padding: 24px 28px; - border-bottom: 1px solid var(--stroke); -} - -.workflow-step:last-child { - border-bottom: 0; -} - -.workflow-number { - color: var(--text-tertiary); + min-height: 54px; + padding: 0 18px; + border-bottom: 1px solid var(--line); + color: var(--ink-tertiary); font-size: 0.72rem; - font-weight: 700; } -.workflow-step > .material-symbols-rounded { - color: var(--text-secondary); -} - -.workflow-step strong, -.workflow-step small { - grid-column: 3; -} - -.workflow-step strong { - align-self: end; - font-size: 1.03rem; -} - -.workflow-step small { - align-self: start; - color: var(--text-secondary); - font-size: 0.86rem; -} - -.feature-grid, -.path-grid, -.platform-grid, -.step-grid, -.compare-grid { - display: grid; - gap: 16px; -} - -.feature-grid { - grid-template-columns: repeat(12, 1fr); -} - -.feature-card { +.stage-dots { display: flex; - min-height: 260px; - padding: clamp(24px, 3vw, 32px); - border: 1px solid var(--stroke); - border-radius: var(--radius-lg); - background: var(--surface); + gap: 6px; +} + +.stage-dots i { + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--surface-strong); +} + +.stage-status { + justify-self: end; +} + +.stage-content { + display: grid; + grid-template-columns: minmax(0, 1.05fr) minmax(360px, 0.95fr); + min-height: 560px; +} + +.conversation { + display: flex; + justify-content: center; + padding: clamp(42px, 6vw, 76px); + border-right: 1px solid var(--line); flex-direction: column; } -.feature-card:nth-child(1), -.feature-card:nth-child(4) { - grid-column: span 7; +.conversation-label, +.typing-label, +.platform-label { + color: var(--ink-tertiary); + font-size: 0.71rem; + font-weight: 700; + letter-spacing: 0.07em; + text-transform: uppercase; } -.feature-card:nth-child(2), -.feature-card:nth-child(3) { - grid-column: span 5; +.message-bubble { + align-self: flex-start; + max-width: 510px; + margin: 12px 0 24px; + padding: 18px 20px; + border-radius: 18px 18px 18px 5px; + background: var(--ink); + color: var(--surface); + font-size: clamp(1.1rem, 1.8vw, 1.45rem); + font-weight: 600; + line-height: 1.5; } -.feature-card::after { - display: none; +html[data-theme="dark"] .message-bubble { + background: #f1f4f2; + color: #151817; } -.feature-card .icon { +.insert-preview { + position: relative; + max-width: 520px; + padding: 22px 24px; + border: 1px solid var(--line); + border-radius: 18px; + background: var(--surface); +} + +.preview-kicker { + color: var(--accent); + font-size: 0.71rem; + font-weight: 700; +} + +.insert-preview p { + margin: 9px 0 0; + font-size: clamp(1.05rem, 1.5vw, 1.3rem); + font-weight: 550; + line-height: 1.55; +} + +.text-cursor { + display: inline-block; + width: 2px; + height: 1.1em; + margin-left: 3px; + background: var(--accent); + vertical-align: -0.1em; +} + +.insert-preview .text-cursor { + position: absolute; + right: 22px; + bottom: 24px; +} + +.keyboard-demo { + display: flex; + min-width: 0; + background: var(--surface-strong); + flex-direction: column; +} + +.assistant-tabs { display: grid; - width: 42px; - height: 42px; - margin-bottom: 32px; - border-radius: 13px; - background: var(--surface-subtle); - color: var(--text-secondary); + grid-template-columns: 46px repeat(3, auto) 1fr; + gap: 8px; + align-items: center; + padding: 16px 18px; + border-bottom: 1px solid var(--line); +} + +.assistant-logo { + display: grid; + width: 36px; + height: 36px; + border-radius: 11px; + background: var(--accent); + color: #fff; + font-size: 0.66rem; + font-weight: 800; place-items: center; } -.feature-card h3 { - margin-bottom: 9px; - font-size: clamp(1.3rem, 2vw, 1.72rem); - font-weight: 680; +.assistant-tab { + padding: 6px 9px; + border-radius: 999px; + color: var(--ink-tertiary); + font-size: 0.72rem; + font-weight: 650; +} + +.assistant-tab.active { + background: var(--surface); + color: var(--ink); +} + +.assistant-tabs > .material-symbols-rounded { + justify-self: end; + color: var(--ink-tertiary); +} + +.keyboard-keys { + display: grid; + grid-template-columns: repeat(10, 1fr); + gap: 7px; + padding: clamp(42px, 6vw, 80px) 18px 20px; +} + +.keyboard-keys span { + display: grid; + min-width: 0; + height: 42px; + border-bottom: 2px solid var(--line-strong); + color: var(--ink-secondary); + font-size: 0.75rem; + place-items: center; +} + +.keyboard-keys span:nth-child(n + 11) { + transform: translateX(50%); +} + +.assistant-controls { + display: grid; + grid-template-columns: 1fr auto 1fr; + align-items: center; + margin-top: auto; + padding: 22px 24px 26px; + border-top: 1px solid var(--line); +} + +.round-control, +.mic-control { + display: grid; + width: 44px; + height: 44px; + border-radius: 50%; + background: var(--surface); + color: var(--ink-secondary); + place-items: center; +} + +.round-control:last-child { + justify-self: end; +} + +.mic-control { + width: 58px; + height: 58px; + background: var(--accent); + color: #fff; + box-shadow: 0 10px 24px color-mix(in srgb, var(--accent) 26%, transparent); +} + +.gesture-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + margin-top: 28px; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.gesture-grid article { + display: grid; + grid-template-columns: 28px 1fr; + gap: 5px 12px; + min-height: 140px; + padding: 28px 28px 25px 0; + border-right: 1px solid var(--line); +} + +.gesture-grid article:not(:first-child) { + padding-left: 28px; +} + +.gesture-grid article:last-child { + border-right: 0; +} + +.gesture-number { + color: var(--ink-tertiary); + font-size: 0.68rem; + font-weight: 700; +} + +.gesture-grid .material-symbols-rounded { + color: var(--ink-secondary); + font-size: 21px; +} + +.gesture-grid h3, +.gesture-grid p { + grid-column: 2; +} + +.gesture-grid h3 { + align-self: end; + margin: 0; + font-size: 1rem; +} + +.gesture-grid p { + margin: 0; + color: var(--ink-secondary); + font-size: 0.82rem; +} + +.scene-section { + background: var(--canvas); +} + +.scene-layout { + display: grid; + grid-template-columns: minmax(0, 0.8fr) minmax(520px, 1.2fr); + gap: clamp(64px, 9vw, 124px); + align-items: center; +} + +.scene-copy { + max-width: 510px; +} + +.quiet-list { + display: grid; + gap: 12px; + margin: 27px 0 0; + padding: 0; + color: var(--ink-secondary); + font-size: 0.9rem; + list-style: none; +} + +.quiet-list li { + position: relative; + padding-left: 19px; +} + +.quiet-list li::before { + position: absolute; + top: 0.65em; + left: 0; + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--accent); + content: ""; +} + +.voice-stage { + padding: clamp(28px, 5vw, 52px); + border: 1px solid var(--line); + border-radius: var(--radius-xl); + background: var(--surface); + box-shadow: 0 26px 70px rgba(30, 42, 52, 0.07); +} + +.voice-meta, +.voice-footer { + display: flex; + align-items: center; + justify-content: space-between; + color: var(--ink-tertiary); + font-size: 0.74rem; +} + +.live-indicator { + display: inline-flex; + gap: 7px; + align-items: center; + color: var(--accent); + font-weight: 650; +} + +.live-indicator i { + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--accent); +} + +.transcript-card { + display: flex; + min-height: 230px; + justify-content: center; + padding: 54px 0 40px; + flex-direction: column; +} + +.transcript-card span, +.transcript-card strong { + display: block; + font-size: clamp(1.7rem, 3.2vw, 2.7rem); + letter-spacing: -0.04em; + line-height: 1.32; +} + +html[data-lang="zh"] .transcript-card span, +html[data-lang="zh"] .transcript-card strong { + font-size: clamp(1.6rem, 2.8vw, 2.35rem); letter-spacing: -0.025em; } -.feature-card p { - max-width: 540px; - margin-bottom: 0; - color: var(--text-secondary); - line-height: 1.7; +.transcript-card span { + color: var(--ink-tertiary); } -.clipboard-visual, -.styles-visual { - padding: clamp(24px, 4vw, 38px); - border: 1px solid var(--inverse-stroke); +.waveform { + display: flex; + gap: 7px; + align-items: center; + height: 66px; + margin-bottom: 25px; +} + +.waveform i { + width: 4px; + height: 22%; + border-radius: 999px; + background: var(--accent); + opacity: 0.65; + animation: waveform 1.8s ease-in-out infinite; +} + +.waveform i:nth-child(2n) { height: 58%; animation-delay: -0.4s; } +.waveform i:nth-child(3n) { height: 86%; animation-delay: -0.9s; } +.waveform i:nth-child(5n) { height: 42%; animation-delay: -1.2s; } +.waveform i:nth-child(7n) { height: 100%; animation-delay: -0.2s; } + +@keyframes waveform { + 0%, + 100% { transform: scaleY(0.7); } + 50% { transform: scaleY(1); } +} + +.typing-section { + background: var(--surface); +} + +.typing-stories { + display: grid; + gap: 22px; +} + +.typing-story { + display: grid; + grid-template-columns: minmax(0, 1.05fr) minmax(340px, 0.95fr); + min-height: 460px; + overflow: hidden; + border: 1px solid var(--line); border-radius: var(--radius-xl); - background: rgba(255, 255, 255, 0.045); + background: var(--surface-soft); +} + +.typing-story.reverse .typing-visual { + order: 2; + border-right: 0; + border-left: 1px solid var(--line); +} + +.typing-visual { + display: flex; + justify-content: center; + padding: clamp(36px, 6vw, 70px); + border-right: 1px solid var(--line); + flex-direction: column; +} + +.composition-row { + display: flex; + align-items: center; + min-height: 86px; + font-size: clamp(2rem, 4vw, 3.4rem); + letter-spacing: -0.04em; +} + +.candidate-row, +.suggestion-row { + display: flex; + gap: 8px; + margin-bottom: 42px; + overflow: hidden; +} + +.candidate-row span, +.suggestion-row span { + flex: 0 0 auto; + padding: 8px 12px; + border: 1px solid var(--line); + border-radius: 10px; + color: var(--ink-secondary); + font-size: 0.82rem; +} + +.candidate-row .selected, +.suggestion-row .selected { + border-color: var(--accent); + background: var(--accent-soft); + color: var(--accent); +} + +.mini-keyboard { + display: grid; + grid-template-columns: repeat(10, 1fr); + gap: 7px; +} + +.mini-keyboard span { + display: grid; + min-width: 0; + height: 42px; + border-radius: 8px; + background: var(--surface); + color: var(--ink-secondary); + font-size: 0.72rem; + box-shadow: 0 1px 0 var(--line-strong); + place-items: center; +} + +.story-copy { + display: flex; + justify-content: center; + padding: clamp(38px, 6vw, 70px); + flex-direction: column; +} + +.story-index { + margin-bottom: auto; + color: var(--ink-tertiary); + font-size: 0.7rem; + font-weight: 700; +} + +.story-copy h3 { + margin: 72px 0 14px; + font-size: clamp(1.85rem, 3vw, 2.65rem); + letter-spacing: -0.04em; + line-height: 1.15; +} + +html[data-lang="zh"] .story-copy h3 { + font-size: clamp(1.7rem, 2.7vw, 2.3rem); + letter-spacing: -0.025em; +} + +.story-copy p { + margin-bottom: 0; + color: var(--ink-secondary); + line-height: 1.75; +} + +.english-visual { + gap: 28px; +} + +.english-line { + position: relative; + padding-bottom: 13px; + border-bottom: 1px solid var(--line-strong); + font-size: clamp(1.7rem, 3.5vw, 3rem); + letter-spacing: -0.04em; +} + +.correction-mark { + position: absolute; + right: 0; + bottom: 6px; + width: 25%; + height: 3px; + border-radius: 999px; + background: #d26a5d; +} + +.correction-chip { + display: inline-flex; + gap: 8px; + align-items: center; + align-self: flex-start; + padding: 9px 12px; + border: 1px solid var(--line); + border-radius: 12px; + background: var(--surface); + color: var(--accent); + font-size: 0.86rem; + font-weight: 650; +} + +.correction-chip .material-symbols-rounded { + font-size: 19px; +} + +.skills-section { + background: var(--canvas); +} + +.skills-layout { + grid-template-columns: minmax(520px, 1.15fr) minmax(0, 0.85fr); +} + +.skills-stage { + display: flex; + min-height: 500px; + justify-content: center; + padding: clamp(30px, 5vw, 58px); + border: 1px solid var(--line); + border-radius: var(--radius-xl); + background: var(--surface); + box-shadow: 0 26px 70px rgba(30, 42, 52, 0.07); + flex-direction: column; } .clipboard-source { display: flex; - gap: 14px; - padding: 18px; - border: 1px solid var(--inverse-stroke); - border-radius: 17px; - background: rgba(255, 255, 255, 0.055); + gap: 16px; + padding: 20px; + border: 1px solid var(--line); + border-radius: 18px; + background: var(--surface-soft); } .clipboard-source > .material-symbols-rounded { - color: var(--inverse-secondary); + color: var(--ink-tertiary); } .clipboard-source small { - color: var(--inverse-secondary); + color: var(--ink-tertiary); } .clipboard-source p { - margin: 4px 0 0; - color: var(--inverse-text); + margin: 5px 0 0; + font-size: 1.02rem; line-height: 1.55; } -.clipboard-visual .visual-label { - margin: 28px 0 12px; - color: var(--inverse-secondary); +.stage-arrow { + align-self: center; + margin: 25px 0; + color: var(--ink-tertiary); } -.skill-chip-grid { +.skill-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } -.skill-chip { +.skill-actions > span { display: flex; - gap: 7px; + gap: 8px; align-items: center; - min-height: 48px; - padding: 0 12px; - border: 1px solid var(--inverse-stroke); + min-height: 54px; + padding: 0 13px; + border: 1px solid var(--line); border-radius: 14px; - color: var(--inverse-secondary); + color: var(--ink-secondary); font-size: 0.82rem; font-weight: 650; } -.skill-chip .material-symbols-rounded { - font-size: 18px; -} - -.skill-chip.is-primary { - border-color: color-mix(in srgb, var(--accent) 48%, transparent); - background: color-mix(in srgb, var(--accent) 12%, transparent); +.skill-actions > span.primary { + border-color: color-mix(in srgb, var(--accent) 42%, var(--line)); + background: var(--accent-soft); color: var(--accent); } -.styles-visual { - border-color: var(--stroke); - background: var(--surface); +.skill-actions .material-symbols-rounded { + font-size: 19px; } -.style-selector { +.styles-strip { + display: grid; + grid-template-columns: minmax(0, 0.9fr) minmax(400px, 1.1fr); + gap: 64px; + align-items: end; + margin-top: clamp(80px, 10vw, 130px); + padding-top: 42px; + border-top: 1px solid var(--line); +} + +.styles-strip h3 { + max-width: 560px; + margin: 0; + font-size: clamp(2rem, 3.5vw, 3rem); + letter-spacing: -0.045em; + line-height: 1.15; +} + +html[data-lang="zh"] .styles-strip h3 { + font-size: clamp(1.9rem, 3vw, 2.6rem); + letter-spacing: -0.025em; +} + +.style-options { display: grid; grid-template-columns: repeat(2, 1fr); - gap: 9px; - margin-bottom: 22px; + gap: 10px; } -.style-option { - padding: 13px 14px; - border: 1px solid var(--stroke); - border-radius: 13px; - color: var(--text-secondary); +.style-options span { + padding: 16px; + border: 1px solid var(--line); + border-radius: 14px; + background: var(--surface); + color: var(--ink-secondary); font-size: 0.84rem; font-weight: 650; } -.style-option.is-selected { +.style-options span.selected { border-color: var(--accent); - color: var(--text); + color: var(--ink); } -.style-preview { - padding: 23px; - border-radius: 17px; - background: var(--surface-subtle); +.privacy-section { + background: #121514; + color: var(--inverse); } -.style-preview small { - color: var(--text-tertiary); +html[data-theme="dark"] .privacy-section { + background: #050706; } -.style-preview p { - margin: 12px 0 22px; - font-size: clamp(1.1rem, 2.2vw, 1.45rem); - font-weight: 600; - line-height: 1.55; +.center-heading.inverse .eyebrow, +.center-heading.inverse > p:last-child { + color: var(--inverse-secondary); } -.preview-meta { - display: flex; - flex-wrap: wrap; - gap: 8px; -} - -.preview-meta span { - padding: 6px 9px; - border: 1px solid var(--stroke); - border-radius: 999px; - color: var(--text-secondary); - font-size: 0.72rem; -} - -.path-grid { +.service-paths { + display: grid; grid-template-columns: repeat(3, 1fr); + border-top: 1px solid var(--inverse-line); + border-bottom: 1px solid var(--inverse-line); } -.path-card { - padding: 27px; - border: 1px solid var(--inverse-stroke); - border-radius: var(--radius-lg); - background: rgba(255, 255, 255, 0.035); -} - -.path-card.recommended { - border-color: color-mix(in srgb, var(--accent) 55%, transparent); - background: rgba(255, 255, 255, 0.035); -} - -.path-index { - display: block; - margin-bottom: 42px; - color: var(--inverse-secondary); - font-size: 0.72rem; - font-weight: 750; -} - -.path-card h3 { - margin-bottom: 11px; - font-size: 1.55rem; - font-weight: 680; - letter-spacing: -0.025em; -} - -.path-card p { - color: var(--inverse-secondary); -} - -.path-card ul { - margin: 22px 0 0; - padding-left: 18px; - color: #d2d6d2; -} - -.path-card li { - margin-bottom: 8px; -} - -.account-stage { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(300px, 0.72fr); - gap: clamp(48px, 8vw, 100px); - align-items: start; -} - -.account-phone { - max-width: 380px; - margin: auto; - padding: 26px 18px; - border: 1px solid var(--stroke); - border-radius: 30px; - background: var(--surface); -} - -.credit-screen { - padding: 4px 0 12px; - color: var(--text); -} - -.credit-screen h3 { - margin-bottom: 30px; - text-align: center; - font-size: 1.08rem; -} - -.credit-label { - margin: 0 4px 8px; - color: var(--text-tertiary); - font-size: 0.72rem; -} - -.balance-card, -.credit-pack-list { - border: 1px solid var(--stroke); - border-radius: 18px; - background: var(--canvas); -} - -.balance-card { - margin-bottom: 20px; - padding: 18px; -} - -.balance-card strong { - display: block; - font-size: 2.25rem; - font-variant-numeric: tabular-nums; - letter-spacing: -0.045em; -} - -.balance-card span { - color: var(--text-secondary); - font-size: 0.76rem; -} - -.balance-bar { - width: 68%; - height: 5px; - margin-top: 18px; - border-radius: 999px; - background: var(--accent); -} - -.credit-pack { +.service-paths article { display: flex; - align-items: center; - justify-content: space-between; - min-height: 66px; - padding: 0 15px; - border-bottom: 1px solid var(--stroke); -} - -.credit-pack:last-child { - border-bottom: 0; -} - -.credit-pack strong { - font-size: 1.08rem; - font-variant-numeric: tabular-nums; -} - -.credit-pack .buy-chip { - padding: 6px 10px; - border: 1px solid var(--stroke-strong); - border-radius: 10px; - color: var(--text-secondary); - font-size: 0.78rem; - font-weight: 650; -} - -.privacy-panel { - display: grid; - grid-template-columns: minmax(250px, 0.75fr) minmax(0, 1.25fr); - gap: clamp(40px, 7vw, 82px); - align-items: start; - padding: clamp(30px, 5vw, 56px); - border: 1px solid var(--stroke); - border-radius: var(--radius-xl); - background: var(--surface); -} - -.privacy-mark { - display: grid; - width: 54px; - height: 54px; - margin-bottom: 24px; - border-radius: 16px; - background: var(--accent-soft); - color: var(--accent); - place-items: center; -} - -.privacy-mark span { - font-size: 28px; -} - -.privacy-panel h2 { - margin-bottom: 14px; - font-size: clamp(2rem, 3.5vw, 3.1rem); - font-weight: 700; - letter-spacing: -0.04em; - line-height: 1.08; -} - -html[data-lang="zh"] .privacy-panel h2 { - font-size: clamp(1.9rem, 3vw, 2.65rem); - letter-spacing: -0.02em; - line-height: 1.15; -} - -.privacy-panel p { - color: var(--text-secondary); -} - -.privacy-points { - display: grid; - grid-template-columns: repeat(2, 1fr); - border-top: 1px solid var(--stroke); - border-left: 1px solid var(--stroke); -} - -.privacy-point { - min-height: 132px; - padding: 20px; - border-right: 1px solid var(--stroke); - border-bottom: 1px solid var(--stroke); -} - -.privacy-point strong { - display: block; - margin-bottom: 5px; -} - -.privacy-point span { - color: var(--text-secondary); - font-size: 0.85rem; - line-height: 1.55; -} - -.text-link { - display: inline-flex; - gap: 6px; - align-items: center; - margin-top: 13px; - color: var(--accent); - font-weight: 680; -} - -.platform-grid { - grid-template-columns: repeat(2, 1fr); -} - -.platform-card { - display: flex; - min-height: 420px; - padding: clamp(28px, 4vw, 42px); - border: 1px solid var(--stroke); - border-radius: var(--radius-xl); - background: var(--surface); + min-height: 390px; + padding: 32px; + border-right: 1px solid var(--inverse-line); flex-direction: column; } -.platform-card h3 { - margin: 22px 0 10px; - font-size: 1.8rem; - font-weight: 680; - letter-spacing: -0.03em; +.service-paths article:first-child { + padding-left: 0; } -.platform-card > p { - color: var(--text-secondary); - line-height: 1.7; +.service-paths article:last-child { + padding-right: 0; + border-right: 0; } -.platform-pill { - display: inline-flex; - gap: 7px; - align-items: center; - align-self: flex-start; - padding: 7px 10px; - border: 1px solid var(--stroke); - border-radius: 999px; - color: var(--text-secondary); - font-size: 0.74rem; +.path-number { + color: var(--inverse-secondary); + font-size: 0.68rem; font-weight: 700; } -.platform-specs { +.service-paths .material-symbols-rounded { + display: block; + width: 34px; + height: 1px; + margin: 46px 0 25px; + background: var(--inverse-line); +} + +.service-paths h3 { + margin-bottom: 12px; + font-size: 1.55rem; +} + +.service-paths p { + color: var(--inverse-secondary); + line-height: 1.7; +} + +.path-note { + margin-top: auto; + padding-top: 24px; + color: #d8ddda; + font-size: 0.74rem; +} + +.privacy-proof { + display: flex; + gap: 32px; + align-items: center; + justify-content: space-between; + margin-top: 54px; +} + +.privacy-proof > div { + display: flex; + gap: 15px; + align-items: center; +} + +.privacy-proof > div > .material-symbols-rounded { + width: 30px; + height: 30px; + color: var(--accent); +} + +.privacy-proof h3 { + margin: 0; + font-size: clamp(1.2rem, 2vw, 1.55rem); +} + +.inverse-link { + display: inline-flex; + gap: 8px; + align-items: center; + color: var(--inverse-secondary); + font-size: 0.84rem; + font-weight: 650; +} + +.inverse-link:hover, +.inverse-link:focus-visible { + color: var(--inverse); +} + +.platforms-section { + background: var(--surface); +} + +.platform-stories { display: grid; grid-template-columns: repeat(2, 1fr); - margin-top: auto; - padding-top: 30px; - border-top: 1px solid var(--stroke); + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); } -.platform-specs span { - min-height: 52px; - padding: 12px 12px 12px 0; - border-bottom: 1px solid var(--stroke); - color: var(--text-secondary); - font-size: 0.82rem; +.platform-stories article { + display: grid; + grid-template-columns: 120px 1fr; + gap: 30px; + min-height: 360px; + padding: 52px 52px 52px 0; + border-right: 1px solid var(--line); } -.platform-specs span:nth-last-child(-n + 2) { - border-bottom: 0; +.platform-stories article:last-child { + padding-right: 0; + padding-left: 52px; + border-right: 0; } -.step-grid { - grid-template-columns: repeat(3, 1fr); - counter-reset: steps; +.platform-symbol { + display: grid; + width: 110px; + height: 150px; + align-self: start; + border: 1px solid var(--line); + border-radius: 28px; + background: var(--surface-soft); + color: var(--ink-secondary); + place-items: center; } -.step { - min-height: 240px; - padding: 25px 25px 25px 0; - border-top: 1px solid var(--stroke-strong); - counter-increment: steps; +.platform-symbol .material-symbols-rounded { + font-size: 42px; } -.step::before { - display: block; - margin-bottom: 44px; - color: var(--text-tertiary); - content: "0" counter(steps); - font-size: 0.72rem; - font-weight: 750; - letter-spacing: 0.08em; +.mac-symbol { + width: 116px; + height: 96px; + border-radius: 18px; } -.step h3 { - margin-bottom: 9px; - font-size: 1.35rem; - font-weight: 680; +.option-key { + font-size: 2.4rem; + font-weight: 500; +} + +.platform-stories h3 { + margin: 26px 0 12px; + font-size: clamp(1.5rem, 2.5vw, 2.1rem); + letter-spacing: -0.035em; + line-height: 1.2; +} + +html[data-lang="zh"] .platform-stories h3 { letter-spacing: -0.02em; } -.step p { - color: var(--text-secondary); +.platform-stories p { + margin: 0; + color: var(--ink-secondary); + line-height: 1.75; } -.compare-grid { - grid-template-columns: repeat(3, 1fr); +.platform-footnote { + margin: 20px 0 0; + color: var(--ink-tertiary); + font-size: 0.76rem; + text-align: center; } -.compare-cell { +.start-section { + background: var(--canvas); +} + +.split-heading { display: grid; - grid-template-columns: 34px 1fr; - gap: 4px 12px; - min-height: 132px; - padding: 22px; - border: 1px solid var(--inverse-stroke); - border-radius: 17px; - background: rgba(255, 255, 255, 0.035); + grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.65fr); + gap: 80px; + align-items: end; + margin-bottom: 58px; } -.compare-cell .material-symbols-rounded { - grid-row: span 2; - color: var(--inverse-secondary); +.split-heading h2 { + max-width: 760px; + margin: 0; } -.compare-cell strong, -.compare-cell span { +.split-heading > p { + margin: 0; +} + +.setup-steps { + display: grid; + grid-template-columns: repeat(3, 1fr); + margin: 0; + padding: 0; + border-top: 1px solid var(--line-strong); + counter-reset: setup; + list-style: none; +} + +.setup-steps li { + min-height: 260px; + padding: 30px 30px 30px 0; + border-right: 1px solid var(--line); + counter-increment: setup; +} + +.setup-steps li:not(:first-child) { + padding-left: 30px; +} + +.setup-steps li:last-child { + border-right: 0; +} + +.setup-steps li::before { display: block; + margin-bottom: 60px; + color: var(--ink-tertiary); + content: "0" counter(setup); + font-size: 0.7rem; + font-weight: 700; } -.compare-cell strong { - align-self: end; - font-size: 0.92rem; +.setup-steps h3 { + margin-bottom: 10px; + font-size: 1.3rem; } -.compare-cell > span:last-child { - color: var(--inverse-secondary); - font-size: 0.78rem; - line-height: 1.45; +.setup-steps p { + margin: 0; + color: var(--ink-secondary); + font-size: 0.9rem; + line-height: 1.7; +} + +.stable-strip { + display: grid; + grid-template-columns: auto 1fr; + gap: 48px; + align-items: center; + margin-top: 28px; + padding: 24px 28px; + border: 1px solid var(--line); + border-radius: 18px; + background: var(--surface); +} + +.stable-strip > span { + font-size: 0.82rem; + font-weight: 700; +} + +.stable-strip ul { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; + margin: 0; + padding: 0; + color: var(--ink-secondary); + font-size: 0.76rem; + list-style: none; +} + +.stable-strip li { + padding-left: 13px; + border-left: 1px solid var(--line); +} + +.faq-section { + background: var(--surface); +} + +.faq-layout { + display: grid; + grid-template-columns: minmax(280px, 0.7fr) minmax(0, 1.3fr); + gap: clamp(70px, 10vw, 140px); + align-items: start; +} + +.faq-layout h2 { + margin: 0; } .faq-list { - max-width: 900px; - border-top: 1px solid var(--stroke); + border-top: 1px solid var(--line); } .faq-item { - border-bottom: 1px solid var(--stroke); + border-bottom: 1px solid var(--line); } .faq-item summary { @@ -1305,7 +1590,7 @@ html[data-lang="zh"] .privacy-panel h2 { justify-content: space-between; padding: 23px 0; cursor: pointer; - font-size: clamp(1.02rem, 1.7vw, 1.2rem); + font-size: 1.05rem; font-weight: 650; list-style: none; } @@ -1315,9 +1600,9 @@ html[data-lang="zh"] .privacy-panel h2 { } .faq-item summary::after { - color: var(--text-tertiary); + color: var(--ink-tertiary); content: "+"; - font-size: 1.35rem; + font-size: 1.3rem; font-weight: 400; } @@ -1326,49 +1611,82 @@ html[data-lang="zh"] .privacy-panel h2 { } .faq-item p { - max-width: 760px; padding: 0 0 23px; - color: var(--text-secondary); + color: var(--ink-secondary); + line-height: 1.7; +} + +.download-section { + background: var(--surface); + padding-top: 0; } .download-panel { - padding: clamp(38px, 7vw, 72px); + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 70px; + align-items: end; + padding: clamp(44px, 7vw, 80px); border-radius: var(--radius-xl); - background: #151715; - color: #f2f4f2; -} - -.download-panel::after { - display: none; + background: #151817; + color: var(--inverse); } .download-panel .eyebrow { - color: #9ea49f; + color: var(--inverse-secondary); } .download-panel h2 { - max-width: 760px; - margin-bottom: 16px; - font-size: clamp(2.7rem, 5vw, 4.7rem); - font-weight: 700; + max-width: 720px; + margin-bottom: 15px; + font-size: clamp(2.8rem, 4.8vw, 4.2rem); letter-spacing: -0.055em; - line-height: 1; + line-height: 1.05; } html[data-lang="zh"] .download-panel h2 { - font-size: clamp(2.2rem, 4vw, 3.5rem); - letter-spacing: -0.025em; - line-height: 1.1; + font-size: clamp(2.3rem, 3.8vw, 3.3rem); + letter-spacing: -0.03em; + line-height: 1.12; } -.download-panel > p { - max-width: 640px; - margin-bottom: 27px; - color: #aeb4af; +.download-panel p:last-child { + max-width: 650px; + margin-bottom: 0; + color: var(--inverse-secondary); +} + +.download-actions { + max-width: 370px; + justify-content: flex-end; +} + +.outline-action { + display: inline-flex; + gap: 8px; + align-items: center; + min-height: 48px; + padding: 0 16px; + border: 1px solid var(--inverse-line); + border-radius: 10px; + color: var(--inverse-secondary); + font-size: 0.82rem; + font-weight: 650; +} + +.outline-action:hover, +.outline-action:focus-visible { + border-color: rgba(255, 255, 255, 0.25); + color: var(--inverse); +} + +.outline-action .material-symbols-rounded { + font-size: 19px; } .site-footer { padding: 38px 0 48px; + background: var(--surface); } .footer-inner { @@ -1378,14 +1696,14 @@ html[data-lang="zh"] .download-panel h2 { justify-content: space-between; width: var(--content); margin: auto; - color: var(--text-secondary); - font-size: 0.8rem; + color: var(--ink-secondary); + font-size: 0.78rem; } .footer-links { display: flex; flex-wrap: wrap; - gap: 16px; + gap: 17px; } :focus-visible { @@ -1393,24 +1711,38 @@ html[data-lang="zh"] .download-panel h2 { outline-offset: 3px; } -@media (max-width: 1080px) { - .nav-links { - gap: 15px; +@media (max-width: 1040px) { + :root { + --content: min(100% - 48px, 1200px); } - .hero-inner { - grid-template-columns: minmax(0, 0.9fr) minmax(400px, 1.1fr); - gap: 42px; + .scene-layout, + .skills-layout { + grid-template-columns: minmax(0, 0.75fr) minmax(470px, 1.25fr); + gap: 54px; } - .compare-grid { - grid-template-columns: repeat(2, 1fr); + .platform-stories article { + grid-template-columns: 1fr; + } + + .platform-stories article:last-child { + padding-left: 40px; + } + + .stable-strip { + grid-template-columns: 1fr; + gap: 16px; } } -@media (max-width: 920px) { +@media (max-width: 860px) { :root { - --content: min(100% - 36px, 1120px); + --content: min(100% - 36px, 1200px); + } + + .nav-shell { + grid-template-columns: 1fr auto; } .nav-links { @@ -1422,70 +1754,122 @@ html[data-lang="zh"] .download-panel h2 { } .mobile-nav:not([hidden]) { - display: flex; + display: grid; + grid-template-columns: repeat(4, 1fr); } - .hero { - min-height: auto; - padding-bottom: 58px; - } - - .hero-inner, - .feature-stage, - .account-stage, - .privacy-panel { + .stage-content, + .scene-layout, + .skills-layout, + .typing-story, + .styles-strip, + .split-heading, + .faq-layout, + .download-panel { grid-template-columns: 1fr; } - .hero-visual { - max-width: 620px; - margin: 14px 0 0; + .stage-content { + min-height: auto; } - .trust-strip { - grid-template-columns: repeat(2, 1fr); - } - - .trust-item:nth-child(2) { + .conversation { + min-height: 480px; border-right: 0; + border-bottom: 1px solid var(--line); } - .trust-item:nth-child(-n + 2) { - border-bottom: 1px solid rgba(255, 255, 255, 0.11); + .keyboard-demo { + min-height: 430px; } - .feature-stage { - gap: 36px; + .scene-copy { + max-width: 690px; } - .feature-copy { - padding-top: 0; + .typing-story.reverse .typing-visual { + order: 0; + border-bottom: 1px solid var(--line); + border-left: 0; } - .path-grid, - .step-grid { + .typing-visual { + min-height: 420px; + border-right: 0; + border-bottom: 1px solid var(--line); + } + + .story-copy { + min-height: 330px; + } + + .styles-strip { + gap: 34px; + align-items: start; + } + + .service-paths { grid-template-columns: 1fr; } - .path-card { - min-height: auto; + .service-paths article, + .service-paths article:first-child, + .service-paths article:last-child { + min-height: 300px; + padding: 30px 0; + border-right: 0; + border-bottom: 1px solid var(--inverse-line); } - .path-index { - margin-bottom: 28px; + .service-paths article:last-child { + border-bottom: 0; } - .step { + .service-paths .material-symbols-rounded { + margin: 28px 0 20px; + } + + .privacy-proof { + align-items: flex-start; + flex-direction: column; + } + + .platform-stories { + grid-template-columns: 1fr; + } + + .platform-stories article, + .platform-stories article:last-child { + grid-template-columns: 120px 1fr; min-height: auto; - padding-right: 0; + padding: 40px 0; + border-right: 0; + border-bottom: 1px solid var(--line); + } + + .platform-stories article:last-child { + border-bottom: 0; + } + + .split-heading { + gap: 24px; + } + + .download-panel { + align-items: start; + gap: 34px; + } + + .download-actions { + justify-content: flex-start; } } -@media (max-width: 680px) { +@media (max-width: 640px) { :root { - --content: min(100% - 28px, 1120px); - --radius-xl: 23px; - --radius-lg: 19px; + --content: min(100% - 28px, 1200px); + --radius-xl: 24px; + --radius-lg: 20px; } .site-nav { @@ -1493,119 +1877,253 @@ html[data-lang="zh"] .download-panel h2 { } .nav-shell { - min-height: 51px; - padding: 5px 6px 5px 11px; + min-height: 50px; + padding: 5px 5px 5px 10px; + border-radius: 14px; } .brand span { display: none; } - .mobile-nav:not([hidden]) { - display: grid; - grid-template-columns: repeat(5, 1fr); + .mobile-nav { + border-radius: 14px; } .mobile-nav a { padding: 10px 4px; font-size: 0.76rem; - text-align: center; } .hero { - padding-top: 112px; + min-height: 780px; + padding: 108px 0 86px; + } + + .launch-pill { + margin-bottom: 54px; + font-size: 0.7rem; } .hero h1, html[data-lang="zh"] .hero h1 { - font-size: clamp(2.75rem, 13vw, 3.6rem); + font-size: clamp(2rem, 9vw, 2.2rem); + } + + .hero h1 > span { + white-space: nowrap; } .hero-copy { font-size: 1rem; } - .store-badge img { - height: 44px; + .hero-actions { + flex-direction: column; } - .console-content { - min-height: 310px; + .hero-note { + max-width: 310px; + line-height: 1.6; + } + + .scroll-cue { + white-space: nowrap; + } + + .section { + padding: 82px 0; + } + + .center-heading h2, + .scene-copy h2, + .split-heading h2, + .faq-layout h2, + html[data-lang="zh"] .center-heading h2, + html[data-lang="zh"] .scene-copy h2, + html[data-lang="zh"] .split-heading h2, + html[data-lang="zh"] .faq-layout h2 { + font-size: 2.2rem; + } + + .stage-bar { + grid-template-columns: 1fr auto; + } + + .stage-dots { + display: none; + } + + .stage-status { + display: none; + } + + .conversation { + min-height: 420px; + padding: 28px 20px; + } + + .message-bubble { + font-size: 1rem; + } + + .insert-preview { + padding: 18px; + } + + .keyboard-demo { + min-height: 360px; + } + + .assistant-tabs { + grid-template-columns: 42px repeat(3, auto) 1fr; + gap: 3px; + padding: 13px 10px; + } + + .assistant-tab { + padding: 6px; + } + + .keyboard-keys { + gap: 4px; + padding: 45px 10px 16px; + } + + .keyboard-keys span { + height: 36px; + font-size: 0.65rem; + } + + .gesture-grid { + grid-template-columns: 1fr; + } + + .gesture-grid article, + .gesture-grid article:not(:first-child) { + min-height: 120px; + padding: 23px 0; + border-right: 0; + border-bottom: 1px solid var(--line); + } + + .gesture-grid article:last-child { + border-bottom: 0; + } + + .voice-stage, + .skills-stage { padding: 24px 20px; } - .console-transcript { - font-size: 1.35rem; + .transcript-card { + min-height: 210px; } - .hero-caption { - gap: 6px; - font-size: 0.7rem; + .waveform { + gap: 5px; } - .trust-strip, - .feature-grid, - .privacy-points, - .platform-grid, - .compare-grid { - grid-template-columns: 1fr; + .typing-visual { + min-height: 350px; + padding: 28px 20px; } - .trust-item { - min-height: 78px; - border-right: 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.11); + .story-copy { + min-height: 290px; + padding: 28px 22px; } - .trust-item:last-child { - border-bottom: 0; + .story-copy h3 { + margin-top: 54px; } - .feature-card:nth-child(n) { - grid-column: span 1; + .mini-keyboard { + gap: 4px; } - .feature-card { - min-height: auto; + .mini-keyboard span { + height: 34px; + font-size: 0.62rem; } - .workflow-step { - grid-template-columns: 32px 28px 1fr; - min-height: 112px; - padding: 20px; + .english-line { + font-size: 1.55rem; } - .skill-chip-grid { + .skills-stage { + min-height: 440px; + } + + .skill-actions { grid-template-columns: repeat(2, 1fr); } - .style-selector, - .platform-specs { + .styles-strip { + margin-top: 80px; + } + + .style-options { grid-template-columns: 1fr; } - .platform-card { - min-height: 380px; + .privacy-proof h3 { + font-size: 1.08rem; } - .platform-specs span:nth-last-child(-n + 2) { - border-bottom: 1px solid var(--stroke); + .platform-stories article, + .platform-stories article:last-child { + grid-template-columns: 1fr; + gap: 22px; } - .platform-specs span:last-child { - border-bottom: 0; + .platform-symbol { + width: 92px; + height: 122px; + border-radius: 23px; } - .privacy-point { + .mac-symbol { + height: 76px; + border-radius: 16px; + } + + .setup-steps { + grid-template-columns: 1fr; + } + + .setup-steps li, + .setup-steps li:not(:first-child) { min-height: auto; + padding: 25px 0; + border-right: 0; + border-bottom: 1px solid var(--line); } - .account-phone { - width: 100%; + .setup-steps li::before { + margin-bottom: 34px; + } + + .stable-strip { + padding: 22px; + } + + .stable-strip ul { + grid-template-columns: repeat(2, 1fr); } .download-panel { - padding: 34px 24px; + padding: 34px 22px; + } + + .download-panel h2, + html[data-lang="zh"] .download-panel h2 { + font-size: 2.25rem; + } + + .download-actions { + align-items: flex-start; + flex-direction: column; } .footer-inner { diff --git a/docs/assets/site.js b/docs/assets/site.js index 4828086..d0cee4e 100644 --- a/docs/assets/site.js +++ b/docs/assets/site.js @@ -1,7 +1,7 @@ /*! * OSGKeyboard website interactions. - * The page remains useful without JavaScript; this file adds language, theme, - * media, and the decorative Three.js hero enhancement. + * The page remains useful without JavaScript; this file adds language, + * theme, and compact mobile navigation controls. */ (function () { "use strict"; @@ -13,10 +13,9 @@ const menuButton = document.getElementById("menuToggle"); const menuIcon = menuButton?.querySelector(".material-symbols-rounded"); const mobileNav = document.getElementById("mobileNav"); - const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; + const themeColor = document.querySelector('meta[name="theme-color"]'); const themeMedia = window.matchMedia("(prefers-color-scheme: dark)"); const supportedLanguages = new Set(["zh", "en"]); - let beams = null; function preferredLanguage() { const query = new URLSearchParams(window.location.search).get("lang"); @@ -130,40 +129,15 @@ themeButton.setAttribute("aria-label", label); } - beams?.setBackground("#0b0d0c"); - beams?.setLightColor(resolved === "dark" ? "#7faf8a" : "#6eaa7d"); + themeColor?.setAttribute("content", resolved === "dark" ? "#0c0e0f" : "#eef2f6"); if (persist) localStorage.setItem("osg-site-theme", resolved); } - function initializeBeams() { - const canvas = document.getElementById("heroAuroraCanvas"); - if (!canvas || !window.OSGBeamsHero || !window.THREE) return; - - try { - beams = window.OSGBeamsHero.create(canvas, { - beamWidth: 4.5, - beamHeight: 6, - beamNumber: 26, - lightColor: "#7faf8a", - speed: 4.5, - noiseIntensity: 2.65, - scale: 0.62, - rotation: 208, - background: "#0b0d0c", - reduceMotion - }); - } catch (error) { - console.warn("OSGKeyboard hero enhancement unavailable.", error); - canvas.hidden = true; - } - } - const initialLanguage = preferredLanguage(); const initialTheme = storedTheme() || (themeMedia.matches ? "dark" : "light"); applyLanguage(initialLanguage, false); applyTheme(initialTheme, false); - initializeBeams(); languageButton?.addEventListener("click", () => { applyLanguage(root.dataset.lang === "zh" ? "en" : "zh", true); @@ -189,8 +163,4 @@ themeMedia.addEventListener("change", (event) => { if (!storedTheme()) applyTheme(event.matches ? "dark" : "light", false); }); - - document.addEventListener("visibilitychange", () => { - beams?.setVisible(!document.hidden); - }); })(); diff --git a/docs/index.html b/docs/index.html index a1260e3..0a9bb2d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,7 +11,7 @@ data-en-content="OSGKeyboard brings voice input to iPhone, iPad, and Mac. Its iOS keyboard combines dictation, Chinese and English typing, an AI assistant, clipboard skills, and optional managed credits—with on-device recognition by default." > - + @@ -37,7 +37,7 @@ - + -