Website for the Lede browser extension.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Lede marketing site (Astro) and brand context

Elliot Hopkins 6d9b5773

+2331
+19
.gitignore
··· 1 + # Dependencies 2 + node_modules/ 3 + 4 + # Build 5 + dist/ 6 + .astro/ 7 + 8 + # Env 9 + .env 10 + .env.* 11 + !.env.example 12 + 13 + # OS / editor 14 + .DS_Store 15 + *.log 16 + bun-debug.log 17 + 18 + # Vercel / local 19 + .vercel/
+41
.impeccable.md
··· 1 + ## Design Context 2 + 3 + _Sourced from the Lede **extension** design context, aligned with [`brand-guidelines.md`](brand-guidelines.md) for this **marketing site**. The extension repo remains canonical for in-product UI; this file adapts it for a full-page landing._ 4 + 5 + ### Users 6 + 7 + - **Anyone** who wants to **quickly grasp the main points** of a webpage—especially to **decide if it is worth reading** and to **dig deeper** with questions **without leaving the tab**. 8 + - Mix of **casual readers** and **power users**; some run **local models (Ollama)** and care where page text goes, others use **configured OpenAI-compatible APIs**. 9 + - **Extension** primary surface: a **small popup** (toolbar or shortcut), mid-read, limited space and attention. 10 + - **This site** primary surface: a **browser window** for evaluation and **beta install** (source / dev load)—copy should still feel page-grounded and honest about beta and stores. 11 + 12 + ### Brand Personality 13 + 14 + - **Warm, direct, and friendly**—grounded in the journalism *lede* (important thing first). **Approachable and human**, not cold or corporate: clear labels, honest limits, **occasional light wit** only where it reduces friction. 15 + - **Tone references** (hierarchy and calm, not visual mimicry): **Claude**, **Perplexity**, **Notion**. 16 + - **Anti-references**—avoid the generic “AI assistant” vibe of **ChatGPT**, **Gemini**, and **Apple Intelligence**: no interchangeable chat-shell aesthetics, no glossy minimal void, no anonymous assistant theater. 17 + - **Also avoid** on the landing: undifferentiated purple gradients, neon-on-dark “AI product” chrome, and endless same-shaped feature cards. 18 + 19 + ### Aesthetic Direction 20 + 21 + - **Editorial / newsprint utility with warmth**: paper-like surfaces (`#f5f0e8` family), ink-like text, **one confident accent** (default orange `#F15B2F`)—highlighter or section rule, not rainbow accents. 22 + - **Product UI** supports **light, dark, and system**; default in-app follows **OS**. **Marketing site** (per [`brand-guidelines.md`](brand-guidelines.md)): default **warm light** canvas reads as the same brand; optional dark sections or a later theme toggle are fine if they reuse dark tokens from the guidelines. 23 + - **Typography for this site**: Use **Sora + system-ui stacks** from [`brand-guidelines.md`](brand-guidelines.md) so the landing matches shipped chrome and wordmark. Favor **intentional scale, rhythm, and restrained motion**—compact-feeling sections where it helps, not marketing bloat. 24 + - **Accessibility**: **Reasonable defaults**—legible contrast, visible focus, **respect `prefers-reduced-motion`**. No separate formal WCAG tier is required unless product scope changes (aligns with extension); still avoid careless contrast on orange CTAs and links. 25 + 26 + ### Design Principles 27 + 28 + 1. **Answer “is this worth my time?” first**—hero and hierarchy make the verdict and the lede obvious before optional depth. 29 + 2. **Warm, direct, friendly**—invite; explain limits plainly; avoid stiff or robotic tone. 30 + 3. **Respect the surface**—in the app that’s the **popup** (density, scanability, predictable chrome); on the **site** that’s **scannable sections**, predictable nav, and no walls of filler. 31 + 4. **Privacy posture stays visible**—local vs cloud and when text leaves the machine stay easy to find, not buried. 32 + 5. **Warm neutrals over cold gray**—tint surfaces and type toward brand warmth so the UI feels cohesive, not template-default. 33 + 6. **Personality in the right layer**—microcopy and empty-state-style moments can have voice; wayfinding, install steps, and errors stay clear and calm. 34 + 7. **Obvious selection**—any exclusive choices on the site (e.g. theme or accent demos if shown) need glanceable selected states (e.g. ink + surface rings), not a single 1px border that disappears on the swatch hue. 35 + 8. **Same product, same room**—bolt, wordmark, palette, and CTA patterns match the extension docs; craft shows in **composition**, not a re-skinned “generic SaaS” look. 36 + 9. **Honesty about beta**—no store badges until shipped; CTAs match real install paths. 37 + 38 + ### Decisions log 39 + 40 + - **Copilot instructions**: Declined — `.impeccable.md` only unless you ask to sync elsewhere. 41 + - **Typography (resolved)**: Extension context does **not** override [`brand-guidelines.md`](brand-guidelines.md) stacks for the landing; **Sora + system body** stay the default pairing. Editorial warmth comes from **color, spacing, and copy**, not from swapping to a conflicting display face.
+7
astro.config.mjs
··· 1 + import { defineConfig } from "astro/config"; 2 + 3 + // https://astro.build/config 4 + export default defineConfig({ 5 + output: "static", 6 + compressHTML: true, 7 + });
+206
brand-guidelines.md
··· 1 + # Lede — brand guidelines (for marketing / landing pages) 2 + 3 + Derived from the extension UI (`popup/popup.css`, `options/options.css`, `scripts/config.js`, `manifest.json`, HTML). 4 + 5 + --- 6 + 7 + ## Identity 8 + 9 + | Role | Copy | 10 + |------|------| 11 + | **Product name** | Lede | 12 + | **Short tagline** | Page summarizer & chat | 13 + | **Full one-liner** | Lede — page summarizer & chat | 14 + | **Manifest description** | Lede — page summarizer & chat. Don't bury the main point—summarize and discuss any article. | 15 + | **Core metaphor** | Journalism “lede” — put the main point first | 16 + 17 + **Hero / feature copy (popup empty state)** 18 + 19 + - Headline: **Don't bury the lede** 20 + - Sub: **Put the main point first—then ask anything about the page—with AI.** 21 + 22 + **Primary action** 23 + 24 + - Button label: **Summarize** 25 + - Tooltip: **Reads this tab and puts the main point first.** 26 + 27 + **Chat placeholder** 28 + 29 + - **Ask Lede about this page…** 30 + 31 + **Keyboard shortcuts** (keep in sync with the product) 32 + 33 + - Windows/Linux: **Ctrl+Shift+U** 34 + - macOS: **Cmd+Shift+U** 35 + - Command description: **Summarize with Lede** 36 + 37 + --- 38 + 39 + ## Voice 40 + 41 + - Direct, concrete, **page-grounded** (avoid generic “AI assistant” filler). 42 + - Prefer **short** lines for headings and CTAs. 43 + - Loading / status tone examples: *Finding the lede…*, *Reading this tab…*, *Tracing the thread…*, *Spotting what matters first…*, *Sifting signal from noise…* 44 + - Product answers from **the open tab**; positioning should reflect summarize + Q&A on **that** content. 45 + 46 + --- 47 + 48 + ## Typography 49 + 50 + **Google Font (display / UI chrome)** 51 + 52 + - Family: **Sora** 53 + - Weights loaded in-app: **500, 600, 700** 54 + - Stylesheet URL: 55 + 56 + https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700&display=swap 57 + 58 + **Font stacks** 59 + 60 + - Display: `"Sora", system-ui, sans-serif` 61 + - Body: `system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif` 62 + - Mono: `ui-monospace, "SF Mono", "Cascadia Code", monospace` 63 + 64 + **Usage** 65 + 66 + - **Sora 600–700**: wordmark, hero titles, section headings, button labels, uppercase labels. 67 + - **Sora 500**: medium UI weight (buttons). 68 + - **System UI / regular**: paragraphs, long-form, body prose. 69 + - **Mono**: shortcuts, code, technical hints. 70 + 71 + **Scale** (modular ~1.25) 72 + 73 + - xs: `0.6875rem` (11px at 16px root) 74 + - sm: `0.8125rem` 75 + - md: `0.875rem` 76 + - base: `1rem` 77 + - lg: `1.25rem` 78 + - xl: `1.5625rem` 79 + 80 + **Line height** 81 + 82 + - Headings: `1.25` 83 + - UI: `1.35` 84 + - Prose: `1.62` (light) / up to `1.7–1.75` (dark long copy) 85 + 86 + **Letter-spacing** 87 + 88 + - Display titles: `-0.02em` 89 + - Uppercase micro-labels: `0.08em` + `text-transform: uppercase` 90 + 91 + --- 92 + 93 + ## Color 94 + 95 + ### Light (default) 96 + 97 + | Token | Hex | Notes | 98 + |--------|-----|--------| 99 + | Background | `#f5f0e8` | Warm paper | 100 + | Subtle / panels | `#ede8de` | Chips, secondary surfaces | 101 + | Border | `#e0d8cc` | Dividers, outlines | 102 + | Border hover | `#c8c0b4` | | 103 + | Text | `#1a1a1a` | Primary | 104 + | Text secondary | `#2a2a2a` | Popup prose (options use `#666` for secondary—same family) | 105 + | Text muted | `#aaa` | Icons, de-emphasis | 106 + 107 + **Cards on light (options pattern)** 108 + 109 + - Surface: `#ffffff` on `#f5f0e8` canvas 110 + 111 + ### Dark 112 + 113 + | Token | Hex | 114 + |--------|-----| 115 + | Background | `#1a1a1a` | 116 + | Subtle | `#252525` | 117 + | Border | `#2e2e2e` | 118 + | Text | `#e8e3db` | 119 + | Text secondary | `#d0cbc3` (popup) / `#bbb` (options) | 120 + 121 + ### Brand accent (default) 122 + 123 + | State | Hex | 124 + |--------|-----| 125 + | Brand | `#F15B2F` | 126 + | Hover | `#D94E27` | 127 + | Active | `#BF4522` | 128 + 129 + **User-selectable accent presets** (optional on a site for illustrations or secondary accents) 130 + 131 + - Orange `#F15B2F` (default) 132 + - Blue `#2F80ED` 133 + - Green `#2FA36B` 134 + - Purple `#7E57C2` 135 + - Teal `#14B8A6` 136 + - Pink `#EC4899` 137 + - Indigo `#4F46E5` 138 + 139 + ### Semantic (light) 140 + 141 + - Error background `#fdf0f0`, border `#f0d8d8`, text `#c05050` 142 + - Inline links (prose): default `#555`, hover → brand 143 + 144 + ### Focus 145 + 146 + - `outline: 2px solid` brand, `outline-offset: 2px` 147 + - Inputs: brand border + `box-shadow: 0 0 0 2px` brand at **22%** opacity (e.g. `color-mix(in srgb, brand 22%, transparent)`) 148 + 149 + --- 150 + 151 + ## Logo 152 + 153 + - **Asset**: `lightning.svg` (repo root) 154 + - **Usage in product**: single-color mark via mask/fill using **brand orange** 155 + - **Lockup**: bolt + **Lede** in Sora semibold 156 + - **Sizes in UI**: ~13–14px (header), larger in empty state (~18px)—scale up freely for web 157 + 158 + --- 159 + 160 + ## Shape language 161 + 162 + - Small controls: **6px** radius 163 + - Buttons, inputs, cards: **8px** 164 + - Suggestion chips: **14px** radius 165 + - Toasts: **~20px** pill 166 + - Dividers: **1px** solid border color 167 + 168 + --- 169 + 170 + ## Buttons / CTAs (signature) 171 + 172 + Primary CTA in the extension is **outline brand**, not solid by default: 173 + 174 + - Transparent background, **1px** border in brand, **brand** text 175 + - **Hover**: fill brand, **white** text 176 + - **Active**: darker brand (`#BF4522`) 177 + 178 + Secondary: neutral border, subtle fill on hover. 179 + 180 + --- 181 + 182 + ## Motion 183 + 184 + - Easing: `cubic-bezier(0.25, 1, 0.5, 1)`, `cubic-bezier(0.22, 1, 0.36, 1)` 185 + - Durations: ~**0.32s** enter, **0.14s** tap, **0.22s** light toasts 186 + - Entrance: slight **translateY** + fade 187 + - Hover: small **translateY(-1px)** or light **scale** on icons 188 + - Respect **`prefers-reduced-motion: reduce`** 189 + 190 + --- 191 + 192 + ## Theme 193 + 194 + - App supports **light**, **dark**, **system** 195 + - Landing page: default **light** warm canvas; optional **dark** section using dark tokens + same orange accent reads as “the same product” 196 + 197 + --- 198 + 199 + ## Technical positioning (accurate to the codebase) 200 + 201 + - Works with **Ollama** and **OpenAI-compatible** APIs; defaults include local Ollama URL patterns. 202 + - Mention localhost / bring-your-own endpoint only if your landing page promises that—align with actual install docs. 203 + 204 + --- 205 + 206 + *Single source of truth for strings: `scripts/config.js` (`CONFIG.EXTENSION`, `CONFIG.UI`, `CONFIG.PROMPTS`); colors: `popup/popup.css` and `options/options.css` `:root` / `[data-theme="dark"]`.*
+668
bun.lock
··· 1 + { 2 + "lockfileVersion": 1, 3 + "configVersion": 1, 4 + "workspaces": { 5 + "": { 6 + "name": "lede-website", 7 + "dependencies": { 8 + "astro": "5.6.1", 9 + }, 10 + "devDependencies": { 11 + "typescript": "5.7.3", 12 + }, 13 + }, 14 + }, 15 + "packages": { 16 + "@astrojs/compiler": ["@astrojs/compiler@2.13.1", "", {}, "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg=="], 17 + 18 + "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], 19 + 20 + "@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.6.1", "@astrojs/prism": "3.2.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", "shiki": "^3.0.0", "smol-toml": "^1.3.1", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg=="], 21 + 22 + "@astrojs/prism": ["@astrojs/prism@3.2.0", "", { "dependencies": { "prismjs": "^1.29.0" } }, "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw=="], 23 + 24 + "@astrojs/telemetry": ["@astrojs/telemetry@3.2.0", "", { "dependencies": { "ci-info": "^4.1.0", "debug": "^4.3.7", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ=="], 25 + 26 + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], 27 + 28 + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], 29 + 30 + "@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="], 31 + 32 + "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], 33 + 34 + "@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], 35 + 36 + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], 37 + 38 + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], 39 + 40 + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], 41 + 42 + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], 43 + 44 + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], 45 + 46 + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], 47 + 48 + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], 49 + 50 + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], 51 + 52 + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], 53 + 54 + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], 55 + 56 + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], 57 + 58 + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], 59 + 60 + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], 61 + 62 + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], 63 + 64 + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], 65 + 66 + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], 67 + 68 + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], 69 + 70 + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], 71 + 72 + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], 73 + 74 + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], 75 + 76 + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], 77 + 78 + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], 79 + 80 + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], 81 + 82 + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], 83 + 84 + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], 85 + 86 + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], 87 + 88 + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], 89 + 90 + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], 91 + 92 + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], 93 + 94 + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], 95 + 96 + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], 97 + 98 + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], 99 + 100 + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], 101 + 102 + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], 103 + 104 + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], 105 + 106 + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], 107 + 108 + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], 109 + 110 + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], 111 + 112 + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], 113 + 114 + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], 115 + 116 + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], 117 + 118 + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], 119 + 120 + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], 121 + 122 + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], 123 + 124 + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], 125 + 126 + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], 127 + 128 + "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="], 129 + 130 + "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], 131 + 132 + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.60.1", "", { "os": "android", "cpu": "arm" }, "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA=="], 133 + 134 + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.60.1", "", { "os": "android", "cpu": "arm64" }, "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA=="], 135 + 136 + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.60.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw=="], 137 + 138 + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.60.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew=="], 139 + 140 + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.60.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w=="], 141 + 142 + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.60.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g=="], 143 + 144 + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.60.1", "", { "os": "linux", "cpu": "arm" }, "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g=="], 145 + 146 + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.60.1", "", { "os": "linux", "cpu": "arm" }, "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg=="], 147 + 148 + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.60.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ=="], 149 + 150 + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.60.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA=="], 151 + 152 + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ=="], 153 + 154 + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw=="], 155 + 156 + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.60.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw=="], 157 + 158 + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.60.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg=="], 159 + 160 + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg=="], 161 + 162 + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.60.1", "", { "os": "linux", "cpu": "none" }, "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg=="], 163 + 164 + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.60.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ=="], 165 + 166 + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.60.1", "", { "os": "linux", "cpu": "x64" }, "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg=="], 167 + 168 + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.60.1", "", { "os": "linux", "cpu": "x64" }, "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w=="], 169 + 170 + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.60.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw=="], 171 + 172 + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.60.1", "", { "os": "none", "cpu": "arm64" }, "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA=="], 173 + 174 + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.60.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g=="], 175 + 176 + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.60.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg=="], 177 + 178 + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.60.1", "", { "os": "win32", "cpu": "x64" }, "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg=="], 179 + 180 + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.1", "", { "os": "win32", "cpu": "x64" }, "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ=="], 181 + 182 + "@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="], 183 + 184 + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA=="], 185 + 186 + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g=="], 187 + 188 + "@shikijs/langs": ["@shikijs/langs@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg=="], 189 + 190 + "@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="], 191 + 192 + "@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], 193 + 194 + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], 195 + 196 + "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], 197 + 198 + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], 199 + 200 + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], 201 + 202 + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], 203 + 204 + "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], 205 + 206 + "@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], 207 + 208 + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], 209 + 210 + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], 211 + 212 + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], 213 + 214 + "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], 215 + 216 + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 217 + 218 + "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], 219 + 220 + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], 221 + 222 + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], 223 + 224 + "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], 225 + 226 + "array-iterate": ["array-iterate@2.0.1", "", {}, "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg=="], 227 + 228 + "astro": ["astro@5.6.1", "", { "dependencies": { "@astrojs/compiler": "^2.11.0", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.1", "@astrojs/telemetry": "3.2.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.6.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", "shiki": "^3.2.1", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", "vite": "^6.2.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.2", "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-aQ2TV7wIf+q2Oi6gGWMINHWEAZqoP0eH6/mihodfTJYATPWyd03JIGVfjtYUJlkNdNSKxDXwEe/r/Zx4CZ1FPg=="], 229 + 230 + "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], 231 + 232 + "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], 233 + 234 + "base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="], 235 + 236 + "boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], 237 + 238 + "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], 239 + 240 + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], 241 + 242 + "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], 243 + 244 + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], 245 + 246 + "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], 247 + 248 + "character-entities-legacy": ["character-entities-legacy@3.0.0", "", {}, "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="], 249 + 250 + "chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], 251 + 252 + "ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="], 253 + 254 + "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], 255 + 256 + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], 257 + 258 + "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], 259 + 260 + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 261 + 262 + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], 263 + 264 + "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], 265 + 266 + "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], 267 + 268 + "common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], 269 + 270 + "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], 271 + 272 + "cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], 273 + 274 + "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], 275 + 276 + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], 277 + 278 + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 279 + 280 + "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], 281 + 282 + "defu": ["defu@6.1.7", "", {}, "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ=="], 283 + 284 + "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], 285 + 286 + "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], 287 + 288 + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], 289 + 290 + "deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="], 291 + 292 + "devalue": ["devalue@5.7.1", "", {}, "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA=="], 293 + 294 + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], 295 + 296 + "diff": ["diff@5.2.2", "", {}, "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A=="], 297 + 298 + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], 299 + 300 + "dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="], 301 + 302 + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], 303 + 304 + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], 305 + 306 + "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], 307 + 308 + "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], 309 + 310 + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], 311 + 312 + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], 313 + 314 + "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], 315 + 316 + "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], 317 + 318 + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 319 + 320 + "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="], 321 + 322 + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], 323 + 324 + "get-east-asian-width": ["get-east-asian-width@1.5.0", "", {}, "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA=="], 325 + 326 + "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], 327 + 328 + "h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], 329 + 330 + "hast-util-from-html": ["hast-util-from-html@2.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", "hast-util-from-parse5": "^8.0.0", "parse5": "^7.0.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" } }, "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw=="], 331 + 332 + "hast-util-from-parse5": ["hast-util-from-parse5@8.0.3", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" } }, "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg=="], 333 + 334 + "hast-util-is-element": ["hast-util-is-element@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g=="], 335 + 336 + "hast-util-parse-selector": ["hast-util-parse-selector@4.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A=="], 337 + 338 + "hast-util-raw": ["hast-util-raw@9.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-from-parse5": "^8.0.0", "hast-util-to-parse5": "^8.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "parse5": "^7.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw=="], 339 + 340 + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], 341 + 342 + "hast-util-to-parse5": ["hast-util-to-parse5@8.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" } }, "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA=="], 343 + 344 + "hast-util-to-text": ["hast-util-to-text@4.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "hast-util-is-element": "^3.0.0", "unist-util-find-after": "^5.0.0" } }, "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A=="], 345 + 346 + "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], 347 + 348 + "hastscript": ["hastscript@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w=="], 349 + 350 + "html-escaper": ["html-escaper@3.0.3", "", {}, "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ=="], 351 + 352 + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], 353 + 354 + "http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="], 355 + 356 + "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], 357 + 358 + "iron-webcrypto": ["iron-webcrypto@1.2.1", "", {}, "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg=="], 359 + 360 + "is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="], 361 + 362 + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], 363 + 364 + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], 365 + 366 + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], 367 + 368 + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], 369 + 370 + "is-wsl": ["is-wsl@3.1.1", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw=="], 371 + 372 + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], 373 + 374 + "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], 375 + 376 + "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], 377 + 378 + "lru-cache": ["lru-cache@11.3.3", "", {}, "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ=="], 379 + 380 + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], 381 + 382 + "magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], 383 + 384 + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], 385 + 386 + "mdast-util-definitions": ["mdast-util-definitions@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ=="], 387 + 388 + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], 389 + 390 + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.3", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q=="], 391 + 392 + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], 393 + 394 + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], 395 + 396 + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], 397 + 398 + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], 399 + 400 + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], 401 + 402 + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], 403 + 404 + "mdast-util-phrasing": ["mdast-util-phrasing@4.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" } }, "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w=="], 405 + 406 + "mdast-util-to-hast": ["mdast-util-to-hast@13.2.1", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "@ungap/structured-clone": "^1.0.0", "devlop": "^1.0.0", "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA=="], 407 + 408 + "mdast-util-to-markdown": ["mdast-util-to-markdown@2.1.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA=="], 409 + 410 + "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], 411 + 412 + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], 413 + 414 + "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], 415 + 416 + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], 417 + 418 + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], 419 + 420 + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], 421 + 422 + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], 423 + 424 + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], 425 + 426 + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], 427 + 428 + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], 429 + 430 + "micromark-factory-destination": ["micromark-factory-destination@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA=="], 431 + 432 + "micromark-factory-label": ["micromark-factory-label@2.0.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg=="], 433 + 434 + "micromark-factory-space": ["micromark-factory-space@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg=="], 435 + 436 + "micromark-factory-title": ["micromark-factory-title@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw=="], 437 + 438 + "micromark-factory-whitespace": ["micromark-factory-whitespace@2.0.1", "", { "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ=="], 439 + 440 + "micromark-util-character": ["micromark-util-character@2.1.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q=="], 441 + 442 + "micromark-util-chunked": ["micromark-util-chunked@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA=="], 443 + 444 + "micromark-util-classify-character": ["micromark-util-classify-character@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q=="], 445 + 446 + "micromark-util-combine-extensions": ["micromark-util-combine-extensions@2.0.1", "", { "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg=="], 447 + 448 + "micromark-util-decode-numeric-character-reference": ["micromark-util-decode-numeric-character-reference@2.0.2", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw=="], 449 + 450 + "micromark-util-decode-string": ["micromark-util-decode-string@2.0.1", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ=="], 451 + 452 + "micromark-util-encode": ["micromark-util-encode@2.0.1", "", {}, "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw=="], 453 + 454 + "micromark-util-html-tag-name": ["micromark-util-html-tag-name@2.0.1", "", {}, "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA=="], 455 + 456 + "micromark-util-normalize-identifier": ["micromark-util-normalize-identifier@2.0.1", "", { "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q=="], 457 + 458 + "micromark-util-resolve-all": ["micromark-util-resolve-all@2.0.1", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg=="], 459 + 460 + "micromark-util-sanitize-uri": ["micromark-util-sanitize-uri@2.0.1", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ=="], 461 + 462 + "micromark-util-subtokenize": ["micromark-util-subtokenize@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA=="], 463 + 464 + "micromark-util-symbol": ["micromark-util-symbol@2.0.1", "", {}, "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q=="], 465 + 466 + "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], 467 + 468 + "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], 469 + 470 + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], 471 + 472 + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], 473 + 474 + "neotraverse": ["neotraverse@0.6.18", "", {}, "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA=="], 475 + 476 + "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], 477 + 478 + "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], 479 + 480 + "node-mock-http": ["node-mock-http@1.0.4", "", {}, "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ=="], 481 + 482 + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], 483 + 484 + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], 485 + 486 + "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], 487 + 488 + "oniguruma-to-es": ["oniguruma-to-es@4.3.5", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ=="], 489 + 490 + "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], 491 + 492 + "p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="], 493 + 494 + "p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="], 495 + 496 + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], 497 + 498 + "parse-latin": ["parse-latin@7.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", "nlcst-to-string": "^4.0.0", "unist-util-modify-children": "^4.0.0", "unist-util-visit-children": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ=="], 499 + 500 + "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], 501 + 502 + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], 503 + 504 + "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], 505 + 506 + "postcss": ["postcss@8.5.9", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw=="], 507 + 508 + "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], 509 + 510 + "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], 511 + 512 + "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], 513 + 514 + "radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="], 515 + 516 + "readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], 517 + 518 + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], 519 + 520 + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], 521 + 522 + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], 523 + 524 + "rehype": ["rehype@13.0.2", "", { "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", "rehype-stringify": "^10.0.0", "unified": "^11.0.0" } }, "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A=="], 525 + 526 + "rehype-parse": ["rehype-parse@9.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", "unified": "^11.0.0" } }, "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag=="], 527 + 528 + "rehype-raw": ["rehype-raw@7.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", "vfile": "^6.0.0" } }, "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww=="], 529 + 530 + "rehype-stringify": ["rehype-stringify@10.0.1", "", { "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", "unified": "^11.0.0" } }, "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA=="], 531 + 532 + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], 533 + 534 + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], 535 + 536 + "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], 537 + 538 + "remark-smartypants": ["remark-smartypants@3.0.2", "", { "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", "unified": "^11.0.4", "unist-util-visit": "^5.0.0" } }, "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA=="], 539 + 540 + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], 541 + 542 + "retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], 543 + 544 + "retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], 545 + 546 + "retext-smartypants": ["retext-smartypants@6.2.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ=="], 547 + 548 + "retext-stringify": ["retext-stringify@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", "unified": "^11.0.0" } }, "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA=="], 549 + 550 + "rollup": ["rollup@4.60.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.1", "@rollup/rollup-android-arm64": "4.60.1", "@rollup/rollup-darwin-arm64": "4.60.1", "@rollup/rollup-darwin-x64": "4.60.1", "@rollup/rollup-freebsd-arm64": "4.60.1", "@rollup/rollup-freebsd-x64": "4.60.1", "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", "@rollup/rollup-linux-arm-musleabihf": "4.60.1", "@rollup/rollup-linux-arm64-gnu": "4.60.1", "@rollup/rollup-linux-arm64-musl": "4.60.1", "@rollup/rollup-linux-loong64-gnu": "4.60.1", "@rollup/rollup-linux-loong64-musl": "4.60.1", "@rollup/rollup-linux-ppc64-gnu": "4.60.1", "@rollup/rollup-linux-ppc64-musl": "4.60.1", "@rollup/rollup-linux-riscv64-gnu": "4.60.1", "@rollup/rollup-linux-riscv64-musl": "4.60.1", "@rollup/rollup-linux-s390x-gnu": "4.60.1", "@rollup/rollup-linux-x64-gnu": "4.60.1", "@rollup/rollup-linux-x64-musl": "4.60.1", "@rollup/rollup-openbsd-x64": "4.60.1", "@rollup/rollup-openharmony-arm64": "4.60.1", "@rollup/rollup-win32-arm64-msvc": "4.60.1", "@rollup/rollup-win32-ia32-msvc": "4.60.1", "@rollup/rollup-win32-x64-gnu": "4.60.1", "@rollup/rollup-win32-x64-msvc": "4.60.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w=="], 551 + 552 + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], 553 + 554 + "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], 555 + 556 + "shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="], 557 + 558 + "simple-swizzle": ["simple-swizzle@0.2.4", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw=="], 559 + 560 + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], 561 + 562 + "smol-toml": ["smol-toml@1.6.1", "", {}, "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg=="], 563 + 564 + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], 565 + 566 + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], 567 + 568 + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], 569 + 570 + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], 571 + 572 + "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], 573 + 574 + "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], 575 + 576 + "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], 577 + 578 + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], 579 + 580 + "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], 581 + 582 + "tsconfck": ["tsconfck@3.1.6", "", { "peerDependencies": { "typescript": "^5.0.0" }, "optionalPeers": ["typescript"], "bin": { "tsconfck": "bin/tsconfck.js" } }, "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w=="], 583 + 584 + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 585 + 586 + "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], 587 + 588 + "typescript": ["typescript@5.7.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw=="], 589 + 590 + "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], 591 + 592 + "ultrahtml": ["ultrahtml@1.6.0", "", {}, "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw=="], 593 + 594 + "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], 595 + 596 + "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], 597 + 598 + "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], 599 + 600 + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], 601 + 602 + "unist-util-modify-children": ["unist-util-modify-children@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" } }, "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw=="], 603 + 604 + "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], 605 + 606 + "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], 607 + 608 + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], 609 + 610 + "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], 611 + 612 + "unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="], 613 + 614 + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], 615 + 616 + "unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6 || ^7 || ^8", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], 617 + 618 + "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], 619 + 620 + "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], 621 + 622 + "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], 623 + 624 + "vite": ["vite@6.4.2", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ=="], 625 + 626 + "vitefu": ["vitefu@1.1.3", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["vite"] }, "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg=="], 627 + 628 + "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], 629 + 630 + "which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="], 631 + 632 + "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], 633 + 634 + "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], 635 + 636 + "xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="], 637 + 638 + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], 639 + 640 + "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], 641 + 642 + "yocto-spinner": ["yocto-spinner@0.2.3", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ=="], 643 + 644 + "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], 645 + 646 + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], 647 + 648 + "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], 649 + 650 + "zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="], 651 + 652 + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], 653 + 654 + "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], 655 + 656 + "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], 657 + 658 + "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], 659 + 660 + "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], 661 + 662 + "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], 663 + 664 + "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 665 + 666 + "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 667 + } 668 + }
icon128.png

