Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/frontend/src/styles
diff options
context:
space:
mode:
authorLeitwolf112026-09-01 14:28:16 +0300
committerLeitwolf112026-09-01 14:28:16 +0300
commit0752b55d0095bd0b756d112e03692fe4a341c433 (patch)
tree7d1a0fe4e6fcfbbf062fe3c3c5634a6a0be71bc8 /frontend/src/styles
parent6420aa30d09cb0815bdf7c140ebeca6218053870 (diff)
downloadwebsite-1.0.0.tar.gz
Redesign ViGet as a first-class Progmasoft product surface1.0.0
Diffstat (limited to 'frontend/src/styles')
-rw-r--r--frontend/src/styles/registry.css704
1 files changed, 704 insertions, 0 deletions
diff --git a/frontend/src/styles/registry.css b/frontend/src/styles/registry.css
new file mode 100644
index 0000000..8100927
--- /dev/null
+++ b/frontend/src/styles/registry.css
@@ -0,0 +1,704 @@
+/*
+ * SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com>
+ * SPDX-License-Identifier: AGPL-3.0-or-later WITH AdditionRef-Progmasoft-Patent-Grant-1.0
+ */
+
+/* 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 {
+ gap: 12px;
+ }
+
+ .registry-hero,
+ .registry-subhero {
+ padding: 66px 0 70px;
+ }
+
+ .registry-hero-copy h1,
+ .registry-subhero h1 {
+ font-size: clamp(2.65rem, 12.5vw, 4rem);
+ }
+
+ .registry-section-heading,
+ .registry-catalog-grid,
+ .registry-guidance-grid,
+ .registry-footer-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .registry-section-heading {
+ gap: 24px;
+ }
+
+ .registry-catalogs,
+ .registry-principles,
+ .registry-guidance {
+ padding: 68px 0;
+ }
+
+ .registry-guidance-grid > div {
+ min-height: 0;
+ border-right: 0;
+ border-bottom: 1px solid var(--registry-line);
+ }
+
+ .registry-guidance-grid > div:last-child {
+ border-bottom: 0;
+ }
+
+ .registry-footer-grid {
+ gap: 40px;
+ }
+}
+
+@media (max-width: 460px) {
+ .registry-product,
+ .registry-theme .repository-navigation > a:first-child {
+ display: none;
+ }
+
+ .registry-availability,
+ .registry-catalog-card {
+ padding: 24px;
+ }
+
+ .registry-footer-bottom {
+ flex-direction: column;
+ }
+}