From b2990ba2ac9e374bf034ce53d014f51e7264f106 Mon Sep 17 00:00:00 2001 From: PhilW Date: Sun, 15 Feb 2026 08:34:57 +0000 Subject: [PATCH 1/3] rename and rework releases.json for easier management --- _bin/generate-downloads-json-data.php | 1 + _config.yml | 2 +- _data/{releases.json => downloads.json} | 36 ++++++++++++++++--------- download/index.html | 29 +++++++++----------- index.html | 2 +- styles/styles.less | 4 +-- styles/styles.min.css | 2 +- 7 files changed, 42 insertions(+), 34 deletions(-) rename _data/{releases.json => downloads.json} (69%) diff --git a/_bin/generate-downloads-json-data.php b/_bin/generate-downloads-json-data.php index dad65a5..98bd3c2 100755 --- a/_bin/generate-downloads-json-data.php +++ b/_bin/generate-downloads-json-data.php @@ -31,6 +31,7 @@ function generate_data($version, $package_name, $basedir, $filename) return [ 'package' => $package_name, 'url' => "https://github.com/roundcube/roundcubemail/releases/download/{$version}/{$filename}", + 'version' => $version, 'size' => $size, 'checksum' => $sum, ]; diff --git a/_config.yml b/_config.yml index a6f245c..e00c189 100644 --- a/_config.yml +++ b/_config.yml @@ -18,7 +18,7 @@ libs: { url: 'https://cdn.jsdelivr.net/npm/less@4.2.0/dist/less.min.js', sri: 'sha384-SlYTcCEsC10TwMfcpGjqd+bWfA2QdB0CInBtPX6erDT3NnEkhX2X3gJ83UyHtXs3' }, - css: '/styles/styles.min.css?v=2024021800', + css: '/styles/styles.min.css?v=2026021500', bootstrap: { css: { url: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css', diff --git a/_data/releases.json b/_data/downloads.json similarity index 69% rename from _data/releases.json rename to _data/downloads.json index 1362741..b37bff2 100644 --- a/_data/releases.json +++ b/_data/downloads.json @@ -1,64 +1,76 @@ { "stable": { - "name": "Stable version", - "version": "1.6.13", - "sources": [ + "title": "Stable", + "packages": [ { "package": "Dependent", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.6.13/roundcubemail-1.6.13.tar.gz", + "version": "1.6.13", "size": "3.7 MB", "checksum": "1ee6a0877024b6ee73bda5050686487af7bc88301b2af3355a46c4ce8e327180" }, { "package": "Complete", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.6.13/roundcubemail-1.6.13-complete.tar.gz", + "version": "1.6.13", "size": "5.6 MB", "checksum": "bdd1bafe79149a6b63f699fa94e7626189ec60e2c37954de7e84ee685dbbf5bb" }, { "package": "Framework", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.6.13/roundcube-framework-1.6.13.tar.gz", + "version": "1.6.13", "size": "1.1 MB", "checksum": "61a92c3152293f0e8401406e855a57ad8bea5b3f4b647565babe42658bbcddf8" } ] }, "old-stable": { - "name": "Old stable", - "version": "1.5.3", - "sources": [ + "title": "Old Stable", + "packages": [ ] }, "lts": { - "name": "LTS versions", - "sources": [ + "title": "LTS", + "description": "Long Term Support with low maintenance mode. This means only security updates and rare fixes of serious issues will go into these release branches.", + "packages": [ { - "package": "1.5.13 - Complete", + "package": "Complete", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.5.13/roundcubemail-1.5.13-complete.tar.gz", + "version": "1.5.13", "size": "7.2 MB", "checksum": "37a8309882d782fa0b39d0f6e1efaa443b96e720e9e2c51106fb230926cca2f9" } ] }, "beta": { - "name": "Release candidate", - "version": "1.7-rc4", - "sources": [ + "title": "Beta", + "description": "We recommend to test pre-release versions on a separate environment, and don't forget to backup your data before installing.", + "packages": [ + ] + }, + "rc": { + "title": "Release Candidate", + "description": "We recommend to test pre-release versions on a separate environment, and don't forget to backup your data before installing.", + "packages": [ { "package": "Dependent", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.7-rc4/roundcubemail-1.7-rc4.tar.gz", + "version": "1.7-rc4", "size": "4.0 MB", "checksum": "bf148cfd31195fec70e3f285221128a14ace619c61155c6c6f88d0d75edaf776" }, { "package": "Complete", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.7-rc4/roundcubemail-1.7-rc4-complete.tar.gz", + "version": "1.7-rc4", "size": "6.1 MB", "checksum": "a2a5aa6e0be3a7ab2290f193f233560dd3ef183bd3cd52de415a7b7ac9b6cb1e" }, { "package": "Framework", "url": "https://github.com/roundcube/roundcubemail/releases/download/1.7-rc4/roundcube-framework-1.7-rc4.tar.gz", + "version": "1.7-rc4", "size": "1.1 MB", "checksum": "9ee4f4d3ce39a72de9dc23aee57fe4579b9c20e37b1b8899df73340f49335697" } diff --git a/download/index.html b/download/index.html index 1bd7f00..14396dd 100644 --- a/download/index.html +++ b/download/index.html @@ -6,21 +6,16 @@ ---

Download your version of Roundcube

-{% for version in site.data.releases %} - {% assign id = version | first %} - {% assign params = version | last %} - - {% if params.sources.size == 0 %} +{% for downlad in site.data.downloads %} + {% assign id = downlad | first %} + {% assign params = downlad | last %} + {% if params.packages.size == 0 %} {% continue %} {% endif %} +

{{ params.title }}

-

{{ params.name }}{% if params.version %} - {{ params.version }}{% endif %}

- - {% if id == "lts" %} -

Long Term Support with low maintenance mode. This means only security updates and rare fixes of serious issues - will go into these release branches.

- {% elsif id == "beta" %} -

We recommend to test beta versions on a separate environment, and don't forget to backup your data before installing.

+ {% if params.description %} +

{{ params.description }}

{% endif %} @@ -33,14 +28,14 @@

{{ params.name }}{% if params.version %} - {{ params.version }

- {% for source in params.sources %} + {% for package in params.packages %} - - - + + + diff --git a/index.html b/index.html index eccbb41..d69dc44 100644 --- a/index.html +++ b/index.html @@ -16,7 +16,7 @@
Download - Version {{ site.data.releases.stable.version }} + Version {{ site.data.downloads.stable.packages[0].version }}
diff --git a/styles/styles.less b/styles/styles.less index fba5d1d..434160c 100644 --- a/styles/styles.less +++ b/styles/styles.less @@ -451,12 +451,12 @@ div.color-modes > ul.dropdown-menu { table.download-table { th.package { - width: 20%; + width: 30%; } td.link, td.size { - width: 15%; + width: 12%; } td.checksum { diff --git a/styles/styles.min.css b/styles/styles.min.css index 82aed2e..a161e8f 100644 --- a/styles/styles.min.css +++ b/styles/styles.min.css @@ -1 +1 @@ -:root{--bs-font-sans-serif:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--rc-color-primary:#37beff;--rc-color-header-background:#212529;--rc-color-banner-background:rgba(189, 234, 255, 0.5);--rc-color-background-alt:rgba(0, 0, 0, 0.05);--rc-color-download-bg:#1eb6ff;--rc-color-download-border:#13b2ff;--rc-color-thumbnail-background:rgba(0, 0, 0, 0.05);--rc-color-footer:#495057;--rc-color-footer-hover:#262a2d}html[data-bs-theme=dark]{--rc-color-primary:#006a9d;--rc-color-header-background:#000;--rc-color-banner-background:rgba(0, 35, 52, 0.5);--rc-color-background-alt:rgba(255, 255, 255, 0.05);--rc-color-download-bg:#005984;--rc-color-download-border:#005279;--rc-color-thumbnail-background:rgba(255, 255, 255, 0.05);--rc-color-footer:#949da5;--rc-color-footer-hover:#bdc3c8}.navbar{--bs-navbar-toggler-focus-width:0;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-padding-x:0}.table{--bs-table-striped-bg:var(--rc-color-background-alt)}.bg-badge,.bg-quote{background-color:var(--rc-color-background-alt)!important}.bg-header,.bg-navbar,.modal-footer.bg-footer{background-color:var(--rc-color-header-background)!important}.btn-link,a:not(.btn):not(.nav-link):not(.dropdown-item){text-decoration:none}.btn-link.anchor,a:not(.btn):not(.nav-link):not(.dropdown-item).anchor{top:-6rem}.btn-link:hover,a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline}.card-header{padding:.75rem 1.25rem}.card-body{padding:1.25rem}.list-group-item{padding:.75rem 1.25rem}#banner{margin-top:66px;background-color:var(--rc-color-banner-background)}#banner>.container>.grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:1/3}#banner>.container>.grid>.download{grid-column:1;grid-row:2}@media (max-width:991px){#banner>.container>.grid{grid-template-columns:1fr 1.5fr}#banner>.container>.grid>.logo{grid-column:1/3;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}@media (max-width:767px){#banner>.container>.grid{grid-template-columns:auto;grid-template-rows:auto}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:1;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:3}}main{padding-top:6rem}main .h1,main h1{font-size:2.2rem;margin-bottom:1rem}main .h2,main h2{font-size:1.8rem;margin-top:1.5rem;font-weight:700}main .h3,main h3{font-size:1.4rem;margin-top:1rem}blockquote{padding:.6rem 1rem;background-color:var(--rc-color-background-alt)}blockquote>p{margin:0}code.block{white-space:pre}a.anchor{color:var(--bs-secondary-color);font-size:.75rem;vertical-align:middle;opacity:0}a.anchor:hover{text-decoration:none!important}a.anchor:after{font:var(--fa-font-solid);content:"\f0c1"}:hover>a.anchor{opacity:1}a.copy-link{color:var(--bs-secondary-color);font-size:.75rem;display:inline-block;width:1.25em;text-align:center;margin-left:.5rem}a.copy-link:hover{text-decoration:none!important}a.copy-link:after{font:var(--fa-font-regular);content:"\f328"}a.copy-link.complete:after{font:var(--fa-font-solid);content:"\f00c"}a.copy-link.error:after{font:var(--fa-font-solid);content:"\f071"}a.copy-popover-link{color:var(--bs-body-color);text-decoration:none!important}a.copy-popover-link.checksum:after{font:var(--fa-font-solid);content:"\e4f0"}div.popover.copy-popover>div.popover-body{padding:0 var(--bs-popover-body-padding-x);display:flex}h1,h2,h3,p{scroll-margin-top:80px}.artical-list>.artical:nth-of-type(odd),ul.ul-striped li:nth-of-type(odd){background-color:var(--rc-color-background-alt)}.artical-list+nav{margin-top:2rem}footer ul,ul.screens{list-style:none}.artical>div.snippet>p{display:inline}footer a{font-weight:500;color:var(--rc-color-footer)}footer a:focus,footer a:hover{color:var(--rc-color-footer-hover)}.rc-icon::after,.rc-icon::before{font:var(--fa-font-solid)}.rc-icon::before{margin-right:.25rem}.rc-icon::after{margin-left:.25rem}a.back-link::before{content:"\f100"}a.read-link::after{content:"\f101"}a.external-link::after{content:"\f35d"}a.rss-link::after{content:"\f09e"}a.mail-list-link::before{font:var(--fa-font-regular);content:"\f0e0"}a.irc-link::after{content:"\f086"}a.dark-mode::before{content:"\f186"}a.light-mode::before{content:"\f185"}a.auto-mode::before{content:"\f72b"}a.current-theme::after{content:"\f00c"}.btn-rc-download{color:var(--bs-white)!important;background-color:var(--rc-color-primary);border-color:var(--rc-color-primary)}.btn-rc-download:hover{color:var(--bs-white);background-color:var(--rc-color-download-bg);border-color:var(--rc-color-download-border)}.btn-rc-download::before{margin-right:.5rem;content:"\f019"}@media (max-width:575px){.btn-rc-download.btn-sm>span{display:none}.btn-rc-download.btn-sm::before{margin-right:0}}div.color-modes>ul.dropdown-menu{min-width:auto}div.color-modes>ul.dropdown-menu>li>a{font-size:.8rem}div.color-modes>ul.dropdown-menu>li>a::before{text-align:center;width:1.25em;margin-right:.5em;display:inline-block}div.color-modes>ul.dropdown-menu>li>a::after{margin-left:.75em}.img-thumbnail>a{width:140px;background-color:var(--rc-color-thumbnail-background)}#viewer .modal-body{user-select:none}#viewer .modal-body>img{position:relative}#viewer .modal-body .modal-loading span{font-size:10em;opacity:.5}#viewer .modal-body .modal-arrow{position:absolute;top:0;bottom:0;height:100%;width:30%}#viewer .modal-body .modal-arrow.right-arrow{right:0}#viewer .modal-body.loading>img{display:none}#viewer .modal-body:not(.loading)>.modal-loading{display:none}#viewer .modal-footer{color:var(--bs-white)}#viewer .modal-footer .nav{user-select:none}#viewer .modal-footer .nav>.nav-link:not(.disabled){color:var(--bs-white)}table.download-table th.package{width:20%}table.download-table td.link,table.download-table td.size{width:15%}table.download-table td.checksum{font-size:.9em}table.download-table tbody td,table.download-table tbody th{vertical-align:middle}@media (max-width:991px){table.download-table th.package{width:40%}table.download-table td.link{width:35%}table.download-table td.size{width:20%}table.download-table td.checksum{width:5%}}@media (max-width:575px){table.download-table th.package{width:55%}table.download-table td.link{width:20%}table.download-table td.size{width:20%}table.download-table td.checksum{width:5%}} +:root{--bs-font-sans-serif:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--rc-color-primary:#37beff;--rc-color-header-background:#212529;--rc-color-banner-background:rgba(189, 234, 255, 0.5);--rc-color-background-alt:rgba(0, 0, 0, 0.05);--rc-color-download-bg:#1eb6ff;--rc-color-download-border:#13b2ff;--rc-color-thumbnail-background:rgba(0, 0, 0, 0.05);--rc-color-footer:#495057;--rc-color-footer-hover:#262a2d}html[data-bs-theme=dark]{--rc-color-primary:#006a9d;--rc-color-header-background:#000;--rc-color-banner-background:rgba(0, 35, 52, 0.5);--rc-color-background-alt:rgba(255, 255, 255, 0.05);--rc-color-download-bg:#005984;--rc-color-download-border:#005279;--rc-color-thumbnail-background:rgba(255, 255, 255, 0.05);--rc-color-footer:#949da5;--rc-color-footer-hover:#bdc3c8}.navbar{--bs-navbar-toggler-focus-width:0;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-padding-x:0}.table{--bs-table-striped-bg:var(--rc-color-background-alt)}.bg-badge,.bg-quote{background-color:var(--rc-color-background-alt)!important}.bg-header,.bg-navbar,.modal-footer.bg-footer{background-color:var(--rc-color-header-background)!important}.btn-link,a:not(.btn):not(.nav-link):not(.dropdown-item){text-decoration:none}.btn-link.anchor,a:not(.btn):not(.nav-link):not(.dropdown-item).anchor{top:-6rem}.btn-link:hover,a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline}.card-header{padding:.75rem 1.25rem}.card-body{padding:1.25rem}.list-group-item{padding:.75rem 1.25rem}#banner{margin-top:66px;background-color:var(--rc-color-banner-background)}#banner>.container>.grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:1/3}#banner>.container>.grid>.download{grid-column:1;grid-row:2}@media (max-width:991px){#banner>.container>.grid{grid-template-columns:1fr 1.5fr}#banner>.container>.grid>.logo{grid-column:1/3;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}@media (max-width:767px){#banner>.container>.grid{grid-template-columns:auto;grid-template-rows:auto}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:1;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:3}}main{padding-top:6rem}main .h1,main h1{font-size:2.2rem;margin-bottom:1rem}main .h2,main h2{font-size:1.8rem;margin-top:1.5rem;font-weight:700}main .h3,main h3{font-size:1.4rem;margin-top:1rem}blockquote{padding:.6rem 1rem;background-color:var(--rc-color-background-alt)}blockquote>p{margin:0}code.block{white-space:pre}a.anchor{color:var(--bs-secondary-color);font-size:.75rem;vertical-align:middle;opacity:0}a.anchor:hover{text-decoration:none!important}a.anchor:after{font:var(--fa-font-solid);content:"\f0c1"}:hover>a.anchor{opacity:1}a.copy-link{color:var(--bs-secondary-color);font-size:.75rem;display:inline-block;width:1.25em;text-align:center;margin-left:.5rem}a.copy-link:hover{text-decoration:none!important}a.copy-link:after{font:var(--fa-font-regular);content:"\f328"}a.copy-link.complete:after{font:var(--fa-font-solid);content:"\f00c"}a.copy-link.error:after{font:var(--fa-font-solid);content:"\f071"}a.copy-popover-link{color:var(--bs-body-color);text-decoration:none!important}a.copy-popover-link.checksum:after{font:var(--fa-font-solid);content:"\e4f0"}div.popover.copy-popover>div.popover-body{padding:0 var(--bs-popover-body-padding-x);display:flex}h1,h2,h3,p{scroll-margin-top:80px}.artical-list>.artical:nth-of-type(odd),ul.ul-striped li:nth-of-type(odd){background-color:var(--rc-color-background-alt)}.artical-list+nav{margin-top:2rem}footer ul,ul.screens{list-style:none}.artical>div.snippet>p{display:inline}footer a{font-weight:500;color:var(--rc-color-footer)}footer a:focus,footer a:hover{color:var(--rc-color-footer-hover)}.rc-icon::after,.rc-icon::before{font:var(--fa-font-solid)}.rc-icon::before{margin-right:.25rem}.rc-icon::after{margin-left:.25rem}a.back-link::before{content:"\f100"}a.read-link::after{content:"\f101"}a.external-link::after{content:"\f35d"}a.rss-link::after{content:"\f09e"}a.mail-list-link::before{font:var(--fa-font-regular);content:"\f0e0"}a.irc-link::after{content:"\f086"}a.dark-mode::before{content:"\f186"}a.light-mode::before{content:"\f185"}a.auto-mode::before{content:"\f72b"}a.current-theme::after{content:"\f00c"}.btn-rc-download{color:var(--bs-white)!important;background-color:var(--rc-color-primary);border-color:var(--rc-color-primary)}.btn-rc-download:hover{color:var(--bs-white);background-color:var(--rc-color-download-bg);border-color:var(--rc-color-download-border)}.btn-rc-download::before{margin-right:.5rem;content:"\f019"}@media (max-width:575px){.btn-rc-download.btn-sm>span{display:none}.btn-rc-download.btn-sm::before{margin-right:0}}div.color-modes>ul.dropdown-menu{min-width:auto}div.color-modes>ul.dropdown-menu>li>a{font-size:.8rem}div.color-modes>ul.dropdown-menu>li>a::before{text-align:center;width:1.25em;margin-right:.5em;display:inline-block}div.color-modes>ul.dropdown-menu>li>a::after{margin-left:.75em}.img-thumbnail>a{width:140px;background-color:var(--rc-color-thumbnail-background)}#viewer .modal-body{user-select:none}#viewer .modal-body>img{position:relative}#viewer .modal-body .modal-loading span{font-size:10em;opacity:.5}#viewer .modal-body .modal-arrow{position:absolute;top:0;bottom:0;height:100%;width:30%}#viewer .modal-body .modal-arrow.right-arrow{right:0}#viewer .modal-body.loading>img{display:none}#viewer .modal-body:not(.loading)>.modal-loading{display:none}#viewer .modal-footer{color:var(--bs-white)}#viewer .modal-footer .nav{user-select:none}#viewer .modal-footer .nav>.nav-link:not(.disabled){color:var(--bs-white)}table.download-table th.package{width:30%}table.download-table td.link,table.download-table td.size{width:12%}table.download-table td.checksum{font-size:.9em}table.download-table tbody td,table.download-table tbody th{vertical-align:middle}@media (max-width:991px){table.download-table th.package{width:40%}table.download-table td.link{width:35%}table.download-table td.size{width:20%}table.download-table td.checksum{width:5%}}@media (max-width:575px){table.download-table th.package{width:55%}table.download-table td.link{width:20%}table.download-table td.size{width:20%}table.download-table td.checksum{width:5%}} \ No newline at end of file From 1a7118d1dfec53e4de69311945d9ece6dd2f3e94 Mon Sep 17 00:00:00 2001 From: PhilW Date: Sun, 8 Mar 2026 12:34:11 +0000 Subject: [PATCH 2/3] replace download table with grid for more flexibility --- _config.yml | 2 +- _includes/footer.html | 2 +- download/index.html | 36 +++++++++++------------ styles/styles.less | 66 ++++++++++++++----------------------------- styles/styles.min.css | 2 +- 5 files changed, 40 insertions(+), 68 deletions(-) diff --git a/_config.yml b/_config.yml index e00c189..13a2694 100644 --- a/_config.yml +++ b/_config.yml @@ -18,7 +18,7 @@ libs: { url: 'https://cdn.jsdelivr.net/npm/less@4.2.0/dist/less.min.js', sri: 'sha384-SlYTcCEsC10TwMfcpGjqd+bWfA2QdB0CInBtPX6erDT3NnEkhX2X3gJ83UyHtXs3' }, - css: '/styles/styles.min.css?v=2026021500', + css: '/styles/styles.min.css?v=2026030800', bootstrap: { css: { url: 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css', diff --git a/_includes/footer.html b/_includes/footer.html index 9e7e268..8cece3e 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -78,7 +78,7 @@ document.querySelectorAll('a.copy-popover-link').forEach((sumbtn) => { var popover = new bootstrap.Popover(sumbtn, { - content: sumbtn.closest('td').querySelector('.copy-popover-target').innerHTML, + content: sumbtn.closest('div').querySelector('.copy-popover-target').innerHTML, html: true, customClass: 'copy-popover' }); diff --git a/download/index.html b/download/index.html index 14396dd..9ddc9bb 100644 --- a/download/index.html +++ b/download/index.html @@ -18,31 +18,27 @@

{{ params.title }} {{ params.description }}

{% endif %} -

{{ source.package }}{% if source.package == "Dependent" %}1{% endif %}{{ source.size }}{{ package.version }} - {{ package.package }}{% if package.package == "Dependent" %}1{% endif %}{{ package.size }} - {{ source.checksum }} + {{ package.checksum }}
- - - - - - - - - +
+
+
Package
+ +
Size
+
SHA-256 checksum
+
{% for package in params.packages %} -
- - - - - + + {% endfor %} - -
PackageSizeSHA-256 checksum
{{ package.version }} - {{ package.package }}{% if package.package == "Dependent" %}1{% endif %}{{ package.size }} +
+
{{ package.version }} - {{ package.package }}{% if package.package == "Dependent" %}1{% endif %}
+ +
{{ package.size }}
+
- {{ package.checksum }} + {{ package.checksum }} -
+ {% endfor %}

1. Dependent packages only contain sources which are licensed under the GPL but they require some third-party diff --git a/styles/styles.less b/styles/styles.less index 434160c..ff71afc 100644 --- a/styles/styles.less +++ b/styles/styles.less @@ -3,6 +3,7 @@ @nav-offset: 6rem; @thumbnail-width: 140px; +@max-width-xl: 1399px; @max-width-md: 991px; @max-width-sm: 767px; @max-width-xs: 575px; @@ -52,10 +53,6 @@ html[data-bs-theme="dark"] { --bs-navbar-toggler-padding-x: 0; } -.table { - --bs-table-striped-bg: var(--rc-color-background-alt); -} - .bg-quote, .bg-badge { background-color: var(--rc-color-background-alt) !important; @@ -449,58 +446,37 @@ div.color-modes > ul.dropdown-menu { } } -table.download-table { - th.package { - width: 30%; - } +div.download-grid { + display: grid; + grid-template-columns: 30% 12% 10% 48%; - td.link, - td.size { - width: 12%; - } + div.item-header, + div.item-content { + display: contents; - td.checksum { - font-size: 0.9em; + > div { + padding: .5rem; + border-bottom: var(--bs-border-width) solid var(--bs-border-color); + } } - tbody th, - tbody td { - vertical-align: middle; + &.grid-striped > div:nth-of-type(even) > div { + background-color: var(--rc-color-background-alt); } - @media (max-width: @max-width-md) { - th.package { - width: 40%; - } + @media (max-width: @max-width-xl) { + grid-template-columns: 30% 15% 10% 43%; - td.link { - width: 35%; - } - - td.size { - width: 20%; + div.col-checksum span.copy-target { + max-width: 90%; } + } - td.checksum { - width: 5%; - } + @media (max-width: @max-width-md) { + grid-template-columns: 50% 25% 15% 10%; } @media (max-width: @max-width-xs) { - th.package { - width: 55%; - } - - td.link { - width: 20%; - } - - td.size { - width: 20%; - } - - td.checksum { - width: 5%; - } + grid-template-columns: 57% 13% 21% 9%; } } diff --git a/styles/styles.min.css b/styles/styles.min.css index a161e8f..2f88332 100644 --- a/styles/styles.min.css +++ b/styles/styles.min.css @@ -1 +1 @@ -:root{--bs-font-sans-serif:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--rc-color-primary:#37beff;--rc-color-header-background:#212529;--rc-color-banner-background:rgba(189, 234, 255, 0.5);--rc-color-background-alt:rgba(0, 0, 0, 0.05);--rc-color-download-bg:#1eb6ff;--rc-color-download-border:#13b2ff;--rc-color-thumbnail-background:rgba(0, 0, 0, 0.05);--rc-color-footer:#495057;--rc-color-footer-hover:#262a2d}html[data-bs-theme=dark]{--rc-color-primary:#006a9d;--rc-color-header-background:#000;--rc-color-banner-background:rgba(0, 35, 52, 0.5);--rc-color-background-alt:rgba(255, 255, 255, 0.05);--rc-color-download-bg:#005984;--rc-color-download-border:#005279;--rc-color-thumbnail-background:rgba(255, 255, 255, 0.05);--rc-color-footer:#949da5;--rc-color-footer-hover:#bdc3c8}.navbar{--bs-navbar-toggler-focus-width:0;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-padding-x:0}.table{--bs-table-striped-bg:var(--rc-color-background-alt)}.bg-badge,.bg-quote{background-color:var(--rc-color-background-alt)!important}.bg-header,.bg-navbar,.modal-footer.bg-footer{background-color:var(--rc-color-header-background)!important}.btn-link,a:not(.btn):not(.nav-link):not(.dropdown-item){text-decoration:none}.btn-link.anchor,a:not(.btn):not(.nav-link):not(.dropdown-item).anchor{top:-6rem}.btn-link:hover,a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline}.card-header{padding:.75rem 1.25rem}.card-body{padding:1.25rem}.list-group-item{padding:.75rem 1.25rem}#banner{margin-top:66px;background-color:var(--rc-color-banner-background)}#banner>.container>.grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:1/3}#banner>.container>.grid>.download{grid-column:1;grid-row:2}@media (max-width:991px){#banner>.container>.grid{grid-template-columns:1fr 1.5fr}#banner>.container>.grid>.logo{grid-column:1/3;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}@media (max-width:767px){#banner>.container>.grid{grid-template-columns:auto;grid-template-rows:auto}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:1;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:3}}main{padding-top:6rem}main .h1,main h1{font-size:2.2rem;margin-bottom:1rem}main .h2,main h2{font-size:1.8rem;margin-top:1.5rem;font-weight:700}main .h3,main h3{font-size:1.4rem;margin-top:1rem}blockquote{padding:.6rem 1rem;background-color:var(--rc-color-background-alt)}blockquote>p{margin:0}code.block{white-space:pre}a.anchor{color:var(--bs-secondary-color);font-size:.75rem;vertical-align:middle;opacity:0}a.anchor:hover{text-decoration:none!important}a.anchor:after{font:var(--fa-font-solid);content:"\f0c1"}:hover>a.anchor{opacity:1}a.copy-link{color:var(--bs-secondary-color);font-size:.75rem;display:inline-block;width:1.25em;text-align:center;margin-left:.5rem}a.copy-link:hover{text-decoration:none!important}a.copy-link:after{font:var(--fa-font-regular);content:"\f328"}a.copy-link.complete:after{font:var(--fa-font-solid);content:"\f00c"}a.copy-link.error:after{font:var(--fa-font-solid);content:"\f071"}a.copy-popover-link{color:var(--bs-body-color);text-decoration:none!important}a.copy-popover-link.checksum:after{font:var(--fa-font-solid);content:"\e4f0"}div.popover.copy-popover>div.popover-body{padding:0 var(--bs-popover-body-padding-x);display:flex}h1,h2,h3,p{scroll-margin-top:80px}.artical-list>.artical:nth-of-type(odd),ul.ul-striped li:nth-of-type(odd){background-color:var(--rc-color-background-alt)}.artical-list+nav{margin-top:2rem}footer ul,ul.screens{list-style:none}.artical>div.snippet>p{display:inline}footer a{font-weight:500;color:var(--rc-color-footer)}footer a:focus,footer a:hover{color:var(--rc-color-footer-hover)}.rc-icon::after,.rc-icon::before{font:var(--fa-font-solid)}.rc-icon::before{margin-right:.25rem}.rc-icon::after{margin-left:.25rem}a.back-link::before{content:"\f100"}a.read-link::after{content:"\f101"}a.external-link::after{content:"\f35d"}a.rss-link::after{content:"\f09e"}a.mail-list-link::before{font:var(--fa-font-regular);content:"\f0e0"}a.irc-link::after{content:"\f086"}a.dark-mode::before{content:"\f186"}a.light-mode::before{content:"\f185"}a.auto-mode::before{content:"\f72b"}a.current-theme::after{content:"\f00c"}.btn-rc-download{color:var(--bs-white)!important;background-color:var(--rc-color-primary);border-color:var(--rc-color-primary)}.btn-rc-download:hover{color:var(--bs-white);background-color:var(--rc-color-download-bg);border-color:var(--rc-color-download-border)}.btn-rc-download::before{margin-right:.5rem;content:"\f019"}@media (max-width:575px){.btn-rc-download.btn-sm>span{display:none}.btn-rc-download.btn-sm::before{margin-right:0}}div.color-modes>ul.dropdown-menu{min-width:auto}div.color-modes>ul.dropdown-menu>li>a{font-size:.8rem}div.color-modes>ul.dropdown-menu>li>a::before{text-align:center;width:1.25em;margin-right:.5em;display:inline-block}div.color-modes>ul.dropdown-menu>li>a::after{margin-left:.75em}.img-thumbnail>a{width:140px;background-color:var(--rc-color-thumbnail-background)}#viewer .modal-body{user-select:none}#viewer .modal-body>img{position:relative}#viewer .modal-body .modal-loading span{font-size:10em;opacity:.5}#viewer .modal-body .modal-arrow{position:absolute;top:0;bottom:0;height:100%;width:30%}#viewer .modal-body .modal-arrow.right-arrow{right:0}#viewer .modal-body.loading>img{display:none}#viewer .modal-body:not(.loading)>.modal-loading{display:none}#viewer .modal-footer{color:var(--bs-white)}#viewer .modal-footer .nav{user-select:none}#viewer .modal-footer .nav>.nav-link:not(.disabled){color:var(--bs-white)}table.download-table th.package{width:30%}table.download-table td.link,table.download-table td.size{width:12%}table.download-table td.checksum{font-size:.9em}table.download-table tbody td,table.download-table tbody th{vertical-align:middle}@media (max-width:991px){table.download-table th.package{width:40%}table.download-table td.link{width:35%}table.download-table td.size{width:20%}table.download-table td.checksum{width:5%}}@media (max-width:575px){table.download-table th.package{width:55%}table.download-table td.link{width:20%}table.download-table td.size{width:20%}table.download-table td.checksum{width:5%}} \ No newline at end of file +:root{--bs-font-sans-serif:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--rc-color-primary:#37beff;--rc-color-header-background:#212529;--rc-color-banner-background:rgba(189, 234, 255, 0.5);--rc-color-background-alt:rgba(0, 0, 0, 0.05);--rc-color-download-bg:#1eb6ff;--rc-color-download-border:#13b2ff;--rc-color-thumbnail-background:rgba(0, 0, 0, 0.05);--rc-color-footer:#495057;--rc-color-footer-hover:#262a2d}html[data-bs-theme=dark]{--rc-color-primary:#006a9d;--rc-color-header-background:#000;--rc-color-banner-background:rgba(0, 35, 52, 0.5);--rc-color-background-alt:rgba(255, 255, 255, 0.05);--rc-color-download-bg:#005984;--rc-color-download-border:#005279;--rc-color-thumbnail-background:rgba(255, 255, 255, 0.05);--rc-color-footer:#949da5;--rc-color-footer-hover:#bdc3c8}.navbar{--bs-navbar-toggler-focus-width:0;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-padding-x:0}.bg-badge,.bg-quote{background-color:var(--rc-color-background-alt)!important}.bg-header,.bg-navbar,.modal-footer.bg-footer{background-color:var(--rc-color-header-background)!important}.btn-link,a:not(.btn):not(.nav-link):not(.dropdown-item){text-decoration:none}.btn-link.anchor,a:not(.btn):not(.nav-link):not(.dropdown-item).anchor{top:-6rem}.btn-link:hover,a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline}.card-header{padding:.75rem 1.25rem}.card-body{padding:1.25rem}.list-group-item{padding:.75rem 1.25rem}#banner{margin-top:66px;background-color:var(--rc-color-banner-background)}#banner>.container>.grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:1/3}#banner>.container>.grid>.download{grid-column:1;grid-row:2}@media (max-width:991px){#banner>.container>.grid{grid-template-columns:1fr 1.5fr}#banner>.container>.grid>.logo{grid-column:1/3;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}@media (max-width:767px){#banner>.container>.grid{grid-template-columns:auto;grid-template-rows:auto}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:1;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:3}}main{padding-top:6rem}main .h1,main h1{font-size:2.2rem;margin-bottom:1rem}main .h2,main h2{font-size:1.8rem;margin-top:1.5rem;font-weight:700}main .h3,main h3{font-size:1.4rem;margin-top:1rem}blockquote{padding:.6rem 1rem;background-color:var(--rc-color-background-alt)}blockquote>p{margin:0}code.block{white-space:pre}a.anchor{color:var(--bs-secondary-color);font-size:.75rem;vertical-align:middle;opacity:0}a.anchor:hover{text-decoration:none!important}a.anchor:after{font:var(--fa-font-solid);content:"\f0c1"}:hover>a.anchor{opacity:1}a.copy-link{color:var(--bs-secondary-color);font-size:.75rem;display:inline-block;width:1.25em;text-align:center;margin-left:.5rem}a.copy-link:hover{text-decoration:none!important}a.copy-link:after{font:var(--fa-font-regular);content:"\f328"}a.copy-link.complete:after{font:var(--fa-font-solid);content:"\f00c"}a.copy-link.error:after{font:var(--fa-font-solid);content:"\f071"}a.copy-popover-link{color:var(--bs-body-color);text-decoration:none!important}a.copy-popover-link.checksum:after{font:var(--fa-font-solid);content:"\e4f0"}div.popover.copy-popover>div.popover-body{padding:0 var(--bs-popover-body-padding-x);display:flex}h1,h2,h3,p{scroll-margin-top:80px}.artical-list>.artical:nth-of-type(odd),ul.ul-striped li:nth-of-type(odd){background-color:var(--rc-color-background-alt)}.artical-list+nav{margin-top:2rem}footer ul,ul.screens{list-style:none}.artical>div.snippet>p{display:inline}footer a{font-weight:500;color:var(--rc-color-footer)}footer a:focus,footer a:hover{color:var(--rc-color-footer-hover)}.rc-icon::after,.rc-icon::before{font:var(--fa-font-solid)}.rc-icon::before{margin-right:.25rem}.rc-icon::after{margin-left:.25rem}a.back-link::before{content:"\f100"}a.read-link::after{content:"\f101"}a.external-link::after{content:"\f35d"}a.rss-link::after{content:"\f09e"}a.mail-list-link::before{font:var(--fa-font-regular);content:"\f0e0"}a.irc-link::after{content:"\f086"}a.dark-mode::before{content:"\f186"}a.light-mode::before{content:"\f185"}a.auto-mode::before{content:"\f72b"}a.current-theme::after{content:"\f00c"}.btn-rc-download{color:var(--bs-white)!important;background-color:var(--rc-color-primary);border-color:var(--rc-color-primary)}.btn-rc-download:hover{color:var(--bs-white);background-color:var(--rc-color-download-bg);border-color:var(--rc-color-download-border)}.btn-rc-download::before{margin-right:.5rem;content:"\f019"}@media (max-width:575px){.btn-rc-download.btn-sm>span{display:none}.btn-rc-download.btn-sm::before{margin-right:0}}div.color-modes>ul.dropdown-menu{min-width:auto}div.color-modes>ul.dropdown-menu>li>a{font-size:.8rem}div.color-modes>ul.dropdown-menu>li>a::before{text-align:center;width:1.25em;margin-right:.5em;display:inline-block}div.color-modes>ul.dropdown-menu>li>a::after{margin-left:.75em}.img-thumbnail>a{width:140px;background-color:var(--rc-color-thumbnail-background)}#viewer .modal-body{user-select:none}#viewer .modal-body>img{position:relative}#viewer .modal-body .modal-loading span{font-size:10em;opacity:.5}#viewer .modal-body .modal-arrow{position:absolute;top:0;bottom:0;height:100%;width:30%}#viewer .modal-body .modal-arrow.right-arrow{right:0}#viewer .modal-body.loading>img{display:none}#viewer .modal-body:not(.loading)>.modal-loading{display:none}#viewer .modal-footer{color:var(--bs-white)}#viewer .modal-footer .nav{user-select:none}#viewer .modal-footer .nav>.nav-link:not(.disabled){color:var(--bs-white)}div.download-grid{display:grid;grid-template-columns:30% 12% 10% 48%}div.download-grid div.item-content,div.download-grid div.item-header{display:contents}div.download-grid div.item-content>div,div.download-grid div.item-header>div{padding:.5rem;border-bottom:var(--bs-border-width) solid var(--bs-border-color)}div.download-grid.grid-striped>div:nth-of-type(2n)>div{background-color:var(--rc-color-background-alt)}@media (max-width:1399px){div.download-grid{grid-template-columns:30% 15% 10% 43%}div.download-grid div.col-checksum span.copy-target{max-width:90%}}@media (max-width:991px){div.download-grid{grid-template-columns:50% 25% 15% 10%}}@media (max-width:575px){div.download-grid{grid-template-columns:57% 13% 21% 9%}} \ No newline at end of file From a82af21642b8d5f6aad46cc2837dadf2e91562c3 Mon Sep 17 00:00:00 2001 From: PhilW Date: Sun, 8 Mar 2026 17:54:23 +0000 Subject: [PATCH 3/3] improve breakpoint use --- download/index.html | 2 +- index.html | 2 +- styles/styles.less | 64 +++++++++++++++++++------------------------ styles/styles.min.css | 2 +- 4 files changed, 31 insertions(+), 39 deletions(-) diff --git a/download/index.html b/download/index.html index 9ddc9bb..a1a5226 100644 --- a/download/index.html +++ b/download/index.html @@ -28,7 +28,7 @@

{{ params.title }} - +
{{ package.size }}
diff --git a/index.html b/index.html index d69dc44..1e33dd2 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ Welcome Roundcube Webmail
- Download + Download Version {{ site.data.downloads.stable.packages[0].version }}
diff --git a/styles/styles.less b/styles/styles.less index ff71afc..ff72430 100644 --- a/styles/styles.less +++ b/styles/styles.less @@ -3,10 +3,11 @@ @nav-offset: 6rem; @thumbnail-width: 140px; -@max-width-xl: 1399px; -@max-width-md: 991px; -@max-width-sm: 767px; -@max-width-xs: 575px; +@min-width-sm: 576px; +@min-width-md: 768px; +@min-width-lg: 992px; +@min-width-xl: 1200px; +@min-width-xxl: 1400px; @color-primary: #37beff; @color-background-alt: rgba(0, 0, 0, 0.05); @@ -95,8 +96,8 @@ a:not(.btn):not(.nav-link):not(.dropdown-item), > .container > .grid { display: grid; - grid-template-columns: 1fr 1fr; - grid-template-rows: auto 1fr; + grid-template-columns: auto; + grid-template-rows: auto; > .logo { grid-column: 1; @@ -104,16 +105,16 @@ a:not(.btn):not(.nav-link):not(.dropdown-item), } > .image { - grid-column: 2; - grid-row: 1 / 3; + grid-column: 1; + grid-row: 2; } > .download { grid-column: 1; - grid-row: 2; + grid-row: 3; } - @media (max-width: @max-width-md) { + @media (min-width: @min-width-md) { grid-template-columns: 1fr 1.5fr; > .logo { @@ -132,9 +133,9 @@ a:not(.btn):not(.nav-link):not(.dropdown-item), } } - @media (max-width: @max-width-sm) { - grid-template-columns: auto; - grid-template-rows: auto; + @media (min-width: @min-width-lg) { + grid-template-columns: 1fr 1fr; + grid-template-rows: auto 1fr; > .logo { grid-column: 1; @@ -142,13 +143,13 @@ a:not(.btn):not(.nav-link):not(.dropdown-item), } > .image { - grid-column: 1; - grid-row: 2; + grid-column: 2; + grid-row: 1 / 3; } > .download { grid-column: 1; - grid-row: 3; + grid-row: 2; } } } @@ -354,21 +355,8 @@ a.current-theme::after { } &::before { - margin-right: .5rem; content: @fa-var-download; } - - &.btn-sm { - @media (max-width: @max-width-xs) { - & > span { - display: none; - } - - &::before { - margin-right: 0; - } - } - } } div.color-modes > ul.dropdown-menu { @@ -448,7 +436,7 @@ div.color-modes > ul.dropdown-menu { div.download-grid { display: grid; - grid-template-columns: 30% 12% 10% 48%; + grid-template-columns: 57% 13% 21% 9%; div.item-header, div.item-content { @@ -464,7 +452,11 @@ div.download-grid { background-color: var(--rc-color-background-alt); } - @media (max-width: @max-width-xl) { + @media (min-width: @min-width-sm) { + grid-template-columns: 50% 25% 15% 10%; + } + + @media (min-width: @min-width-lg) { grid-template-columns: 30% 15% 10% 43%; div.col-checksum span.copy-target { @@ -472,11 +464,11 @@ div.download-grid { } } - @media (max-width: @max-width-md) { - grid-template-columns: 50% 25% 15% 10%; - } + @media (min-width: @min-width-xxl) { + grid-template-columns: 30% 12% 10% 48%; - @media (max-width: @max-width-xs) { - grid-template-columns: 57% 13% 21% 9%; + div.col-checksum span.copy-target { + max-width: none; + } } } diff --git a/styles/styles.min.css b/styles/styles.min.css index 2f88332..cc6deaf 100644 --- a/styles/styles.min.css +++ b/styles/styles.min.css @@ -1 +1 @@ -:root{--bs-font-sans-serif:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--rc-color-primary:#37beff;--rc-color-header-background:#212529;--rc-color-banner-background:rgba(189, 234, 255, 0.5);--rc-color-background-alt:rgba(0, 0, 0, 0.05);--rc-color-download-bg:#1eb6ff;--rc-color-download-border:#13b2ff;--rc-color-thumbnail-background:rgba(0, 0, 0, 0.05);--rc-color-footer:#495057;--rc-color-footer-hover:#262a2d}html[data-bs-theme=dark]{--rc-color-primary:#006a9d;--rc-color-header-background:#000;--rc-color-banner-background:rgba(0, 35, 52, 0.5);--rc-color-background-alt:rgba(255, 255, 255, 0.05);--rc-color-download-bg:#005984;--rc-color-download-border:#005279;--rc-color-thumbnail-background:rgba(255, 255, 255, 0.05);--rc-color-footer:#949da5;--rc-color-footer-hover:#bdc3c8}.navbar{--bs-navbar-toggler-focus-width:0;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-padding-x:0}.bg-badge,.bg-quote{background-color:var(--rc-color-background-alt)!important}.bg-header,.bg-navbar,.modal-footer.bg-footer{background-color:var(--rc-color-header-background)!important}.btn-link,a:not(.btn):not(.nav-link):not(.dropdown-item){text-decoration:none}.btn-link.anchor,a:not(.btn):not(.nav-link):not(.dropdown-item).anchor{top:-6rem}.btn-link:hover,a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline}.card-header{padding:.75rem 1.25rem}.card-body{padding:1.25rem}.list-group-item{padding:.75rem 1.25rem}#banner{margin-top:66px;background-color:var(--rc-color-banner-background)}#banner>.container>.grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:1/3}#banner>.container>.grid>.download{grid-column:1;grid-row:2}@media (max-width:991px){#banner>.container>.grid{grid-template-columns:1fr 1.5fr}#banner>.container>.grid>.logo{grid-column:1/3;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}@media (max-width:767px){#banner>.container>.grid{grid-template-columns:auto;grid-template-rows:auto}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:1;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:3}}main{padding-top:6rem}main .h1,main h1{font-size:2.2rem;margin-bottom:1rem}main .h2,main h2{font-size:1.8rem;margin-top:1.5rem;font-weight:700}main .h3,main h3{font-size:1.4rem;margin-top:1rem}blockquote{padding:.6rem 1rem;background-color:var(--rc-color-background-alt)}blockquote>p{margin:0}code.block{white-space:pre}a.anchor{color:var(--bs-secondary-color);font-size:.75rem;vertical-align:middle;opacity:0}a.anchor:hover{text-decoration:none!important}a.anchor:after{font:var(--fa-font-solid);content:"\f0c1"}:hover>a.anchor{opacity:1}a.copy-link{color:var(--bs-secondary-color);font-size:.75rem;display:inline-block;width:1.25em;text-align:center;margin-left:.5rem}a.copy-link:hover{text-decoration:none!important}a.copy-link:after{font:var(--fa-font-regular);content:"\f328"}a.copy-link.complete:after{font:var(--fa-font-solid);content:"\f00c"}a.copy-link.error:after{font:var(--fa-font-solid);content:"\f071"}a.copy-popover-link{color:var(--bs-body-color);text-decoration:none!important}a.copy-popover-link.checksum:after{font:var(--fa-font-solid);content:"\e4f0"}div.popover.copy-popover>div.popover-body{padding:0 var(--bs-popover-body-padding-x);display:flex}h1,h2,h3,p{scroll-margin-top:80px}.artical-list>.artical:nth-of-type(odd),ul.ul-striped li:nth-of-type(odd){background-color:var(--rc-color-background-alt)}.artical-list+nav{margin-top:2rem}footer ul,ul.screens{list-style:none}.artical>div.snippet>p{display:inline}footer a{font-weight:500;color:var(--rc-color-footer)}footer a:focus,footer a:hover{color:var(--rc-color-footer-hover)}.rc-icon::after,.rc-icon::before{font:var(--fa-font-solid)}.rc-icon::before{margin-right:.25rem}.rc-icon::after{margin-left:.25rem}a.back-link::before{content:"\f100"}a.read-link::after{content:"\f101"}a.external-link::after{content:"\f35d"}a.rss-link::after{content:"\f09e"}a.mail-list-link::before{font:var(--fa-font-regular);content:"\f0e0"}a.irc-link::after{content:"\f086"}a.dark-mode::before{content:"\f186"}a.light-mode::before{content:"\f185"}a.auto-mode::before{content:"\f72b"}a.current-theme::after{content:"\f00c"}.btn-rc-download{color:var(--bs-white)!important;background-color:var(--rc-color-primary);border-color:var(--rc-color-primary)}.btn-rc-download:hover{color:var(--bs-white);background-color:var(--rc-color-download-bg);border-color:var(--rc-color-download-border)}.btn-rc-download::before{margin-right:.5rem;content:"\f019"}@media (max-width:575px){.btn-rc-download.btn-sm>span{display:none}.btn-rc-download.btn-sm::before{margin-right:0}}div.color-modes>ul.dropdown-menu{min-width:auto}div.color-modes>ul.dropdown-menu>li>a{font-size:.8rem}div.color-modes>ul.dropdown-menu>li>a::before{text-align:center;width:1.25em;margin-right:.5em;display:inline-block}div.color-modes>ul.dropdown-menu>li>a::after{margin-left:.75em}.img-thumbnail>a{width:140px;background-color:var(--rc-color-thumbnail-background)}#viewer .modal-body{user-select:none}#viewer .modal-body>img{position:relative}#viewer .modal-body .modal-loading span{font-size:10em;opacity:.5}#viewer .modal-body .modal-arrow{position:absolute;top:0;bottom:0;height:100%;width:30%}#viewer .modal-body .modal-arrow.right-arrow{right:0}#viewer .modal-body.loading>img{display:none}#viewer .modal-body:not(.loading)>.modal-loading{display:none}#viewer .modal-footer{color:var(--bs-white)}#viewer .modal-footer .nav{user-select:none}#viewer .modal-footer .nav>.nav-link:not(.disabled){color:var(--bs-white)}div.download-grid{display:grid;grid-template-columns:30% 12% 10% 48%}div.download-grid div.item-content,div.download-grid div.item-header{display:contents}div.download-grid div.item-content>div,div.download-grid div.item-header>div{padding:.5rem;border-bottom:var(--bs-border-width) solid var(--bs-border-color)}div.download-grid.grid-striped>div:nth-of-type(2n)>div{background-color:var(--rc-color-background-alt)}@media (max-width:1399px){div.download-grid{grid-template-columns:30% 15% 10% 43%}div.download-grid div.col-checksum span.copy-target{max-width:90%}}@media (max-width:991px){div.download-grid{grid-template-columns:50% 25% 15% 10%}}@media (max-width:575px){div.download-grid{grid-template-columns:57% 13% 21% 9%}} \ No newline at end of file +:root{--bs-font-sans-serif:-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--rc-color-primary:#37beff;--rc-color-header-background:#212529;--rc-color-banner-background:rgba(189, 234, 255, 0.5);--rc-color-background-alt:rgba(0, 0, 0, 0.05);--rc-color-download-bg:#1eb6ff;--rc-color-download-border:#13b2ff;--rc-color-thumbnail-background:rgba(0, 0, 0, 0.05);--rc-color-footer:#495057;--rc-color-footer-hover:#262a2d}html[data-bs-theme=dark]{--rc-color-primary:#006a9d;--rc-color-header-background:#000;--rc-color-banner-background:rgba(0, 35, 52, 0.5);--rc-color-background-alt:rgba(255, 255, 255, 0.05);--rc-color-download-bg:#005984;--rc-color-download-border:#005279;--rc-color-thumbnail-background:rgba(255, 255, 255, 0.05);--rc-color-footer:#949da5;--rc-color-footer-hover:#bdc3c8}.navbar{--bs-navbar-toggler-focus-width:0;--bs-navbar-toggler-border-color:transparent;--bs-navbar-toggler-padding-x:0}.bg-badge,.bg-quote{background-color:var(--rc-color-background-alt)!important}.bg-header,.bg-navbar,.modal-footer.bg-footer{background-color:var(--rc-color-header-background)!important}.btn-link,a:not(.btn):not(.nav-link):not(.dropdown-item){text-decoration:none}.btn-link.anchor,a:not(.btn):not(.nav-link):not(.dropdown-item).anchor{top:-6rem}.btn-link:hover,a:not(.btn):not(.nav-link):not(.dropdown-item):hover{text-decoration:underline}.card-header{padding:.75rem 1.25rem}.card-body{padding:1.25rem}.list-group-item{padding:.75rem 1.25rem}#banner{margin-top:66px;background-color:var(--rc-color-banner-background)}#banner>.container>.grid{display:grid;grid-template-columns:auto;grid-template-rows:auto}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:1;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:3}@media (min-width:768px){#banner>.container>.grid{grid-template-columns:1fr 1.5fr}#banner>.container>.grid>.logo{grid-column:1/3;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:2}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}@media (min-width:992px){#banner>.container>.grid{grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr}#banner>.container>.grid>.logo{grid-column:1;grid-row:1}#banner>.container>.grid>.image{grid-column:2;grid-row:1/3}#banner>.container>.grid>.download{grid-column:1;grid-row:2}}main{padding-top:6rem}main .h1,main h1{font-size:2.2rem;margin-bottom:1rem}main .h2,main h2{font-size:1.8rem;margin-top:1.5rem;font-weight:700}main .h3,main h3{font-size:1.4rem;margin-top:1rem}blockquote{padding:.6rem 1rem;background-color:var(--rc-color-background-alt)}blockquote>p{margin:0}code.block{white-space:pre}a.anchor{color:var(--bs-secondary-color);font-size:.75rem;vertical-align:middle;opacity:0}a.anchor:hover{text-decoration:none!important}a.anchor:after{font:var(--fa-font-solid);content:"\f0c1"}:hover>a.anchor{opacity:1}a.copy-link{color:var(--bs-secondary-color);font-size:.75rem;display:inline-block;width:1.25em;text-align:center;margin-left:.5rem}a.copy-link:hover{text-decoration:none!important}a.copy-link:after{font:var(--fa-font-regular);content:"\f328"}a.copy-link.complete:after{font:var(--fa-font-solid);content:"\f00c"}a.copy-link.error:after{font:var(--fa-font-solid);content:"\f071"}a.copy-popover-link{color:var(--bs-body-color);text-decoration:none!important}a.copy-popover-link.checksum:after{font:var(--fa-font-solid);content:"\e4f0"}div.popover.copy-popover>div.popover-body{padding:0 var(--bs-popover-body-padding-x);display:flex}h1,h2,h3,p{scroll-margin-top:80px}.artical-list>.artical:nth-of-type(odd),ul.ul-striped li:nth-of-type(odd){background-color:var(--rc-color-background-alt)}.artical-list+nav{margin-top:2rem}footer ul,ul.screens{list-style:none}.artical>div.snippet>p{display:inline}footer a{font-weight:500;color:var(--rc-color-footer)}footer a:focus,footer a:hover{color:var(--rc-color-footer-hover)}.rc-icon::after,.rc-icon::before{font:var(--fa-font-solid)}.rc-icon::before{margin-right:.25rem}.rc-icon::after{margin-left:.25rem}a.back-link::before{content:"\f100"}a.read-link::after{content:"\f101"}a.external-link::after{content:"\f35d"}a.rss-link::after{content:"\f09e"}a.mail-list-link::before{font:var(--fa-font-regular);content:"\f0e0"}a.irc-link::after{content:"\f086"}a.dark-mode::before{content:"\f186"}a.light-mode::before{content:"\f185"}a.auto-mode::before{content:"\f72b"}a.current-theme::after{content:"\f00c"}.btn-rc-download{color:var(--bs-white)!important;background-color:var(--rc-color-primary);border-color:var(--rc-color-primary)}.btn-rc-download:hover{color:var(--bs-white);background-color:var(--rc-color-download-bg);border-color:var(--rc-color-download-border)}.btn-rc-download::before{content:"\f019"}div.color-modes>ul.dropdown-menu{min-width:auto}div.color-modes>ul.dropdown-menu>li>a{font-size:.8rem}div.color-modes>ul.dropdown-menu>li>a::before{text-align:center;width:1.25em;margin-right:.5em;display:inline-block}div.color-modes>ul.dropdown-menu>li>a::after{margin-left:.75em}.img-thumbnail>a{width:140px;background-color:var(--rc-color-thumbnail-background)}#viewer .modal-body{user-select:none}#viewer .modal-body>img{position:relative}#viewer .modal-body .modal-loading span{font-size:10em;opacity:.5}#viewer .modal-body .modal-arrow{position:absolute;top:0;bottom:0;height:100%;width:30%}#viewer .modal-body .modal-arrow.right-arrow{right:0}#viewer .modal-body.loading>img{display:none}#viewer .modal-body:not(.loading)>.modal-loading{display:none}#viewer .modal-footer{color:var(--bs-white)}#viewer .modal-footer .nav{user-select:none}#viewer .modal-footer .nav>.nav-link:not(.disabled){color:var(--bs-white)}div.download-grid{display:grid;grid-template-columns:57% 13% 21% 9%}div.download-grid div.item-content,div.download-grid div.item-header{display:contents}div.download-grid div.item-content>div,div.download-grid div.item-header>div{padding:.5rem;border-bottom:var(--bs-border-width) solid var(--bs-border-color)}div.download-grid.grid-striped>div:nth-of-type(2n)>div{background-color:var(--rc-color-background-alt)}@media (min-width:576px){div.download-grid{grid-template-columns:50% 25% 15% 10%}}@media (min-width:992px){div.download-grid{grid-template-columns:30% 15% 10% 43%}div.download-grid div.col-checksum span.copy-target{max-width:90%}}@media (min-width:1400px){div.download-grid{grid-template-columns:30% 12% 10% 48%}div.download-grid div.col-checksum span.copy-target{max-width:none}} \ No newline at end of file