diff options
| author | Leitwolf11 | 2026-09-09 20:28:28 +0300 |
|---|---|---|
| committer | Leitwolf11 | 2026-09-09 20:28:28 +0300 |
| commit | a802df2b6ac62324c41f7f687d976ade25ee26a2 (patch) | |
| tree | bbc7f65e5b2464f3b430b0a7e025955e41304a0c /frontend | |
| parent | f081b5aa4e9b9594d64cd3dfaac2d6d7cc481abc (diff) | |
| download | website-a802df2b6ac62324c41f7f687d976ade25ee26a2.tar.gz | |
Remove the retired Astro ViGet catalog duplicate and its static assets, simplify the Visual X# site layout back to language-only ownership, retire the obsolete viget.progmasoft.com Nginx origin blocks, and document the new Progmaweb catalog boundary.
Diffstat (limited to 'frontend')
| -rw-r--r-- | frontend/public/progmasoft-mark.svg | 6 | ||||
| -rw-r--r-- | frontend/public/viget-robots.txt | 7 | ||||
| -rw-r--r-- | frontend/public/viget-sitemap.xml | 15 | ||||
| -rw-r--r-- | frontend/src/components/RepositoryFooter.astro | 37 | ||||
| -rw-r--r-- | frontend/src/components/RepositoryHeader.astro | 40 | ||||
| -rw-r--r-- | frontend/src/layouts/SiteLayout.astro | 10 | ||||
| -rw-r--r-- | frontend/src/pages/repo/dslplugins/index.astro | 51 | ||||
| -rw-r--r-- | frontend/src/pages/repo/index.astro | 94 | ||||
| -rw-r--r-- | frontend/src/styles/registry.css | 704 |
9 files changed, 4 insertions, 960 deletions
diff --git a/frontend/public/progmasoft-mark.svg b/frontend/public/progmasoft-mark.svg deleted file mode 100644 index 979d8fe..0000000 --- a/frontend/public/progmasoft-mark.svg +++ /dev/null @@ -1,6 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 26" role="img" aria-label="Progmasoft"> - <rect width="12" height="12" x="0" y="0" fill="#3b4658"/> - <rect width="12" height="12" x="14" y="0" fill="#1e7188"/> - <rect width="12" height="12" x="0" y="14" fill="#7655fa"/> - <rect width="12" height="12" x="14" y="14" fill="#dc7644"/> -</svg> diff --git a/frontend/public/viget-robots.txt b/frontend/public/viget-robots.txt deleted file mode 100644 index 4e271f4..0000000 --- a/frontend/public/viget-robots.txt +++ /dev/null @@ -1,7 +0,0 @@ -# SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -# SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 - -User-agent: * -Allow: / - -Sitemap: https://viget.progmasoft.com/sitemap.xml diff --git a/frontend/public/viget-sitemap.xml b/frontend/public/viget-sitemap.xml deleted file mode 100644 index 03d47e0..0000000 --- a/frontend/public/viget-sitemap.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --> -<!-- SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 --> -<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> - <url> - <loc>https://viget.progmasoft.com/</loc> - <changefreq>daily</changefreq> - <priority>1.0</priority> - </url> - <url> - <loc>https://viget.progmasoft.com/dslplugins/</loc> - <changefreq>daily</changefreq> - <priority>0.8</priority> - </url> -</urlset> diff --git a/frontend/src/components/RepositoryFooter.astro b/frontend/src/components/RepositoryFooter.astro deleted file mode 100644 index cdb2c1f..0000000 --- a/frontend/src/components/RepositoryFooter.astro +++ /dev/null @@ -1,37 +0,0 @@ ---- -// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 ---- - -<footer class="registry-footer"> - <div class="registry-shell registry-footer-grid"> - <div class="registry-footer-brand"> - <a class="registry-brand" href="https://www.progmasoft.com/" aria-label="Progmasoft home"> - <span class="progmasoft-mark" aria-hidden="true"> - <span class="progmasoft-tile tile-slate"></span> - <span class="progmasoft-tile tile-teal"></span> - <span class="progmasoft-tile tile-violet"></span> - <span class="progmasoft-tile tile-orange"></span> - </span> - <strong>Progmasoft</strong> - </a> - <p>ViGet is the package and Kotlin DSL plugin registry for the Visual X# ecosystem.</p> - </div> - <div class="registry-footer-links"> - <strong>Registry</strong> - <a href="https://viget.progmasoft.com/">Packages</a> - <a href="https://viget.progmasoft.com/dslplugins/">DSL plugins</a> - <a href="https://xsharp-lang.xyz/">Visual X#</a> - </div> - <div class="registry-footer-links"> - <strong>Progmasoft</strong> - <a href="https://account.progmasoft.com/">Account</a> - <a href="mailto:support@progmasoft.com">Support</a> - <a href="https://github.com/Progmasoft/website">Source</a> - </div> - </div> - <div class="registry-shell registry-footer-bottom"> - <span>© 2026 Progmasoft</span> - <span>ViGet Package Registry by Progmasoft</span> - </div> -</footer> diff --git a/frontend/src/components/RepositoryHeader.astro b/frontend/src/components/RepositoryHeader.astro deleted file mode 100644 index 9755869..0000000 --- a/frontend/src/components/RepositoryHeader.astro +++ /dev/null @@ -1,40 +0,0 @@ ---- -// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 - -interface Props { - authenticated?: boolean; -} - -const { authenticated = false } = Astro.props; ---- - -<header class="registry-header"> - <div class="registry-shell registry-header-inner"> - <a class="registry-brand" href="https://www.progmasoft.com/" aria-label="Progmasoft home"> - <span class="progmasoft-mark" aria-hidden="true"> - <span class="progmasoft-tile tile-slate"></span> - <span class="progmasoft-tile tile-teal"></span> - <span class="progmasoft-tile tile-violet"></span> - <span class="progmasoft-tile tile-orange"></span> - </span> - <strong>Progmasoft</strong> - <span class="registry-product">ViGet</span> - </a> - <nav class="repository-navigation" aria-label="Registry navigation"> - <a href="https://viget.progmasoft.com/">Packages</a> - <a href="https://viget.progmasoft.com/dslplugins/">DSL plugins</a> - { - authenticated ? ( - <a href="https://account.progmasoft.com/">Account</a> - ) : ( - <> - <a href="https://account.progmasoft.com/login">Log in</a> - <a class="repository-register" href="https://account.progmasoft.com/register">Register</a> - </> - ) - } - <a href="https://github.com/Progmasoft/visual-xsharp" target="_blank" rel="noreferrer">GitHub</a> - </nav> - </div> -</header> diff --git a/frontend/src/layouts/SiteLayout.astro b/frontend/src/layouts/SiteLayout.astro index 482038b..e3afbda 100644 --- a/frontend/src/layouts/SiteLayout.astro +++ b/frontend/src/layouts/SiteLayout.astro @@ -3,16 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 import "../styles/global.css"; -import "../styles/registry.css"; interface Props { title: string; description: string; canonical: string; - theme?: "visual-xsharp" | "progmasoft"; } -const { title, description, canonical, theme = "visual-xsharp" } = Astro.props; +const { title, description, canonical } = Astro.props; --- <!doctype html> @@ -22,14 +20,14 @@ const { title, description, canonical, theme = "visual-xsharp" } = Astro.props; <meta name="description" content={description} /> <meta name="robots" content="index, follow" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - <meta name="theme-color" content={theme === "progmasoft" ? "#ffffff" : "#0c111b"} /> - <link rel="icon" type={theme === "progmasoft" ? "image/svg+xml" : "image/png"} href={theme === "progmasoft" ? "/progmasoft-mark.svg" : "/xsharp-logo.png"} /> + <meta name="theme-color" content="#0c111b" /> + <link rel="icon" type="image/png" href="/xsharp-logo.png" /> <link rel="preload" href="/fonts/AlfaSlabOne-Regular.woff2" as="font" type="font/woff2" crossorigin /> <link rel="preload" href="/fonts/FiraSans-Regular.woff2" as="font" type="font/woff2" crossorigin /> <link rel="canonical" href={canonical} /> <title>{title}</title> </head> - <body class:list={{ "registry-theme": theme === "progmasoft" }}> + <body> <slot /> </body> </html> diff --git a/frontend/src/pages/repo/dslplugins/index.astro b/frontend/src/pages/repo/dslplugins/index.astro deleted file mode 100644 index f0b55a3..0000000 --- a/frontend/src/pages/repo/dslplugins/index.astro +++ /dev/null @@ -1,51 +0,0 @@ ---- -// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 - -import RepositoryFooter from "../../../components/RepositoryFooter.astro"; -import RepositoryHeader from "../../../components/RepositoryHeader.astro"; -import SiteLayout from "../../../layouts/SiteLayout.astro"; ---- - -<SiteLayout - title="DSL Plugins · ViGet Package Registry by Progmasoft" - description="The ViGet Kotlin DSL plugin catalog is online, but no plugins have been published yet." - canonical="https://viget.progmasoft.com/dslplugins/" - theme="progmasoft" -> - <section class="registry-surface"> - <RepositoryHeader /> - <main> - <section class="registry-subhero"> - <div class="registry-shell registry-subhero-grid"> - <div> - <p class="registry-eyebrow">ViGet · Kotlin DSL plugins</p> - <h1>Extend the project model.</h1> - <p>Kotlin DSL plugins are JAR artifacts for Visual.XSharp.kts. They are separate from Visual X# .vipkg packages.</p> - <div class="registry-actions"> - <a class="registry-button registry-button-secondary" href="https://viget.progmasoft.com/">Back to packages</a> - <a class="registry-text-link" href="https://github.com/Progmasoft/visual-xsharp">Follow development →</a> - </div> - </div> - <aside class="registry-availability" aria-labelledby="plugin-availability-title"> - <div class="registry-availability-heading"> - <span class="registry-status-dot" aria-hidden="true"></span> - <span>Catalog available</span> - </div> - <h2 id="plugin-availability-title">No public DSL plugins yet.</h2> - <p>The catalog is ready and intentionally contains no placeholder artifacts.</p> - <code class="registry-coordinate">/dslplugins/<Publisher>/<Name>/</code> - </aside> - </div> - </section> - <section class="registry-guidance"> - <div class="registry-shell registry-guidance-grid"> - <div><span>Format</span><strong>Kotlin JAR</strong><p>DSL plugins run as Kotlin/JVM project extensions.</p></div> - <div><span>Location</span><strong>Dedicated catalog</strong><p>Plugin coordinates always begin with /dslplugins.</p></div> - <div><span>Availability</span><strong>Publishing closed</strong><p>Publishing opens only after the signed plugin contract is complete.</p></div> - </div> - </section> - </main> - <RepositoryFooter /> - </section> -</SiteLayout> diff --git a/frontend/src/pages/repo/index.astro b/frontend/src/pages/repo/index.astro deleted file mode 100644 index 8d691d4..0000000 --- a/frontend/src/pages/repo/index.astro +++ /dev/null @@ -1,94 +0,0 @@ ---- -// SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> -// SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 - -import RepositoryFooter from "../../components/RepositoryFooter.astro"; -import RepositoryHeader from "../../components/RepositoryHeader.astro"; -import SiteLayout from "../../layouts/SiteLayout.astro"; ---- - -<SiteLayout - title="ViGet Package Registry by Progmasoft" - description="The Visual X# package registry is online, but no packages have been published yet." - canonical="https://viget.progmasoft.com/" - theme="progmasoft" -> - <section class="registry-surface"> - <RepositoryHeader /> - <main> - <section class="registry-hero"> - <div class="registry-shell registry-hero-grid"> - <div class="registry-hero-copy"> - <p class="registry-eyebrow">ViGet package registry</p> - <h1>Packages for the<br /><span>Visual X# ecosystem.</span></h1> - <p class="registry-lede"> - ViGet is the canonical source for Visual X# packages and project DSL plugins, operated directly by - Progmasoft. - </p> - <div class="registry-actions"> - <a class="registry-button registry-button-primary" href="https://account.progmasoft.com/register">Create account</a> - <a class="registry-button registry-button-secondary" href="https://xsharp-lang.xyz/">Explore Visual X#</a> - </div> - </div> - <aside class="registry-availability" aria-labelledby="availability-title"> - <div class="registry-availability-heading"> - <span class="registry-status-dot" aria-hidden="true"></span> - <span>Registry available</span> - </div> - <h2 id="availability-title">The public catalog is empty.</h2> - <p>No package releases have been published yet. ViGet will show real packages here as they become available.</p> - <dl> - <div><dt>Package format</dt><dd>.vipkg</dd></div> - <div><dt>Publisher identity</dt><dd>Progmasoft Account</dd></div> - <div><dt>Publishing</dt><dd>Not open yet</dd></div> - </dl> - </aside> - </div> - </section> - - <section class="registry-catalogs"> - <div class="registry-shell"> - <div class="registry-section-heading"> - <div> - <p class="registry-eyebrow">Catalogs</p> - <h2>Two artifact types, one registry.</h2> - </div> - <p>Packages and project DSL plugins have separate, predictable coordinate spaces.</p> - </div> - <div class="registry-catalog-grid"> - <article class="registry-catalog-card registry-catalog-card-primary"> - <span class="registry-card-index">01</span> - <p>Visual X# packages</p> - <h3>ViPkg catalog</h3> - <code>viget.progmasoft.com/<Publisher>/<Name>/</code> - <span class="registry-card-copy">Libraries and applications authored in Visual X#, distributed as .vipkg artifacts.</span> - </article> - <a class="registry-catalog-card" href="https://viget.progmasoft.com/dslplugins/"> - <span class="registry-card-index">02</span> - <p>Project extensions</p> - <h3>Kotlin DSL plugins</h3> - <code>viget.progmasoft.com/dslplugins/<Publisher>/<Name>/</code> - <span class="registry-card-copy">Kotlin JAR plugins that extend Visual.XSharp.kts project configuration.</span> - <strong>Open catalog →</strong> - </a> - </div> - </div> - </section> - - <section class="registry-principles"> - <div class="registry-shell registry-principles-grid"> - <div> - <p class="registry-eyebrow">Registry contract</p> - <h2>Clear ownership from identity to artifact.</h2> - </div> - <ol> - <li><span>01</span><div><strong>One account name</strong><p>Your Progmasoft Account name is also your ViGet publisher name.</p></div></li> - <li><span>02</span><div><strong>Case-sensitive coordinates</strong><p>Publisher and package names retain their exact public spelling.</p></div></li> - <li><span>03</span><div><strong>No placeholder releases</strong><p>The catalog stays honestly empty until a real signed artifact is published.</p></div></li> - </ol> - </div> - </section> - </main> - <RepositoryFooter /> - </section> -</SiteLayout> diff --git a/frontend/src/styles/registry.css b/frontend/src/styles/registry.css deleted file mode 100644 index 6595061..0000000 --- a/frontend/src/styles/registry.css +++ /dev/null @@ -1,704 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> - * SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.1 - */ - -/* ViGet deliberately shares Progmasoft's restrained, light visual language. */ -.registry-theme { - --registry-blue: #0066b8; - --registry-blue-dark: #004e8c; - --registry-blue-soft: #e8f3fb; - --registry-ink: #121417; - --registry-muted: #5c6670; - --registry-line: #d9e0e6; - --registry-surface: #ffffff; - --registry-surface-soft: #f5f8fa; - background: var(--registry-surface); - color: var(--registry-ink); - color-scheme: light; - font-family: "Segoe UI Variable", "Segoe UI", system-ui, -apple-system, sans-serif; -} - -.registry-theme main { - width: 100%; - margin: 0; -} - -.registry-theme h1, -.registry-theme h2, -.registry-theme h3, -.registry-theme p { - font-family: inherit; -} - -.registry-theme a { - color: inherit; -} - -.registry-surface { - display: flex; - min-height: 100vh; - flex-direction: column; - background: var(--registry-surface); -} - -.registry-shell { - width: min(1180px, calc(100% - 48px)); - margin-inline: auto; -} - -/* Header and brand */ -.registry-theme .registry-header { - position: sticky; - z-index: 20; - top: 0; - width: 100%; - border-bottom: 1px solid var(--registry-line); - background: rgb(255 255 255 / 96%); - backdrop-filter: blur(14px); -} - -.registry-header-inner { - display: flex; - min-height: 68px; - align-items: center; - justify-content: space-between; - gap: 28px; -} - -.registry-brand { - display: inline-flex; - align-items: center; - flex: 0 0 auto; - gap: 10px; - text-decoration: none; -} - -.registry-brand strong { - color: #8e0000; - font-size: 1.1rem; - font-weight: 720; - letter-spacing: -0.02em; -} - -.progmasoft-mark { - display: grid; - width: 24px; - height: 24px; - grid-template-columns: repeat(2, 1fr); - gap: 2px; -} - -.progmasoft-tile { - display: block; -} - -.tile-slate { background: #3b4658; } -.tile-teal { background: #1e7188; } -.tile-violet { background: #7655fa; } -.tile-orange { background: #dc7644; } - -.registry-product { - margin-left: 4px; - padding-left: 14px; - border-left: 1px solid var(--registry-line); - color: #39434d; - font-size: 0.98rem; - font-weight: 650; -} - -.registry-theme .repository-navigation { - display: flex; - align-items: center; - gap: 26px; - font-size: 0.9rem; - font-weight: 600; -} - -.registry-theme .repository-navigation a { - padding: 8px 0; - color: #38434c; - text-decoration: none; -} - -.registry-theme .repository-navigation a:hover { - color: var(--registry-blue); -} - -.registry-theme .repository-navigation .repository-register { - padding: 9px 16px; - border: 1px solid var(--registry-blue); - background: var(--registry-blue); - color: #fff; -} - -.registry-theme .repository-navigation .repository-register:hover { - border-color: var(--registry-blue-dark); - background: var(--registry-blue-dark); - color: #fff; -} - -/* Shared typography and controls */ -.registry-eyebrow { - margin: 0 0 18px; - color: var(--registry-blue-dark); - font-size: 0.76rem; - font-weight: 750; - letter-spacing: 0.13em; - text-transform: uppercase; -} - -.registry-actions { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 12px; - margin-top: 34px; -} - -.registry-button { - display: inline-flex; - min-height: 44px; - align-items: center; - justify-content: center; - padding: 0 20px; - border: 1px solid transparent; - font-size: 0.92rem; - font-weight: 700; - text-decoration: none; - transition: border-color 140ms ease, background-color 140ms ease, color 140ms ease; -} - -.registry-button-primary { - background: var(--registry-blue); - color: #fff !important; -} - -.registry-button-primary:hover { - background: var(--registry-blue-dark); -} - -.registry-button-secondary { - border-color: #aebbc5; - background: #fff; - color: #26313a !important; -} - -.registry-button-secondary:hover { - border-color: var(--registry-blue); - color: var(--registry-blue-dark) !important; -} - -.registry-text-link { - color: var(--registry-blue-dark) !important; - font-size: 0.92rem; - font-weight: 700; - text-decoration: none; -} - -.registry-theme a:focus-visible { - outline: 3px solid #70b5e8; - outline-offset: 3px; -} - -/* Registry landing page */ -.registry-hero { - position: relative; - overflow: hidden; - padding: 92px 0 88px; - border-bottom: 1px solid var(--registry-line); - background: - linear-gradient(90deg, transparent 0 67%, rgb(0 102 184 / 4%) 67% 100%), - linear-gradient(180deg, #fff, #fbfdff); -} - -.registry-hero::after { - position: absolute; - top: -130px; - right: -160px; - width: 520px; - height: 520px; - border: 1px solid rgb(0 102 184 / 10%); - border-radius: 50%; - content: ""; -} - -.registry-hero-grid, -.registry-subhero-grid { - position: relative; - z-index: 1; - display: grid; - align-items: center; - grid-template-columns: minmax(0, 1.45fr) minmax(330px, 0.75fr); - gap: 76px; -} - -.registry-hero-copy h1, -.registry-subhero h1 { - max-width: 760px; - margin: 0; - color: var(--registry-ink); - font-size: clamp(3rem, 6.2vw, 5.55rem); - font-weight: 650; - letter-spacing: -0.055em; - line-height: 0.99; -} - -.registry-hero-copy h1 span { - color: var(--registry-blue); -} - -.registry-lede, -.registry-subhero-grid > div > p:not(.registry-eyebrow) { - max-width: 670px; - margin: 27px 0 0; - color: var(--registry-muted); - font-size: 1.13rem; - line-height: 1.65; -} - -.registry-availability { - position: relative; - padding: 30px; - border: 1px solid #cbd6de; - border-top: 4px solid var(--registry-blue); - background: #fff; - box-shadow: 0 18px 55px rgb(29 51 68 / 10%); -} - -.registry-availability-heading { - display: flex; - align-items: center; - gap: 9px; - color: #35505f; - font-size: 0.78rem; - font-weight: 750; - letter-spacing: 0.08em; - text-transform: uppercase; -} - -.registry-status-dot { - width: 9px; - height: 9px; - border-radius: 50%; - background: #168451; - box-shadow: 0 0 0 4px #dff3e8; -} - -.registry-availability h2 { - margin: 24px 0 12px; - color: var(--registry-ink); - font-size: 1.65rem; - font-weight: 680; - letter-spacing: -0.025em; - line-height: 1.2; -} - -.registry-availability > p { - margin: 0; - color: var(--registry-muted); - line-height: 1.58; -} - -.registry-availability dl { - display: grid; - gap: 12px; - margin: 27px 0 0; -} - -.registry-availability dl div { - display: flex; - justify-content: space-between; - gap: 18px; - padding-top: 12px; - border-top: 1px solid var(--registry-line); -} - -.registry-availability dt { - color: #66717a; - font-size: 0.82rem; -} - -.registry-availability dd { - margin: 0; - color: #1e2931; - font-size: 0.82rem; - font-weight: 700; - text-align: right; -} - -.registry-catalogs { - padding: 90px 0 100px; - background: var(--registry-surface); -} - -.registry-section-heading { - display: grid; - align-items: end; - grid-template-columns: minmax(0, 1.2fr) minmax(280px, 0.6fr); - gap: 70px; - margin-bottom: 42px; -} - -.registry-section-heading h2, -.registry-principles h2 { - max-width: 680px; - margin: 0; - color: var(--registry-ink); - font-size: clamp(2rem, 4vw, 3.35rem); - font-weight: 650; - letter-spacing: -0.045em; - line-height: 1.06; -} - -.registry-section-heading > p { - margin: 0; - color: var(--registry-muted); - line-height: 1.65; -} - -.registry-catalog-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 22px; -} - -.registry-catalog-card { - display: flex; - min-height: 340px; - flex-direction: column; - padding: 32px; - border: 1px solid var(--registry-line); - background: #fff; - color: var(--registry-ink); - text-decoration: none; - transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease; -} - -a.registry-catalog-card:hover { - border-color: #87afd0; - box-shadow: 0 16px 40px rgb(37 73 99 / 10%); - transform: translateY(-3px); -} - -.registry-catalog-card-primary { - border-color: var(--registry-blue-dark); - background: var(--registry-blue-dark); - color: #fff; -} - -.registry-card-index { - align-self: flex-end; - color: #81909a; - font-size: 0.75rem; - font-weight: 750; - letter-spacing: 0.08em; -} - -.registry-catalog-card-primary .registry-card-index, -.registry-catalog-card-primary .registry-card-copy { - color: #cfe7f8; -} - -.registry-catalog-card > p { - margin: 28px 0 6px; - color: inherit; - font-size: 0.78rem; - font-weight: 700; - letter-spacing: 0.08em; - opacity: 0.76; - text-transform: uppercase; -} - -.registry-catalog-card h3 { - margin: 0 0 24px; - color: inherit; - font-size: 2rem; - font-weight: 650; - letter-spacing: -0.035em; -} - -.registry-catalog-card code, -.registry-coordinate { - overflow-wrap: anywhere; - color: inherit; - font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace; - font-size: 0.85rem; - line-height: 1.6; -} - -.registry-card-copy { - margin-top: auto; - padding-top: 34px; - color: var(--registry-muted); - line-height: 1.55; -} - -.registry-catalog-card > strong { - margin-top: 18px; - color: var(--registry-blue-dark); - font-size: 0.88rem; -} - -.registry-principles { - padding: 92px 0; - background: var(--registry-surface-soft); -} - -.registry-principles-grid { - display: grid; - grid-template-columns: minmax(0, 0.9fr) minmax(400px, 1.1fr); - gap: 90px; -} - -.registry-principles ol { - display: grid; - gap: 0; - margin: 0; - padding: 0; - list-style: none; -} - -.registry-principles li { - display: grid; - grid-template-columns: 50px 1fr; - gap: 18px; - padding: 24px 0; - border-top: 1px solid #cdd7de; -} - -.registry-principles li > span { - color: var(--registry-blue); - font-size: 0.77rem; - font-weight: 750; -} - -.registry-principles li strong { - color: var(--registry-ink); - font-size: 1.04rem; -} - -.registry-principles li p { - margin: 7px 0 0; - color: var(--registry-muted); - line-height: 1.55; -} - -/* DSL plugin catalog */ -.registry-subhero { - padding: 86px 0 96px; - border-bottom: 1px solid var(--registry-line); - background: linear-gradient(135deg, #f6fafd 0%, #fff 58%); -} - -.registry-subhero h1 { - font-size: clamp(3rem, 5.5vw, 4.8rem); -} - -.registry-coordinate { - display: block; - margin-top: 28px; - padding: 13px 14px; - background: #eef4f8; - color: #24455c; -} - -.registry-guidance { - padding: 80px 0 96px; -} - -.registry-guidance-grid { - display: grid; - grid-template-columns: repeat(3, minmax(0, 1fr)); - border-top: 1px solid var(--registry-line); - border-bottom: 1px solid var(--registry-line); -} - -.registry-guidance-grid > div { - min-height: 220px; - padding: 30px; - border-right: 1px solid var(--registry-line); -} - -.registry-guidance-grid > div:last-child { - border-right: 0; -} - -.registry-guidance-grid span { - display: block; - margin-bottom: 28px; - color: var(--registry-blue-dark); - font-size: 0.75rem; - font-weight: 750; - letter-spacing: 0.1em; - text-transform: uppercase; -} - -.registry-guidance-grid strong { - color: var(--registry-ink); - font-size: 1.25rem; -} - -.registry-guidance-grid p { - margin: 13px 0 0; - color: var(--registry-muted); - line-height: 1.58; -} - -/* Footer */ -.registry-theme .registry-footer { - width: 100%; - margin: auto 0 0; - padding: 58px 0 24px; - border-top: 1px solid var(--registry-line); - background: #fff; - color: var(--registry-ink); -} - -.registry-footer-grid { - display: grid; - grid-template-columns: minmax(280px, 1.7fr) repeat(2, minmax(140px, 0.55fr)); - gap: 70px; -} - -.registry-footer-brand > p { - max-width: 420px; - margin: 22px 0 0; - color: var(--registry-muted); - line-height: 1.6; -} - -.registry-footer-links { - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 12px; -} - -.registry-footer-links strong { - margin-bottom: 4px; - font-size: 0.82rem; - letter-spacing: 0.05em; - text-transform: uppercase; -} - -.registry-footer-links a { - color: var(--registry-muted); - font-size: 0.9rem; - text-decoration: none; -} - -.registry-footer-links a:hover { - color: var(--registry-blue); -} - -.registry-footer-bottom { - display: flex; - justify-content: space-between; - gap: 20px; - margin-top: 54px; - padding-top: 22px; - border-top: 1px solid var(--registry-line); - color: #747f88; - font-size: 0.78rem; -} - -@media (max-width: 940px) { - .registry-theme .repository-navigation { - gap: 16px; - } - - .registry-theme .repository-navigation a:nth-child(5) { - display: none; - } - - .registry-hero-grid, - .registry-subhero-grid { - grid-template-columns: 1fr; - gap: 56px; - } - - .registry-availability { - max-width: 620px; - } - - .registry-principles-grid { - grid-template-columns: 1fr; - gap: 48px; - } -} - -@media (max-width: 720px) { - .registry-shell { - width: min(100% - 32px, 1180px); - } - - .registry-header-inner { - min-height: 62px; - } - - .registry-theme .repository-navigation a:not(.repository-register):not(:first-child) { - display: none; - } - - .registry-theme .repository-navigation { |