This is a binary file and will not be displayed.

+1
info on the extension/info.md
··· 1 + - Open source on Tangled -- https://tangled.org/ellioth.co/summarizer-extension
+128
info on the extension/project-readme.md
··· 1 + # Lede — page summarizer & chat (WIP) 2 + 3 + A browser extension for Chrome and Firefox that lets you ask questions and summarize any webpage using AI (using Ollama or any OpenAI-compatible API). Works best with the GPT-OSS-20b model. 4 + 5 + In **Beta**. Not yet in the Chrome Web Store or Firefox Addons. 6 + 7 + ## Features 8 + 9 + - 📄 **One-Click Summaries** - Summarize page content efficiently 10 + - 🤖 **Follow Up Questions** - Ask questions about the current webpage and summary 11 + - 🔌 **OpenAI-Compatible** - Works with Ollama, OpenAI, Groq, and LM Studio 12 + - ⚙️ **Configurable** - Choose your own model and API endpoint 13 + - 🔒 **Privacy-first** - Keep summaries local with Ollama, or use a cloud provider when you choose one. 14 + - ⌨️ **Quick access** - Keyboard shortcut of `Ctrl/Cmd+Shift+U`, use the right click menu, or click the extension icon. 15 + 16 + ## About 17 + Made to solve a very simple problem I had as a user of the Helium web browser. 18 + 19 + ## Installation (in dev mode) 20 + 21 + ### Chrome 22 + 23 + 1. Open Chrome and navigate to `chrome://extensions/` 24 + 2. Enable **Developer mode** (toggle in top right) 25 + 3. Click **Load unpacked** 26 + 4. Select the `webai-summarizer` folder 27 + 5. The extension icon should appear in your toolbar 28 + 6. Optionally set up the keyboard shortcut at `chrome://extensions/shortcuts` 29 + 30 + ### Firefox 31 + 32 + 1. Open Firefox and navigate to `about:debugging#/runtime/this-firefox` 33 + 2. Click **Load Temporary Add-on** 34 + 3. Select the `manifest.json` file in the `webai-summarizer` folder 35 + 4. The extension icon should appear in your toolbar 36 + 37 + **Note:** Firefox requires you to manually enable the keyboard shortcut: 38 + 1. Type `about:addons` in the address bar 39 + 2. Click the gear icon (⚙️) → **Manage Extension Shortcuts** 40 + 41 + ## TODO 42 + 43 + - [x] Better branding / icon / logo 44 + - [ ] Similar to "branding" -- Rename extension to something more unique and not placeholder-y 45 + - [ ] Publish to Chrome Web Store 46 + - [ ] Publish to Firefox Add-ons 47 + 48 + ### Build for Specific Browser 49 + 50 + If needed, you can build for a specific browser: 51 + 52 + ```bash 53 + # For Chrome 54 + ./build.sh chrome 55 + 56 + # For Firefox 57 + ./build.sh firefox 58 + ``` 59 + 60 + ## Usage 61 + 62 + 1. **Navigate to any webpage** 63 + 2. **Click the extension icon** in your toolbar, **or press `Ctrl/Cmd+Shift+U`** 64 + 3. **Click "Summarize Page"** for an instant summary, **or** 65 + 4. **Type a question** about the page content and press Enter 66 + 67 + 68 + ## API Mode Explained 69 + 70 + ### Ollama Native Mode 71 + - Uses Ollama's native `/api/generate` endpoint 72 + - Works out of the box if Ollama is installed 73 + - Recommended for local Ollama installations 74 + - Base URL should NOT include `/v1` 75 + 76 + ### OpenAI-Compatible Mode 77 + - Uses the `/v1/chat/completions` endpoint 78 + - Required for OpenAI, Groq, and other cloud providers 79 + - Can work with Ollama if you set the `OPENAI_API_BASE` environment variable 80 + - Base URL MUST include `/v1` for Ollama compatibility mode 81 + 82 + ## Privacy Notes 83 + 84 + - In **Ollama Native** mode, your content stays on your machine (local model/server). 85 + - In **OpenAI-compatible** mode, page content is sent to the provider endpoint you configure. 86 + - The extension now extracts page text on-demand when you trigger summarize/chat, rather than running a persistent content script on all pages. 87 + 88 + ## Troubleshooting 89 + 90 + ### "Cannot connect to localhost:11434" 91 + 1. Make sure Ollama is running: `ollama serve` 92 + 2. Check that you pulled the model: `ollama list` 93 + 3. If using Ollama, make sure your URL doesn't have `/v1` in Native mode 94 + 4. Check browser console for detailed error messages 95 + 96 + ### "HTTP 403" or "HTTP 405" 97 + This means the API endpoint is wrong. Try: 98 + 1. Switch API Mode from settings 99 + 2. For Ollama Native: use `http://localhost:11434` (no /v1) 100 + 3. For OpenAI mode: use `http://localhost:11434/v1` (with /v1) 101 + 102 + ## File Structure 103 + 104 + ``` 105 + webai-summarizer/ 106 + ├── manifest.json # Extension configuration (active) 107 + ├── manifest-chrome.json # Chrome-specific manifest 108 + ├── manifest-firefox.json # Firefox-specific manifest 109 + ├── build.sh # Build script for browser switching 110 + ├── BROWSER_SUPPORT.md # Browser compatibility documentation 111 + ├── popup/ 112 + │ ├── popup.html # Chat interface 113 + │ ├── popup.css # Styling 114 + │ ├── popup.js # Popup logic 115 + │ └── marked.min.js # Markdown parser 116 + ├── scripts/ 117 + │ ├── content.js # Webpage text extraction 118 + │ └── background.js # API communication 119 + ├── options/ 120 + │ ├── options.html # Settings page 121 + │ ├── options.css 122 + │ └── options.js 123 + └── icons/ 124 + ├── icon16.png 125 + ├── icon32.png 126 + ├── icon48.png 127 + └── icon128.png 128 + ```
+9
lightning.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 3 + <svg width="100%" height="100%" viewBox="0 0 571 991" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> 4 + <g transform="matrix(1,0,0,1,-242.737675,-4.302677)"> 5 + <g transform="matrix(2.061595,0.357455,-0.357455,2.061595,-342.211752,-730.395512)"> 6 + <path d="M520.828,281.713L496.332,468.258L618.867,419.852C623.264,418.115 628.272,419.151 631.619,422.489C634.966,425.827 636.015,430.832 634.29,435.233C591.046,545.573 527.57,652.425 447.165,756.331C443.667,760.853 437.444,762.24 432.356,759.633C427.268,757.027 424.759,751.165 426.385,745.684L487.827,538.566L392.453,556.504C388.107,557.321 383.666,555.656 380.929,552.182C378.192,548.709 377.611,544.002 379.422,539.967L498.215,275.303C500.629,269.926 506.62,267.132 512.291,268.739C517.961,270.347 521.595,275.869 520.828,281.713Z" style="fill:rgb(241,91,47);"/> 7 + </g> 8 + </g> 9 + </svg>
+19
package.json
··· 1 + { 2 + "name": "lede-website", 3 + "type": "module", 4 + "version": "0.0.1", 5 + "private": true, 6 + "scripts": { 7 + "dev": "astro dev", 8 + "start": "astro dev", 9 + "build": "astro build", 10 + "preview": "astro preview", 11 + "astro": "astro" 12 + }, 13 + "dependencies": { 14 + "astro": "5.6.1" 15 + }, 16 + "devDependencies": { 17 + "typescript": "5.7.3" 18 + } 19 + }
+4
public/favicon.svg
··· 1 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="none"> 2 + <rect width="32" height="32" rx="6" fill="#f5f0e8"/> 3 + <path fill="#F15B2F" d="M17.2 6.5 14.8 18.2l8.5-3.2c.4-.2.8-.1 1 .2.3.3.4.7.2 1.1-3.4 7.8-8.2 15-13.4 21.8-.3.4-.9.5-1.4.2s-.7-.9-.5-1.3l4.9-14.1-7.5 1.4c-.4.1-.8-.1-1-.4s-.3-.7-.1-1L15.5 5.8c.2-.4.7-.6 1.2-.4.5.1.8.6.5 1.1Z"/> 4 + </svg>
+8
public/lightning.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <svg width="100%" height="100%" viewBox="0 0 571 991" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> 3 + <g transform="matrix(1,0,0,1,-242.737675,-4.302677)"> 4 + <g transform="matrix(2.061595,0.357455,-0.357455,2.061595,-342.211752,-730.395512)"> 5 + <path d="M520.828,281.713L496.332,468.258L618.867,419.852C623.264,418.115 628.272,419.151 631.619,422.489C634.966,425.827 636.015,430.832 634.29,435.233C591.046,545.573 527.57,652.425 447.165,756.331C443.667,760.853 437.444,762.24 432.356,759.633C427.268,757.027 424.759,751.165 426.385,745.684L487.827,538.566L392.453,556.504C388.107,557.321 383.666,555.656 380.929,552.182C378.192,548.709 377.611,544.002 379.422,539.967L498.215,275.303C500.629,269.926 506.62,267.132 512.291,268.739C517.961,270.347 521.595,275.869 520.828,281.713Z" style="fill:rgb(241,91,47);"/> 6 + </g> 7 + </g> 8 + </svg>
+44
src/components/SiteHeader.astro
··· 1 + --- 2 + const tangled = "https://tangled.org/ellioth.co/summarizer-extension"; 3 + 4 + const links = [ 5 + { href: "#privacy", label: "Privacy" }, 6 + { href: "#features", label: "Features" }, 7 + { href: "#faq", label: "FAQ" }, 8 + { href: tangled, label: "Repo", external: true }, 9 + ] as const; 10 + --- 11 + 12 + <header class="site-header"> 13 + <div class="wrap site-header__inner"> 14 + <a class="brand-lockup" href="/"> 15 + <img 16 + class="brand-lockup__mark" 17 + src="/lightning.svg" 18 + width="28" 19 + height="48" 20 + alt="" 21 + /> 22 + <span>Lede</span> 23 + </a> 24 + <div class="site-header__actions"> 25 + <nav aria-label="Page"> 26 + <ul class="nav"> 27 + { 28 + links.map((link) => ( 29 + <li> 30 + <a 31 + href={link.href} 32 + {...(link.external ? { target: "_blank", rel: "noopener noreferrer" } : {})} 33 + > 34 + {link.label} 35 + </a> 36 + </li> 37 + )) 38 + } 39 + </ul> 40 + </nav> 41 + <a class="btn btn--primary btn--sm nav-install" href="#install">Install beta</a> 42 + </div> 43 + </div> 44 + </header>
+1
src/env.d.ts
··· 1 + /// <reference path="../.astro/types.d.ts" />
+43
src/layouts/BaseLayout.astro
··· 1 + --- 2 + import "../styles/global.css"; 3 + 4 + interface Props { 5 + title?: string; 6 + description?: string; 7 + ogUrl?: string; 8 + } 9 + 10 + const { 11 + title = "Lede — page summarizer & chat", 12 + description = 13 + "Lede — page summarizer & chat. Don't bury the main point—summarize and discuss any article.", 14 + ogUrl = "https://lede.app", 15 + } = Astro.props; 16 + --- 17 + 18 + <!doctype html> 19 + <html lang="en"> 20 + <head> 21 + <meta charset="UTF-8" /> 22 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 23 + <meta name="generator" content={Astro.generator} /> 24 + <title>{title}</title> 25 + <meta name="description" content={description} /> 26 + <meta property="og:title" content={title} /> 27 + <meta property="og:description" content={description} /> 28 + <meta property="og:type" content="website" /> 29 + <meta property="og:url" content={ogUrl} /> 30 + <meta name="twitter:card" content="summary_large_image" /> 31 + <link rel="icon" href="/favicon.svg" type="image/svg+xml" /> 32 + <link rel="preconnect" href="https://fonts.googleapis.com" /> 33 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 34 + <link 35 + href="https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700&display=swap" 36 + rel="stylesheet" 37 + /> 38 + </head> 39 + <body> 40 + <a class="skip-link" href="#main">Skip to content</a> 41 + <slot /> 42 + </body> 43 + </html>
+267
src/pages/index.astro
··· 1 + --- 2 + import BaseLayout from "../layouts/BaseLayout.astro"; 3 + import SiteHeader from "../components/SiteHeader.astro"; 4 + 5 + const tangled = "https://tangled.org/ellioth.co/summarizer-extension"; 6 + --- 7 + 8 + <BaseLayout> 9 + <div class="page"> 10 + <SiteHeader /> 11 + <main id="main" class="page-main"> 12 + <section class="hero wrap reveal-group" aria-labelledby="hero-heading"> 13 + <div class="hero__grid"> 14 + <div> 15 + <p class="eyebrow reveal-item" style="--i: 0"> 16 + Page summarizer &amp; chat · Chrome &amp; Firefox 17 + </p> 18 + <h1 id="hero-heading" class="display-hero reveal-item" style="--i: 1"> 19 + Don&apos;t bury the lede 20 + </h1> 21 + <p class="lede reveal-item" style="--i: 2"> 22 + Put the main point first—then ask anything about the page—with AI. Answers stay tied to 23 + <strong>the tab you have open</strong>, not a generic chat shell. 24 + </p> 25 + <div class="actions reveal-item" style="--i: 3"> 26 + <a class="btn btn--primary" href="#install">Install (beta)</a> 27 + <a 28 + class="btn btn--secondary" 29 + href={tangled} 30 + target="_blank" 31 + rel="noopener noreferrer">Extension repo on Tangled</a 32 + > 33 + </div> 34 + <p class="eyebrow reveal-item" style="--i: 4; margin-top: var(--space-md)"> 35 + Keyboard 36 + </p> 37 + <p 38 + class="reveal-item" 39 + style="--i: 5; margin: 0; font-size: var(--text-sm); color: var(--color-ink-secondary)" 40 + > 41 + <span class="kbd">Ctrl</span> + <span class="kbd">Shift</span> + <span class="kbd">U</span> 42 + <span aria-hidden="true"> · </span> 43 + <span class="kbd">⌘</span> + <span class="kbd">Shift</span> + <span class="kbd">U</span> on macOS 44 + — <em>Summarize with Lede</em> 45 + </p> 46 + </div> 47 + <aside class="hero__aside reveal-item" style="--i: 3" aria-label="Release status"> 48 + <span class="beta-tag">Beta</span> 49 + <p class="beta-note"> 50 + Not in the Chrome Web Store or Firefox Add-ons yet. Grab the source, load unpacked (Chrome) 51 + or a temporary add-on (Firefox), then wire up Ollama or your API in settings. 52 + </p> 53 + </aside> 54 + </div> 55 + </section> 56 + 57 + <section id="install" class="section wrap" aria-labelledby="install-heading"> 58 + <header class="section__head"> 59 + <p class="eyebrow">Install</p> 60 + <h2 id="install-heading" class="heading-xl">Get the beta running</h2> 61 + </header> 62 + 63 + <p class="repo-callout"> 64 + <strong>Clone the extension, not this site.</strong> Lede&apos;s source and <code class="kbd" 65 + >manifest.json</code 66 + > 67 + live in the <strong>webai-summarizer</strong> repo on Tangled. This repository (<code class="kbd" 68 + >lede-website</code 69 + >) is only the marketing page. 70 + </p> 71 + 72 + <div class="install-section__quick" aria-labelledby="quick-heading"> 73 + <p id="quick-heading" class="eyebrow" style="margin-bottom: var(--space-sm)">Start here</p> 74 + <ol class="quickstart-path"> 75 + <li> 76 + <strong><span class="step-num">1</span> Open the repo</strong> 77 + <p> 78 + Download or clone <strong>webai-summarizer</strong> from Tangled so you have a local folder 79 + with <code class="kbd">manifest.json</code>. 80 + </p> 81 + <p style="margin-top: var(--space-2xs)"> 82 + <a href={tangled} target="_blank" rel="noopener noreferrer">Open extension repo →</a> 83 + </p> 84 + </li> 85 + <li> 86 + <strong><span class="step-num">2</span> Pick a browser</strong> 87 + <p>Chrome (unpacked) or Firefox (temporary add-on). Detailed clicks are in the panels below.</p> 88 + </li> 89 + <li> 90 + <strong><span class="step-num">3</span> Load &amp; configure</strong> 91 + <p> 92 + Point settings at Ollama native or an OpenAI-compatible endpoint, then summarize any tab. 93 + </p> 94 + </li> 95 + </ol> 96 + </div> 97 + 98 + <div class="install-wrap"> 99 + <div class="install-panel"> 100 + <div> 101 + <h3 class="heading-lg">Chrome</h3> 102 + <ol> 103 + <li>Open <span class="kbd">chrome://extensions/</span></li> 104 + <li>Enable <strong>Developer mode</strong></li> 105 + <li>Click <strong>Load unpacked</strong></li> 106 + <li>Select your local <strong>webai-summarizer</strong> folder (the one with <code class="kbd">manifest.json</code>)</li> 107 + <li>Optional: shortcuts at <span class="kbd">chrome://extensions/shortcuts</span></li> 108 + </ol> 109 + </div> 110 + <div> 111 + <h3 class="heading-lg">Firefox</h3> 112 + <ol> 113 + <li>Open <span class="kbd">about:debugging#/runtime/this-firefox</span></li> 114 + <li>Click <strong>Load Temporary Add-on</strong></li> 115 + <li>Choose <strong>manifest.json</strong> inside <strong>webai-summarizer</strong></li> 116 + <li>Enable the shortcut via Add-ons → gear → <strong>Manage Extension Shortcuts</strong></li> 117 + </ol> 118 + <p class="firefox-note"> 119 + Temporary add-ons last until you fully quit Firefox—plan to reload during active development. 120 + </p> 121 + </div> 122 + </div> 123 + </div> 124 + 125 + <details class="disclosure"> 126 + <summary>Advanced: build per browser</summary> 127 + <div class="disclosure__body"> 128 + <p> 129 + In the extension repo, you can target a browser with <span class="kbd">./build.sh chrome</span> or 130 + <span class="kbd">./build.sh firefox</span> if you maintain separate manifests—only if you already 131 + use that workflow. 132 + </p> 133 + </div> 134 + </details> 135 + 136 + <p class="repo-note" style="margin-top: var(--space-md)"> 137 + Open source: 138 + <a href={tangled} target="_blank" rel="noopener noreferrer">{tangled}</a> 139 + </p> 140 + </section> 141 + 142 + <div class="wrap"> 143 + <blockquote class="pull-quote reveal-item" style="--i: 0" cite={tangled}> 144 + Worth your time? Lede reads the open tab on demand—then puts the verdict up front. 145 + </blockquote> 146 + </div> 147 + 148 + <section id="features" class="section wrap" aria-labelledby="features-heading"> 149 + <header class="section__head"> 150 + <p class="eyebrow">Product</p> 151 + <h2 id="features-heading" class="heading-xl">What happens on your tab</h2> 152 + </header> 153 + <ul class="value-list"> 154 + <li> 155 + <strong>One-click summaries</strong> 156 + <span>Pull the lede from long articles, docs, and threads without leaving the page.</span> 157 + </li> 158 + <li> 159 + <strong>Follow-up questions</strong> 160 + <span>Ask about the page or the summary; answers trace what you were reading.</span> 161 + </li> 162 + <li> 163 + <strong>OpenAI-compatible + Ollama</strong> 164 + <span>Ollama, OpenAI, Groq, LM Studio—bring the endpoint you trust.</span> 165 + </li> 166 + <li> 167 + <strong>Your model, your URL</strong> 168 + <span>Pick the model and base URL in settings instead of a locked-in vendor.</span> 169 + </li> 170 + <li> 171 + <strong>Quick access</strong> 172 + <span>Toolbar icon, context menu, or the keyboard shortcut—whichever fits your flow.</span> 173 + </li> 174 + </ul> 175 + </section> 176 + 177 + <section class="section section--tight-top wrap" aria-labelledby="how-heading"> 178 + <header class="section__head"> 179 + <p class="eyebrow">In the popup</p> 180 + <h2 id="how-heading" class="heading-xl">Three beats</h2> 181 + </header> 182 + <ol class="steps"> 183 + <li> 184 + <h3 class="heading-md">Open the page</h3> 185 + <p>Whatever you need to understand—article, ticket, README.</p> 186 + </li> 187 + <li> 188 + <h3 class="heading-md">Open Lede</h3> 189 + <p>Toolbar icon or shortcut.</p> 190 + </li> 191 + <li> 192 + <h3 class="heading-md">Summarize or ask</h3> 193 + <p>Summarize for the lede, or type a question about this tab and press Enter.</p> 194 + </li> 195 + </ol> 196 + </section> 197 + 198 + <section 199 + id="privacy" 200 + class="section section--dark" 201 + aria-labelledby="privacy-heading" 202 + > 203 + <div class="wrap"> 204 + <header class="section__head"> 205 + <p class="eyebrow">Privacy &amp; APIs</p> 206 + <h2 id="privacy-heading" class="heading-xl">Where the words go</h2> 207 + </header> 208 + <div class="split"> 209 + <div class="prose"> 210 + <h3 class="heading-md">Ollama native</h3> 211 + <p> 212 + Uses <code class="kbd">/api/generate</code>. When the model runs locally, content stays on your 213 + machine. Base URL should <strong>not</strong> include <span class="kbd">/v1</span>. 214 + </p> 215 + </div> 216 + <div class="prose"> 217 + <h3 class="heading-md">OpenAI-compatible</h3> 218 + <p> 219 + Uses <code class="kbd">/v1/chat/completions</code> for cloud or self-hosted endpoints you configure. 220 + Page text is sent only when you summarize or chat—not from a script that runs on every site. 221 + </p> 222 + </div> 223 + </div> 224 + <p class="prose" style="margin-top: var(--space-lg)"> 225 + Extraction is <strong>on-demand</strong> when you ask—nothing leaves the tab until you trigger it. 226 + </p> 227 + </div> 228 + </section> 229 + 230 + <section id="faq" class="section wrap" aria-labelledby="faq-heading"> 231 + <header class="section__head"> 232 + <p class="eyebrow">FAQ</p> 233 + <h2 id="faq-heading" class="heading-xl">If something blocks you</h2> 234 + </header> 235 + <div class="faq"> 236 + <div class="faq-item"> 237 + <h3 class="heading-md">Cannot connect to localhost:11434</h3> 238 + <p> 239 + Run <span class="kbd">ollama serve</span>, check <span class="kbd">ollama list</span>, and keep Native 240 + mode on <span class="kbd">http://localhost:11434</span> without <span class="kbd">/v1</span>. 241 + </p> 242 + </div> 243 + <div class="faq-item"> 244 + <h3 class="heading-md">HTTP 403 or 405</h3> 245 + <p> 246 + Wrong API mode for the URL: Native → no <span class="kbd">/v1</span>. OpenAI-compatible → include 247 + <span class="kbd">/v1</span> (for example <span class="kbd">http://localhost:11434/v1</span> for Ollama 248 + compatibility mode). 249 + </p> 250 + </div> 251 + </div> 252 + </section> 253 + </main> 254 + 255 + <footer class="site-footer"> 256 + <div class="wrap footer-inner"> 257 + <span class="font-display" style="font-weight: 700; color: var(--color-ink)">Lede</span> 258 + <div style="display: flex; flex-wrap: wrap; gap: var(--space-sm) var(--space-lg)"> 259 + <a href={tangled} target="_blank" rel="noopener noreferrer">Repo on Tangled</a> 260 + <a href="#install">Install</a> 261 + <a href="#privacy">Privacy</a> 262 + <a href="#faq">FAQ</a> 263 + </div> 264 + </div> 265 + </footer> 266 + </div> 267 + </BaseLayout>
+855
src/styles/global.css
··· 1 + /* 2 + Lede landing — tokens derived from brand-guidelines.md (OKLCH + color-mix). 3 + Neutrals tinted toward brand orange hue (~38–75 in OKLCH hue for warm paper). 4 + */ 5 + 6 + :root { 7 + /* Hue anchor (orange family) for subtle neutral tint */ 8 + --hue-brand: 48; 9 + --hue-ink: 55; 10 + 11 + --color-canvas: oklch(96.2% 0.012 var(--hue-brand)); 12 + --color-subtle: oklch(93.5% 0.014 var(--hue-brand)); 13 + --color-border: oklch(88% 0.018 var(--hue-brand)); 14 + --color-border-hover: oklch(80% 0.02 var(--hue-brand)); 15 + --color-ink: oklch(12.8% 0.012 var(--hue-ink)); 16 + --color-ink-secondary: oklch(22% 0.012 var(--hue-ink)); 17 + --color-ink-muted: oklch(72% 0.02 var(--hue-ink)); 18 + --color-surface: oklch(99.4% 0.004 var(--hue-brand)); 19 + 20 + --color-brand: oklch(63.5% 0.196 38); 21 + --color-brand-hover: oklch(57% 0.18 38); 22 + --color-brand-active: oklch(50% 0.165 38); 23 + --color-on-brand: oklch(99% 0.01 95); 24 + 25 + --color-link: oklch(38% 0.02 var(--hue-ink)); 26 + --color-link-hover: var(--color-brand); 27 + 28 + /* Dark band (privacy) */ 29 + --color-dark-canvas: oklch(12.8% 0.012 var(--hue-ink)); 30 + --color-dark-subtle: oklch(16.5% 0.012 var(--hue-ink)); 31 + --color-dark-border: oklch(21% 0.012 var(--hue-ink)); 32 + --color-dark-ink: oklch(94% 0.012 75); 33 + --color-dark-ink-secondary: oklch(86% 0.018 75); 34 + 35 + /* Typography */ 36 + --font-display: "Sora", system-ui, sans-serif; 37 + --font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; 38 + --font-mono: ui-monospace, "SF Mono", "Cascadia Code", monospace; 39 + 40 + /* Fluid display scale (≥1.25 ratio between steps) */ 41 + --text-hero: clamp(2.25rem, 4vw + 1.5rem, 3.75rem); 42 + --text-xl: clamp(1.75rem, 2.2vw + 1.1rem, 2.4rem); 43 + --text-lg: clamp(1.35rem, 1.2vw + 1rem, 1.75rem); 44 + --text-md: clamp(1.0625rem, 0.5vw + 0.95rem, 1.25rem); 45 + --text-sm: 0.875rem; 46 + --text-xs: 0.6875rem; 47 + 48 + --leading-tight: 1.25; 49 + --leading-ui: 1.35; 50 + --leading-prose: 1.65; 51 + --leading-prose-dark: 1.72; 52 + 53 + --tracking-display: -0.02em; 54 + --tracking-label: 0.08em; 55 + 56 + /* 4pt-based semantic spacing */ 57 + --space-3xs: 0.25rem; 58 + --space-2xs: 0.5rem; 59 + --space-xs: 0.75rem; 60 + --space-sm: 1rem; 61 + --space-md: 1.5rem; 62 + --space-lg: 2rem; 63 + --space-xl: 3rem; 64 + --space-2xl: 4rem; 65 + --space-3xl: 6rem; 66 + 67 + --radius-sm: 6px; 68 + --radius-md: 8px; 69 + --radius-pill: 14px; 70 + 71 + --ease-out: cubic-bezier(0.22, 1, 0.36, 1); 72 + --duration-enter: 0.52s; 73 + --content-max: 70ch; 74 + --page-gutter: clamp(1rem, 4vw, 2.5rem); 75 + 76 + --focus-ring: 2px solid var(--color-brand); 77 + --focus-offset: 2px; 78 + } 79 + 80 + *, 81 + *::before, 82 + *::after { 83 + box-sizing: border-box; 84 + } 85 + 86 + html { 87 + scroll-behavior: smooth; 88 + } 89 + 90 + @media (prefers-reduced-motion: reduce) { 91 + html { 92 + scroll-behavior: auto; 93 + } 94 + } 95 + 96 + body { 97 + margin: 0; 98 + font-family: var(--font-body); 99 + font-size: 1rem; 100 + line-height: var(--leading-prose); 101 + color: var(--color-ink); 102 + background-color: var(--color-canvas); 103 + text-rendering: optimizeLegibility; 104 + } 105 + 106 + img { 107 + max-width: 100%; 108 + height: auto; 109 + display: block; 110 + } 111 + 112 + a { 113 + color: var(--color-link); 114 + text-decoration-thickness: 1px; 115 + text-underline-offset: 0.18em; 116 + transition: color 0.14s var(--ease-out); 117 + } 118 + 119 + a:hover { 120 + color: var(--color-link-hover); 121 + } 122 + 123 + a:focus-visible { 124 + outline: var(--focus-ring); 125 + outline-offset: var(--focus-offset); 126 + border-radius: 2px; 127 + } 128 + 129 + .skip-link { 130 + position: absolute; 131 + left: -9999px; 132 + top: 0.5rem; 133 + z-index: 100; 134 + padding: var(--space-xs) var(--space-sm); 135 + background: var(--color-surface); 136 + color: var(--color-ink); 137 + font-family: var(--font-display); 138 + font-weight: 600; 139 + border-radius: var(--radius-md); 140 + border: 1px solid var(--color-border); 141 + } 142 + 143 + .skip-link:focus { 144 + left: var(--page-gutter); 145 + } 146 + 147 + /* ——— Layout shell ——— */ 148 + .page { 149 + min-height: 100vh; 150 + display: flex; 151 + flex-direction: column; 152 + } 153 + 154 + .page-main { 155 + flex: 1; 156 + } 157 + 158 + .wrap { 159 + width: min(1120px, 100% - 2 * var(--page-gutter)); 160 + margin-inline: auto; 161 + } 162 + 163 + .prose { 164 + max-width: var(--content-max); 165 + color: var(--color-ink-secondary); 166 + } 167 + 168 + .prose p { 169 + margin: 0 0 var(--space-md); 170 + } 171 + 172 + .prose p:last-child { 173 + margin-bottom: 0; 174 + } 175 + 176 + /* ——— Type ——— */ 177 + .font-display { 178 + font-family: var(--font-display); 179 + } 180 + 181 + .eyebrow { 182 + font-family: var(--font-display); 183 + font-size: var(--text-xs); 184 + font-weight: 600; 185 + letter-spacing: var(--tracking-label); 186 + text-transform: uppercase; 187 + color: var(--color-ink-muted); 188 + } 189 + 190 + .display-hero { 191 + font-family: var(--font-display); 192 + font-size: var(--text-hero); 193 + font-weight: 700; 194 + line-height: var(--leading-tight); 195 + letter-spacing: var(--tracking-display); 196 + color: var(--color-ink); 197 + margin: 0 0 var(--space-sm); 198 + } 199 + 200 + .heading-xl { 201 + font-family: var(--font-display); 202 + font-size: var(--text-xl); 203 + font-weight: 700; 204 + line-height: var(--leading-tight); 205 + letter-spacing: var(--tracking-display); 206 + color: var(--color-ink); 207 + margin: 0 0 var(--space-sm); 208 + } 209 + 210 + .heading-lg { 211 + font-family: var(--font-display); 212 + font-size: var(--text-lg); 213 + font-weight: 600; 214 + line-height: var(--leading-tight); 215 + color: var(--color-ink); 216 + margin: 0 0 var(--space-xs); 217 + } 218 + 219 + .heading-md { 220 + font-family: var(--font-display); 221 + font-size: var(--text-md); 222 + font-weight: 600; 223 + line-height: var(--leading-ui); 224 + color: var(--color-ink); 225 + margin: 0 0 var(--space-2xs); 226 + } 227 + 228 + .lede { 229 + font-size: var(--text-md); 230 + line-height: var(--leading-ui); 231 + color: var(--color-ink-secondary); 232 + max-width: 36em; 233 + margin: 0; 234 + } 235 + 236 + .kbd { 237 + font-family: var(--font-mono); 238 + font-size: 0.85em; 239 + padding: 0.12em 0.45em; 240 + border-radius: var(--radius-sm); 241 + border: 1px solid var(--color-border); 242 + background: color-mix(in oklch, var(--color-subtle) 88%, transparent); 243 + color: var(--color-ink); 244 + } 245 + 246 + /* ——— Header ——— */ 247 + .site-header { 248 + position: sticky; 249 + top: 0; 250 + z-index: 50; 251 + background: color-mix(in oklch, var(--color-canvas) 92%, transparent); 252 + backdrop-filter: blur(10px); 253 + border-bottom: 1px solid var(--color-border); 254 + } 255 + 256 + .site-header__inner { 257 + display: flex; 258 + align-items: center; 259 + justify-content: space-between; 260 + gap: var(--space-md); 261 + padding-block: var(--space-sm); 262 + } 263 + 264 + .site-header__actions { 265 + display: flex; 266 + flex-wrap: wrap; 267 + align-items: center; 268 + justify-content: flex-end; 269 + gap: var(--space-sm) var(--space-md); 270 + } 271 + 272 + .btn--sm { 273 + padding: 0.45rem 0.9rem; 274 + font-size: 0.8125rem; 275 + } 276 + 277 + .nav-install { 278 + flex-shrink: 0; 279 + } 280 + 281 + .brand-lockup { 282 + display: inline-flex; 283 + align-items: center; 284 + gap: var(--space-xs); 285 + text-decoration: none; 286 + color: inherit; 287 + font-family: var(--font-display); 288 + font-weight: 700; 289 + font-size: 1.125rem; 290 + letter-spacing: var(--tracking-display); 291 + } 292 + 293 + .brand-lockup:hover { 294 + color: var(--color-ink); 295 + } 296 + 297 + .brand-lockup:focus-visible { 298 + outline: var(--focus-ring); 299 + outline-offset: var(--focus-offset); 300 + border-radius: var(--radius-sm); 301 + } 302 + 303 + .brand-lockup__mark { 304 + width: 1.35rem; 305 + height: auto; 306 + color: var(--color-brand); 307 + } 308 + 309 + .nav { 310 + display: flex; 311 + flex-wrap: wrap; 312 + gap: var(--space-sm) var(--space-md); 313 + list-style: none; 314 + margin: 0; 315 + padding: 0; 316 + } 317 + 318 + .nav a { 319 + font-family: var(--font-display); 320 + font-weight: 600; 321 + font-size: 0.8125rem; 322 + text-decoration: none; 323 + color: var(--color-ink-secondary); 324 + } 325 + 326 + .nav a:hover { 327 + color: var(--color-brand); 328 + } 329 + 330 + /* ——— Start here (install-first) ——— */ 331 + .install-section__quick { 332 + margin-bottom: var(--space-xl); 333 + padding-block: var(--space-lg); 334 + padding-inline: var(--space-lg); 335 + background: color-mix(in oklch, var(--color-subtle) 50%, var(--color-canvas)); 336 + border: 1px solid var(--color-border); 337 + border-radius: var(--radius-md); 338 + } 339 + 340 + .quickstart-path { 341 + list-style: none; 342 + margin: 0; 343 + padding: 0; 344 + display: grid; 345 + gap: var(--space-md); 346 + } 347 + 348 + @media (min-width: 720px) { 349 + .quickstart-path { 350 + grid-template-columns: repeat(3, 1fr); 351 + gap: var(--space-lg); 352 + } 353 + } 354 + 355 + .quickstart-path li { 356 + display: flex; 357 + flex-direction: column; 358 + gap: var(--space-2xs); 359 + } 360 + 361 + .quickstart-path .step-num { 362 + font-family: var(--font-display); 363 + font-weight: 700; 364 + font-size: var(--text-md); 365 + color: var(--color-brand); 366 + margin-right: 0.25em; 367 + } 368 + 369 + .quickstart-path strong { 370 + font-family: var(--font-display); 371 + font-weight: 600; 372 + font-size: var(--text-sm); 373 + color: var(--color-ink); 374 + display: block; 375 + margin-bottom: var(--space-3xs); 376 + } 377 + 378 + .quickstart-path p { 379 + margin: 0; 380 + font-size: var(--text-sm); 381 + color: var(--color-ink-secondary); 382 + line-height: var(--leading-prose); 383 + max-width: 36ch; 384 + } 385 + 386 + /* Repo + install callouts — full border only (no side-stripe accent) */ 387 + .repo-callout { 388 + margin-bottom: var(--space-lg); 389 + padding: var(--space-md) var(--space-lg); 390 + background: var(--color-surface); 391 + border: 1px solid var(--color-border); 392 + border-radius: var(--radius-md); 393 + font-size: var(--text-sm); 394 + line-height: var(--leading-prose); 395 + color: var(--color-ink-secondary); 396 + max-width: 72ch; 397 + } 398 + 399 + .repo-callout strong { 400 + color: var(--color-ink); 401 + } 402 + 403 + .firefox-note { 404 + margin-top: var(--space-md); 405 + font-size: var(--text-sm); 406 + color: var(--color-ink-secondary); 407 + max-width: 65ch; 408 + } 409 + 410 + .disclosure { 411 + margin-top: var(--space-lg); 412 + border: 1px solid var(--color-border); 413 + border-radius: var(--radius-md); 414 + background: var(--color-canvas); 415 + overflow: hidden; 416 + } 417 + 418 + .disclosure summary { 419 + cursor: pointer; 420 + list-style: none; 421 + padding: var(--space-md) var(--space-lg); 422 + font-family: var(--font-display); 423 + font-weight: 600; 424 + font-size: var(--text-sm); 425 + color: var(--color-ink); 426 + display: flex; 427 + align-items: center; 428 + justify-content: space-between; 429 + gap: var(--space-sm); 430 + } 431 + 432 + .disclosure summary::-webkit-details-marker { 433 + display: none; 434 + } 435 + 436 + .disclosure summary::after { 437 + content: "+"; 438 + flex-shrink: 0; 439 + font-weight: 700; 440 + color: var(--color-brand); 441 + font-size: 1.1rem; 442 + line-height: 1; 443 + } 444 + 445 + .disclosure[open] summary::after { 446 + content: "–"; 447 + } 448 + 449 + .disclosure__body { 450 + padding: 0 var(--space-lg) var(--space-md); 451 + font-size: var(--text-sm); 452 + color: var(--color-ink-secondary); 453 + line-height: var(--leading-prose); 454 + border-top: 1px solid var(--color-border); 455 + } 456 + 457 + .disclosure__body p { 458 + margin: var(--space-sm) 0 0; 459 + } 460 + 461 + .disclosure__body p:first-child { 462 + margin-top: var(--space-sm); 463 + } 464 + 465 + /* ——— Hero ——— */ 466 + .hero { 467 + padding-block: var(--space-3xl) var(--space-2xl); 468 + } 469 + 470 + .hero__grid { 471 + display: grid; 472 + gap: var(--space-xl); 473 + align-items: start; 474 + } 475 + 476 + @media (min-width: 880px) { 477 + .hero__grid { 478 + grid-template-columns: minmax(0, 1.15fr) minmax(220px, 0.55fr); 479 + gap: var(--space-2xl); 480 + } 481 + } 482 + 483 + .hero__aside { 484 + display: flex; 485 + flex-direction: column; 486 + gap: var(--space-md); 487 + padding: var(--space-lg); 488 + background: var(--color-surface); 489 + border: 1px solid var(--color-border); 490 + border-radius: var(--radius-md); 491 + box-shadow: 0 1px 0 color-mix(in oklch, var(--color-ink) 4%, transparent); 492 + } 493 + 494 + @media (min-width: 880px) { 495 + .hero__aside { 496 + margin-top: var(--space-2xl); 497 + transform: translateX(4%); 498 + } 499 + } 500 + 501 + .beta-tag { 502 + font-family: var(--font-display); 503 + font-weight: 700; 504 + font-size: 0.75rem; 505 + letter-spacing: var(--tracking-label); 506 + text-transform: uppercase; 507 + color: var(--color-brand); 508 + } 509 + 510 + .beta-note { 511 + font-size: var(--text-sm); 512 + line-height: var(--leading-ui); 513 + color: var(--color-ink-secondary); 514 + margin: 0; 515 + } 516 + 517 + /* ——— Buttons ——— */ 518 + .actions { 519 + display: flex; 520 + flex-wrap: wrap; 521 + gap: var(--space-sm); 522 + margin-top: var(--space-lg); 523 + } 524 + 525 + .btn { 526 + display: inline-flex; 527 + align-items: center; 528 + justify-content: center; 529 + gap: var(--space-2xs); 530 + font-family: var(--font-display); 531 + font-weight: 600; 532 + font-size: 0.9375rem; 533 + line-height: 1.2; 534 + padding: 0.65rem 1.15rem; 535 + border-radius: var(--radius-md); 536 + border: 1px solid transparent; 537 + cursor: pointer; 538 + text-decoration: none; 539 + transition: 540 + background-color 0.14s var(--ease-out), 541 + color 0.14s var(--ease-out), 542 + border-color 0.14s var(--ease-out), 543 + transform 0.14s var(--ease-out); 544 + } 545 + 546 + .btn:focus-visible { 547 + outline: var(--focus-ring); 548 + outline-offset: var(--focus-offset); 549 + } 550 + 551 + .btn--primary { 552 + color: var(--color-brand); 553 + background: transparent; 554 + border-color: var(--color-brand); 555 + } 556 + 557 + .btn--primary:hover { 558 + background: var(--color-brand); 559 + color: var(--color-on-brand); 560 + border-color: var(--color-brand); 561 + transform: translateY(-1px); 562 + } 563 + 564 + .btn--primary:active { 565 + background: var(--color-brand-active); 566 + border-color: var(--color-brand-active); 567 + color: var(--color-on-brand); 568 + transform: translateY(0); 569 + } 570 + 571 + .btn--secondary { 572 + color: var(--color-ink-secondary); 573 + background: transparent; 574 + border-color: var(--color-border); 575 + } 576 + 577 + .btn--secondary:hover { 578 + background: var(--color-subtle); 579 + border-color: var(--color-border-hover); 580 + transform: translateY(-1px); 581 + } 582 + 583 + /* ——— Sections ——— */ 584 + .section { 585 + padding-block: var(--space-2xl); 586 + } 587 + 588 + .section--tight-top { 589 + padding-top: var(--space-md); 590 + } 591 + 592 + .section__head { 593 + margin-bottom: var(--space-lg); 594 + } 595 + 596 + /* Asymmetric pull — full-width rules, no side-stripe accent */ 597 + .pull-quote { 598 + margin: var(--space-2xl) 0; 599 + padding: var(--space-lg) 0; 600 + border-top: 1px solid color-mix(in oklch, var(--color-brand) 45%, var(--color-border)); 601 + border-bottom: 1px solid color-mix(in oklch, var(--color-brand) 45%, var(--color-border)); 602 + font-family: var(--font-display); 603 + font-size: var(--text-lg); 604 + font-weight: 600; 605 + line-height: var(--leading-tight); 606 + color: var(--color-ink); 607 + max-width: min(22em, 100%); 608 + } 609 + 610 + @media (min-width: 720px) { 611 + .pull-quote { 612 + margin-inline-start: 8%; 613 + } 614 + } 615 + 616 + /* Value: typographic list, not icon cards */ 617 + .value-list { 618 + list-style: none; 619 + margin: 0; 620 + padding: 0; 621 + display: flex; 622 + flex-direction: column; 623 + gap: var(--space-lg); 624 + } 625 + 626 + .value-list li { 627 + display: grid; 628 + gap: var(--space-2xs); 629 + padding-bottom: var(--space-lg); 630 + border-bottom: 1px solid var(--color-border); 631 + } 632 + 633 + .value-list li:last-child { 634 + border-bottom: none; 635 + padding-bottom: 0; 636 + } 637 + 638 + .value-list strong { 639 + font-family: var(--font-display); 640 + font-weight: 700; 641 + font-size: var(--text-md); 642 + color: var(--color-ink); 643 + } 644 + 645 + .value-list span { 646 + color: var(--color-ink-secondary); 647 + font-size: var(--text-sm); 648 + line-height: var(--leading-prose); 649 + max-width: var(--content-max); 650 + } 651 + 652 + /* How it works: numbered */ 653 + .steps { 654 + counter-reset: step; 655 + list-style: none; 656 + margin: 0; 657 + padding: 0; 658 + display: grid; 659 + gap: var(--space-md); 660 + } 661 + 662 + @media (min-width: 720px) { 663 + .steps { 664 + grid-template-columns: repeat(3, 1fr); 665 + gap: var(--space-lg); 666 + } 667 + } 668 + 669 + .steps li { 670 + position: relative; 671 + padding: var(--space-lg); 672 + background: var(--color-surface); 673 + border: 1px solid var(--color-border); 674 + border-radius: var(--radius-md); 675 + } 676 + 677 + .steps li::before { 678 + counter-increment: step; 679 + content: counter(step); 680 + font-family: var(--font-display); 681 + font-weight: 700; 682 + font-size: var(--text-lg); 683 + color: var(--color-brand); 684 + display: block; 685 + margin-bottom: var(--space-xs); 686 + } 687 + 688 + .steps p { 689 + margin: 0; 690 + font-size: var(--text-sm); 691 + color: var(--color-ink-secondary); 692 + line-height: var(--leading-prose); 693 + } 694 + 695 + /* Privacy dark band */ 696 + .section--dark { 697 + background: var(--color-dark-canvas); 698 + color: var(--color-dark-ink); 699 + padding-block: var(--space-3xl); 700 + border-block: 1px solid var(--color-dark-border); 701 + } 702 + 703 + .section--dark .eyebrow { 704 + color: oklch(72% 0.04 60); 705 + } 706 + 707 + .section--dark .heading-xl { 708 + color: var(--color-dark-ink); 709 + } 710 + 711 + .section--dark .prose { 712 + color: var(--color-dark-ink-secondary); 713 + line-height: var(--leading-prose-dark); 714 + } 715 + 716 + .section--dark a { 717 + color: color-mix(in oklch, var(--color-dark-ink) 88%, var(--color-brand)); 718 + } 719 + 720 + .section--dark a:hover { 721 + color: color-mix(in oklch, var(--color-dark-ink) 70%, var(--color-brand)); 722 + } 723 + 724 + .split { 725 + display: grid; 726 + gap: var(--space-xl); 727 + } 728 + 729 + @media (min-width: 800px) { 730 + .split { 731 + grid-template-columns: 1fr 1fr; 732 + gap: var(--space-2xl); 733 + } 734 + } 735 + 736 + .split h3 { 737 + margin-top: 0; 738 + } 739 + 740 + /* Install callout — container query */ 741 + .install-wrap { 742 + container-type: inline-size; 743 + container-name: install; 744 + } 745 + 746 + .install-panel { 747 + margin-top: var(--space-xl); 748 + padding: var(--space-xl); 749 + background: var(--color-surface); 750 + border: 1px solid var(--color-border); 751 + border-radius: var(--radius-md); 752 + display: grid; 753 + gap: var(--space-lg); 754 + } 755 + 756 + @container install (min-width: 560px) { 757 + .install-panel { 758 + grid-template-columns: 1fr 1fr; 759 + align-items: start; 760 + } 761 + } 762 + 763 + .install-panel h3 { 764 + margin: 0 0 var(--space-xs); 765 + } 766 + 767 + .install-panel ol { 768 + margin: 0; 769 + padding-left: 1.1em; 770 + color: var(--color-ink-secondary); 771 + font-size: var(--text-sm); 772 + line-height: var(--leading-prose); 773 + display: flex; 774 + flex-direction: column; 775 + gap: var(--space-sm); 776 + } 777 + 778 + .repo-note { 779 + font-size: var(--text-sm); 780 + color: var(--color-ink-secondary); 781 + margin: 0; 782 + max-width: 65ch; 783 + } 784 + 785 + /* FAQ: definition-style, no side stripes */ 786 + .faq { 787 + display: flex; 788 + flex-direction: column; 789 + gap: var(--space-lg); 790 + } 791 + 792 + .faq-item { 793 + padding-bottom: var(--space-lg); 794 + border-bottom: 1px solid var(--color-border); 795 + } 796 + 797 + .faq-item:last-child { 798 + border-bottom: none; 799 + padding-bottom: 0; 800 + } 801 + 802 + .faq-item h3 { 803 + margin: 0 0 var(--space-xs); 804 + } 805 + 806 + .faq-item p { 807 + margin: 0; 808 + font-size: var(--text-sm); 809 + color: var(--color-ink-secondary); 810 + line-height: var(--leading-prose); 811 + } 812 + 813 + /* Footer */ 814 + .site-footer { 815 + padding-block: var(--space-xl); 816 + border-top: 1px solid var(--color-border); 817 + margin-top: var(--space-2xl); 818 + } 819 + 820 + .footer-inner { 821 + display: flex; 822 + flex-wrap: wrap; 823 + align-items: baseline; 824 + justify-content: space-between; 825 + gap: var(--space-md); 826 + font-size: var(--text-sm); 827 + color: var(--color-ink-secondary); 828 + } 829 + 830 + /* ——— Motion: staggered reveal (transform + opacity only) ——— */ 831 + .reveal-group { 832 + --stagger: 0.07s; 833 + } 834 + 835 + .reveal-item { 836 + opacity: 0; 837 + transform: translateY(12px); 838 + animation: reveal-in var(--duration-enter) var(--ease-out) forwards; 839 + animation-delay: calc(var(--i, 0) * var(--stagger)); 840 + } 841 + 842 + @keyframes reveal-in { 843 + to { 844 + opacity: 1; 845 + transform: translateY(0); 846 + } 847 + } 848 + 849 + @media (prefers-reduced-motion: reduce) { 850 + .reveal-item { 851 + animation: none !important; 852 + opacity: 1 !important; 853 + transform: none !important; 854 + } 855 + }
+11
tsconfig.json
··· 1 + { 2 + "extends": "astro/tsconfigs/strict", 3 + "compilerOptions": { 4 + "baseUrl": ".", 5 + "paths": { 6 + "@/*": ["src/*"] 7 + } 8 + }, 9 + "include": [".astro/types.d.ts", "**/*"], 10 + "exclude": ["dist"] 11 + }