Revamp docs with Apple-style design and fullpage scroll#7
Conversation
Introduced a new Apple-inspired CSS design system and added a fullpage.js script for smooth section-based scrolling on the homepage. Major content and style updates were made to both English and Chinese documentation, including new hero sections, feature highlights, and improved structure for product and feature pages. Added new index_updated.md files for both languages. Updated mkdocs.yml to reflect these changes.
There was a problem hiding this comment.
Pull request overview
This pull request introduces a comprehensive design overhaul of the documentation with an Apple-inspired aesthetic and adds fullpage.js for smooth, section-based scrolling. The changes affect both English and Chinese documentation, transforming the homepage and product pages with new hero sections, feature highlights, and refined visual styling.
Changes:
- Added fullpage.js script for Apple-style section scrolling on homepage
- Introduced comprehensive Apple-inspired CSS design system with gradient text, refined typography, and smooth animations
- Restructured content across homepage, product pages, and features pages in both English and Chinese with new hero sections and card-based layouts
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| mkdocs.yml | Added fullpage.js to extra_javascript |
| docs/assets/js/fullpage.js | New JavaScript for section-based scroll snapping with touch and keyboard support |
| docs/assets/css/extra.css | Comprehensive Apple-inspired design system with hero sections, cards, and fullpage layouts |
| docs/zh/index.md | Redesigned Chinese homepage with hero section, feature highlights, and card-based content |
| docs/zh/fydelix/index.md | Restructured Chinese product page with product hero and organized feature sections |
| docs/zh/fydelix/features.md | Updated Chinese features page with refined content structure and presentation |
| docs/en/index.md | Redesigned English homepage matching Chinese version structure |
| docs/en/index_updated.md | New alternate English homepage (appears to be duplicate) |
| docs/en/fydelix/index.md | Restructured English product page with product hero and organized feature sections |
| docs/en/fydelix/features.md | Updated English features page with refined content structure and presentation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
docs/en/index_updated.md
Outdated
| --- | ||
| hide: | ||
| - navigation | ||
| - toc | ||
| --- | ||
|
|
||
| <div class="hero-section" markdown> | ||
|
|
||
| # Fidelity X | ||
|
|
||
| ## Flight. Reimagined. | ||
|
|
||
| Real-time kernel. Microsecond response. Absolute safety. | ||
|
|
||
| [Get Started](fydelix/index.md){ .md-button .md-button--primary } | ||
| [Download Firmware](https://github.com/flightng/firmware/releases){ .md-button } | ||
|
|
||
| </div> | ||
|
|
||
| <div class="feature-highlight" markdown> | ||
|
|
||
| ## Between you and the sky, just a thought away. | ||
|
|
||
| From stick to prop, latency measured in microseconds. Not optimization—reconstruction. Built from scratch on a real-time OS, every control intent translates instantly and precisely into flight. | ||
|
|
||
| </div> | ||
|
|
||
| <div class="snap-section cards-section" markdown> | ||
|
|
||
| ## Why Fidelity X | ||
|
|
||
| <div class="grid cards" markdown> | ||
|
|
||
| - :material-lightning-bolt:{ .lg .middle } **Instant Response** | ||
|
|
||
| --- | ||
|
|
||
| Your intent, delivered instantly. From fingertip to propeller, seamless | ||
|
|
||
| - :material-shield-lock:{ .lg .middle } **Always Protected** | ||
|
|
||
| --- | ||
|
|
||
| Independent safety thread, never sleeps. Safe landing, guaranteed | ||
|
|
||
| - :material-tune-variant:{ .lg .middle } **Silky Control** | ||
|
|
||
| --- | ||
|
|
||
| Precision filtering finds the perfect balance between sharp response and buttery feel | ||
|
|
||
| - :material-atom:{ .lg .middle } **True to Physics** | ||
|
|
||
| --- | ||
|
|
||
| Built on rigid body dynamics. Every response behaves exactly as physics intended | ||
|
|
||
| </div> | ||
|
|
||
| </div> | ||
|
|
||
| <div class="snap-section" markdown> | ||
|
|
||
| ## Supported Hardware | ||
|
|
||
| | Model | MCU | Form Factor | | ||
| |-------|-----|-------------| | ||
| | NeutronRC F435 SE | AT32F435RGT7 | LQFP64 | | ||
| | NeutronRC F435 MINI | AT32F435CGU7 | QFN48 | | ||
| | Hummingbird 200RS | AT32F435 | 20x20mm | | ||
| | Hummingbird 255 V1 | AT32F435 | 25.5x25.5mm | | ||
| | StingerBee | AT32F435 | Whoop | | ||
|
|
||
| [View All Hardware](fydelix/supported-boards.md){ .md-button } | ||
|
|
||
| </div> | ||
|
|
||
| <div class="snap-section" markdown> | ||
|
|
||
| ## More Projects | ||
|
|
||
| <div class="grid cards" markdown> | ||
|
|
||
| - :material-airplane:{ .lg .middle } **atbetaflight** | ||
|
|
||
| --- | ||
|
|
||
| AT32 port of Betaflight, crafted for pilots who know Betaflight inside out | ||
|
|
||
| [Learn More](atbetaflight/index.md) | ||
|
|
||
| </div> | ||
|
|
||
| <div class="footer-links" markdown> | ||
|
|
||
| :fontawesome-brands-github: [GitHub](https://github.com/flightng) · :material-heart: [Sponsor Us](sponsor.md) | ||
|
|
||
| </div> | ||
|
|
||
| </div> |
There was a problem hiding this comment.
A new file docs/en/index_updated.md has been created but appears to be a duplicate or alternate version of the main English index. Having two index files can cause confusion. Consider whether this file should replace the existing index.md, be removed, or be given a more descriptive name that clarifies its purpose.
| function handleKeydown(e) { | ||
| if (isScrolling) return; | ||
|
|
||
| if (e.key === 'ArrowDown' || e.key === 'PageDown') { | ||
| e.preventDefault(); | ||
| scrollToSection(currentSection + 1); | ||
| } else if (e.key === 'ArrowUp' || e.key === 'PageUp') { |
There was a problem hiding this comment.
The keyboard event handler prevents default behavior for ArrowUp/ArrowDown keys, which will break normal keyboard navigation for users who want to scroll the page traditionally. Consider allowing default behavior in certain contexts, such as when a user is inside a text input or when the page content is taller than the viewport sections.
| function handleKeydown(e) { | |
| if (isScrolling) return; | |
| if (e.key === 'ArrowDown' || e.key === 'PageDown') { | |
| e.preventDefault(); | |
| scrollToSection(currentSection + 1); | |
| } else if (e.key === 'ArrowUp' || e.key === 'PageUp') { | |
| function isEditableTarget(target) { | |
| if (!target) return false; | |
| const tagName = target.tagName; | |
| if (!tagName) return false; | |
| const editableTags = ['INPUT', 'TEXTAREA', 'SELECT']; | |
| if (editableTags.includes(tagName)) return true; | |
| if (target.isContentEditable) return true; | |
| return false; | |
| } | |
| function handleKeydown(e) { | |
| if (isScrolling) return; | |
| const key = e.key; | |
| // Allow default behavior inside editable/interactive elements | |
| if ((key === 'ArrowDown' || key === 'ArrowUp' || key === 'PageDown' || key === 'PageUp') && | |
| isEditableTarget(e.target)) { | |
| return; | |
| } | |
| if (key === 'ArrowDown' || key === 'PageDown') { | |
| e.preventDefault(); | |
| scrollToSection(currentSection + 1); | |
| } else if (key === 'ArrowUp' || key === 'PageUp') { |
| [下载固件](https://github.com/flightng/firmware/releases){ .md-button } | ||
|
|
||
| </div> | ||
|
|
There was a problem hiding this comment.
The horizontal rule (line 19) appears between closing and opening div tags without clear purpose. This creates an inconsistent structure where some sections are separated by horizontal rules and others aren't. Consider removing this or applying consistent separation between all major sections.
|
|
||
| --- | ||
| </div> | ||
|
|
||
| <div class="snap-section cards-section" markdown> | ||
|
|
||
| ## 专业能力 | ||
|
|
||
| <div class="grid cards" markdown> | ||
|
|
||
| - :material-atom:{ .lg .middle } **物理建模** | ||
|
|
||
| --- | ||
|
|
||
| 基于刚体动力学,飞行器的每一个响应都符合它本该有的样子 | ||
|
|
||
| - :material-compass-outline:{ .lg .middle } **一键校准** | ||
|
|
||
| --- | ||
|
|
||
| 传感器自校准,静置片刻即可完成——复杂的事情,交给固件来做 | ||
|
|
||
| - :material-palette-outline:{ .lg .middle } **直观配置** | ||
|
|
||
| --- | ||
|
|
||
| ## 支持的硬件 | ||
| 简洁的界面,清晰的逻辑——看一眼就懂,上手即会 | ||
|
|
||
| Fidelity X 支持多款主流飞控板: | ||
| - :material-record-circle-outline:{ .lg .middle } **无损记录** | ||
|
|
||
| --- | ||
|
|
||
| 全新研发的无损黑盒日志,你的每一个动作都被精准记录、完整还原 | ||
|
|
||
| </div> | ||
|
|
||
| | 飞控板 | MCU | 封装 | | ||
| |--------|-----|------| | ||
| </div> | ||
|
|
||
| <div class="snap-section" markdown> | ||
|
|
||
| ## 支持的飞控 | ||
|
|
||
| | 型号 | 芯片 | 尺寸 | | ||
| |------|------|------| | ||
| | NeutronRC F435 SE | AT32F435RGT7 | LQFP64 | | ||
| | NeutronRC F435 MINI | AT32F435CGU7 | QFN48 | | ||
| | Hummingbird 200RS | AT32F435 | 20x20mm | | ||
| | Hummingbird 255 V1 | AT32F435 | 25.5x25.5mm | | ||
| | StingerBee | AT32F435 | Whoop | | ||
|
|
||
| [查看完整硬件列表 :material-arrow-right:](fydelix/supported-boards.md) | ||
| [查看全部硬件](fydelix/supported-boards.md){ .md-button } | ||
|
|
||
| --- | ||
| </div> | ||
|
|
||
| ## 其他项目 | ||
| <div class="snap-section" markdown> | ||
|
|
||
| 除了 Fidelity X,FlightNG 团队还维护以下开源项目: | ||
| ## 更多项目 | ||
|
|
||
| <div class="grid cards" markdown> | ||
|
|
||
| - :material-airplane:{ .lg .middle } **atbetaflight** | ||
|
|
||
| --- | ||
|
|
||
| Betaflight 的 AT32 移植版本,适合熟悉 Betaflight 的用户 | ||
| Betaflight 的 AT32 移植版,为熟悉 Betaflight 的飞手打造 | ||
|
|
||
| [:octicons-arrow-right-24: 了解更多](atbetaflight/index.md) | ||
| [了解更多](atbetaflight/index.md) | ||
|
|
||
| </div> | ||
|
|
There was a problem hiding this comment.
Inconsistent use of horizontal rules for section separation. Lines 59, 109, and 127 use horizontal rules outside of divs, while line 19 uses it between divs. This inconsistency makes the document structure harder to understand and maintain. Consider adopting a consistent pattern throughout the document.
| <div class="footer-links" markdown> | ||
|
|
||
| ## 快速链接 | ||
| :fontawesome-brands-github: [GitHub](https://github.com/flightng) · :material-heart: [赞助我们](sponsor.md) | ||
|
|
||
| - :fontawesome-brands-github: [GitHub](https://github.com/flightng) | ||
| - :material-heart: [赞助我们](sponsor.md) | ||
| </div> | ||
|
|
||
| </div> |
There was a problem hiding this comment.
Missing closing div tag. The document starts a div with class "footer-links" on line 128 but ends with two closing div tags on lines 132 and 134. This creates an unbalanced div structure where the outermost container div opened at the beginning of the document is closed, but the nesting is unclear. Verify the div nesting structure is correct.
| currentSection = index; | ||
|
|
||
| const section = sections[index]; | ||
| const headerOffset = 60; // MkDocs header height |
There was a problem hiding this comment.
The magic number 60 is used for the header offset without explanation. This should be either defined as a named constant at the top of the file or documented with a comment explaining that it corresponds to the MkDocs Material header height, making it easier to update if the header height changes.
| <div class="footer-links" markdown> | ||
|
|
||
| ## Quick Links | ||
| :fontawesome-brands-github: [GitHub](https://github.com/flightng) · :material-heart: [Sponsor Us](sponsor.md) | ||
|
|
||
| - :fontawesome-brands-github: [GitHub](https://github.com/flightng) | ||
| - :material-heart: [Sponsor Us](sponsor.md) | ||
| </div> | ||
|
|
||
| </div> |
There was a problem hiding this comment.
Missing closing div tag. The document starts a div with class "footer-links" on line 94 but ends with two closing div tags on lines 98 and 100. Similar to the Chinese version, this creates an unbalanced div structure. Verify the div nesting structure is correct.
docs/en/index_updated.md
Outdated
| <div class="footer-links" markdown> | ||
|
|
||
| :fontawesome-brands-github: [GitHub](https://github.com/flightng) · :material-heart: [Sponsor Us](sponsor.md) | ||
|
|
||
| </div> | ||
|
|
||
| </div> |
There was a problem hiding this comment.
Missing closing div tag. The document starts a div with class "footer-links" on line 94 but ends with two closing div tags on lines 98 and 100. This creates an unbalanced div structure. Verify the div nesting structure is correct.
|
|
||
| ## 你与天空之间,只差一个念头的距离 | ||
|
|
||
| 不是优化,是从零构建——基于实时操作系统从零打造,精心调校的信号链路确保锐利响应与丝滑手感并存,渐进式安全机制让每一次降落都在掌控之中。从摇杆到桨叶,每一个操控意图都被即时、精准地转化为飞行 |
There was a problem hiding this comment.
Inconsistent Chinese spacing and punctuation. Line 24 uses "转化为飞行" (ends abruptly without proper punctuation), which appears to be an incomplete sentence or missing punctuation mark. This should end with proper punctuation for better readability.
| 不是优化,是从零构建——基于实时操作系统从零打造,精心调校的信号链路确保锐利响应与丝滑手感并存,渐进式安全机制让每一次降落都在掌控之中。从摇杆到桨叶,每一个操控意图都被即时、精准地转化为飞行 | |
| 不是优化,是从零构建——基于实时操作系统从零打造,精心调校的信号链路确保锐利响应与丝滑手感并存,渐进式安全机制让每一次降落都在掌控之中。从摇杆到桨叶,每一个操控意图都被即时、精准地转化为飞行。 |
| /* ===== Apple-inspired Design System ===== */ | ||
|
|
||
| /* Hero Section - Centered, impactful */ | ||
| .hero-section { | ||
| text-align: center; | ||
| padding: 3rem 1rem 2rem; | ||
| } | ||
|
|
||
| .hero-section h1 { | ||
| font-size: 3.5rem; | ||
| font-weight: 700; | ||
| letter-spacing: -0.03em; | ||
| margin-bottom: 0.5rem; | ||
| background: linear-gradient(135deg, #1d1d1f 0%, #424245 100%); | ||
| -webkit-background-clip: text; | ||
| -webkit-text-fill-color: transparent; | ||
| background-clip: text; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .hero-section h1 { | ||
| background: linear-gradient(135deg, #f5f5f7 0%, #a1a1a6 100%); | ||
| -webkit-background-clip: text; | ||
| -webkit-text-fill-color: transparent; | ||
| background-clip: text; | ||
| } | ||
|
|
||
| .hero-section h2 { | ||
| font-size: 1.5rem; | ||
| font-weight: 400; | ||
| color: #86868b; | ||
| margin-bottom: 1.5rem; | ||
| letter-spacing: -0.01em; | ||
| } | ||
|
|
||
| .hero-section p { | ||
| font-size: 1.25rem; | ||
| color: #1d1d1f; | ||
| font-weight: 500; | ||
| letter-spacing: 0.1em; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .hero-section p { | ||
| color: #f5f5f7; | ||
| } | ||
|
|
||
| /* Product Hero - For product pages */ | ||
| .product-hero { | ||
| text-align: center; | ||
| padding: 2rem 1rem; | ||
| } | ||
|
|
||
| .product-hero h2 { | ||
| font-size: 2rem; | ||
| font-weight: 600; | ||
| color: #1d1d1f; | ||
| margin-bottom: 1.5rem; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .product-hero h2 { | ||
| color: #f5f5f7; | ||
| } | ||
|
|
||
| /* Feature Highlight - Centered emphasis text */ | ||
| .feature-highlight { | ||
| text-align: center; | ||
| padding: 2rem 1rem; | ||
| max-width: 680px; | ||
| margin: 0 auto; | ||
| } | ||
|
|
||
| .feature-highlight h2 { | ||
| font-size: 2rem; | ||
| font-weight: 600; | ||
| letter-spacing: -0.02em; | ||
| margin-bottom: 1rem; | ||
| } | ||
|
|
||
| .feature-highlight p { | ||
| font-size: 1.125rem; | ||
| line-height: 1.7; | ||
| color: #424245; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .feature-highlight p { | ||
| color: #a1a1a6; | ||
| } | ||
|
|
||
| /* Intro Statement - Elegant lead-in paragraph */ | ||
| .intro-statement { | ||
| max-width: 640px; | ||
| margin: 0 auto; | ||
| padding: 2rem 1rem; | ||
| text-align: center; | ||
| } | ||
|
|
||
| .intro-statement p { | ||
| font-size: 1.125rem; | ||
| line-height: 1.9; | ||
| color: #6e6e73; | ||
| font-weight: 400; | ||
| } | ||
|
|
||
| .intro-statement p:first-child { | ||
| font-size: 1.25rem; | ||
| font-weight: 500; | ||
| color: #1d1d1f; | ||
| margin-bottom: 0.75rem; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .intro-statement p { | ||
| color: #a1a1a6; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .intro-statement p:first-child { | ||
| color: #f5f5f7; | ||
| } | ||
|
|
||
| /* Page Intro - Centered opening statement */ | ||
| .page-intro { | ||
| text-align: center; | ||
| padding: 2rem 1rem; | ||
| max-width: 600px; | ||
| margin: 0 auto; | ||
| } | ||
|
|
||
| .page-intro p { | ||
| font-size: 1.25rem; | ||
| line-height: 1.8; | ||
| color: #424245; | ||
| font-weight: 400; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .page-intro p { | ||
| color: #a1a1a6; | ||
| } | ||
|
|
||
| /* Feature Section - Structured content */ | ||
| .feature-section h3 { | ||
| font-size: 1.5rem; | ||
| font-weight: 600; | ||
| margin-top: 2rem; | ||
| margin-bottom: 0.75rem; | ||
| } | ||
|
|
||
| .feature-section p { | ||
| font-size: 1.0625rem; | ||
| line-height: 1.75; | ||
| color: #424245; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .feature-section p { | ||
| color: #a1a1a6; | ||
| } | ||
|
|
||
| /* Footer Links - Centered minimal footer */ | ||
| .footer-links { | ||
| text-align: center; | ||
| padding: 1rem; | ||
| color: #86868b; | ||
| } | ||
|
|
||
| /* Enhanced Grid Cards */ | ||
| .grid.cards > ul > li { | ||
| border-radius: 12px; | ||
| transition: transform 0.2s ease, box-shadow 0.2s ease; | ||
| } | ||
|
|
||
| .grid.cards > ul > li:hover { | ||
| transform: translateY(-2px); | ||
| box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08); | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .grid.cards > ul > li:hover { | ||
| box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3); | ||
| } | ||
|
|
||
| /* Refined Tables */ | ||
| .md-typeset table:not([class]) { | ||
| font-size: 0.9rem; | ||
| border-radius: 8px; | ||
| overflow: hidden; | ||
| } | ||
|
|
||
| .md-typeset table:not([class]) th { | ||
| background: #f5f5f7; | ||
| font-weight: 600; | ||
| text-transform: none; | ||
| letter-spacing: 0; | ||
| } | ||
|
|
||
| [data-md-color-scheme="slate"] .md-typeset table:not([class]) th { | ||
| background: #2d2d2d; | ||
| } | ||
|
|
||
| /* Buttons - More refined */ | ||
| .md-button { | ||
| border-radius: 980px; | ||
| padding: 0.75em 1.5em; | ||
| font-weight: 500; | ||
| letter-spacing: -0.01em; | ||
| transition: all 0.2s ease; | ||
| } | ||
|
|
||
| .md-button--primary { | ||
| background: #0071e3; | ||
| border-color: #0071e3; | ||
| } | ||
|
|
||
| .md-button--primary:hover { | ||
| background: #0077ed; | ||
| border-color: #0077ed; | ||
| transform: scale(1.02); | ||
| } | ||
|
|
||
| .md-button:not(.md-button--primary):hover { | ||
| border-color: #0071e3; | ||
| color: #0071e3; | ||
| } | ||
|
|
||
| /* ===== Fullpage Scroll Sections (Apple-style) ===== */ | ||
|
|
||
| /* Hero section - full viewport */ | ||
| .hero-section { | ||
| min-height: calc(100vh - 8rem); | ||
| display: flex; | ||
| flex-direction: column; | ||
| justify-content: center; | ||
| align-items: center; | ||
| position: relative; | ||
| padding: 2rem 1rem; | ||
| box-sizing: border-box; | ||
| } | ||
|
|
||
| /* Scroll hint arrow */ | ||
| .hero-section::after { | ||
| content: ""; | ||
| position: absolute; | ||
| bottom: 2rem; | ||
| left: 50%; | ||
| width: 20px; | ||
| height: 20px; | ||
| border-right: 2px solid #86868b; | ||
| border-bottom: 2px solid #86868b; | ||
| transform: translateX(-50%) rotate(45deg); | ||
| animation: scrollHint 2s ease-in-out infinite; | ||
| opacity: 0.4; | ||
| } | ||
|
|
||
| @keyframes scrollHint { | ||
| 0%, 100% { transform: translateX(-50%) rotate(45deg) translateY(0); opacity: 0.4; } | ||
| 50% { transform: translateX(-50%) rotate(45deg) translateY(6px); opacity: 0.7; } | ||
| } | ||
|
|
||
| /* Feature highlight section - full viewport */ | ||
| .feature-highlight { | ||
| min-height: calc(100vh - 8rem); | ||
| display: flex; | ||
| flex-direction: column; | ||
| justify-content: center; | ||
| padding: 2rem 1rem; | ||
| box-sizing: border-box; | ||
| } | ||
|
|
||
| /* Snap sections - full viewport */ | ||
| .snap-section { | ||
| min-height: calc(100vh - 8rem); | ||
| display: flex; | ||
| flex-direction: column; | ||
| justify-content: center; | ||
| padding: 2rem 1rem; | ||
| box-sizing: border-box; | ||
| } | ||
|
|
||
| .snap-section h2 { | ||
| text-align: center; | ||
| margin-bottom: 2rem; | ||
| } | ||
|
|
||
| /* Cards section specific */ | ||
| .snap-section.cards-section .grid.cards { | ||
| max-width: 900px; | ||
| margin: 0 auto; | ||
| } | ||
|
|
||
| /* Force 2-column grid layout for cards sections */ | ||
| .snap-section.cards-section .grid.cards > ul { | ||
| display: grid !important; | ||
| grid-template-columns: repeat(2, 1fr) !important; | ||
| gap: 1rem; | ||
| } | ||
|
|
||
| @media (max-width: 768px) { | ||
| .snap-section.cards-section .grid.cards > ul { | ||
| grid-template-columns: 1fr !important; | ||
| } | ||
| } | ||
|
|
||
| /* Mobile: disable fullpage, normal scroll */ | ||
| @media (max-width: 768px) { | ||
| .hero-section, | ||
| .feature-highlight, | ||
| .snap-section { | ||
| min-height: auto; | ||
| padding: 3rem 1rem; | ||
| } | ||
|
|
||
| .hero-section::after { | ||
| display: none; | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
Multiple magic numbers used throughout the CSS without clear documentation. Values like 8rem (lines 228, 261, 270), 3.5rem (line 14), 980px (line 201) are used without explanation. Consider defining these as CSS custom properties (variables) at the top of the file with descriptive names to improve maintainability.
Deleted docs/en/index_updated.md as it is no longer needed or has been replaced by updated documentation.
Introduced CSS custom properties (design tokens) for layout, typography, spacing, border radius, colors, and effects. Updated all relevant selectors to use these variables, improving maintainability and enabling easier theme customization.
Introduced a new Apple-inspired CSS design system and added a fullpage.js script for smooth section-based scrolling on the homepage. Major content and style updates were made to both English and Chinese documentation, including new hero sections, feature highlights, and improved structure for product and feature pages. Updated mkdocs.yml to reflect these changes.