- {% include scripts.html %}
-
-
-
-
+ {% include footer.html %}
{% include tracking.html %}
diff --git a/_layouts/main.html b/_layouts/main.html
index af15f21e..282d774d 100644
--- a/_layouts/main.html
+++ b/_layouts/main.html
@@ -1,29 +1,6 @@
-
-
-
- {% include head.html %}
-
-
- {% include menu.html %}
-
-
- {% include scripts.html %}
- {% include tracking.html %}
-
-
+---
+layout: default
+---
+
diff --git a/_layouts/post.html b/_layouts/post.html
index 78bd380b..fa85abd1 100644
--- a/_layouts/post.html
+++ b/_layouts/post.html
@@ -1,29 +1,21 @@
-
-
-
- {% include head.html %}
-
-
- {% include menu.html %}
-
-
-
-
-
-
{{ page.title }}
- {{ page.date | date: "%A, %B %d %Y" }}
-
-
- {{ content }}
-
-
-
+---
+layout: default
+---
+
+
+
+ {%- assign body = content -%}
+ {%- unless body contains "
", " " | replace: "", "" -%}
+ {%- endunless %}
+ {{ body }}
- {% include scripts.html %}
- {% include tracking.html %}
-
-
+
+
diff --git a/_posts/2012-09-25-jruby-1-7-0-RC1.markdown b/_posts/2012-09-25-jruby-1-7-0-RC1.markdown
index 22404373..cc8ab7aa 100644
--- a/_posts/2012-09-25-jruby-1-7-0-RC1.markdown
+++ b/_posts/2012-09-25-jruby-1-7-0-RC1.markdown
@@ -15,7 +15,7 @@ JRuby 1.7 is the first JRuby to support the new "invokedynamic" feature of the J
Please, please, please test your applications against 1.7.0.RC1. We want to make 1.7.0 a rock solid release and your contribution is extremely helpful.
-### Notable Changes:
+## Notable Changes:
- 1\.9\.3 is now our default runtime mode (--1.8 is needed for 1.8.7 support)
- Many 1.9.x compatibility fixes
@@ -23,10 +23,10 @@ Please, please, please test your applications against 1.7.0.RC1. We want to mak
- Improvements and fixes to Java integration
- 113 issues resolved
-### Issues resolved:
+## Issues resolved:
-
Bug
-
+
Bug
+
[JRUBY-3622 ] - newInstance and getDeclaredConstructor fail to respect class overridden in JRuby
@@ -196,8 +196,8 @@ Please, please, please test your applications against 1.7.0.RC1. We want to mak
-
Improvement
-
+
Improvement
+
[JRUBY-5380 ] - Use Hotspot-specific features for calculating CPU time when available
@@ -213,8 +213,8 @@ Please, please, please test your applications against 1.7.0.RC1. We want to mak
-
New Feature
-
+
New Feature
+
[JRUBY-4670 ] - Plug ruby2java java2ruby marshalling
@@ -224,21 +224,21 @@ Please, please, please test your applications against 1.7.0.RC1. We want to mak
-
Task
-
+
Task
+
-
Test
-
+
Test
+
[JRUBY-6873 ] - jruby-1.7.0.preview2 much slower jruby-1.6.3 (192s vs.60s)
-
Github Issues
+
Github Issues
- #307 Specs for DirectedGraph Library
- #306 removed snapshot in versions
diff --git a/_posts/2012-10-09-jruby-1-7-0-RC2.markdown b/_posts/2012-10-09-jruby-1-7-0-RC2.markdown
index a97b7b39..9c9c4e20 100644
--- a/_posts/2012-10-09-jruby-1-7-0-RC2.markdown
+++ b/_posts/2012-10-09-jruby-1-7-0-RC2.markdown
@@ -15,10 +15,10 @@ JRuby 1.7 is the first JRuby to support the new "invokedynamic" feature of the J
Please, please, please test your applications against 1.7.0.RC2. We want to make 1.7.0 a rock solid release and your contribution is extremely helpful.
-### Issues resolved:
+## Issues resolved:
-
Bug
-
+
Bug
+
[JRUBY-5732 ] - Error with selector: java.nio.channels.ClosedChannelException
@@ -40,8 +40,8 @@ Please, please, please test your applications against 1.7.0.RC2. We want to mak
-
Improvement
-
+
Improvement
+
[JRUBY-5451 ] - Unessesary late error message when subclassing a packaged class with no public constructors.
@@ -49,7 +49,7 @@ Please, please, please test your applications against 1.7.0.RC2. We want to mak
-### Github Issues resolved:
+## Github Issues resolved:
- #337: Fix indentation in: e2c3728.
- #330: mprove performance of the Equals operator in the RubyComparable class for objects of different types
diff --git a/_posts/2026-04-21-jruby-10-1-0-0.markdown b/_posts/2026-04-21-jruby-10-1-0-0.markdown
index 2f1ac720..83b0f1ad 100644
--- a/_posts/2026-04-21-jruby-10-1-0-0.markdown
+++ b/_posts/2026-04-21-jruby-10-1-0-0.markdown
@@ -13,7 +13,7 @@ JRuby 10.1.0.x targets Ruby 4.0 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward!
JRuby 10.1: Experimenting and Evolving
-======================================
+--------------------------------------
JRuby 10.1.0.0 is our first major release since catching up with Ruby compatibility. We have used this opportunity to explore many experimental optimizations and improvements we have been chasing for many years. Ruby 4.0 compatibility is largely complete, but there will be additional features added in update releases. We also plan to continue with large scale experiments in subsequent updates, and recommend production users continue to use JRuby 10.0 while we work toward stabilization of the 10.1 series.
diff --git a/blogs.markdown b/blogs.markdown
index 06f63372..25ef3da4 100644
--- a/blogs.markdown
+++ b/blogs.markdown
@@ -1,30 +1,27 @@
---
layout: main
title: JRuby Bloggers
+description: "Read blogs from the JRuby team and its contributors."
---
# Blogging about JRuby
-### JRuby Team
+## JRuby Team
-[**The JRuby Team**][team] - Release announcements, news, conference dates, and other information go out through the JRuby Team Blog.
+**[The JRuby Team Blog](https://blog.jruby.org/)** — Release announcements, news, conference dates, and other information go out through the JRuby Team Blog.
-### Team Members
+## Team Members
Most of the JRuby team have blogs, as do many community members. Here's a listing of blogs you may want to check out.
-[**Charles Oliver Nutter**][headius] - Charles is one of the co-leads of JRuby and blogs about it, Ruby, Java, and lots of other related topics.
+**[Charles Oliver Nutter (headius)](https://blog.headius.com/)** — Charles is one of the co-leads of JRuby and blogs about it, Ruby, Java, and lots of other related topics.
-[**Thomas Enebo**][enebo] - Tom is another co-lead and blogs about JRuby releases as well as libraries and subprojects he's working on.
+**[Thomas Enebo](http://blog.enebo.com/)** — Tom is another co-lead and blogs about JRuby releases as well as libraries and subprojects he's working on.
-[**Nick Sieger**][sieger] - Nick is a JRuby core dev, famous for starting ActiveRecord-JDBC and Warbler. He's also an avid blogger.
+**[Nick Sieger](http://blog.nicksieger.com/)** — Nick is a JRuby core dev, famous for starting ActiveRecord-JDBC and Warbler. He's also an avid blogger.
-[**Ola Bini**][bini] - Ola is one of JRuby's most prolific contributors, and he now blogs on JRuby, his new language Ioke, and computer-language related content.
+**[Ola Bini](https://olabini.com/blog/)** — Ola is one of JRuby's most prolific contributors, and he blogs on JRuby, his language Ioke, and computer-language related content.
-If you have a blog you think should be listed here, please contact us!
+---
-[team]: http://blog.jruby.org/
-[headius]: http://blog.headius.com/
-[enebo]: http://blog.enebo.com/
-[sieger]: http://blog.nicksieger.com/
-[bini]: https://olabini.com/blog/
\ No newline at end of file
+If you have a blog you think should be listed here, please [contact us](mailto:team@jruby.org)!
diff --git a/chat.markdown b/chat.markdown
index c53bb01c..aabc03a9 100644
--- a/chat.markdown
+++ b/chat.markdown
@@ -1,13 +1,29 @@
---
layout: main
-title: Chat with the JRuby Community
+title: Chat
+description: "Chat with the JRuby team and community on Matrix or IRC."
---
-# JRuby on Matrix
-Most of the JRuby team and much of the community hangs out on Matrix, and we welcome everyone to join us!
+# Chat with the JRuby Community
-To join, visit the [Matrix #jruby room](https://matrix.to/#/#jruby:matrix.org) and select a client that suits you. The
-[Matrix #jruby logs](https://view.matrix.org/alias/%23jruby:matrix.org) are also publically readable.
+If you want quick, interactive help or just want to hang out, feel free to stop by!
-The Matrix room also bridges to the #jruby channel on [Libera IRC](https://libera.chat).
+## Matrix (Primary)
+The official JRuby community room is on [Matrix](https://matrix.org/):
+
+- **Room**: [#jruby:matrix.org]({{ site.urls.matrix }})
+- Any Matrix client will work — [Element](https://element.io/) is a popular choice.
+
+## IRC Bridge
+
+The Matrix room is bridged to IRC for those who prefer it:
+
+- **Server**: `irc.libera.chat`
+- **Channel**: `#jruby`
+
+## Tips
+
+- Don't ask to ask — just ask your question directly.
+- Include error messages and relevant code when asking for help.
+- Be patient — community members are in different time zones.
diff --git a/community.markdown b/community.markdown
index 2492508f..4c1c20cd 100644
--- a/community.markdown
+++ b/community.markdown
@@ -1,24 +1,58 @@
---
layout: main
title: Connect with the JRuby Community
+description: "Get help and get involved with JRuby through chat, mailing lists, the issue tracker, and more."
---
-# The JRuby Community
-JRuby has a large and active community. You can connect up with them in several ways:
+# Connect with the JRuby Community
-[**Contribute**](/contribute) - JRuby is open source, and like all open source projects it needs your help! File bugs, check out the source, and help us make JRuby better today.
+JRuby has a large and active community. Here are the best ways to get in touch and get involved.
-[**Nightly Builds**](/nightly) - We publish nightly builds of or stable and development branches for testing new features and bug fixes.
+
+
+## Source Code
+
+JRuby's source code is hosted on GitHub and we welcome contributions of all kinds.
+
+* **Browse**: [github.com/jruby/jruby]({{ site.urls.github }})
+* **Clone**: `git clone https://github.com/jruby/jruby.git`
+
+See the [Contribute]({{ '/contribute' | relative_url }}) page for more details on getting started.
diff --git a/config.ru b/config.ru
index 4887352a..2bf91c59 100644
--- a/config.ru
+++ b/config.ru
@@ -10,7 +10,9 @@ require 'rack/file'
### This section copied from bin/jekyll file
require 'jekyll'
-options = Jekyll.configuration({})
+# PREVIEW_DOMAIN points absolute URLs, such as link preview images, at a tunnel
+overrides = ENV['PREVIEW_DOMAIN'] ? { 'domain' => ENV['PREVIEW_DOMAIN'] } : {}
+options = Jekyll.configuration(overrides)
source = options['source']
destination = options['destination']
@@ -75,5 +77,7 @@ class DotHtmlRewriter
end
puts "Server running on http://localhost:9292"
+# GitHub Pages compresses responses in production; match that locally
+use Rack::Deflater
use DotHtmlRewriter, "#{destination}/404.html"
run Rack::File.new(destination)
diff --git a/contribute.markdown b/contribute.markdown
index 8ce3572a..c787351d 100644
--- a/contribute.markdown
+++ b/contribute.markdown
@@ -1,42 +1,57 @@
---
layout: main
title: Contributing to JRuby
+description: "Help improve JRuby: get the source, build it, report bugs, and submit code."
---
+
# Contributing to JRuby
-
+
JRuby depends on community contributions to survive. Here's how you can get involved:
-**Get the Source** - The JRuby source is stored in our Git repository at JRuby.org and mirrored at GitHub.
+## Get the Source
+
+The JRuby source is stored in a Git repository on GitHub.
+
+* **Browse**: [github.com/jruby/jruby]({{ site.urls.github }})
+* **Clone**:
+
+```bash
+git clone https://github.com/jruby/jruby.git
+```
+
+## Build JRuby
-- **Browse**: [**GitHub**](https://github.com/jruby/jruby)
-- **Checkout**
+Once you've checked out the source, run `mvn` to build JRuby and `mvn -Pbootstrap` to install all development dependencies. We depend on [Apache Maven](https://maven.apache.org/) 3.3.1 or higher.
- git clone https://github.com/jruby/jruby.git
+```bash
+mvn -Pbootstrap
+```
-*Need [Git help](https://git-scm.com/)? It's ok, we're not Git experts either.*
+For more detailed information, see [BUILDING.md](https://github.com/jruby/jruby/blob/master/BUILDING.md).
-**Build JRuby** - Once you've checked out the source, you just need to run `mvn` to just build JRuby and `mvn -Pbootstrap` to install all development dependencies. We depend on
Apache Maven 3.3.1 or higher; if you only have access to a lower version use the `mvnw` script in our repo instead of your system's `mvn` command.
+## Hacking Guide
- mvn -Pbootstrap
+NaHi built an [awesome Prezi fly-through tour of the JRuby codebase](https://prezi.com/tsuouxb3z4ln/jruby-hacking-guide/). Take a look for getting your bearings with the codebase.
-For more detailed information building and other ways to test have a look at
jruby/BUILDING.md .
+## Report Bugs
-**Check out the Hacking Guide** - NaHi built an [awesome Prezi fly-through tour of the JRuby codebase][prezi]. Take a look through it for getting bearings with the codebase.
+We use GitHub Issues for all bug tracking.
-**Report Bugs** - We use GitHub for all bug tracking.
+* **GitHub Issues**: [Browse]({{ site.urls.bugs }})
-- **GitHub Issues**: [**Browse**]({{ site.urls.bugs }})
+## Submit Code Changes
-**Submit Code Changes** - We welcome behavioral, performance, quality, and documentation changes alike. Send them back with a [GitHub Pull Request][pullrequest] for review.
+We welcome behavioural, performance, quality, and documentation changes alike. Send them back with a [GitHub Pull Request](https://help.github.com/articles/using-pull-requests) for review.
-**Fix the wiki** - We also depend on community contributions and edits to keep our documentation informative and relevant. If you have a useful FAQ or walkthrough or article, please add it to the wiki. And we welcome anyone who wants to help reorganize or edit existing content.
+## Fix the Wiki
-- **Wiki**: [**Browse**]({{ site.urls.wiki }})
+We depend on community contributions and edits to keep our documentation informative and relevant. If you have a useful FAQ, walkthrough, or article, please add it to the wiki.
-**Fix the website** - Our website source code is publicly available, and we graciously accept pull requests!
+* **Wiki**: [Browse]({{ site.urls.wiki }})
-- **Website**: [**Browse**](https://github.com/jruby/jruby.github.io) | [**Checkout**](git://github.com/jruby/jruby.github.io.git)
+## Fix the Website
-[prezi]: https://prezi.com/tsuouxb3z4ln/jruby-hacking-guide/
-[pullrequest]: https://help.github.com/articles/using-pull-requests
+Our website source code is publicly available and we graciously accept pull requests!
+* **Website**: [Browse](https://github.com/jruby/jruby.github.io)
+* **Clone**: `git clone https://github.com/jruby/jruby.github.io.git`
diff --git a/documentation.markdown b/documentation.markdown
index ef100843..9dc56dcb 100644
--- a/documentation.markdown
+++ b/documentation.markdown
@@ -1,25 +1,28 @@
---
layout: main
title: Documentation
+description: "JRuby API docs, articles, and the community wiki."
---
# Docs and Articles
-### API Docs
+## API Docs
* [Browse JRuby API Javadocs online](https://javadoc.io/doc/org.jruby/jruby-base)
-We greatly appreciate patches and pull requests for documentation
-updates. Please visit the [**Contribute**](/contribute) page for more
-information on sending JRuby source patches.
+We greatly appreciate patches and pull requests for documentation updates. Please visit the [Contribute](/contribute) page for more information on sending JRuby source patches.
-### Articles
+## Articles
* [Riding JRuby on Rails on SAP NetWeaver Cloud: the cloud case](https://blogs.sap.com/2013/02/04/riding-jruby-on-rails-on-sap-netweaver-cloud-the-cloud-case/)
* [RailsCasts #376: JRuby Basics](http://railscasts.com/episodes/376-jruby-basics?view=asciicast)
* [Zero-Downtime Deploys with JRuby](https://deployingjruby.blogspot.com/2012/05/zero-downtime-deploys-with-jruby.html)
* [JRuby Rake Vs Ant](https://watchitlater.com/blog/2011/03/jruby-rake-vs-ant/)
-### Wiki
+## Wiki
-* Visit the
JRuby Wiki here .
+Visit the [JRuby Wiki]({{ site.urls.wiki }}) — maintained by the community with guides, FAQs, and deep-dive articles.
+
+## JRuby 10 Series
+
+* [JRuby 10, Part 1: What's New](https://blog.jruby.org/2025/04/jruby-10-part-1-whats-new)
diff --git a/download.html b/download.html
index f5c62839..86dbc884 100644
--- a/download.html
+++ b/download.html
@@ -1,85 +1,67 @@
---
-layout: main
+layout: default
title: Downloads
+description: "Download the latest JRuby releases: binaries, Windows installers, source and the complete JAR."
---
-
JRuby Downloads
+
+
Download JRuby
-
Current Release: JRuby 10.1.3.0
+
JRuby is available in several packaging formats. Choose the latest stable release for new projects.
-
JRuby 10.1.3.0 is our point release of our Ruby 4.0 support. Please check out our release notes for more information.
+ {% for release in site.releases %}
+ {% assign v = release.version %}
+ {% assign w = v | replace: ".", "_" %}
+ {% assign dist = site.urls.maven | append: "/jruby-dist/" | append: v | append: "/jruby-dist-" | append: v %}
+ {% assign ghr = site.urls.ghr | append: "/" | append: v | append: "/jruby_windows_" %}
+ {% assign post_title = "JRuby " | append: v | append: " Released" %}
+ {% assign post = site.posts | where: "title", post_title | first %}
+
+
+
+
{{ release.description }} Release notes →
+
+
+
+ Package
+ Size
+ Checksum
+
+
+
+ {% assign u = dist | append: "-bin.tar.gz" %}{% include download_row.html label="Binary (tar.gz)" url=u size=release.sizes.tar sha256=true %}
+ {% assign u = dist | append: "-bin.zip" %}{% include download_row.html label="Binary (zip)" url=u size=release.sizes.zip sha256=true %}
+ {% assign u = ghr | append: "x64_" | append: w | append: ".exe" %}{% include download_row.html label="Windows Installer (x64)" url=u size=release.sizes.exe64 %}
+ {% assign u = ghr | append: w | append: ".exe" %}{% include download_row.html label="Windows Installer" url=u size=release.sizes.exe %}
+ {% assign u = dist | append: "-src.zip" %}{% include download_row.html label="Source (zip)" url=u size=release.sizes.src sha256=true %}
+ {% assign u = site.urls.maven | append: "/jruby-complete/" | append: v | append: "/jruby-complete-" | append: v | append: ".jar" %}{% include download_row.html label="Complete JAR" url=u size=release.sizes.jar sha256=true %}
+
+
+
+
+ {% endfor %}
-
-JRuby 10.1.3.0 Binary .tar.gz
-(md5 , sha1 , sha256 )
-JRuby 10.1.3.0 Binary .zip
-(md5 , sha1 , sha256 )
-JRuby 10.1.3.0 Windows Executable
-(md5 , sha1 , sha256 )
-JRuby 10.1.3.0 Windows Executable (x64)
-(md5 , sha1 , sha256 )
-
-JRuby 10.1.3.0 Source .zip
-(md5 , sha1 , sha256 )
-JRuby 10.1.3.0 Complete .jar
-(md5 , sha1 , sha256 )
-JRuby-jars 10.1.3.0.gem
-
+
Nightly Builds
+
Nightly snapshots are available for testing upcoming features. See the nightly builds page for details.
-
JRuby 10.0.8.0 is our point release of our Ruby 3.4.x support. Please check out our release notes for more information.
+
Archived Releases
+
All historical JRuby releases are listed in the release archive and available on Maven Central .
-
-JRuby 10.0.8.0 Binary .tar.gz
-(md5 , sha1 , sha256 )
-JRuby 10.0.8.0 Binary .zip
-(md5 , sha1 , sha256 )
-JRuby 10.0.8.0 Windows Executable
-(md5 , sha1 , sha256 )
-JRuby 10.0.8.0 Windows Executable (x64)
-(md5 , sha1 , sha256 )
-
-JRuby 10.0.8.0 Source .zip
-(md5 , sha1 , sha256 )
-JRuby 10.0.8.0 Complete .jar
-(md5 , sha1 , sha256 )
-JRuby-jars 10.0.8.0.gem
-
+
Other Installation Methods
+
RVM
+
rvm install jruby
-
JRuby 9.4.15.0 is our point release of our Ruby 3.1.x support. Please check out our release notes for more information.
+
rbenv + ruby-build
+
rbenv install jruby-{{ site.release.version }}
-
-JRuby 9.4.15.0 Binary .tar.gz
-(md5 , sha1 , sha256 )
-JRuby 9.4.15.0 Binary .zip
-(md5 , sha1 , sha256 )
-JRuby 9.4.15.0 Windows Executable
-(md5 , sha1 , sha256 )
-JRuby 9.4.15.0 Windows Executable (x64)
-(md5 , sha1 , sha256 )
-
-JRuby 9.4.15.0 Source .zip
-(md5 , sha1 , sha256 )
-JRuby 9.4.15.0 Complete .jar
-(md5 , sha1 , sha256 )
-JRuby-jars 9.4.15.0.gem
-
+
Homebrew (macOS)
+
brew install jruby
-
-
Nightly Builds
-
-Nightly builds of stable (10.0.x) and development (10.1.x)
-
-
-
All Previous Releases
-
-All Releases
-
+
See JRuby Distributions on the wiki for OS packages and other options.
+
diff --git a/files/downloads/0.9.0/index.html b/files/downloads/0.9.0/index.html
index 5570bb59..e62a2076 100644
--- a/files/downloads/0.9.0/index.html
+++ b/files/downloads/0.9.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/0.9.0
- ..
+ ..
jruby-bin-0.9.0.tar.gz
jruby-src-0.9.0.tar.gz
diff --git a/files/downloads/0.9.1/index.html b/files/downloads/0.9.1/index.html
index 0ac6b731..29558b23 100644
--- a/files/downloads/0.9.1/index.html
+++ b/files/downloads/0.9.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/0.9.1
- ..
+ ..
jruby-bin-0.9.1.tar.gz
jruby-src-0.9.1.tar.gz
diff --git a/files/downloads/0.9.2/index.html b/files/downloads/0.9.2/index.html
index 7df2e5f6..3550f3f4 100644
--- a/files/downloads/0.9.2/index.html
+++ b/files/downloads/0.9.2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/0.9.2
- ..
+ ..
jruby-console-0.9.2.jar
jruby-java4-bin-0.9.2.tar.gz
jruby-java5-bin-0.9.2.tar.gz
diff --git a/files/downloads/0.9.8/index.html b/files/downloads/0.9.8/index.html
index 312a42df..337b06b5 100644
--- a/files/downloads/0.9.8/index.html
+++ b/files/downloads/0.9.8/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/0.9.8
- ..
+ ..
jruby-bin-0.9.8.tar.gz
jruby-src-0.9.8.tar.gz
diff --git a/files/downloads/0.9.9/index.html b/files/downloads/0.9.9/index.html
index 47bf6d76..81960aed 100644
--- a/files/downloads/0.9.9/index.html
+++ b/files/downloads/0.9.9/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/0.9.9
- ..
+ ..
jruby-bin-0.9.9.tar.gz
jruby-src-0.9.9.tar.gz
diff --git a/files/downloads/1.0.0RC1/index.html b/files/downloads/1.0.0RC1/index.html
index 44d0b920..bc8867d3 100644
--- a/files/downloads/1.0.0RC1/index.html
+++ b/files/downloads/1.0.0RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0.0RC1
- ..
+ ..
jruby-bin-1.0.0RC1.tar.gz
jruby-bin-1.0.0RC1.zip
jruby-src-1.0.0RC1.tar.gz
diff --git a/files/downloads/1.0.0RC2/index.html b/files/downloads/1.0.0RC2/index.html
index 54d6edc0..5c6c75d3 100644
--- a/files/downloads/1.0.0RC2/index.html
+++ b/files/downloads/1.0.0RC2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0.0RC2
- ..
+ ..
jruby-bin-1.0.0RC2.tar.gz
jruby-bin-1.0.0RC2.zip
jruby-src-1.0.0RC2.tar.gz
diff --git a/files/downloads/1.0.0RC3/index.html b/files/downloads/1.0.0RC3/index.html
index 594ab562..c720976a 100644
--- a/files/downloads/1.0.0RC3/index.html
+++ b/files/downloads/1.0.0RC3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0.0RC3
- ..
+ ..
jruby-bin-1.0.0RC3.tar.gz
jruby-bin-1.0.0RC3.zip
jruby-src-1.0.0RC3.tar.gz
diff --git a/files/downloads/1.0.1/index.html b/files/downloads/1.0.1/index.html
index d839ebd9..dced3e19 100644
--- a/files/downloads/1.0.1/index.html
+++ b/files/downloads/1.0.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0.1
- ..
+ ..
jruby-bin-1.0.1.tar.gz
jruby-bin-1.0.1.tar.gz.md5
jruby-bin-1.0.1.tar.gz.sha1
diff --git a/files/downloads/1.0.2/index.html b/files/downloads/1.0.2/index.html
index 236c86c5..5ecc63e3 100644
--- a/files/downloads/1.0.2/index.html
+++ b/files/downloads/1.0.2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0.2
- ..
+ ..
jruby-bin-1.0.2.tar.gz
jruby-bin-1.0.2.tar.gz.md5
jruby-bin-1.0.2.tar.gz.sha1
diff --git a/files/downloads/1.0.3/index.html b/files/downloads/1.0.3/index.html
index 6bf3610c..151550ca 100644
--- a/files/downloads/1.0.3/index.html
+++ b/files/downloads/1.0.3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0.3
- ..
+ ..
jruby-bin-1.0.3.tar.gz
jruby-bin-1.0.3.tar.gz.md5
jruby-bin-1.0.3.tar.gz.sha1
diff --git a/files/downloads/1.0/index.html b/files/downloads/1.0/index.html
index 88054b9d..80b82dbe 100644
--- a/files/downloads/1.0/index.html
+++ b/files/downloads/1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.0
- ..
+ ..
jruby-bin-1.0.tar.gz
jruby-bin-1.0.tar.gz.md5
jruby-bin-1.0.tar.gz.sha1
diff --git a/files/downloads/1.1.1/index.html b/files/downloads/1.1.1/index.html
index 987e9afc..1880c4d5 100644
--- a/files/downloads/1.1.1/index.html
+++ b/files/downloads/1.1.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.1
- ..
+ ..
jruby-bin-1.1.1.tar.gz
jruby-bin-1.1.1.tar.gz.md5
jruby-bin-1.1.1.tar.gz.sha1
diff --git a/files/downloads/1.1.2/index.html b/files/downloads/1.1.2/index.html
index 2ad2cf9d..665f1a8c 100644
--- a/files/downloads/1.1.2/index.html
+++ b/files/downloads/1.1.2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.2
- ..
+ ..
jruby-bin-1.1.2.tar.gz
jruby-bin-1.1.2.tar.gz.md5
jruby-bin-1.1.2.tar.gz.sha1
diff --git a/files/downloads/1.1.3/index.html b/files/downloads/1.1.3/index.html
index fc3ee5d1..cf5ba4dc 100644
--- a/files/downloads/1.1.3/index.html
+++ b/files/downloads/1.1.3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.3
- ..
+ ..
jruby-bin-1.1.3.tar.gz
jruby-bin-1.1.3.tar.gz.md5
jruby-bin-1.1.3.tar.gz.sha1
diff --git a/files/downloads/1.1.4/index.html b/files/downloads/1.1.4/index.html
index 1873aaa5..9a9fa031 100644
--- a/files/downloads/1.1.4/index.html
+++ b/files/downloads/1.1.4/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.4
- ..
+ ..
jruby-bin-1.1.4.tar.gz
jruby-bin-1.1.4.tar.gz.md5
jruby-bin-1.1.4.tar.gz.sha1
diff --git a/files/downloads/1.1.5/index.html b/files/downloads/1.1.5/index.html
index e00500b5..a14097c9 100644
--- a/files/downloads/1.1.5/index.html
+++ b/files/downloads/1.1.5/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.5
- ..
+ ..
jruby-bin-1.1.5.tar.gz
jruby-bin-1.1.5.tar.gz.md5
jruby-bin-1.1.5.tar.gz.sha1
diff --git a/files/downloads/1.1.6/index.html b/files/downloads/1.1.6/index.html
index d9e7d73d..15ce1bbc 100644
--- a/files/downloads/1.1.6/index.html
+++ b/files/downloads/1.1.6/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.6
- ..
+ ..
jruby-bin-1.1.6.tar.gz
jruby-bin-1.1.6.tar.gz.md5
jruby-bin-1.1.6.tar.gz.sha1
diff --git a/files/downloads/1.1.6RC1/index.html b/files/downloads/1.1.6RC1/index.html
index c224498d..c986aafd 100644
--- a/files/downloads/1.1.6RC1/index.html
+++ b/files/downloads/1.1.6RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1.6RC1
- ..
+ ..
jruby-bin-1.1.6RC1.tar.gz
jruby-bin-1.1.6RC1.tar.gz.md5
jruby-bin-1.1.6RC1.tar.gz.sha1
diff --git a/files/downloads/1.1/index.html b/files/downloads/1.1/index.html
index f1528f7e..a6aa6f36 100644
--- a/files/downloads/1.1/index.html
+++ b/files/downloads/1.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1
- ..
+ ..
jruby-bin-1.1.tar.gz
jruby-bin-1.1.tar.gz.md5
jruby-bin-1.1.tar.gz.sha1
diff --git a/files/downloads/1.1RC1/index.html b/files/downloads/1.1RC1/index.html
index d1656fd6..015633df 100644
--- a/files/downloads/1.1RC1/index.html
+++ b/files/downloads/1.1RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1RC1
- ..
+ ..
jruby-bin-1.1RC1.tar.gz
jruby-bin-1.1RC1.tar.gz.md5
jruby-bin-1.1RC1.tar.gz.sha1
diff --git a/files/downloads/1.1RC2/index.html b/files/downloads/1.1RC2/index.html
index 726fc9d8..8ede8bfb 100644
--- a/files/downloads/1.1RC2/index.html
+++ b/files/downloads/1.1RC2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1RC2
- ..
+ ..
jruby-bin-1.1RC2.tar.gz
jruby-bin-1.1RC2.tar.gz.md5
jruby-bin-1.1RC2.tar.gz.sha1
diff --git a/files/downloads/1.1RC3/index.html b/files/downloads/1.1RC3/index.html
index 38051d85..43af9120 100644
--- a/files/downloads/1.1RC3/index.html
+++ b/files/downloads/1.1RC3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1RC3
- ..
+ ..
jruby-bin-1.1RC3.tar.gz
jruby-bin-1.1RC3.tar.gz.md5
jruby-bin-1.1RC3.tar.gz.sha1
diff --git a/files/downloads/1.1b1/index.html b/files/downloads/1.1b1/index.html
index 45bbfcc4..b8601220 100644
--- a/files/downloads/1.1b1/index.html
+++ b/files/downloads/1.1b1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.1b1
- ..
+ ..
jruby-bin-1.1b1.tar.gz
jruby-bin-1.1b1.tar.gz.md5
jruby-bin-1.1b1.tar.gz.sha1
diff --git a/files/downloads/1.2.0/index.html b/files/downloads/1.2.0/index.html
index 5eb59de4..65ff2ece 100644
--- a/files/downloads/1.2.0/index.html
+++ b/files/downloads/1.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.2.0
- ..
+ ..
jruby-bin-1.2.0.tar.gz
jruby-bin-1.2.0.tar.gz.md5
jruby-bin-1.2.0.tar.gz.sha1
diff --git a/files/downloads/1.2.0RC1/index.html b/files/downloads/1.2.0RC1/index.html
index 5ddd9ac6..ac6ed6b8 100644
--- a/files/downloads/1.2.0RC1/index.html
+++ b/files/downloads/1.2.0RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.2.0RC1
- ..
+ ..
jruby-bin-1.2.0RC1.tar.gz
jruby-bin-1.2.0RC1.tar.gz.md5
jruby-bin-1.2.0RC1.tar.gz.sha1
diff --git a/files/downloads/1.2.0RC2/index.html b/files/downloads/1.2.0RC2/index.html
index e2847794..15c66595 100644
--- a/files/downloads/1.2.0RC2/index.html
+++ b/files/downloads/1.2.0RC2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.2.0RC2
- ..
+ ..
jruby-bin-1.2.0RC2.tar.gz
jruby-bin-1.2.0RC2.tar.gz.md5
jruby-bin-1.2.0RC2.tar.gz.sha1
diff --git a/files/downloads/1.3.0/index.html b/files/downloads/1.3.0/index.html
index c2ac1625..db023030 100644
--- a/files/downloads/1.3.0/index.html
+++ b/files/downloads/1.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.3.0
- ..
+ ..
jruby-bin-1.3.0.tar.gz
jruby-bin-1.3.0.tar.gz.md5
jruby-bin-1.3.0.tar.gz.sha1
diff --git a/files/downloads/1.3.0RC1/index.html b/files/downloads/1.3.0RC1/index.html
index 0a6387d5..e22716c2 100644
--- a/files/downloads/1.3.0RC1/index.html
+++ b/files/downloads/1.3.0RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.3.0RC1
- ..
+ ..
jruby-bin-1.3.0RC1.tar.gz
jruby-bin-1.3.0RC1.tar.gz.md5
jruby-bin-1.3.0RC1.tar.gz.sha1
diff --git a/files/downloads/1.3.0RC2/index.html b/files/downloads/1.3.0RC2/index.html
index 9157951b..53e39d0f 100644
--- a/files/downloads/1.3.0RC2/index.html
+++ b/files/downloads/1.3.0RC2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.3.0RC2
- ..
+ ..
jruby-bin-1.3.0RC2.tar.gz
jruby-bin-1.3.0RC2.tar.gz.md5
jruby-bin-1.3.0RC2.tar.gz.sha1
diff --git a/files/downloads/1.3.1/index.html b/files/downloads/1.3.1/index.html
index 5eb9a509..2cfbc259 100644
--- a/files/downloads/1.3.1/index.html
+++ b/files/downloads/1.3.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.3.1
- ..
+ ..
jruby-bin-1.3.1.tar.gz
jruby-bin-1.3.1.tar.gz.md5
jruby-bin-1.3.1.tar.gz.sha1
diff --git a/files/downloads/1.4.0/index.html b/files/downloads/1.4.0/index.html
index 8dcdf4ba..9ce17a50 100644
--- a/files/downloads/1.4.0/index.html
+++ b/files/downloads/1.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.4.0
- ..
+ ..
jruby-bin-1.4.0.tar.gz
jruby-bin-1.4.0.tar.gz.md5
jruby-bin-1.4.0.tar.gz.sha1
diff --git a/files/downloads/1.4.0RC1/index.html b/files/downloads/1.4.0RC1/index.html
index 4fa5d04a..de675962 100644
--- a/files/downloads/1.4.0RC1/index.html
+++ b/files/downloads/1.4.0RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.4.0RC1
- ..
+ ..
jruby-bin-1.4.0RC1.tar.gz
jruby-bin-1.4.0RC1.tar.gz.md5
jruby-bin-1.4.0RC1.tar.gz.sha1
diff --git a/files/downloads/1.4.0RC2/index.html b/files/downloads/1.4.0RC2/index.html
index a0551f93..5363f9b2 100644
--- a/files/downloads/1.4.0RC2/index.html
+++ b/files/downloads/1.4.0RC2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.4.0RC2
- ..
+ ..
jruby-bin-1.4.0RC2.tar.gz
jruby-bin-1.4.0RC2.tar.gz.md5
jruby-bin-1.4.0RC2.tar.gz.sha1
diff --git a/files/downloads/1.4.0RC3/index.html b/files/downloads/1.4.0RC3/index.html
index 1849f5ae..f4c254c7 100644
--- a/files/downloads/1.4.0RC3/index.html
+++ b/files/downloads/1.4.0RC3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.4.0RC3
- ..
+ ..
jruby-bin-1.4.0RC3.tar.gz
jruby-bin-1.4.0RC3.tar.gz.md5
jruby-bin-1.4.0RC3.tar.gz.sha1
diff --git a/files/downloads/1.4.1/index.html b/files/downloads/1.4.1/index.html
index 37654546..2c269d6b 100644
--- a/files/downloads/1.4.1/index.html
+++ b/files/downloads/1.4.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.4.1
- ..
+ ..
jruby-bin-1.4.1.tar.gz
jruby-bin-1.4.1.tar.gz.md5
jruby-bin-1.4.1.tar.gz.sha1
diff --git a/files/downloads/1.5.0.RC1/index.html b/files/downloads/1.5.0.RC1/index.html
index 21b952a8..68e2f3af 100644
--- a/files/downloads/1.5.0.RC1/index.html
+++ b/files/downloads/1.5.0.RC1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.5.0.RC1
- ..
+ ..
jruby-bin-1.5.0.RC1.tar.gz
jruby-bin-1.5.0.RC1.tar.gz.md5
jruby-bin-1.5.0.RC1.tar.gz.sha1
diff --git a/files/downloads/1.5.0.RC2/index.html b/files/downloads/1.5.0.RC2/index.html
index 32a35667..22703430 100644
--- a/files/downloads/1.5.0.RC2/index.html
+++ b/files/downloads/1.5.0.RC2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.5.0.RC2
- ..
+ ..
jruby-bin-1.5.0.RC2.tar.gz
jruby-bin-1.5.0.RC2.tar.gz.md5
jruby-bin-1.5.0.RC2.tar.gz.sha1
diff --git a/files/downloads/1.5.0.RC3/index.html b/files/downloads/1.5.0.RC3/index.html
index 0617b519..a07b005b 100644
--- a/files/downloads/1.5.0.RC3/index.html
+++ b/files/downloads/1.5.0.RC3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.5.0.RC3
- ..
+ ..
jruby-bin-1.5.0.RC3.tar.gz
jruby-bin-1.5.0.RC3.tar.gz.md5
jruby-bin-1.5.0.RC3.tar.gz.sha1
diff --git a/files/downloads/1.5.0/index.html b/files/downloads/1.5.0/index.html
index 9034fb4a..ef40228a 100644
--- a/files/downloads/1.5.0/index.html
+++ b/files/downloads/1.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.5.0
- ..
+ ..
jruby-bin-1.5.0.tar.gz
jruby-bin-1.5.0.tar.gz.md5
jruby-bin-1.5.0.tar.gz.sha1
diff --git a/files/downloads/1.5.1/index.html b/files/downloads/1.5.1/index.html
index f8cdcbcf..dd12b436 100644
--- a/files/downloads/1.5.1/index.html
+++ b/files/downloads/1.5.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.5.1
- ..
+ ..
jruby-bin-1.5.1.tar.gz
jruby-bin-1.5.1.tar.gz.md5
jruby-bin-1.5.1.tar.gz.sha1
diff --git a/files/downloads/1.7.0/index.html b/files/downloads/1.7.0/index.html
index 4675f6e7..b8bdf08f 100644
--- a/files/downloads/1.7.0/index.html
+++ b/files/downloads/1.7.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.0
- ..
+ ..
JRuby-1.7.0.dmg
jruby-bin-1.7.0.tar.gz
jruby-bin-1.7.0.tar.gz.md5
diff --git a/files/downloads/1.7.1/index.html b/files/downloads/1.7.1/index.html
index 4ad3f97d..a0a511a4 100644
--- a/files/downloads/1.7.1/index.html
+++ b/files/downloads/1.7.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.1
- ..
+ ..
JRuby-1.7.1.dmg
jruby-bin-1.7.1.tar.gz
jruby-bin-1.7.1.tar.gz.md5
diff --git a/files/downloads/1.7.10/index.html b/files/downloads/1.7.10/index.html
index 8af3ee5a..edd7e965 100644
--- a/files/downloads/1.7.10/index.html
+++ b/files/downloads/1.7.10/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.10
- ..
+ ..
jruby-bin-1.7.10.tar.gz
jruby-bin-1.7.10.tar.gz.md5
jruby-bin-1.7.10.tar.gz.sha1
diff --git a/files/downloads/1.7.11/index.html b/files/downloads/1.7.11/index.html
index 020db937..af79c5f4 100644
--- a/files/downloads/1.7.11/index.html
+++ b/files/downloads/1.7.11/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.11
- ..
+ ..
jruby-bin-1.7.11.tar.gz
jruby-bin-1.7.11.tar.gz.md5
jruby-bin-1.7.11.tar.gz.sha1
diff --git a/files/downloads/1.7.12/index.html b/files/downloads/1.7.12/index.html
index 00c002f3..b16ae71c 100644
--- a/files/downloads/1.7.12/index.html
+++ b/files/downloads/1.7.12/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.12
- ..
+ ..
*.rxr.md5
jruby-bin-1.7.12.tar.gz
jruby-bin-1.7.12.tar.gz.md5
diff --git a/files/downloads/1.7.13/index.html b/files/downloads/1.7.13/index.html
index 49d433f3..508dbab6 100644
--- a/files/downloads/1.7.13/index.html
+++ b/files/downloads/1.7.13/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.13
- ..
+ ..
jruby-bin-1.7.13.tar.gz
jruby-bin-1.7.13.tar.gz.md5
jruby-bin-1.7.13.tar.gz.sha1
diff --git a/files/downloads/1.7.14/index.html b/files/downloads/1.7.14/index.html
index 4effa9b5..a0c3b4d8 100644
--- a/files/downloads/1.7.14/index.html
+++ b/files/downloads/1.7.14/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.14
- ..
+ ..
jruby-bin-1.7.14.tar.gz
jruby-bin-1.7.14.tar.gz.md5
jruby-bin-1.7.14.tar.gz.sha1
diff --git a/files/downloads/1.7.15/index.html b/files/downloads/1.7.15/index.html
index f31b8a36..45d0a980 100644
--- a/files/downloads/1.7.15/index.html
+++ b/files/downloads/1.7.15/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.15
- ..
+ ..
jruby-bin-1.7.15.tar.gz
jruby-bin-1.7.15.tar.gz.md5
jruby-bin-1.7.15.tar.gz.sha1
diff --git a/files/downloads/1.7.16.1/index.html b/files/downloads/1.7.16.1/index.html
index d0d3ff76..d3c02f82 100644
--- a/files/downloads/1.7.16.1/index.html
+++ b/files/downloads/1.7.16.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.16.1
- ..
+ ..
jruby-bin-1.7.16.1.tar.gz
jruby-bin-1.7.16.1.tar.gz.md5
jruby-bin-1.7.16.1.tar.gz.sha1
diff --git a/files/downloads/1.7.16.2/index.html b/files/downloads/1.7.16.2/index.html
index f86b3c1f..05eff9c5 100644
--- a/files/downloads/1.7.16.2/index.html
+++ b/files/downloads/1.7.16.2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.16.2
- ..
+ ..
jruby-bin-1.7.16.2.tar.gz
jruby-bin-1.7.16.2.tar.gz.md5
jruby-bin-1.7.16.2.tar.gz.sha1
diff --git a/files/downloads/1.7.16/index.html b/files/downloads/1.7.16/index.html
index 629af0f1..ea8ac50d 100644
--- a/files/downloads/1.7.16/index.html
+++ b/files/downloads/1.7.16/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.16
- ..
+ ..
jruby-bin-1.7.16.tar.gz
jruby-bin-1.7.16.tar.gz.md5
jruby-bin-1.7.16.tar.gz.sha1
diff --git a/files/downloads/1.7.17/index.html b/files/downloads/1.7.17/index.html
index 7d090a97..cc01f24b 100644
--- a/files/downloads/1.7.17/index.html
+++ b/files/downloads/1.7.17/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.17
- ..
+ ..
jruby-bin-1.7.17.tar.gz
jruby-bin-1.7.17.tar.gz.md5
jruby-bin-1.7.17.tar.gz.sha1
diff --git a/files/downloads/1.7.18/index.html b/files/downloads/1.7.18/index.html
index dd94252f..a60776b0 100644
--- a/files/downloads/1.7.18/index.html
+++ b/files/downloads/1.7.18/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.18
- ..
+ ..
jruby-bin-1.7.18.tar.gz
jruby-bin-1.7.18.tar.gz.md5
jruby-bin-1.7.18.tar.gz.sha1
diff --git a/files/downloads/1.7.19/index.html b/files/downloads/1.7.19/index.html
index c62c4b24..3556a40b 100644
--- a/files/downloads/1.7.19/index.html
+++ b/files/downloads/1.7.19/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.19
- ..
+ ..
jruby-bin-1.7.19.tar.gz
jruby-bin-1.7.19.tar.gz.md5
jruby-bin-1.7.19.tar.gz.sha1
diff --git a/files/downloads/1.7.2/index.html b/files/downloads/1.7.2/index.html
index 610a20c5..5b677713 100644
--- a/files/downloads/1.7.2/index.html
+++ b/files/downloads/1.7.2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.2
- ..
+ ..
JRuby-1.7.2.dmg
jruby-bin-1.7.2.tar.gz
jruby-bin-1.7.2.tar.gz.md5
diff --git a/files/downloads/1.7.20.1/index.html b/files/downloads/1.7.20.1/index.html
index 56ae233f..d7e8dc54 100644
--- a/files/downloads/1.7.20.1/index.html
+++ b/files/downloads/1.7.20.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.20.1
- ..
+ ..
jruby-bin-1.7.20.1.tar.gz
jruby-bin-1.7.20.1.tar.gz.md5
jruby-bin-1.7.20.1.tar.gz.sha1
diff --git a/files/downloads/1.7.20/index.html b/files/downloads/1.7.20/index.html
index ea1825f3..bdde8dfa 100644
--- a/files/downloads/1.7.20/index.html
+++ b/files/downloads/1.7.20/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.20
- ..
+ ..
jruby-bin-1.7.20.tar.gz
jruby-bin-1.7.20.tar.gz.md5
jruby-bin-1.7.20.tar.gz.sha1
diff --git a/files/downloads/1.7.21/index.html b/files/downloads/1.7.21/index.html
index 0a4c4a7c..4a1e8479 100644
--- a/files/downloads/1.7.21/index.html
+++ b/files/downloads/1.7.21/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.21
- ..
+ ..
jruby-bin-1.7.21.tar.gz
jruby-bin-1.7.21.tar.gz.md5
jruby-bin-1.7.21.tar.gz.sha1
diff --git a/files/downloads/1.7.22/index.html b/files/downloads/1.7.22/index.html
index 56c12eac..8d116e83 100644
--- a/files/downloads/1.7.22/index.html
+++ b/files/downloads/1.7.22/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.22
- ..
+ ..
jruby-bin-1.7.22.tar.gz
jruby-bin-1.7.22.tar.gz.md5
jruby-bin-1.7.22.tar.gz.sha1
diff --git a/files/downloads/1.7.23/index.html b/files/downloads/1.7.23/index.html
index f5305345..6841637c 100644
--- a/files/downloads/1.7.23/index.html
+++ b/files/downloads/1.7.23/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.23
- ..
+ ..
jruby-bin-1.7.23.tar.gz
jruby-bin-1.7.23.tar.gz.md5
jruby-bin-1.7.23.tar.gz.sha1
diff --git a/files/downloads/1.7.24/index.html b/files/downloads/1.7.24/index.html
index 808d541d..9d4b70f1 100644
--- a/files/downloads/1.7.24/index.html
+++ b/files/downloads/1.7.24/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.24
- ..
+ ..
jruby-bin-1.7.24.tar.gz
jruby-bin-1.7.24.tar.gz.md5
jruby-bin-1.7.24.tar.gz.sha1
diff --git a/files/downloads/1.7.25/index.html b/files/downloads/1.7.25/index.html
index 841d5840..ae798942 100644
--- a/files/downloads/1.7.25/index.html
+++ b/files/downloads/1.7.25/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.25
- ..
+ ..
jruby-bin-1.7.25.tar.gz
jruby-bin-1.7.25.tar.gz.md5
jruby-bin-1.7.25.tar.gz.sha1
diff --git a/files/downloads/1.7.26/index.html b/files/downloads/1.7.26/index.html
index f55cd70b..ef0e65f5 100644
--- a/files/downloads/1.7.26/index.html
+++ b/files/downloads/1.7.26/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.26
- ..
+ ..
jruby-bin-1.7.26.tar.gz
jruby-bin-1.7.26.tar.gz.md5
jruby-bin-1.7.26.tar.gz.sha1
diff --git a/files/downloads/1.7.27/index.html b/files/downloads/1.7.27/index.html
index f27992fc..81d29a53 100644
--- a/files/downloads/1.7.27/index.html
+++ b/files/downloads/1.7.27/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.27
- ..
+ ..
jruby-bin-1.7.27.tar.gz
jruby-bin-1.7.27.tar.gz.md5
jruby-bin-1.7.27.tar.gz.sha1
diff --git a/files/downloads/1.7.3/index.html b/files/downloads/1.7.3/index.html
index 1efdb6cc..934d3e86 100644
--- a/files/downloads/1.7.3/index.html
+++ b/files/downloads/1.7.3/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.3
- ..
+ ..
JRuby-1.7.3.dmg
jruby-bin-1.7.3.tar.gz
jruby-bin-1.7.3.tar.gz.md5
diff --git a/files/downloads/1.7.4/index.html b/files/downloads/1.7.4/index.html
index ee55dc6a..668b8966 100644
--- a/files/downloads/1.7.4/index.html
+++ b/files/downloads/1.7.4/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.4
- ..
+ ..
JRuby-1.7.4.dmg
jruby-bin-1.7.4.tar.gz
jruby-bin-1.7.4.tar.gz.md5
diff --git a/files/downloads/1.7.5/index.html b/files/downloads/1.7.5/index.html
index 6bf797a8..4c67312f 100644
--- a/files/downloads/1.7.5/index.html
+++ b/files/downloads/1.7.5/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.5
- ..
+ ..
jruby-bin-1.7.5.tar.gz
jruby-bin-1.7.5.tar.gz.md5
jruby-bin-1.7.5.tar.gz.sha1
diff --git a/files/downloads/1.7.6/index.html b/files/downloads/1.7.6/index.html
index 4c16038e..395551ea 100644
--- a/files/downloads/1.7.6/index.html
+++ b/files/downloads/1.7.6/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.6
- ..
+ ..
jruby-bin-1.7.6.tar.gz
jruby-bin-1.7.6.tar.gz.md5
jruby-bin-1.7.6.tar.gz.sha1
diff --git a/files/downloads/1.7.7/index.html b/files/downloads/1.7.7/index.html
index 7a9abb68..6bce0914 100644
--- a/files/downloads/1.7.7/index.html
+++ b/files/downloads/1.7.7/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.7
- ..
+ ..
jruby-bin-1.7.7.tar.gz
jruby-bin-1.7.7.tar.gz.md5
jruby-bin-1.7.7.tar.gz.sha1
diff --git a/files/downloads/1.7.8/index.html b/files/downloads/1.7.8/index.html
index 85617365..202628e4 100644
--- a/files/downloads/1.7.8/index.html
+++ b/files/downloads/1.7.8/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.8
- ..
+ ..
jruby-bin-1.7.8.tar.gz
jruby-bin-1.7.8.tar.gz.md5
jruby-bin-1.7.8.tar.gz.sha1
diff --git a/files/downloads/1.7.9/index.html b/files/downloads/1.7.9/index.html
index 8700b293..ee21fec1 100644
--- a/files/downloads/1.7.9/index.html
+++ b/files/downloads/1.7.9/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/1.7.9
- ..
+ ..
jruby-bin-1.7.9.tar.gz
jruby-bin-1.7.9.tar.gz.md5
jruby-bin-1.7.9.tar.gz.sha1
diff --git a/files/downloads/10.0.0.0/index.html b/files/downloads/10.0.0.0/index.html
index 86ce9fac..747ed5f5 100644
--- a/files/downloads/10.0.0.0/index.html
+++ b/files/downloads/10.0.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.0.0
- ..
+ ..
jruby-bin-10.0.0.0.tar.gz
jruby-bin-10.0.0.0.tar.gz.md5
jruby-bin-10.0.0.0.tar.gz.sha1
diff --git a/files/downloads/10.0.0.1/index.html b/files/downloads/10.0.0.1/index.html
index fd1326b7..90763205 100644
--- a/files/downloads/10.0.0.1/index.html
+++ b/files/downloads/10.0.0.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.0.1
- ..
+ ..
jruby-bin-10.0.0.1.tar.gz
jruby-bin-10.0.0.1.tar.gz.md5
jruby-bin-10.0.0.1.tar.gz.sha1
diff --git a/files/downloads/10.0.1.0/index.html b/files/downloads/10.0.1.0/index.html
index 42254270..df144219 100644
--- a/files/downloads/10.0.1.0/index.html
+++ b/files/downloads/10.0.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.1.0
- ..
+ ..
jruby-bin-10.0.1.0.tar.gz
jruby-bin-10.0.1.0.tar.gz.md5
jruby-bin-10.0.1.0.tar.gz.sha1
diff --git a/files/downloads/10.0.2.0/index.html b/files/downloads/10.0.2.0/index.html
index 0017527d..cdab6e3d 100644
--- a/files/downloads/10.0.2.0/index.html
+++ b/files/downloads/10.0.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.2.0
- ..
+ ..
jruby-bin-10.0.2.0.tar.gz
jruby-bin-10.0.2.0.tar.gz.md5
jruby-bin-10.0.2.0.tar.gz.sha1
diff --git a/files/downloads/10.0.3.0/index.html b/files/downloads/10.0.3.0/index.html
index 761165cb..f09654b6 100644
--- a/files/downloads/10.0.3.0/index.html
+++ b/files/downloads/10.0.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.3.0
- ..
+ ..
jruby-bin-10.0.3.0.tar.gz
jruby-bin-10.0.3.0.tar.gz.md5
jruby-bin-10.0.3.0.tar.gz.sha1
diff --git a/files/downloads/10.0.4.0/index.html b/files/downloads/10.0.4.0/index.html
index 096c06ef..25ca8b96 100644
--- a/files/downloads/10.0.4.0/index.html
+++ b/files/downloads/10.0.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.4.0
- ..
+ ..
jruby-bin-10.0.4.0.tar.gz
jruby-bin-10.0.4.0.tar.gz.md5
jruby-bin-10.0.4.0.tar.gz.sha1
diff --git a/files/downloads/10.0.5.0/index.html b/files/downloads/10.0.5.0/index.html
index 811764c8..a4cd197b 100644
--- a/files/downloads/10.0.5.0/index.html
+++ b/files/downloads/10.0.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.5.0
- ..
+ ..
jruby-bin-10.0.5.0.tar.gz
jruby-bin-10.0.5.0.tar.gz.md5
jruby-bin-10.0.5.0.tar.gz.sha1
diff --git a/files/downloads/10.0.6.0/index.html b/files/downloads/10.0.6.0/index.html
index 57a8a040..6c052251 100644
--- a/files/downloads/10.0.6.0/index.html
+++ b/files/downloads/10.0.6.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.6.0
- ..
+ ..
jruby-bin-10.0.6.0.tar.gz
jruby-bin-10.0.6.0.tar.gz.md5
jruby-bin-10.0.6.0.tar.gz.sha1
diff --git a/files/downloads/10.0.7.0/index.html b/files/downloads/10.0.7.0/index.html
index 88dde793..d8b70e41 100644
--- a/files/downloads/10.0.7.0/index.html
+++ b/files/downloads/10.0.7.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.7.0
- ..
+ ..
jruby-bin-10.0.7.0.tar.gz
jruby-bin-10.0.7.0.tar.gz.md5
jruby-bin-10.0.7.0.tar.gz.sha1
diff --git a/files/downloads/10.0.8.0/index.html b/files/downloads/10.0.8.0/index.html
index 939abd6d..b6f0a958 100644
--- a/files/downloads/10.0.8.0/index.html
+++ b/files/downloads/10.0.8.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.0.8.0
- ..
+ ..
jruby-bin-10.0.8.0.tar.gz
jruby-bin-10.0.8.0.tar.gz.md5
jruby-bin-10.0.8.0.tar.gz.sha1
diff --git a/files/downloads/10.1.0.0/index.html b/files/downloads/10.1.0.0/index.html
index 3ef973cc..eec9623e 100644
--- a/files/downloads/10.1.0.0/index.html
+++ b/files/downloads/10.1.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.1.0.0
- ..
+ ..
jruby-bin-10.1.0.0.tar.gz
jruby-bin-10.1.0.0.tar.gz.md5
jruby-bin-10.1.0.0.tar.gz.sha1
diff --git a/files/downloads/10.1.1.0/index.html b/files/downloads/10.1.1.0/index.html
index 6bbb5c8f..ea2e0144 100644
--- a/files/downloads/10.1.1.0/index.html
+++ b/files/downloads/10.1.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.1.1.0
- ..
+ ..
jruby-bin-10.1.1.0.tar.gz
jruby-bin-10.1.1.0.tar.gz.md5
jruby-bin-10.1.1.0.tar.gz.sha1
diff --git a/files/downloads/10.1.2.0/index.html b/files/downloads/10.1.2.0/index.html
index c529575e..c6872f32 100644
--- a/files/downloads/10.1.2.0/index.html
+++ b/files/downloads/10.1.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.1.2.0
- ..
+ ..
jruby-bin-10.1.2.0.tar.gz
jruby-bin-10.1.2.0.tar.gz.md5
jruby-bin-10.1.2.0.tar.gz.sha1
diff --git a/files/downloads/10.1.3.0/index.html b/files/downloads/10.1.3.0/index.html
index a369ec60..bfb21113 100644
--- a/files/downloads/10.1.3.0/index.html
+++ b/files/downloads/10.1.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/10.1.3.0
- ..
+ ..
jruby-bin-10.1.3.0.tar.gz
jruby-bin-10.1.3.0.tar.gz.md5
jruby-bin-10.1.3.0.tar.gz.sha1
diff --git a/files/downloads/9.0.0.0.pre1/index.html b/files/downloads/9.0.0.0.pre1/index.html
index 6cd0644b..a803baa2 100644
--- a/files/downloads/9.0.0.0.pre1/index.html
+++ b/files/downloads/9.0.0.0.pre1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.0.0.pre1
- ..
+ ..
jruby-bin-9.0.0.0.pre1.tar.gz
jruby-bin-9.0.0.0.pre1.tar.gz.md5
jruby-bin-9.0.0.0.pre1.tar.gz.sha1
diff --git a/files/downloads/9.0.0.0.pre2/index.html b/files/downloads/9.0.0.0.pre2/index.html
index 8dc200b8..353b8f89 100644
--- a/files/downloads/9.0.0.0.pre2/index.html
+++ b/files/downloads/9.0.0.0.pre2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.0.0.pre2
- ..
+ ..
jruby-bin-9.0.0.0.pre2.tar.gz
jruby-bin-9.0.0.0.pre2.tar.gz.md5
jruby-bin-9.0.0.0.pre2.tar.gz.sha1
diff --git a/files/downloads/9.0.0.0.rc1/index.html b/files/downloads/9.0.0.0.rc1/index.html
index 3b9ccd0e..16f1f017 100644
--- a/files/downloads/9.0.0.0.rc1/index.html
+++ b/files/downloads/9.0.0.0.rc1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.0.0.rc1
- ..
+ ..
jruby-bin-9.0.0.0.rc1.tar.gz
jruby-bin-9.0.0.0.rc1.tar.gz.md5
jruby-bin-9.0.0.0.rc1.tar.gz.sha1
diff --git a/files/downloads/9.0.0.0.rc2/index.html b/files/downloads/9.0.0.0.rc2/index.html
index 9e4c622e..3f8dc2bc 100644
--- a/files/downloads/9.0.0.0.rc2/index.html
+++ b/files/downloads/9.0.0.0.rc2/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.0.0.rc2
- ..
+ ..
jruby-bin-9.0.0.0.rc2.tar.gz
jruby-bin-9.0.0.0.rc2.tar.gz.md5
jruby-bin-9.0.0.0.rc2.tar.gz.sha1
diff --git a/files/downloads/9.0.0.0/index.html b/files/downloads/9.0.0.0/index.html
index abe72e67..964fd9e4 100644
--- a/files/downloads/9.0.0.0/index.html
+++ b/files/downloads/9.0.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.0.0
- ..
+ ..
jruby-bin-9.0.0.0.tar.gz
jruby-bin-9.0.0.0.tar.gz.md5
jruby-bin-9.0.0.0.tar.gz.sha1
diff --git a/files/downloads/9.0.1.0/index.html b/files/downloads/9.0.1.0/index.html
index feadc921..857ac166 100644
--- a/files/downloads/9.0.1.0/index.html
+++ b/files/downloads/9.0.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.1.0
- ..
+ ..
jruby-bin-9.0.1.0.tar.gz
jruby-bin-9.0.1.0.tar.gz.md5
jruby-bin-9.0.1.0.tar.gz.sha1
diff --git a/files/downloads/9.0.3.0/index.html b/files/downloads/9.0.3.0/index.html
index a7b82370..c7916432 100644
--- a/files/downloads/9.0.3.0/index.html
+++ b/files/downloads/9.0.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.3.0
- ..
+ ..
jruby-bin-9.0.3.0.tar.gz
jruby-bin-9.0.3.0.tar.gz.md5
jruby-bin-9.0.3.0.tar.gz.sha1
diff --git a/files/downloads/9.0.4.0/index.html b/files/downloads/9.0.4.0/index.html
index f64b49a1..3e9b567d 100644
--- a/files/downloads/9.0.4.0/index.html
+++ b/files/downloads/9.0.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.4.0
- ..
+ ..
jruby-bin-9.0.4.0.tar.gz
jruby-bin-9.0.4.0.tar.gz.md5
jruby-bin-9.0.4.0.tar.gz.sha1
diff --git a/files/downloads/9.0.5.0/index.html b/files/downloads/9.0.5.0/index.html
index bb1b890b..ba16b513 100644
--- a/files/downloads/9.0.5.0/index.html
+++ b/files/downloads/9.0.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.0.5.0
- ..
+ ..
jruby-bin-9.0.5.0.tar.gz
jruby-bin-9.0.5.0.tar.gz.md5
jruby-bin-9.0.5.0.tar.gz.sha1
diff --git a/files/downloads/9.1.0.0/index.html b/files/downloads/9.1.0.0/index.html
index ae36af0a..f01e3faf 100644
--- a/files/downloads/9.1.0.0/index.html
+++ b/files/downloads/9.1.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.0.0
- ..
+ ..
jruby-bin-9.1.0.0.tar.gz
jruby-bin-9.1.0.0.tar.gz.md5
jruby-bin-9.1.0.0.tar.gz.sha1
diff --git a/files/downloads/9.1.1.0/index.html b/files/downloads/9.1.1.0/index.html
index 61161f54..665b6c18 100644
--- a/files/downloads/9.1.1.0/index.html
+++ b/files/downloads/9.1.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.1.0
- ..
+ ..
jruby-bin-9.1.1.0.tar.gz
jruby-bin-9.1.1.0.tar.gz.md5
jruby-bin-9.1.1.0.tar.gz.sha1
diff --git a/files/downloads/9.1.10.0/index.html b/files/downloads/9.1.10.0/index.html
index b478769e..834238eb 100644
--- a/files/downloads/9.1.10.0/index.html
+++ b/files/downloads/9.1.10.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.10.0
- ..
+ ..
jruby-bin-9.1.10.0.tar.gz
jruby-bin-9.1.10.0.tar.gz.md5
jruby-bin-9.1.10.0.tar.gz.sha1
diff --git a/files/downloads/9.1.11.0/index.html b/files/downloads/9.1.11.0/index.html
index 9b6a3907..8553f752 100644
--- a/files/downloads/9.1.11.0/index.html
+++ b/files/downloads/9.1.11.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.11.0
- ..
+ ..
jruby-bin-9.1.11.0.tar.gz
jruby-bin-9.1.11.0.tar.gz.md5
jruby-bin-9.1.11.0.tar.gz.sha1
diff --git a/files/downloads/9.1.12.0/index.html b/files/downloads/9.1.12.0/index.html
index 735f4a07..677492a3 100644
--- a/files/downloads/9.1.12.0/index.html
+++ b/files/downloads/9.1.12.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.12.0
- ..
+ ..
jruby-bin-9.1.12.0.tar.gz
jruby-bin-9.1.12.0.tar.gz.md5
jruby-bin-9.1.12.0.tar.gz.sha1
diff --git a/files/downloads/9.1.13.0/index.html b/files/downloads/9.1.13.0/index.html
index a3c16110..61cb4f05 100644
--- a/files/downloads/9.1.13.0/index.html
+++ b/files/downloads/9.1.13.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.13.0
- ..
+ ..
jruby-bin-9.1.13.0.tar.gz
jruby-bin-9.1.13.0.tar.gz.md5
jruby-bin-9.1.13.0.tar.gz.sha1
diff --git a/files/downloads/9.1.14.0/index.html b/files/downloads/9.1.14.0/index.html
index 74c68df4..535d2ff6 100644
--- a/files/downloads/9.1.14.0/index.html
+++ b/files/downloads/9.1.14.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.14.0
- ..
+ ..
jruby-bin-9.1.14.0.tar.gz
jruby-bin-9.1.14.0.tar.gz.md5
jruby-bin-9.1.14.0.tar.gz.sha1
diff --git a/files/downloads/9.1.15.0/index.html b/files/downloads/9.1.15.0/index.html
index 2f0464ac..5995e778 100644
--- a/files/downloads/9.1.15.0/index.html
+++ b/files/downloads/9.1.15.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.15.0
- ..
+ ..
jruby-bin-9.1.15.0.tar.gz
jruby-bin-9.1.15.0.tar.gz.md5
jruby-bin-9.1.15.0.tar.gz.sha1
diff --git a/files/downloads/9.1.16.0/index.html b/files/downloads/9.1.16.0/index.html
index 34740a2c..9266d1a8 100644
--- a/files/downloads/9.1.16.0/index.html
+++ b/files/downloads/9.1.16.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.16.0
- ..
+ ..
jruby-bin-9.1.16.0.tar.gz
jruby-bin-9.1.16.0.tar.gz.md5
jruby-bin-9.1.16.0.tar.gz.sha1
diff --git a/files/downloads/9.1.17.0/index.html b/files/downloads/9.1.17.0/index.html
index d6f37d93..0fcb5cb6 100644
--- a/files/downloads/9.1.17.0/index.html
+++ b/files/downloads/9.1.17.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.17.0
- ..
+ ..
jruby-bin-9.1.17.0.tar.gz
jruby-bin-9.1.17.0.tar.gz.md5
jruby-bin-9.1.17.0.tar.gz.sha1
diff --git a/files/downloads/9.1.2.0/index.html b/files/downloads/9.1.2.0/index.html
index a05890b3..f67c895f 100644
--- a/files/downloads/9.1.2.0/index.html
+++ b/files/downloads/9.1.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.2.0
- ..
+ ..
jruby-bin-9.1.2.0.tar.gz
jruby-bin-9.1.2.0.tar.gz.md5
jruby-bin-9.1.2.0.tar.gz.sha1
diff --git a/files/downloads/9.1.3.0/index.html b/files/downloads/9.1.3.0/index.html
index 0ed3b7c5..16325c0d 100644
--- a/files/downloads/9.1.3.0/index.html
+++ b/files/downloads/9.1.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.3.0
- ..
+ ..
jruby-bin-9.1.3.0.tar.gz
jruby-bin-9.1.3.0.tar.gz.md5
jruby-bin-9.1.3.0.tar.gz.sha1
diff --git a/files/downloads/9.1.4.0/index.html b/files/downloads/9.1.4.0/index.html
index 44af050b..9cee3d92 100644
--- a/files/downloads/9.1.4.0/index.html
+++ b/files/downloads/9.1.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.4.0
- ..
+ ..
jruby-bin-9.1.4.0.tar.gz
jruby-bin-9.1.4.0.tar.gz.md5
jruby-bin-9.1.4.0.tar.gz.sha1
diff --git a/files/downloads/9.1.5.0/index.html b/files/downloads/9.1.5.0/index.html
index 916a7e3a..226890f5 100644
--- a/files/downloads/9.1.5.0/index.html
+++ b/files/downloads/9.1.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.5.0
- ..
+ ..
jruby-bin-9.1.5.0.tar.gz
jruby-bin-9.1.5.0.tar.gz.md5
jruby-bin-9.1.5.0.tar.gz.sha1
diff --git a/files/downloads/9.1.6.0/index.html b/files/downloads/9.1.6.0/index.html
index f8ac690b..7509ceba 100644
--- a/files/downloads/9.1.6.0/index.html
+++ b/files/downloads/9.1.6.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.6.0
- ..
+ ..
jruby-bin-9.1.6.0.tar.gz
jruby-bin-9.1.6.0.tar.gz.md5
jruby-bin-9.1.6.0.tar.gz.sha1
diff --git a/files/downloads/9.1.7.0/index.html b/files/downloads/9.1.7.0/index.html
index 8e6c2f19..2426b770 100644
--- a/files/downloads/9.1.7.0/index.html
+++ b/files/downloads/9.1.7.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.7.0
- ..
+ ..
jruby-bin-9.1.7.0.tar.gz
jruby-bin-9.1.7.0.tar.gz.md5
jruby-bin-9.1.7.0.tar.gz.sha1
diff --git a/files/downloads/9.1.8.0/index.html b/files/downloads/9.1.8.0/index.html
index 64bfc9dd..08c0a0a4 100644
--- a/files/downloads/9.1.8.0/index.html
+++ b/files/downloads/9.1.8.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.8.0
- ..
+ ..
jruby-bin-9.1.8.0.tar.gz
jruby-bin-9.1.8.0.tar.gz.md5
jruby-bin-9.1.8.0.tar.gz.sha1
diff --git a/files/downloads/9.1.9.0/index.html b/files/downloads/9.1.9.0/index.html
index 48cb0e52..8a912a3b 100644
--- a/files/downloads/9.1.9.0/index.html
+++ b/files/downloads/9.1.9.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.1.9.0
- ..
+ ..
jruby-bin-9.1.9.0.tar.gz
jruby-bin-9.1.9.0.tar.gz.md5
jruby-bin-9.1.9.0.tar.gz.sha1
diff --git a/files/downloads/9.2.0.0/index.html b/files/downloads/9.2.0.0/index.html
index 5fead10d..b51f2e0b 100644
--- a/files/downloads/9.2.0.0/index.html
+++ b/files/downloads/9.2.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.0.0
- ..
+ ..
jruby-bin-9.2.0.0.tar.gz
jruby-bin-9.2.0.0.tar.gz.md5
jruby-bin-9.2.0.0.tar.gz.sha1
diff --git a/files/downloads/9.2.1.0/index.html b/files/downloads/9.2.1.0/index.html
index a931926b..b31257ca 100644
--- a/files/downloads/9.2.1.0/index.html
+++ b/files/downloads/9.2.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.1.0
- ..
+ ..
jruby-bin-9.2.1.0.tar.gz
jruby-bin-9.2.1.0.tar.gz.md5
jruby-bin-9.2.1.0.tar.gz.sha1
diff --git a/files/downloads/9.2.10.0/index.html b/files/downloads/9.2.10.0/index.html
index 1d8fd812..2c4f7213 100644
--- a/files/downloads/9.2.10.0/index.html
+++ b/files/downloads/9.2.10.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.10.0
- ..
+ ..
jruby-bin-9.2.10.0.tar.gz
jruby-bin-9.2.10.0.tar.gz.md5
jruby-bin-9.2.10.0.tar.gz.sha1
diff --git a/files/downloads/9.2.11.0/index.html b/files/downloads/9.2.11.0/index.html
index 9c14c1e1..5c33d8bb 100644
--- a/files/downloads/9.2.11.0/index.html
+++ b/files/downloads/9.2.11.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.11.0
- ..
+ ..
jruby-bin-9.2.11.0.tar.gz
jruby-bin-9.2.11.0.tar.gz.md5
jruby-bin-9.2.11.0.tar.gz.sha1
diff --git a/files/downloads/9.2.11.1/index.html b/files/downloads/9.2.11.1/index.html
index 2cd6f6ef..a76fd979 100644
--- a/files/downloads/9.2.11.1/index.html
+++ b/files/downloads/9.2.11.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.11.1
- ..
+ ..
jruby-bin-9.2.11.1.tar.gz
jruby-bin-9.2.11.1.tar.gz.md5
jruby-bin-9.2.11.1.tar.gz.sha1
diff --git a/files/downloads/9.2.12.0/index.html b/files/downloads/9.2.12.0/index.html
index 9fbd997e..92f9e524 100644
--- a/files/downloads/9.2.12.0/index.html
+++ b/files/downloads/9.2.12.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.12.0
- ..
+ ..
jruby-bin-9.2.12.0.tar.gz
jruby-bin-9.2.12.0.tar.gz.md5
jruby-bin-9.2.12.0.tar.gz.sha1
diff --git a/files/downloads/9.2.13.0/index.html b/files/downloads/9.2.13.0/index.html
index d6bea4c7..6fcda7d4 100644
--- a/files/downloads/9.2.13.0/index.html
+++ b/files/downloads/9.2.13.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.13.0
- ..
+ ..
jruby-bin-9.2.13.0.tar.gz
jruby-bin-9.2.13.0.tar.gz.md5
jruby-bin-9.2.13.0.tar.gz.sha1
diff --git a/files/downloads/9.2.14.0/index.html b/files/downloads/9.2.14.0/index.html
index c2ba2270..c9a8631b 100644
--- a/files/downloads/9.2.14.0/index.html
+++ b/files/downloads/9.2.14.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.14.0
- ..
+ ..
jruby-bin-9.2.14.0.tar.gz
jruby-bin-9.2.14.0.tar.gz.md5
jruby-bin-9.2.14.0.tar.gz.sha1
diff --git a/files/downloads/9.2.15.0/index.html b/files/downloads/9.2.15.0/index.html
index 4e4ecaea..c5433a66 100644
--- a/files/downloads/9.2.15.0/index.html
+++ b/files/downloads/9.2.15.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.15.0
- ..
+ ..
jruby-bin-9.2.15.0.tar.gz
jruby-bin-9.2.15.0.tar.gz.md5
jruby-bin-9.2.15.0.tar.gz.sha1
diff --git a/files/downloads/9.2.16.0/index.html b/files/downloads/9.2.16.0/index.html
index 7d18e691..bd2547f6 100644
--- a/files/downloads/9.2.16.0/index.html
+++ b/files/downloads/9.2.16.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.16.0
- ..
+ ..
jruby-bin-9.2.16.0.tar.gz
jruby-bin-9.2.16.0.tar.gz.md5
jruby-bin-9.2.16.0.tar.gz.sha1
diff --git a/files/downloads/9.2.17.0/index.html b/files/downloads/9.2.17.0/index.html
index cc650f04..d8a5c68e 100644
--- a/files/downloads/9.2.17.0/index.html
+++ b/files/downloads/9.2.17.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.17.0
- ..
+ ..
jruby-bin-9.2.17.0.tar.gz
jruby-bin-9.2.17.0.tar.gz.md5
jruby-bin-9.2.17.0.tar.gz.sha1
diff --git a/files/downloads/9.2.18.0/index.html b/files/downloads/9.2.18.0/index.html
index 67dd9193..80d4548e 100644
--- a/files/downloads/9.2.18.0/index.html
+++ b/files/downloads/9.2.18.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.18.0
- ..
+ ..
jruby-bin-9.2.18.0.tar.gz
jruby-bin-9.2.18.0.tar.gz.md5
jruby-bin-9.2.18.0.tar.gz.sha1
diff --git a/files/downloads/9.2.19.0/index.html b/files/downloads/9.2.19.0/index.html
index cb0053eb..d22badee 100644
--- a/files/downloads/9.2.19.0/index.html
+++ b/files/downloads/9.2.19.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.19.0
- ..
+ ..
jruby-bin-9.2.19.0.tar.gz
jruby-bin-9.2.19.0.tar.gz.md5
jruby-bin-9.2.19.0.tar.gz.sha1
diff --git a/files/downloads/9.2.2.0/index.html b/files/downloads/9.2.2.0/index.html
index 40bcc56f..92ec72d9 100644
--- a/files/downloads/9.2.2.0/index.html
+++ b/files/downloads/9.2.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.2.0
- ..
+ ..
jruby-bin-9.2.2.0.tar.gz
jruby-bin-9.2.2.0.tar.gz.md5
jruby-bin-9.2.2.0.tar.gz.sha1
diff --git a/files/downloads/9.2.20.0/index.html b/files/downloads/9.2.20.0/index.html
index cd60101b..0f6d6f41 100644
--- a/files/downloads/9.2.20.0/index.html
+++ b/files/downloads/9.2.20.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.20.0
- ..
+ ..
jruby-bin-9.2.20.0.tar.gz
jruby-bin-9.2.20.0.tar.gz.md5
jruby-bin-9.2.20.0.tar.gz.sha1
diff --git a/files/downloads/9.2.20.1/index.html b/files/downloads/9.2.20.1/index.html
index 42fe5e43..e6e00af3 100644
--- a/files/downloads/9.2.20.1/index.html
+++ b/files/downloads/9.2.20.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.20.1
- ..
+ ..
jruby-bin-9.2.20.1.tar.gz
jruby-bin-9.2.20.1.tar.gz.md5
jruby-bin-9.2.20.1.tar.gz.sha1
diff --git a/files/downloads/9.2.21.0/index.html b/files/downloads/9.2.21.0/index.html
index 8f666ad8..5cbd543a 100644
--- a/files/downloads/9.2.21.0/index.html
+++ b/files/downloads/9.2.21.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.21.0
- ..
+ ..
jruby-bin-9.2.21.0.tar.gz
jruby-bin-9.2.21.0.tar.gz.md5
jruby-bin-9.2.21.0.tar.gz.sha1
diff --git a/files/downloads/9.2.3.0/index.html/index.html b/files/downloads/9.2.3.0/index.html/index.html
index 8e35ddd1..28285d50 100644
--- a/files/downloads/9.2.3.0/index.html/index.html
+++ b/files/downloads/9.2.3.0/index.html/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.3.0
- ..
+ ..
jruby-bin-9.2.3.0.tar.gz
jruby-bin-9.2.3.0.tar.gz.md5
jruby-bin-9.2.3.0.tar.gz.sha1
diff --git a/files/downloads/9.2.4.0/index.html b/files/downloads/9.2.4.0/index.html
index ac102e08..f3e4cd60 100644
--- a/files/downloads/9.2.4.0/index.html
+++ b/files/downloads/9.2.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.4.0
- ..
+ ..
jruby-bin-9.2.4.0.tar.gz
jruby-bin-9.2.4.0.tar.gz.md5
jruby-bin-9.2.4.0.tar.gz.sha1
diff --git a/files/downloads/9.2.4.1/index.html b/files/downloads/9.2.4.1/index.html
index 1c722546..95c3d6e9 100644
--- a/files/downloads/9.2.4.1/index.html
+++ b/files/downloads/9.2.4.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.4.1
- ..
+ ..
jruby-bin-9.2.4.1.tar.gz
jruby-bin-9.2.4.1.tar.gz.md5
jruby-bin-9.2.4.1.tar.gz.sha1
diff --git a/files/downloads/9.2.5.0/index.html b/files/downloads/9.2.5.0/index.html
index e75c00f2..91e602b5 100644
--- a/files/downloads/9.2.5.0/index.html
+++ b/files/downloads/9.2.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.5.0
- ..
+ ..
jruby-bin-9.2.5.0.tar.gz
jruby-bin-9.2.5.0.tar.gz.md5
jruby-bin-9.2.5.0.tar.gz.sha1
diff --git a/files/downloads/9.2.6.0/index.html b/files/downloads/9.2.6.0/index.html
index 3851cfa5..284112d3 100644
--- a/files/downloads/9.2.6.0/index.html
+++ b/files/downloads/9.2.6.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.6.0
- ..
+ ..
jruby-bin-9.2.6.0.tar.gz
jruby-bin-9.2.6.0.tar.gz.md5
jruby-bin-9.2.6.0.tar.gz.sha1
diff --git a/files/downloads/9.2.7.0/index.html b/files/downloads/9.2.7.0/index.html
index bd558b4f..1dceddc2 100644
--- a/files/downloads/9.2.7.0/index.html
+++ b/files/downloads/9.2.7.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.7.0
- ..
+ ..
jruby-bin-9.2.7.0.tar.gz
jruby-bin-9.2.7.0.tar.gz.md5
jruby-bin-9.2.7.0.tar.gz.sha1
diff --git a/files/downloads/9.2.8.0/index.html b/files/downloads/9.2.8.0/index.html
index d877ac2f..1e0d64e6 100644
--- a/files/downloads/9.2.8.0/index.html
+++ b/files/downloads/9.2.8.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.8.0
- ..
+ ..
jruby-bin-9.2.8.0.tar.gz
jruby-bin-9.2.8.0.tar.gz.md5
jruby-bin-9.2.8.0.tar.gz.sha1
diff --git a/files/downloads/9.2.9.0/index.html b/files/downloads/9.2.9.0/index.html
index b54329a9..12174307 100644
--- a/files/downloads/9.2.9.0/index.html
+++ b/files/downloads/9.2.9.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.2.9.0
- ..
+ ..
jruby-bin-9.2.9.0.tar.gz
jruby-bin-9.2.9.0.tar.gz.md5
jruby-bin-9.2.9.0.tar.gz.sha1
diff --git a/files/downloads/9.3.0.0/index.html b/files/downloads/9.3.0.0/index.html
index 3096dcc9..05361200 100644
--- a/files/downloads/9.3.0.0/index.html
+++ b/files/downloads/9.3.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.0.0
- ..
+ ..
jruby-bin-9.3.0.0.tar.gz
jruby-bin-9.3.0.0.tar.gz.md5
jruby-bin-9.3.0.0.tar.gz.sha1
diff --git a/files/downloads/9.3.1.0/index.html b/files/downloads/9.3.1.0/index.html
index 4a4fe955..f1decc52 100644
--- a/files/downloads/9.3.1.0/index.html
+++ b/files/downloads/9.3.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.1.0
- ..
+ ..
jruby-bin-9.3.1.0.tar.gz
jruby-bin-9.3.1.0.tar.gz.md5
jruby-bin-9.3.1.0.tar.gz.sha1
diff --git a/files/downloads/9.3.10.0/index.html b/files/downloads/9.3.10.0/index.html
index 45a54f57..1521e2c7 100644
--- a/files/downloads/9.3.10.0/index.html
+++ b/files/downloads/9.3.10.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.10.0
- ..
+ ..
jruby-bin-9.3.10.0.tar.gz
jruby-bin-9.3.10.0.tar.gz.md5
jruby-bin-9.3.10.0.tar.gz.sha1
diff --git a/files/downloads/9.3.11.0/index.html b/files/downloads/9.3.11.0/index.html
index 5e9f2c93..7c56ff16 100644
--- a/files/downloads/9.3.11.0/index.html
+++ b/files/downloads/9.3.11.0/index.html
@@ -1,10 +1,10 @@
---
-Layout: main
+layout: main
title: Files/downloads/9.3.11.0
---
Files/downloads/9.3.11.0
- ..
+ ..
jruby-bin-9.3.11.0.tar.gz
jruby-bin-9.3.11.0.tar.gz.md5
jruby-bin-9.3.11.0.tar.gz.sha1
diff --git a/files/downloads/9.3.12.0/index.html b/files/downloads/9.3.12.0/index.html
index 230375d4..2a6d8f74 100644
--- a/files/downloads/9.3.12.0/index.html
+++ b/files/downloads/9.3.12.0/index.html
@@ -1,10 +1,10 @@
---
-Layout: main
+layout: main
title: Files/downloads/9.3.12.0
---
Files/downloads/9.3.12.0
- ..
+ ..
jruby-bin-9.3.12.0.tar.gz
jruby-bin-9.3.12.0.tar.gz.md5
jruby-bin-9.3.12.0.tar.gz.sha1
diff --git a/files/downloads/9.3.13.0/index.html b/files/downloads/9.3.13.0/index.html
index 21cce2c2..21aee0c0 100644
--- a/files/downloads/9.3.13.0/index.html
+++ b/files/downloads/9.3.13.0/index.html
@@ -1,10 +1,10 @@
---
-Layout: main
+layout: main
title: Files/downloads/9.3.13.0
---
Files/downloads/9.3.13.0
- ..
+ ..
jruby-bin-9.3.13.0.tar.gz
jruby-bin-9.3.13.0.tar.gz.md5
jruby-bin-9.3.13.0.tar.gz.sha1
diff --git a/files/downloads/9.3.14.0/index.html b/files/downloads/9.3.14.0/index.html
index 2b2aac09..5779ba4e 100644
--- a/files/downloads/9.3.14.0/index.html
+++ b/files/downloads/9.3.14.0/index.html
@@ -1,10 +1,10 @@
---
-Layout: main
+layout: main
title: Files/downloads/9.3.14.0
---
Files/downloads/9.3.14.0
- ..
+ ..
jruby-bin-9.3.14.0.tar.gz
jruby-bin-9.3.14.0.tar.gz.md5
jruby-bin-9.3.14.0.tar.gz.sha1
diff --git a/files/downloads/9.3.15.0/index.html b/files/downloads/9.3.15.0/index.html
index 91230e94..b06ee573 100644
--- a/files/downloads/9.3.15.0/index.html
+++ b/files/downloads/9.3.15.0/index.html
@@ -1,10 +1,10 @@
---
-Layout: main
+layout: main
title: Files/downloads/9.3.15.0
---
Files/downloads/9.3.15.0
- ..
+ ..
jruby-bin-9.3.15.0.tar.gz
jruby-bin-9.3.15.0.tar.gz.md5
jruby-bin-9.3.15.0.tar.gz.sha1
diff --git a/files/downloads/9.3.2.0/index.html b/files/downloads/9.3.2.0/index.html
index 70d2fa26..b87c69b4 100644
--- a/files/downloads/9.3.2.0/index.html
+++ b/files/downloads/9.3.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.2.0
- ..
+ ..
jruby-bin-9.3.2.0.tar.gz
jruby-bin-9.3.2.0.tar.gz.md5
jruby-bin-9.3.2.0.tar.gz.sha1
diff --git a/files/downloads/9.3.3.0/index.html b/files/downloads/9.3.3.0/index.html
index b4062ada..131e32d2 100644
--- a/files/downloads/9.3.3.0/index.html
+++ b/files/downloads/9.3.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.3.0
- ..
+ ..
jruby-bin-9.3.3.0.tar.gz
jruby-bin-9.3.3.0.tar.gz.md5
jruby-bin-9.3.3.0.tar.gz.sha1
diff --git a/files/downloads/9.3.4.0/index.html b/files/downloads/9.3.4.0/index.html
index 67b3d3e2..db637d7e 100644
--- a/files/downloads/9.3.4.0/index.html
+++ b/files/downloads/9.3.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.4.0
- ..
+ ..
jruby-bin-9.3.4.0.tar.gz
jruby-bin-9.3.4.0.tar.gz.md5
jruby-bin-9.3.4.0.tar.gz.sha1
diff --git a/files/downloads/9.3.5.0/index.html b/files/downloads/9.3.5.0/index.html
index e539728c..f6a1bd4e 100644
--- a/files/downloads/9.3.5.0/index.html
+++ b/files/downloads/9.3.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.5.0
- ..
+ ..
jruby-bin-9.3.5.0.tar.gz
jruby-bin-9.3.5.0.tar.gz.md5
jruby-bin-9.3.5.0.tar.gz.sha1
diff --git a/files/downloads/9.3.6.0/index.html b/files/downloads/9.3.6.0/index.html
index dacefae6..c8b62e5d 100644
--- a/files/downloads/9.3.6.0/index.html
+++ b/files/downloads/9.3.6.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.6.0
- ..
+ ..
jruby-bin-9.3.6.0.tar.gz
jruby-bin-9.3.6.0.tar.gz.md5
jruby-bin-9.3.6.0.tar.gz.sha1
diff --git a/files/downloads/9.3.7.0/index.html b/files/downloads/9.3.7.0/index.html
index 6217c82d..6e3a712d 100644
--- a/files/downloads/9.3.7.0/index.html
+++ b/files/downloads/9.3.7.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.7.0
- ..
+ ..
jruby-bin-9.3.7.0.tar.gz
jruby-bin-9.3.7.0.tar.gz.md5
jruby-bin-9.3.7.0.tar.gz.sha1
diff --git a/files/downloads/9.3.8.0/index.html b/files/downloads/9.3.8.0/index.html
index 3a0a77fc..33538d01 100644
--- a/files/downloads/9.3.8.0/index.html
+++ b/files/downloads/9.3.8.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.8.0
- ..
+ ..
jruby-bin-9.3.8.0.tar.gz
jruby-bin-9.3.8.0.tar.gz.md5
jruby-bin-9.3.8.0.tar.gz.sha1
diff --git a/files/downloads/9.3.9.0/index.html b/files/downloads/9.3.9.0/index.html
index 15cd3f16..31b93a87 100644
--- a/files/downloads/9.3.9.0/index.html
+++ b/files/downloads/9.3.9.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.3.9.0
- ..
+ ..
jruby-bin-9.3.9.0.tar.gz
jruby-bin-9.3.9.0.tar.gz.md5
jruby-bin-9.3.9.0.tar.gz.sha1
diff --git a/files/downloads/9.4.0.0/index.html b/files/downloads/9.4.0.0/index.html
index 59237661..8d8362de 100644
--- a/files/downloads/9.4.0.0/index.html
+++ b/files/downloads/9.4.0.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.0.0
- ..
+ ..
jruby-bin-9.4.0.0.tar.gz
jruby-bin-9.4.0.0.tar.gz.md5
jruby-bin-9.4.0.0.tar.gz.sha1
diff --git a/files/downloads/9.4.1.0/index.html b/files/downloads/9.4.1.0/index.html
index e2255726..09f1868e 100644
--- a/files/downloads/9.4.1.0/index.html
+++ b/files/downloads/9.4.1.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.1.0
- ..
+ ..
jruby-bin-9.4.1.0.tar.gz
jruby-bin-9.4.1.0.tar.gz.md5
jruby-bin-9.4.1.0.tar.gz.sha1
diff --git a/files/downloads/9.4.10.0/index.html b/files/downloads/9.4.10.0/index.html
index 7bf60459..cd8fd637 100644
--- a/files/downloads/9.4.10.0/index.html
+++ b/files/downloads/9.4.10.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.11.0
- ..
+ ..
jruby-bin-9.4.11.0.tar.gz
jruby-bin-9.4.11.0.tar.gz.md5
jruby-bin-9.4.11.0.tar.gz.sha1
diff --git a/files/downloads/9.4.11.0/index.html b/files/downloads/9.4.11.0/index.html
index 7bf60459..cd8fd637 100644
--- a/files/downloads/9.4.11.0/index.html
+++ b/files/downloads/9.4.11.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.11.0
- ..
+ ..
jruby-bin-9.4.11.0.tar.gz
jruby-bin-9.4.11.0.tar.gz.md5
jruby-bin-9.4.11.0.tar.gz.sha1
diff --git a/files/downloads/9.4.12.0/index.html b/files/downloads/9.4.12.0/index.html
index 0efbb5fe..f37f938a 100644
--- a/files/downloads/9.4.12.0/index.html
+++ b/files/downloads/9.4.12.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.12.0
- ..
+ ..
jruby-bin-9.4.12.0.tar.gz
jruby-bin-9.4.12.0.tar.gz.md5
jruby-bin-9.4.12.0.tar.gz.sha1
diff --git a/files/downloads/9.4.12.1/index.html b/files/downloads/9.4.12.1/index.html
index f213bd8b..5ce1174d 100644
--- a/files/downloads/9.4.12.1/index.html
+++ b/files/downloads/9.4.12.1/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.12.1
- ..
+ ..
jruby-bin-9.4.12.1.tar.gz
jruby-bin-9.4.12.1.tar.gz.md5
jruby-bin-9.4.12.1.tar.gz.sha1
diff --git a/files/downloads/9.4.13.0/index.html b/files/downloads/9.4.13.0/index.html
index b75d59fd..b0ea8bba 100644
--- a/files/downloads/9.4.13.0/index.html
+++ b/files/downloads/9.4.13.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.13.0
- ..
+ ..
jruby-bin-9.4.13.0.tar.gz
jruby-bin-9.4.13.0.tar.gz.md5
jruby-bin-9.4.13.0.tar.gz.sha1
diff --git a/files/downloads/9.4.14.0/index.html b/files/downloads/9.4.14.0/index.html
index a4978475..ae76adac 100644
--- a/files/downloads/9.4.14.0/index.html
+++ b/files/downloads/9.4.14.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.14.0
- ..
+ ..
jruby-bin-9.4.14.0.tar.gz
jruby-bin-9.4.14.0.tar.gz.md5
jruby-bin-9.4.14.0.tar.gz.sha1
diff --git a/files/downloads/9.4.15.0/index.html b/files/downloads/9.4.15.0/index.html
index 5fb34090..1c07401b 100644
--- a/files/downloads/9.4.15.0/index.html
+++ b/files/downloads/9.4.15.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.15.0
- ..
+ ..
jruby-bin-9.4.15.0.tar.gz
jruby-bin-9.4.15.0.tar.gz.md5
jruby-bin-9.4.15.0.tar.gz.sha1
diff --git a/files/downloads/9.4.2.0/index.html b/files/downloads/9.4.2.0/index.html
index fe25aee7..79fa5435 100644
--- a/files/downloads/9.4.2.0/index.html
+++ b/files/downloads/9.4.2.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.2.0
- ..
+ ..
jruby-bin-9.4.2.0.tar.gz
jruby-bin-9.4.2.0.tar.gz.md5
jruby-bin-9.4.2.0.tar.gz.sha1
diff --git a/files/downloads/9.4.3.0/index.html b/files/downloads/9.4.3.0/index.html
index c46a9049..39e97888 100644
--- a/files/downloads/9.4.3.0/index.html
+++ b/files/downloads/9.4.3.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.3.0
- ..
+ ..
jruby-bin-9.4.3.0.tar.gz
jruby-bin-9.4.3.0.tar.gz.md5
jruby-bin-9.4.3.0.tar.gz.sha1
diff --git a/files/downloads/9.4.4.0/index.html b/files/downloads/9.4.4.0/index.html
index 16794a18..284d6267 100644
--- a/files/downloads/9.4.4.0/index.html
+++ b/files/downloads/9.4.4.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.4.0
- ..
+ ..
jruby-bin-9.4.4.0.tar.gz
jruby-bin-9.4.4.0.tar.gz.md5
jruby-bin-9.4.4.0.tar.gz.sha1
diff --git a/files/downloads/9.4.5.0/index.html b/files/downloads/9.4.5.0/index.html
index 2e935bbf..62403b42 100644
--- a/files/downloads/9.4.5.0/index.html
+++ b/files/downloads/9.4.5.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.5.0
- ..
+ ..
jruby-bin-9.4.5.0.tar.gz
jruby-bin-9.4.5.0.tar.gz.md5
jruby-bin-9.4.5.0.tar.gz.sha1
diff --git a/files/downloads/9.4.6.0/index.html b/files/downloads/9.4.6.0/index.html
index fba11756..7868851e 100644
--- a/files/downloads/9.4.6.0/index.html
+++ b/files/downloads/9.4.6.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.6.0
- ..
+ ..
jruby-bin-9.4.6.0.tar.gz
jruby-bin-9.4.6.0.tar.gz.md5
jruby-bin-9.4.6.0.tar.gz.sha1
diff --git a/files/downloads/9.4.7.0/index.html b/files/downloads/9.4.7.0/index.html
index a7bd3ea3..9421ad30 100644
--- a/files/downloads/9.4.7.0/index.html
+++ b/files/downloads/9.4.7.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.7.0
- ..
+ ..
jruby-bin-9.4.7.0.tar.gz
jruby-bin-9.4.7.0.tar.gz.md5
jruby-bin-9.4.7.0.tar.gz.sha1
diff --git a/files/downloads/9.4.8.0/index.html b/files/downloads/9.4.8.0/index.html
index 8fbbbdbe..5dd837ed 100644
--- a/files/downloads/9.4.8.0/index.html
+++ b/files/downloads/9.4.8.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.8.0
- ..
+ ..
jruby-bin-9.4.8.0.tar.gz
jruby-bin-9.4.8.0.tar.gz.md5
jruby-bin-9.4.8.0.tar.gz.sha1
diff --git a/files/downloads/9.4.9.0/index.html b/files/downloads/9.4.9.0/index.html
index 4584100a..c42370d6 100644
--- a/files/downloads/9.4.9.0/index.html
+++ b/files/downloads/9.4.9.0/index.html
@@ -4,7 +4,7 @@
---
Files/downloads/9.4.9.0
- ..
+ ..
jruby-bin-9.4.9.0.tar.gz
jruby-bin-9.4.9.0.tar.gz.md5
jruby-bin-9.4.9.0.tar.gz.sha1
diff --git a/files/downloads/index.html b/files/downloads/index.html
index aef4adc7..5cb39324 100644
--- a/files/downloads/index.html
+++ b/files/downloads/index.html
@@ -4,181 +4,181 @@
---
Files/downloads
- ..
- 0.9.0
- 0.9.1
- 0.9.2
- 0.9.8
- 0.9.9
- 1.0.0RC1
- 1.0.0RC2
- 1.0.0RC3
- 1.0.1
- 1.0.2
- 1.0.3
- 1.0
- 1.1.1
- 1.1.2
- 1.1.3
- 1.1.4
- 1.1.5
- 1.1.6
- 1.1.6RC1
- 1.1
- 1.1RC1
- 1.1RC2
- 1.1RC3
- 1.1b1
- 1.2.0
- 1.2.0RC1
- 1.2.0RC2
- 1.3.0
- 1.3.0RC1
- 1.3.0RC2
- 1.3.1
- 1.4.0
- 1.4.0RC1
- 1.4.0RC2
- 1.4.0RC3
- 1.4.1
- 1.5.0.RC1
- 1.5.0.RC2
- 1.5.0.RC3
- 1.5.0
- 1.5.1
- 1.7.0
- 1.7.1
- 1.7.10
- 1.7.11
- 1.7.12
- 1.7.13
- 1.7.14
- 1.7.15
- 1.7.16.1
- 1.7.16.2
- 1.7.16
- 1.7.17
- 1.7.18
- 1.7.19
- 1.7.20
- 1.7.20.1
- 1.7.21
- 1.7.22
- 1.7.23
- 1.7.24
- 1.7.25
- 1.7.26
- 1.7.27
- 1.7.2
- 1.7.3
- 1.7.4
- 1.7.5
- 1.7.6
- 1.7.7
- 1.7.8
- 1.7.9
- 9.0.0.0.pre1
- 9.0.0.0.pre2
- 9.0.0.0.rc1
- 9.0.0.0.rc2
- 9.0.0.0
- 9.0.1.0
- 9.0.2.0
- 9.0.3.0
- 9.0.4.0
- 9.0.5.0
- 9.1.0.0
- 9.1.1.0
- 9.1.2.0
- 9.1.3.0
- 9.1.4.0
- 9.1.5.0
- 9.1.6.0
- 9.1.7.0
- 9.1.8.0
- 9.1.9.0
- 9.1.10.0
- 9.1.11.0
- 9.1.12.0
- 9.1.13.0
- 9.1.14.0
- 9.1.15.0
- 9.1.16.0
- 9.1.17.0
- 9.2.0.0
- 9.2.1.0
- 9.2.2.0
- 9.2.3.0
- 9.2.4.0
- 9.2.4.1
- 9.2.5.0
- 9.2.6.0
- 9.2.7.0
- 9.2.8.0
- 9.2.9.0
- 9.2.10.0
- 9.2.11.0
- 9.2.11.1
- 9.2.12.0
- 9.2.13.0
- 9.2.14.0
- 9.2.15.0
- 9.2.16.0
- 9.2.17.0
- 9.2.18.0
- 9.2.19.0
- 9.2.20.0
- 9.2.20.1
- 9.2.21.0
- 9.3.0.0
- 9.3.1.0
- 9.3.2.0
- 9.3.3.0
- 9.3.4.0
- 9.3.5.0
- 9.3.6.0
- 9.3.7.0
- 9.3.8.0
- 9.3.9.0
- 9.3.9.0
- 9.3.10.0
- 9.3.11.0
- 9.3.12.0
- 9.3.13.0
- 9.3.14.0
- 9.3.15.0
+ ..
+ 0.9.0
+ 0.9.1
+ 0.9.2
+ 0.9.8
+ 0.9.9
+ 1.0.0RC1
+ 1.0.0RC2
+ 1.0.0RC3
+ 1.0.1
+ 1.0.2
+ 1.0.3
+ 1.0
+ 1.1.1
+ 1.1.2
+ 1.1.3
+ 1.1.4
+ 1.1.5
+ 1.1.6
+ 1.1.6RC1
+ 1.1
+ 1.1RC1
+ 1.1RC2
+ 1.1RC3
+ 1.1b1
+ 1.2.0
+ 1.2.0RC1
+ 1.2.0RC2
+ 1.3.0
+ 1.3.0RC1
+ 1.3.0RC2
+ 1.3.1
+ 1.4.0
+ 1.4.0RC1
+ 1.4.0RC2
+ 1.4.0RC3
+ 1.4.1
+ 1.5.0.RC1
+ 1.5.0.RC2
+ 1.5.0.RC3
+ 1.5.0
+ 1.5.1
+ 1.7.0
+ 1.7.1
+ 1.7.10
+ 1.7.11
+ 1.7.12
+ 1.7.13
+ 1.7.14
+ 1.7.15
+ 1.7.16.1
+ 1.7.16.2
+ 1.7.16
+ 1.7.17
+ 1.7.18
+ 1.7.19
+ 1.7.20
+ 1.7.20.1
+ 1.7.21
+ 1.7.22
+ 1.7.23
+ 1.7.24
+ 1.7.25
+ 1.7.26
+ 1.7.27
+ 1.7.2
+ 1.7.3
+ 1.7.4
+ 1.7.5
+ 1.7.6
+ 1.7.7
+ 1.7.8
+ 1.7.9
+ 9.0.0.0.pre1
+ 9.0.0.0.pre2
+ 9.0.0.0.rc1
+ 9.0.0.0.rc2
+ 9.0.0.0
+ 9.0.1.0
+ 9.0.2.0
+ 9.0.3.0
+ 9.0.4.0
+ 9.0.5.0
+ 9.1.0.0
+ 9.1.1.0
+ 9.1.2.0
+ 9.1.3.0
+ 9.1.4.0
+ 9.1.5.0
+ 9.1.6.0
+ 9.1.7.0
+ 9.1.8.0
+ 9.1.9.0
+ 9.1.10.0
+ 9.1.11.0
+ 9.1.12.0
+ 9.1.13.0
+ 9.1.14.0
+ 9.1.15.0
+ 9.1.16.0
+ 9.1.17.0
+ 9.2.0.0
+ 9.2.1.0
+ 9.2.2.0
+ 9.2.3.0
+ 9.2.4.0
+ 9.2.4.1
+ 9.2.5.0
+ 9.2.6.0
+ 9.2.7.0
+ 9.2.8.0
+ 9.2.9.0
+ 9.2.10.0
+ 9.2.11.0
+ 9.2.11.1
+ 9.2.12.0
+ 9.2.13.0
+ 9.2.14.0
+ 9.2.15.0
+ 9.2.16.0
+ 9.2.17.0
+ 9.2.18.0
+ 9.2.19.0
+ 9.2.20.0
+ 9.2.20.1
+ 9.2.21.0
+ 9.3.0.0
+ 9.3.1.0
+ 9.3.2.0
+ 9.3.3.0
+ 9.3.4.0
+ 9.3.5.0
+ 9.3.6.0
+ 9.3.7.0
+ 9.3.8.0
+ 9.3.9.0
+ 9.3.9.0
+ 9.3.10.0
+ 9.3.11.0
+ 9.3.12.0
+ 9.3.13.0
+ 9.3.14.0
+ 9.3.15.0
- 9.4.0.0
- 9.4.1.0
- 9.4.2.0
- 9.4.3.0
- 9.4.4.0
- 9.4.5.0
- 9.4.6.0
- 9.4.7.0
- 9.4.8.0
- 9.4.9.0
- 9.4.10.0
- 9.4.11.0
- 9.4.12.0
- 9.4.12.1
- 9.4.13.0
- 9.4.14.0
- 10.0.0.0
- 10.0.0.1
- 10.0.1.0
- 10.0.2.0
- 10.0.3.0
- 10.0.4.0
- 10.0.5.0
- 10.1.0.0
- 9.4.15.0
- 10.0.6.0
- 10.1.1.0
- 10.1.2.0
- 10.0.7.0
- 10.0.8.0
- 10.1.3.0
+ 9.4.0.0
+ 9.4.1.0
+ 9.4.2.0
+ 9.4.3.0
+ 9.4.4.0
+ 9.4.5.0
+ 9.4.6.0
+ 9.4.7.0
+ 9.4.8.0
+ 9.4.9.0
+ 9.4.10.0
+ 9.4.11.0
+ 9.4.12.0
+ 9.4.12.1
+ 9.4.13.0
+ 9.4.14.0
+ 10.0.0.0
+ 10.0.0.1
+ 10.0.1.0
+ 10.0.2.0
+ 10.0.3.0
+ 10.0.4.0
+ 10.0.5.0
+ 10.1.0.0
+ 9.4.15.0
+ 10.0.6.0
+ 10.1.1.0
+ 10.1.2.0
+ 10.0.7.0
+ 10.0.8.0
+ 10.1.3.0
@@ -197,7 +197,5 @@
Files/downloads
-
-
index.txt
diff --git a/files/downloads/snapshots/index.html b/files/downloads/snapshots/index.html
index a0031ef3..6f507c07 100644
--- a/files/downloads/snapshots/index.html
+++ b/files/downloads/snapshots/index.html
@@ -4,6 +4,6 @@
---
Files/downloads/snapshots
- ..
+ ..
Nightly Snapshots
diff --git a/getting-started.markdown b/getting-started.markdown
index 34ea7db9..70c2c184 100644
--- a/getting-started.markdown
+++ b/getting-started.markdown
@@ -1,31 +1,52 @@
---
layout: main
title: Getting Started
+description: "Install JRuby and run your first program in a few steps, on any platform with a JVM."
---
# Getting Started with JRuby
-
-JRuby is one of the easiest Ruby implementations to set up. Let's start with the basic instructions:
-1. **Download JRuby**: Visit the [download page](/download) and grab the binaries for the latest JRuby release.
-2. **Unpack JRuby**: Unpack the file you downloaded. You'll then have a "jruby-<version>" directory.
-3. **Run JRuby**: The JRuby startup script lives in the "bin" directory. Run "bin/jruby -v" to confirm it.
+JRuby is one of the easiest Ruby implementations to set up.
+
+## Basic Installation
+
+1. **Download JRuby** — Visit the [download page](/download) and grab the binaries for the latest JRuby release.
+2. **Unpack JRuby** — Unpack the file you downloaded. You'll then have a `jruby-
` directory.
+3. **Add to PATH** — Add the `bin` subdirectory to the end of your PATH.
+4. **Test it** — Run `jruby -v` to confirm it's working.
That's about it!
-# Windows
+## Windows
+
+If you're on Windows, we've prepared several flavours of [installers](/download) for you. Just pick 32-bit or 64-bit and whether to bundle the Java Virtual Machine or not.
+
+## Version Managers
+
+### RVM
+
+```bash
+rvm install jruby
+```
+
+### rbenv + ruby-build
+
+```bash
+rbenv install jruby-{{ site.release.version }}
+```
+
+### Homebrew (macOS)
-If you're on Windows, we've already prepared several flavors of
-[installers](/download) for you. Just pick 32- or 64-bit, and whether
-to bundle the Java Virtual Machine or not.
+```bash
+brew install jruby
+```
-# Other ways to get JRuby
+## OS Packages
-If you use [RVM](https://rvm.io/), then installing
-JRuby is also a piece of cake:
+JRuby may also be available as OS packages for your favourite package manager. Check the [JRuby Distributions]({{ site.urls.wiki }}/JRubyDistributions) page on the wiki for more information.
- rvm install jruby
+## Next Steps
-JRuby might also be available as OS packages for your favorite package
-manager, check the [JRuby Distributions](https://github.com/jruby/jruby/wiki/JRubyDistributions)
-page for more information.
+- [Documentation](/documentation) — API docs, articles, and the wiki
+- [Community](/community) — Connect with other JRuby users
+- [JRuby Wiki]({{ site.urls.wiki }}) — Comprehensive user-edited documentation
diff --git a/gsoc.markdown b/gsoc.markdown
index bd016de0..f59a845c 100644
--- a/gsoc.markdown
+++ b/gsoc.markdown
@@ -3,6 +3,8 @@ title: Google Summer of Code 2013
layout: main
---
+# Google Summer of Code 2013
+
JRuby will be part of [Google's Summer of Code 2013](https://www.google-melange.com/archive/gsoc/2013)!
We're looking for good mentors and students to come together and
@@ -18,7 +20,7 @@ expect of students and mentors.
Ideas
-----
-[Ideas for JRuby's GSoC]((https://github.com/jruby/jruby/wiki/Google-Summer-of-Code-2013) fall into a few categories:
+[Ideas for JRuby's GSoC](https://github.com/jruby/jruby/wiki/Google-Summer-of-Code-2013) fall into a few categories:
* Working on JRuby itself
diff --git a/images/jruby-logo-white.png b/images/jruby-logo-white.png
new file mode 100644
index 00000000..9e4eaf07
Binary files /dev/null and b/images/jruby-logo-white.png differ
diff --git a/images/og-image.png b/images/og-image.png
new file mode 100644
index 00000000..d19693e0
Binary files /dev/null and b/images/og-image.png differ
diff --git a/index.html b/index.html
index 55e25b26..2dbfd30a 100644
--- a/index.html
+++ b/index.html
@@ -2,91 +2,51 @@
layout: home
title: Home
---
-
-
-
-
-
-
-
-
The Best of the JVM
-
- High performance
- Real threading
- Vast array of libraries
-
-
-
-
It's Just Ruby
-
- Ruby 4.0 compatible
-
-
-
-
-
-
-
-
-
-
-
- Extract JRuby into a directory.
+
+
+ The Ruby Programming Language on the JVM — high performance, real threading, and the entire Java ecosystem at your fingertips.
+
+
- Add that directory's bin subdirectory to
- the end of your path.
+
+ Enterprise Support
+ Keep JRuby running — without burning your team
+ Running JRuby in production? Don't leave your engineers firefighting obscure JVM or Ruby compatibility issues alone. Headius Enterprises gives you direct access to the people who wrote JRuby — so your team ships features while the experts handle the hard stuff.
+
+ Talk to the JRuby Core Team →
+
+
- Test it: jruby -v
-
-
Detailed instructions →
-
-
-
-
-
-
-
-
+
+
+
The Best of the JVM
+
+ High performance
+ Real threading
+ Vast array of libraries
+
+
+
+
It's Just Ruby
+
Ruby 4.0 compatible. Drop-in replacement for MRI.
+
+
+
Platform Independent
+
+ Easy to install
+ Easy migration
+ No hassles
+
+
+
-
+
diff --git a/news.html b/news.html
index ecd7cf84..a371dc09 100644
--- a/news.html
+++ b/news.html
@@ -1,12 +1,18 @@
---
-layout: main
+layout: default
title: News
+description: "JRuby release announcements and project updates."
---
-
Recent News
-{% for post in site.posts %}
-
-
{{ post.date | date: "%A, %B %d %Y" }}
-
- {{ post.content }}
+
+
JRuby News
+
Release announcements and project updates. Atom Feed →
+
+
+ {% for post in site.posts %}
+
+ {% endfor %}
+
-{% endfor %}
diff --git a/nightly.markdown b/nightly.markdown
index e1d5d265..86213ed5 100644
--- a/nightly.markdown
+++ b/nightly.markdown
@@ -1,8 +1,13 @@
---
layout: main
-title: JRuby Nightly Builds
+title: Nightly Builds
+description: "Download nightly JRuby snapshots to test upcoming features."
---
-# JRuby Nightly Builds
+# Nightly Builds
+
+
+⚠️ Nightly builds are development snapshots and may be unstable. Use them for testing only.
+
The most recent successful snapshot gets published to Sonatype's snapshots repository every night and after every successful CI run. Only the `master` branch is automatically published.
@@ -23,3 +28,7 @@ We also publish other non-Maven artifacts on a regular basis.
[**Docker images**](https://hub.docker.com/_/jruby): Dev snapshots are published to Docker Hub on request or after major updates.
[**Dev builds on GitHub**](https://github.com/ruby/jruby-dev-builder/releases): Dev snapshots are packaged for the `setup-ruby` GitHub Action and other installers on a nightly basis.
+
+## Reporting Issues
+
+If you find a problem with a nightly build, please report it on the [issue tracker]({{ site.urls.bugs }}) and mention which nightly build you are using (date and commit hash).
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000..3f06a6cc
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,6 @@
+{
+ "name": "jg_jruby",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+}
diff --git a/rakelib/release.rake b/rakelib/release.rake
index 2819d32b..6ab1a7bb 100644
--- a/rakelib/release.rake
+++ b/rakelib/release.rake
@@ -95,7 +95,7 @@ title: Files/downloads/#{version}
---
Files/downloads/#{version}
- ..
+ ..
jruby-bin-#{version}.tar.gz
jruby-bin-#{version}.tar.gz.md5
jruby-bin-#{version}.tar.gz.sha1
@@ -130,7 +130,7 @@ EOS
index_file = "#{downloads_dir}/index.html"
contents = File.read(index_file)
contents.gsub! //, <<"EOS"
- #{version}
+ #{version}
EOS
diff --git a/robots.txt b/robots.txt
index 085187fa..8847914f 100644
--- a/robots.txt
+++ b/robots.txt
@@ -1,5 +1,6 @@
-# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
-#
-# To ban all spiders from the entire site uncomment the next two lines:
-# User-Agent: *
-# Disallow: /
+# All crawlers are welcome, including AI search and AI training
+User-agent: *
+Allow: /
+Content-Signal: search=yes, ai-input=yes, ai-train=yes
+
+Sitemap: https://www.jruby.org/sitemap.xml
diff --git a/security.markdown b/security.markdown
index 1cc05039..62e44319 100644
--- a/security.markdown
+++ b/security.markdown
@@ -1,57 +1,39 @@
---
layout: main
title: Security
+description: "How to report JRuby security vulnerabilities, and a list of known issues."
---
# Security
-## Reporting Security Vulnerabilities
-
-Please send an email to
-[security@jruby.org](mailto:security@jruby.org) when you think you
-have found a security vulnerability in JRuby or one of its associated
-libraries (such as the [jruby-openssl][] gem). We will do our best to
-respond to you within 72 hours and work with you to fix and properly
-disclose the nature of the vulnerability. Please note that
-[security@jruby.org](mailto:security@jruby.org) is a private email
-address and email sent to it will not result in public disclosure.
-
-## Disclosure Procedure
-
-The JRuby team will endeavor to follow these steps when handling
-reported vulnerabilities:
-
-1. Work with the reporter to determine the appropriate fix within
- 24-72 hours of the initial email report.
-2. Once the fix has been found, wait for an embargo period of 48
- hours.
-3. After the embargo has passed, push out a new software release
- containing the fix.
-4. Send email announcement on [jruby-user][] mailing list containing
- source patch for most recent release.
-5. Post an announcement on [jruby.org](/news) and list below.
-
-## Known vulnerabilities
-
-### December 27, 2011 -- JRuby 1.6.5.1
-
-Recommended upgrade. Potential for DOS attacks with specially crafted large
-hash/parameter lists. See [the announcement for details][jruby1651].
-
-### April 26, 2010 -- JRuby 1.4.1
-
-Recommended upgrade. Potential for XSS attacks on prior versions of
-JRuby. See [the announcement for details][jruby141].
-
-### December 7, 2009 -- jruby-openssl 0.6
-
-Recommended upgrade. Affects some applications that use
-OpenSSL::SSL::VERIFY_PEER mode and jruby-openssl 0.5.2 or earlier. See
-[the announcement for details][jossl06].
-
-[jruby-openssl]: https://rubygems.org/gems/jruby-openssl
-[jossl06]: /2009/12/07/vulnerability-in-jruby-openssl
-[vendor-sec]: https://oss-security.openwall.org/wiki/mailing-lists/vendor-sec
-[jruby-user]: https://github.com/jruby/jruby/wiki/MailingLists
-[jruby141]: 2010/04/26/jruby-1-4-1-xss-vulnerability
-[jruby1651]: 2011/12/27/jruby-1-6-5-1
+## Reporting Vulnerabilities
+
+Please report security vulnerabilities to **[security@jruby.org](mailto:security@jruby.org)**. This is a private channel monitored by the core team. We aim to respond within 72 hours.
+
+## Disclosure Process
+
+1. **Determine fixes** (24–72 hours) — The team will work to understand and address the issue.
+2. **Embargo** (48 hours) — A brief period before public disclosure.
+3. **Release patched software** — Updated packages are published.
+4. **Announce** — Via the jruby-user mailing list with source patches.
+5. **Post on jruby.org** — Added to the vulnerability list below.
+
+## Known Vulnerabilities
+
+
+
+ December 2011 — JRuby 1.6.5.1
+ DOS vulnerability with specially crafted large hash/parameter lists.
+ Announcement →
+
+
+ April 2010 — JRuby 1.4.1
+ Potential XSS attacks in earlier versions.
+ Announcement →
+
+
+ December 2009 — jruby-openssl 0.6
+ Affects applications using OpenSSL verification modes with jruby-openssl 0.5.2 or earlier.
+ Announcement →
+
+
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 00000000..feb9ea05
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,17 @@
+---
+layout: null
+---
+
+
+{%- for p in site.pages -%}
+ {%- assign ext = p.name | split: "." | last -%}
+ {%- if ext == "html" or ext == "markdown" -%}
+ {%- unless p.url == "/404.html" %}
+ https://{{ site.domain }}{{ p.url | replace: "index.html", "" | replace: ".html", "" }}
+ {%- endunless -%}
+ {%- endif -%}
+{%- endfor -%}
+{%- for p in site.posts %}
+ https://{{ site.domain }}{{ p.url | replace: ".html", "" }} {{ p.date | date: "%Y-%m-%d" }}
+{%- endfor %}
+
diff --git a/stylesheets/pico.classless.min.css b/stylesheets/pico.classless.min.css
new file mode 100644
index 00000000..3e199525
--- /dev/null
+++ b/stylesheets/pico.classless.min.css
@@ -0,0 +1,4 @@
+@charset "UTF-8";/*!
+ * Pico CSS ✨ v2.1.1 (https://picocss.com)
+ * Copyright 2019-2025 - Licensed under MIT
+ */:host,:root{--pico-font-family-emoji:"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--pico-font-family-sans-serif:system-ui,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,Helvetica,Arial,"Helvetica Neue",sans-serif,var(--pico-font-family-emoji);--pico-font-family-monospace:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace,var(--pico-font-family-emoji);--pico-font-family:var(--pico-font-family-sans-serif);--pico-line-height:1.5;--pico-font-weight:400;--pico-font-size:100%;--pico-text-underline-offset:0.1rem;--pico-border-radius:0.25rem;--pico-border-width:0.0625rem;--pico-outline-width:0.125rem;--pico-transition:0.2s ease-in-out;--pico-spacing:1rem;--pico-typography-spacing-vertical:1rem;--pico-block-spacing-vertical:var(--pico-spacing);--pico-block-spacing-horizontal:var(--pico-spacing);--pico-form-element-spacing-vertical:0.75rem;--pico-form-element-spacing-horizontal:1rem;--pico-group-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-group-box-shadow-focus-with-button:0 0 0 var(--pico-outline-width) var(--pico-primary-focus);--pico-group-box-shadow-focus-with-input:0 0 0 0.0625rem var(--pico-form-element-border-color);--pico-modal-overlay-backdrop-filter:blur(0.375rem);--pico-nav-element-spacing-vertical:1rem;--pico-nav-element-spacing-horizontal:0.5rem;--pico-nav-link-spacing-vertical:0.5rem;--pico-nav-link-spacing-horizontal:0.5rem;--pico-nav-breadcrumb-divider:">";--pico-icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--pico-icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--pico-icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--pico-icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--pico-icon-loading:url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E")}@media (min-width:576px){:host,:root{--pico-font-size:106.25%}}@media (min-width:768px){:host,:root{--pico-font-size:112.5%}}@media (min-width:1024px){:host,:root{--pico-font-size:118.75%}}@media (min-width:1280px){:host,:root{--pico-font-size:125%}}@media (min-width:1536px){:host,:root{--pico-font-size:131.25%}}a{--pico-text-decoration:underline}small{--pico-font-size:0.875em}h1,h2,h3,h4,h5,h6{--pico-font-weight:700}h1{--pico-font-size:2rem;--pico-line-height:1.125;--pico-typography-spacing-top:3rem}h2{--pico-font-size:1.75rem;--pico-line-height:1.15;--pico-typography-spacing-top:2.625rem}h3{--pico-font-size:1.5rem;--pico-line-height:1.175;--pico-typography-spacing-top:2.25rem}h4{--pico-font-size:1.25rem;--pico-line-height:1.2;--pico-typography-spacing-top:1.874rem}h5{--pico-font-size:1.125rem;--pico-line-height:1.225;--pico-typography-spacing-top:1.6875rem}h6{--pico-font-size:1rem;--pico-line-height:1.25;--pico-typography-spacing-top:1.5rem}tfoot td,tfoot th,thead td,thead th{--pico-font-weight:600;--pico-border-width:0.1875rem}code,kbd,pre,samp{--pico-font-family:var(--pico-font-family-monospace)}kbd{--pico-font-weight:bolder}:where(select,textarea),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-outline-width:0.0625rem}[type=search]{--pico-border-radius:5rem}[type=checkbox],[type=radio]{--pico-border-width:0.125rem}[type=checkbox][role=switch]{--pico-border-width:0.1875rem}[role=search]{--pico-border-radius:5rem}[role=group] [role=button],[role=group] [type=button],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=submit],[role=search] button{--pico-form-element-spacing-horizontal:2rem}details summary[role=button]::after{filter:brightness(0) invert(1)}[aria-busy=true]:not(input,select,textarea):is(button,[type=submit],[type=button],[type=reset],[role=button])::before{filter:brightness(0) invert(1)}:host(:not([data-theme=dark])),:root:not([data-theme=dark]),[data-theme=light]{color-scheme:light;--pico-background-color:#fff;--pico-color:#373c44;--pico-text-selection-color:rgba(2, 154, 232, 0.25);--pico-muted-color:#646b79;--pico-muted-border-color:rgb(231, 234, 239.5);--pico-primary:#0172ad;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 114, 173, 0.5);--pico-primary-hover:#015887;--pico-primary-hover-background:#02659a;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(2, 154, 232, 0.5);--pico-primary-inverse:#fff;--pico-secondary:#5d6b89;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(93, 107, 137, 0.5);--pico-secondary-hover:#48536b;--pico-secondary-hover-background:#48536b;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(93, 107, 137, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#181c25;--pico-contrast-background:#181c25;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(24, 28, 37, 0.5);--pico-contrast-hover:#000;--pico-contrast-hover-background:#000;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-secondary-hover);--pico-contrast-focus:rgba(93, 107, 137, 0.25);--pico-contrast-inverse:#fff;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(129, 145, 181, 0.01698),0.0335rem 0.067rem 0.402rem rgba(129, 145, 181, 0.024),0.0625rem 0.125rem 0.75rem rgba(129, 145, 181, 0.03),0.1125rem 0.225rem 1.35rem rgba(129, 145, 181, 0.036),0.2085rem 0.417rem 2.502rem rgba(129, 145, 181, 0.04302),0.5rem 1rem 6rem rgba(129, 145, 181, 0.06),0 0 0 0.0625rem rgba(129, 145, 181, 0.015);--pico-h1-color:#2d3138;--pico-h2-color:#373c44;--pico-h3-color:#424751;--pico-h4-color:#4d535e;--pico-h5-color:#5c6370;--pico-h6-color:#646b79;--pico-mark-background-color:rgb(252.5, 230.5, 191.5);--pico-mark-color:#0f1114;--pico-ins-color:rgb(28.5, 105.5, 84);--pico-del-color:rgb(136, 56.5, 53);--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:rgb(243, 244.5, 246.75);--pico-code-color:#646b79;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:rgb(251, 251.5, 252.25);--pico-form-element-selected-background-color:#dfe3eb;--pico-form-element-border-color:#cfd5e2;--pico-form-element-color:#23262c;--pico-form-element-placeholder-color:var(--pico-muted-color);--pico-form-element-active-background-color:#fff;--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:rgb(183.5, 105.5, 106.5);--pico-form-element-invalid-active-border-color:rgb(200.25, 79.25, 72.25);--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:rgb(76, 154.5, 137.5);--pico-form-element-valid-active-border-color:rgb(39, 152.75, 118.75);--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#bfc7d9;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#dfe3eb;--pico-range-active-border-color:#bfc7d9;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:var(--pico-background-color);--pico-card-border-color:var(--pico-muted-border-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:rgb(251, 251.5, 252.25);--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(232, 234, 237, 0.75);--pico-progress-background-color:#dfe3eb;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 154.5, 137.5)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200.25, 79.25, 72.25)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E")}:host(:not([data-theme=dark])) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]),:root:not([data-theme=dark]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]),[data-theme=light] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}@media only screen and (prefers-color-scheme:dark){:host(:not([data-theme])),:root:not([data-theme]){color-scheme:dark;--pico-background-color:rgb(19, 22.5, 30.5);--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06),0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:rgb(205.5, 126, 123);--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:rgb(26, 30.5, 40.25);--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:rgb(28, 33, 43.5);--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:rgb(26, 30.5, 40.25);--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:rgb(149.5, 74, 80);--pico-form-element-invalid-active-border-color:rgb(183.25, 63.5, 59);--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:rgb(22, 137, 105.5);--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:rgb(26, 30.5, 40.25);--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(7.5, 8.5, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(149.5, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E")}:host(:not([data-theme])) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]),:root:not([data-theme]) input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}}[data-theme=dark]{color-scheme:dark;--pico-background-color:rgb(19, 22.5, 30.5);--pico-color:#c2c7d0;--pico-text-selection-color:rgba(1, 170, 255, 0.1875);--pico-muted-color:#7b8495;--pico-muted-border-color:#202632;--pico-primary:#01aaff;--pico-primary-background:#0172ad;--pico-primary-border:var(--pico-primary-background);--pico-primary-underline:rgba(1, 170, 255, 0.5);--pico-primary-hover:#79c0ff;--pico-primary-hover-background:#017fc0;--pico-primary-hover-border:var(--pico-primary-hover-background);--pico-primary-hover-underline:var(--pico-primary-hover);--pico-primary-focus:rgba(1, 170, 255, 0.375);--pico-primary-inverse:#fff;--pico-secondary:#969eaf;--pico-secondary-background:#525f7a;--pico-secondary-border:var(--pico-secondary-background);--pico-secondary-underline:rgba(150, 158, 175, 0.5);--pico-secondary-hover:#b3b9c5;--pico-secondary-hover-background:#5d6b89;--pico-secondary-hover-border:var(--pico-secondary-hover-background);--pico-secondary-hover-underline:var(--pico-secondary-hover);--pico-secondary-focus:rgba(144, 158, 190, 0.25);--pico-secondary-inverse:#fff;--pico-contrast:#dfe3eb;--pico-contrast-background:#eff1f4;--pico-contrast-border:var(--pico-contrast-background);--pico-contrast-underline:rgba(223, 227, 235, 0.5);--pico-contrast-hover:#fff;--pico-contrast-hover-background:#fff;--pico-contrast-hover-border:var(--pico-contrast-hover-background);--pico-contrast-hover-underline:var(--pico-contrast-hover);--pico-contrast-focus:rgba(207, 213, 226, 0.25);--pico-contrast-inverse:#000;--pico-box-shadow:0.0145rem 0.029rem 0.174rem rgba(7, 8.5, 12, 0.01698),0.0335rem 0.067rem 0.402rem rgba(7, 8.5, 12, 0.024),0.0625rem 0.125rem 0.75rem rgba(7, 8.5, 12, 0.03),0.1125rem 0.225rem 1.35rem rgba(7, 8.5, 12, 0.036),0.2085rem 0.417rem 2.502rem rgba(7, 8.5, 12, 0.04302),0.5rem 1rem 6rem rgba(7, 8.5, 12, 0.06),0 0 0 0.0625rem rgba(7, 8.5, 12, 0.015);--pico-h1-color:#f0f1f3;--pico-h2-color:#e0e3e7;--pico-h3-color:#c2c7d0;--pico-h4-color:#b3b9c5;--pico-h5-color:#a4acba;--pico-h6-color:#8891a4;--pico-mark-background-color:#014063;--pico-mark-color:#fff;--pico-ins-color:#62af9a;--pico-del-color:rgb(205.5, 126, 123);--pico-blockquote-border-color:var(--pico-muted-border-color);--pico-blockquote-footer-color:var(--pico-muted-color);--pico-button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-table-border-color:var(--pico-muted-border-color);--pico-table-row-stripped-background-color:rgba(111, 120, 135, 0.0375);--pico-code-background-color:rgb(26, 30.5, 40.25);--pico-code-color:#8891a4;--pico-code-kbd-background-color:var(--pico-color);--pico-code-kbd-color:var(--pico-background-color);--pico-form-element-background-color:rgb(28, 33, 43.5);--pico-form-element-selected-background-color:#2a3140;--pico-form-element-border-color:#2a3140;--pico-form-element-color:#e0e3e7;--pico-form-element-placeholder-color:#8891a4;--pico-form-element-active-background-color:rgb(26, 30.5, 40.25);--pico-form-element-active-border-color:var(--pico-primary-border);--pico-form-element-focus-color:var(--pico-primary-border);--pico-form-element-disabled-opacity:0.5;--pico-form-element-invalid-border-color:rgb(149.5, 74, 80);--pico-form-element-invalid-active-border-color:rgb(183.25, 63.5, 59);--pico-form-element-invalid-focus-color:var(--pico-form-element-invalid-active-border-color);--pico-form-element-valid-border-color:#2a7b6f;--pico-form-element-valid-active-border-color:rgb(22, 137, 105.5);--pico-form-element-valid-focus-color:var(--pico-form-element-valid-active-border-color);--pico-switch-background-color:#333c4e;--pico-switch-checked-background-color:var(--pico-primary-background);--pico-switch-color:#fff;--pico-switch-thumb-box-shadow:0 0 0 rgba(0, 0, 0, 0);--pico-range-border-color:#202632;--pico-range-active-border-color:#2a3140;--pico-range-thumb-border-color:var(--pico-background-color);--pico-range-thumb-color:var(--pico-secondary-background);--pico-range-thumb-active-color:var(--pico-primary-background);--pico-accordion-border-color:var(--pico-muted-border-color);--pico-accordion-active-summary-color:var(--pico-primary-hover);--pico-accordion-close-summary-color:var(--pico-color);--pico-accordion-open-summary-color:var(--pico-muted-color);--pico-card-background-color:#181c25;--pico-card-border-color:var(--pico-card-background-color);--pico-card-box-shadow:var(--pico-box-shadow);--pico-card-sectioning-background-color:rgb(26, 30.5, 40.25);--pico-loading-spinner-opacity:0.5;--pico-modal-overlay-background-color:rgba(7.5, 8.5, 10, 0.75);--pico-progress-background-color:#202632;--pico-progress-color:var(--pico-primary-background);--pico-tooltip-background-color:var(--pico-contrast-background);--pico-tooltip-color:var(--pico-contrast-inverse);--pico-icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(42, 123, 111)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--pico-icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(149.5, 74, 80)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E")}[data-theme=dark] input:is([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[type=file]){--pico-form-element-focus-color:var(--pico-primary-focus)}[type=checkbox],[type=radio],[type=range],progress{accent-color:var(--pico-primary)}*,::after,::before{box-sizing:border-box;background-repeat:no-repeat}::after,::before{text-decoration:inherit;vertical-align:inherit}:where(:host),:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family);text-underline-offset:var(--pico-text-underline-offset);text-rendering:optimizeLegibility;overflow-wrap:break-word;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{width:100%;margin:0}main{display:block}body>footer,body>header,body>main{width:100%;margin-right:auto;margin-left:auto;padding:var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal)}@media (min-width:576px){body>footer,body>header,body>main{max-width:510px;padding-right:0;padding-left:0}}@media (min-width:768px){body>footer,body>header,body>main{max-width:700px}}@media (min-width:1024px){body>footer,body>header,body>main{max-width:950px}}@media (min-width:1280px){body>footer,body>header,body>main{max-width:1200px}}@media (min-width:1536px){body>footer,body>header,body>main{max-width:1450px}}section{margin-bottom:var(--pico-block-spacing-vertical)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-style:normal;font-weight:var(--pico-font-weight)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--pico-typography-spacing-vertical);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:var(--pico-font-size);line-height:var(--pico-line-height);font-family:var(--pico-font-family)}h1{--pico-color:var(--pico-h1-color)}h2{--pico-color:var(--pico-h2-color)}h3{--pico-color:var(--pico-h3-color)}h4{--pico-color:var(--pico-h4-color)}h5{--pico-color:var(--pico-h5-color)}h6{--pico-color:var(--pico-h6-color)}:where(article,address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--pico-typography-spacing-top)}p{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup{margin-bottom:var(--pico-typography-spacing-vertical)}hgroup>*{margin-top:0;margin-bottom:0}hgroup>:not(:first-child):last-child{--pico-color:var(--pico-muted-color);--pico-font-weight:unset;font-size:1rem}:where(ol,ul) li{margin-bottom:calc(var(--pico-typography-spacing-vertical) * .25)}:where(dl,ol,ul) :where(dl,ol,ul){margin:0;margin-top:calc(var(--pico-typography-spacing-vertical) * .25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--pico-mark-background-color);color:var(--pico-mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--pico-typography-spacing-vertical) 0;padding:var(--pico-spacing);border-right:none;border-left:.25rem solid var(--pico-blockquote-border-color);border-inline-start:0.25rem solid var(--pico-blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--pico-typography-spacing-vertical) * .5);color:var(--pico-blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--pico-ins-color);text-decoration:none}del{color:var(--pico-del-color)}::-moz-selection{background-color:var(--pico-text-selection-color)}::selection{background-color:var(--pico-text-selection-color)}:where(a:not([role=button])),[role=link]{--pico-color:var(--pico-primary);--pico-background-color:transparent;--pico-underline:var(--pico-primary-underline);outline:0;background-color:var(--pico-background-color);color:var(--pico-color);-webkit-text-decoration:var(--pico-text-decoration);text-decoration:var(--pico-text-decoration);text-decoration-color:var(--pico-underline);text-underline-offset:0.125em;transition:background-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),color var(--pico-transition),text-decoration var(--pico-transition),box-shadow var(--pico-transition),-webkit-text-decoration var(--pico-transition)}:where(a:not([role=button])):is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[role=link]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-color:var(--pico-primary-hover);--pico-underline:var(--pico-primary-hover-underline);--pico-text-decoration:underline}:where(a:not([role=button])):focus-visible,[role=link]:focus-visible{box-shadow:0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}a[role=button]{display:inline-block}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[role=button],[type=button],[type=file]::file-selector-button,[type=reset],[type=submit],button{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);--pico-color:var(--pico-primary-inverse);--pico-box-shadow:var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);font-size:1rem;line-height:var(--pico-line-height);text-align:center;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}[role=button]:is(:hover,:active,:focus),[role=button]:is([aria-current]:not([aria-current=false])),[type=button]:is(:hover,:active,:focus),[type=button]:is([aria-current]:not([aria-current=false])),[type=file]::file-selector-button:is(:hover,:active,:focus),[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])),[type=reset]:is(:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false])),[type=submit]:is(:hover,:active,:focus),[type=submit]:is([aria-current]:not([aria-current=false])),button:is(:hover,:active,:focus),button:is([aria-current]:not([aria-current=false])){--pico-background-color:var(--pico-primary-hover-background);--pico-border-color:var(--pico-primary-hover-border);--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--pico-color:var(--pico-primary-inverse)}[role=button]:focus,[role=button]:is([aria-current]:not([aria-current=false])):focus,[type=button]:focus,[type=button]:is([aria-current]:not([aria-current=false])):focus,[type=file]::file-selector-button:focus,[type=file]::file-selector-button:is([aria-current]:not([aria-current=false])):focus,[type=reset]:focus,[type=reset]:is([aria-current]:not([aria-current=false])):focus,[type=submit]:focus,[type=submit]:is([aria-current]:not([aria-current=false])):focus,button:focus,button:is([aria-current]:not([aria-current=false])):focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-primary-focus)}[type=button],[type=reset],[type=submit]{margin-bottom:var(--pico-spacing)}[type=file]::file-selector-button,[type=reset]{--pico-background-color:var(--pico-secondary-background);--pico-border-color:var(--pico-secondary-border);--pico-color:var(--pico-secondary-inverse);cursor:pointer}[type=file]::file-selector-button:is([aria-current]:not([aria-current=false]),:hover,:active,:focus),[type=reset]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border);--pico-color:var(--pico-secondary-inverse)}[type=file]::file-selector-button:focus,[type=reset]:focus{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}:where(button,[type=submit],[type=reset],[type=button],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]){opacity:.5;pointer-events:none}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}td,th{padding:calc(var(--pico-spacing)/ 2) var(--pico-spacing);border-bottom:var(--pico-border-width) solid var(--pico-table-border-color);background-color:var(--pico-background-color);color:var(--pico-color);font-weight:var(--pico-font-weight);text-align:left;text-align:start}tfoot td,tfoot th{border-top:var(--pico-border-width) solid var(--pico-table-border-color);border-bottom:0}table.striped tbody tr:nth-child(odd) td,table.striped tbody tr:nth-child(odd) th{background-color:var(--pico-table-row-stripped-background-color)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:host),svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-size:.875em;font-family:var(--pico-font-family)}pre code,pre samp{font-size:inherit;font-family:inherit}pre{-ms-overflow-style:scrollbar;overflow:auto}code,kbd,pre,samp{border-radius:var(--pico-border-radius);background:var(--pico-code-background-color);color:var(--pico-code-color);font-weight:var(--pico-font-weight);line-height:initial}code,kbd,samp{display:inline-block;padding:.375rem}pre{display:block;margin-bottom:var(--pico-spacing);overflow-x:auto}pre>code,pre>samp{display:block;padding:var(--pico-spacing);background:0 0;line-height:var(--pico-line-height)}kbd{background-color:var(--pico-code-kbd-background-color);color:var(--pico-code-kbd-color);vertical-align:baseline}figure{display:block;margin:0;padding:0}figure figcaption{padding:calc(var(--pico-spacing) * .5) 0;color:var(--pico-muted-color)}hr{height:0;margin:var(--pico-typography-spacing-vertical) 0;border:0;border-top:1px solid var(--pico-muted-border-color);color:inherit}[hidden],template{display:none!important}canvas{display:inline-block}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--pico-line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:0}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2)}fieldset{width:100%;margin:0;margin-bottom:var(--pico-spacing);padding:0;border:0}fieldset legend,label{display:block;margin-bottom:calc(var(--pico-spacing) * .375);color:var(--pico-color);font-weight:var(--pico-form-label-font-weight,var(--pico-font-weight))}fieldset legend{margin-bottom:calc(var(--pico-spacing) * .5)}button[type=submit],input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal)}input,select,textarea{--pico-background-color:var(--pico-form-element-background-color);--pico-border-color:var(--pico-form-element-border-color);--pico-color:var(--pico-form-element-color);--pico-box-shadow:none;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:var(--pico-border-radius);outline:0;background-color:var(--pico-background-color);box-shadow:var(--pico-box-shadow);color:var(--pico-color);font-weight:var(--pico-font-weight);transition:background-color var(--pico-transition),border-color var(--pico-transition),color var(--pico-transition),box-shadow var(--pico-transition)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus){--pico-background-color:var(--pico-form-element-active-background-color)}:where(select,textarea):not([readonly]):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus){--pico-border-color:var(--pico-form-element-active-border-color)}:where(select,textarea):not([readonly]):focus,input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus{--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color)}:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea),input:not([type=submit],[type=button],[type=reset])[disabled],label[aria-disabled=true],select[disabled],textarea[disabled]{opacity:var(--pico-form-element-disabled-opacity);pointer-events:none}label[aria-disabled=true] input[disabled]{opacity:1}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid]{padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal)!important;padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem)!important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=false]:not(select){background-image:var(--pico-icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week],[type=range])[aria-invalid=true]:not(select){background-image:var(--pico-icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--pico-border-color:var(--pico-form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--pico-border-color:var(--pico-form-element-valid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color)!important}:where(input,select,textarea)[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--pico-border-color:var(--pico-form-element-invalid-active-border-color)!important}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus):not([type=checkbox],[type=radio]){--pico-box-shadow:0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color)!important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::-webkit-input-placeholder,input::placeholder,select:invalid,textarea::-webkit-input-placeholder,textarea::placeholder{color:var(--pico-form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--pico-spacing)}select::-ms-expand{border:0;background-color:transparent}select:not([multiple],[size]){padding-right:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);padding-left:var(--pico-form-element-spacing-horizontal);padding-inline-start:var(--pico-form-element-spacing-horizontal);padding-inline-end:calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);background-image:var(--pico-icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}select[multiple] option:checked{background:var(--pico-form-element-selected-background-color);color:var(--pico-form-element-color)}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}textarea{display:block;resize:vertical}textarea[aria-invalid]{--pico-icon-height:calc(1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 + var(--pico-border-width) * 2);background-position:top right .75rem!important;background-size:1rem var(--pico-icon-height)!important}:where(input,select,textarea,fieldset)+small{display:block;width:100%;margin-top:calc(var(--pico-spacing) * -.75);margin-bottom:var(--pico-spacing);color:var(--pico-muted-color)}:where(input,select,textarea,fieldset)[aria-invalid=false]+small{color:var(--pico-ins-color)}:where(input,select,textarea,fieldset)[aria-invalid=true]+small{color:var(--pico-del-color)}label>:where(input,select,textarea){margin-top:calc(var(--pico-spacing) * .25)}label:has([type=checkbox],[type=radio]){width:-moz-fit-content;width:fit-content;cursor:pointer}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-inline-end:.5em;border-width:var(--pico-border-width);vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-bottom:0;cursor:pointer}[type=checkbox]~label:not(:last-of-type),[type=radio]~label:not(:last-of-type){margin-inline-end:1em}[type=checkbox]:indeterminate{--pico-background-color:var(--pico-primary-background);--pico-border-color:var(--pico-primary-border);background-image:var(--pico-icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--pico-background-color:var(--pico-primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--pico-background-color:var(--pico-switch-background-color);--pico-color:var(--pico-switch-color);width:2.25em;height:1.25em;border:var(--pico-border-width) solid var(--pico-border-color);border-radius:1.25em;background-color:var(--pico-background-color);line-height:1.25em}[type=checkbox][role=switch]:not([aria-invalid]){--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:before{display:block;aspect-ratio:1;height:100%;border-radius:50%;background-color:var(--pico-color);box-shadow:var(--pico-switch-thumb-box-shadow);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:focus{--pico-background-color:var(--pico-switch-background-color);--pico-border-color:var(--pico-switch-background-color)}[type=checkbox][role=switch]:checked{--pico-background-color:var(--pico-switch-checked-background-color);--pico-border-color:var(--pico-switch-checked-background-color);background-image:none}[type=checkbox][role=switch]:checked::before{margin-inline-start:calc(2.25em - 1.25em)}[type=checkbox][role=switch][disabled]{--pico-background-color:var(--pico-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus{--pico-background-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--pico-background-color:var(--pico-form-element-invalid-border-color)}[type=checkbox][aria-invalid=false]:checked,[type=checkbox][aria-invalid=false]:checked:active,[type=checkbox][aria-invalid=false]:checked:focus,[type=checkbox][role=switch][aria-invalid=false]:checked,[type=checkbox][role=switch][aria-invalid=false]:checked:active,[type=checkbox][role=switch][aria-invalid=false]:checked:focus,[type=radio][aria-invalid=false]:checked,[type=radio][aria-invalid=false]:checked:active,[type=radio][aria-invalid=false]:checked:focus{--pico-border-color:var(--pico-form-element-valid-border-color)}[type=checkbox]:checked:active[aria-invalid=true],[type=checkbox]:checked:focus[aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=checkbox][role=switch]:checked:active[aria-invalid=true],[type=checkbox][role=switch]:checked:focus[aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true],[type=radio]:checked:active[aria-invalid=true],[type=radio]:checked:focus[aria-invalid=true],[type=radio]:checked[aria-invalid=true]{--pico-border-color:var(--pico-form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--pico-border-radius) * .5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--pico-icon-position:0.75rem;--pico-icon-width:1rem;padding-right:calc(var(--pico-icon-width) + var(--pico-icon-position));background-image:var(--pico-icon-date);background-position:center right var(--pico-icon-position);background-size:var(--pico-icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--pico-icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--pico-icon-width);margin-right:calc(var(--pico-icon-width) * -1);margin-left:var(--pico-icon-position);opacity:0}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--pico-form-element-spacing-horizontal)!important;background-image:none!important}}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}[type=file]{--pico-color:var(--pico-muted-color);margin-left:calc(var(--pico-outline-width) * -1);padding:calc(var(--pico-form-element-spacing-vertical) * .5) 0;padding-left:var(--pico-outline-width);border:0;border-radius:0;background:0 0}[type=file]::file-selector-button{margin-right:calc(var(--pico-spacing)/ 2);padding:calc(var(--pico-form-element-spacing-vertical) * .5) var(--pico-form-element-spacing-horizontal)}[type=file]:is(:hover,:active,:focus)::file-selector-button{--pico-background-color:var(--pico-secondary-hover-background);--pico-border-color:var(--pico-secondary-hover-border)}[type=file]:focus::file-selector-button{--pico-box-shadow:var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--pico-outline-width) var(--pico-secondary-focus)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:0 0}[type=range]::-webkit-slider-runnable-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-webkit-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-moz-range-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-moz-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-ms-track{width:100%;height:.375rem;border-radius:var(--pico-border-radius);background-color:var(--pico-range-border-color);-ms-transition:background-color var(--pico-transition),box-shadow var(--pico-transition);transition:background-color var(--pico-transition),box-shadow var(--pico-transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-webkit-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-moz-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.4375rem;border:2px solid var(--pico-range-thumb-border-color);border-radius:50%;background-color:var(--pico-range-thumb-color);cursor:pointer;-ms-transition:background-color var(--pico-transition),transform var(--pico-transition);transition:background-color var(--pico-transition),transform var(--pico-transition)}[type=range]:active,[type=range]:focus-within{--pico-range-border-color:var(--pico-range-active-border-color);--pico-range-thumb-color:var(--pico-range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem);background-image:var(--pico-icon-search);background-position:center left calc(var(--pico-form-element-spacing-horizontal) + .125rem);background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--pico-form-element-spacing-horizontal) + 1.75rem)!important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--pico-icon-search),var(--pico-icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--pico-icon-search),var(--pico-icon-invalid)}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}details{display:block;margin-bottom:var(--pico-spacing)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--pico-transition)}details summary:not([role]){color:var(--pico-accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--pico-spacing,1rem) * .5);float:right;transform:rotate(-90deg);background-image:var(--pico-icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--pico-transition)}details summary:focus{outline:0}details summary:focus:not([role]){color:var(--pico-accordion-active-summary-color)}details summary:focus-visible:not([role]){outline:var(--pico-outline-width) solid var(--pico-primary-focus);outline-offset:calc(var(--pico-spacing,1rem) * 0.5);color:var(--pico-primary)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem * var(--pico-line-height,1.5))}details[open]>summary{margin-bottom:var(--pico-spacing)}details[open]>summary:not([role]):not(:focus){color:var(--pico-accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin-bottom:var(--pico-block-spacing-vertical);padding:var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);border-radius:var(--pico-border-radius);background:var(--pico-card-background-color);box-shadow:var(--pico-card-box-shadow)}article>footer,article>header{margin-right:calc(var(--pico-block-spacing-horizontal) * -1);margin-left:calc(var(--pico-block-spacing-horizontal) * -1);padding:calc(var(--pico-block-spacing-vertical) * .66) var(--pico-block-spacing-horizontal);background-color:var(--pico-card-sectioning-background-color)}article>header{margin-top:calc(var(--pico-block-spacing-vertical) * -1);margin-bottom:var(--pico-block-spacing-vertical);border-bottom:var(--pico-border-width) solid var(--pico-card-border-color);border-top-right-radius:var(--pico-border-radius);border-top-left-radius:var(--pico-border-radius)}article>footer{margin-top:var(--pico-block-spacing-vertical);margin-bottom:calc(var(--pico-block-spacing-vertical) * -1);border-top:var(--pico-border-width) solid var(--pico-card-border-color);border-bottom-right-radius:var(--pico-border-radius);border-bottom-left-radius:var(--pico-border-radius)}[role=group],[role=search]{display:inline-flex;position:relative;width:100%;margin-bottom:var(--pico-spacing);border-radius:var(--pico-border-radius);box-shadow:var(--pico-group-box-shadow,0 0 0 transparent);vertical-align:middle;transition:box-shadow var(--pico-transition)}[role=group] input:not([type=checkbox],[type=radio]),[role=group] select,[role=group]>*,[role=search] input:not([type=checkbox],[type=radio]),[role=search] select,[role=search]>*{position:relative;flex:1 1 auto;margin-bottom:0}[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=group]>:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child),[role=search]>:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}[role=group] input:not([type=checkbox],[type=radio]):not(:last-child),[role=group] select:not(:last-child),[role=group]>:not(:last-child),[role=search] input:not([type=checkbox],[type=radio]):not(:last-child),[role=search] select:not(:last-child),[role=search]>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}[role=group] input:not([type=checkbox],[type=radio]):focus,[role=group] select:focus,[role=group]>:focus,[role=search] input:not([type=checkbox],[type=radio]):focus,[role=search] select:focus,[role=search]>:focus{z-index:2}[role=group] [role=button]:not(:first-child),[role=group] [type=button]:not(:first-child),[role=group] [type=reset]:not(:first-child),[role=group] [type=submit]:not(:first-child),[role=group] button:not(:first-child),[role=group] input:not([type=checkbox],[type=radio]):not(:first-child),[role=group] select:not(:first-child),[role=search] [role=button]:not(:first-child),[role=search] [type=button]:not(:first-child),[role=search] [type=reset]:not(:first-child),[role=search] [type=submit]:not(:first-child),[role=search] button:not(:first-child),[role=search] input:not([type=checkbox],[type=radio]):not(:first-child),[role=search] select:not(:first-child){margin-left:calc(var(--pico-border-width) * -1)}[role=group] [role=button],[role=group] [type=button],[role=group] [type=reset],[role=group] [type=submit],[role=group] button,[role=search] [role=button],[role=search] [type=button],[role=search] [type=reset],[role=search] [type=submit],[role=search] button{width:auto}@supports selector(:has(*)){[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-button)}[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=group]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select,[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) input:not([type=checkbox],[type=radio]),[role=search]:has(button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus) select{border-color:transparent}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus),[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus){--pico-group-box-shadow:var(--pico-group-box-shadow-focus-with-input)}[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=group]:has(input:not([type=submit],[type=button]):focus,select:focus) button,[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [role=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=button],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) [type=submit],[role=search]:has(input:not([type=submit],[type=button]):focus,select:focus) button{--pico-button-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-border);--pico-button-hover-box-shadow:0 0 0 var(--pico-border-width) var(--pico-primary-hover-border)}[role=group] [role=button]:focus,[role=group] [type=button]:focus,[role=group] [type=reset]:focus,[role=group] [type=submit]:focus,[role=group] button:focus,[role=search] [role=button]:focus,[role=search] [type=button]:focus,[role=search] [type=reset]:focus,[role=search] [type=submit]:focus,[role=search] button:focus{box-shadow:none}}[role=search]>:first-child{border-top-left-radius:5rem;border-bottom-left-radius:5rem}[role=search]>:last-child{border-top-right-radius:5rem;border-bottom-right-radius:5rem}[aria-busy=true]:not(input,select,textarea,html,form){white-space:nowrap}[aria-busy=true]:not(input,select,textarea,html,form)::before{display:inline-block;width:1em;height:1em;background-image:var(--pico-icon-loading);background-size:1em auto;background-repeat:no-repeat;content:"";vertical-align:-.125em}[aria-busy=true]:not(input,select,textarea,html,form):not(:empty)::before{margin-inline-end:calc(var(--pico-spacing) * .5)}[aria-busy=true]:not(input,select,textarea,html,form):empty{text-align:center}[role=button][aria-busy=true],[type=button][aria-busy=true],[type=reset][aria-busy=true],[type=submit][aria-busy=true],a[aria-busy=true],button[aria-busy=true]{pointer-events:none}:host,:root{--pico-scrollbar-width:0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:0;border:0;-webkit-backdrop-filter:var(--pico-modal-overlay-backdrop-filter);backdrop-filter:var(--pico-modal-overlay-backdrop-filter);background-color:var(--pico-modal-overlay-background-color);color:var(--pico-color)}dialog>article{width:100%;max-height:calc(100vh - var(--pico-spacing) * 2);margin:var(--pico-spacing);overflow:auto}@media (min-width:576px){dialog>article{max-width:510px}}@media (min-width:768px){dialog>article{max-width:700px}}dialog>article>header>*{margin-bottom:0}dialog>article>header :is(a,button)[rel=prev]{margin:0;margin-left:var(--pico-spacing);padding:0;float:right}dialog>article>footer{text-align:right}dialog>article>footer [role=button],dialog>article>footer button{margin-bottom:0}dialog>article>footer [role=button]:not(:first-of-type),dialog>article>footer button:not(:first-of-type){margin-left:calc(var(--pico-spacing) * .5)}dialog>article :is(a,button)[rel=prev]{display:block;width:1rem;height:1rem;margin-top:calc(var(--pico-spacing) * -1);margin-bottom:var(--pico-spacing);margin-left:auto;border:none;background-image:var(--pico-icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;background-color:transparent;opacity:.5;transition:opacity var(--pico-transition)}dialog>article :is(a,button)[rel=prev]:is([aria-current]:not([aria-current=false]),:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}:where(nav li)::before{float:left;content:""}nav,nav ul{display:flex}nav{justify-content:space-between;overflow:visible}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--pico-nav-element-spacing-horizontal) * -1)}nav li{display:inline-block;margin:0;padding:var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal)}nav li :where(a,[role=link]){display:inline-block;margin:calc(var(--pico-nav-link-spacing-vertical) * -1) calc(var(--pico-nav-link-spacing-horizontal) * -1);padding:var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal);border-radius:var(--pico-border-radius)}nav li :where(a,[role=link]):not(:hover){text-decoration:none}nav li [role=button],nav li [type=button],nav li button,nav li input:not([type=checkbox],[type=radio],[type=range],[type=file]),nav li select{height:auto;margin-right:inherit;margin-bottom:0;margin-left:inherit;padding:calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2) var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--pico-nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li a{margin:calc(var(--pico-nav-link-spacing-vertical) * -1) 0;margin-inline-start:calc(var(--pico-nav-link-spacing-horizontal) * -1)}nav[aria-label=breadcrumb] ul li:not(:last-child)::after{display:inline-block;position:absolute;width:calc(var(--pico-nav-link-spacing-horizontal) * 4);margin:0 calc(var(--pico-nav-link-spacing-horizontal) * -1);content:var(--pico-nav-breadcrumb-divider);color:var(--pico-muted-color);text-align:center;text-decoration:none;white-space:nowrap}nav[aria-label=breadcrumb] a[aria-current]:not([aria-current=false]){background-color:transparent;color:inherit;text-decoration:none;pointer-events:none}aside li,aside nav,aside ol,aside ul{display:block}aside li{padding:calc(var(--pico-nav-element-spacing-vertical) * .5) var(--pico-nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--pico-spacing) * .5);overflow:hidden;border:0;border-radius:var(--pico-border-radius);background-color:var(--pico-progress-background-color);color:var(--pico-progress-color)}progress::-webkit-progress-bar{border-radius:var(--pico-border-radius);background:0 0}progress[value]::-webkit-progress-value{background-color:var(--pico-progress-color);-webkit-transition:inline-size var(--pico-transition);transition:inline-size var(--pico-transition)}progress::-moz-progress-bar{background-color:var(--pico-progress-color)}@media (prefers-reduced-motion:no-preference){progress:indeterminate{background:var(--pico-progress-background-color) linear-gradient(to right,var(--pico-progress-color) 30%,var(--pico-progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:transparent}progress:indeterminate::-moz-progress-bar{background-color:transparent}}@media (prefers-reduced-motion:no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input,[role=button]){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip]::after,[data-tooltip]::before,[data-tooltip][data-placement=top]::after,[data-tooltip][data-placement=top]::before{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%,-.25rem);border-radius:var(--pico-border-radius);background:var(--pico-tooltip-background-color);content:attr(data-tooltip);color:var(--pico-tooltip-color);font-style:normal;font-weight:var(--pico-font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip]::after,[data-tooltip][data-placement=top]::after{padding:0;transform:translate(-50%,0);border-top:.3rem solid;border-right:.3rem solid transparent;border-left:.3rem solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--pico-tooltip-background-color)}[data-tooltip][data-placement=bottom]::after,[data-tooltip][data-placement=bottom]::before{top:100%;bottom:auto;transform:translate(-50%,.25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%,-.3rem);border:.3rem solid transparent;border-bottom:.3rem solid}[data-tooltip][data-placement=left]::after,[data-tooltip][data-placement=left]::before{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem,-50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem,-50%);border:.3rem solid transparent;border-left:.3rem solid}[data-tooltip][data-placement=right]::after,[data-tooltip][data-placement=right]::before{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem,-50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem,-50%);border:.3rem solid transparent;border-right:.3rem solid}[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{opacity:1}@media (hover:hover) and (pointer:fine){[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{--pico-tooltip-slide-to:translate(-50%, -0.25rem);transform:translate(-50%,.75rem);animation-duration:.2s;animation-fill-mode:forwards;animation-name:tooltip-slide;opacity:0}[data-tooltip]:focus::after,[data-tooltip]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, 0rem);transform:translate(-50%,-.25rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:hover::after,[data-tooltip][data-placement=bottom]:hover::before{--pico-tooltip-slide-to:translate(-50%, 0.25rem);transform:translate(-50%,-.75rem);animation-name:tooltip-slide}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{--pico-tooltip-caret-slide-to:translate(-50%, -0.3rem);transform:translate(-50%,-.5rem);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:hover::after,[data-tooltip][data-placement=left]:hover::before{--pico-tooltip-slide-to:translate(-0.25rem, -50%);transform:translate(.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{--pico-tooltip-caret-slide-to:translate(0.3rem, -50%);transform:translate(.05rem,-50%);animation-name:tooltip-caret-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:hover::after,[data-tooltip][data-placement=right]:hover::before{--pico-tooltip-slide-to:translate(0.25rem, -50%);transform:translate(-.75rem,-50%);animation-name:tooltip-slide}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{--pico-tooltip-caret-slide-to:translate(-0.3rem, -50%);transform:translate(-.05rem,-50%);animation-name:tooltip-caret-slide}}@keyframes tooltip-slide{to{transform:var(--pico-tooltip-slide-to);opacity:1}}@keyframes tooltip-caret-slide{50%{opacity:0}to{transform:var(--pico-tooltip-caret-slide-to);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion:reduce){:not([aria-busy=true]),:not([aria-busy=true])::after,:not([aria-busy=true])::before{background-attachment:initial!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important}}
\ No newline at end of file
diff --git a/stylesheets/style.css b/stylesheets/style.css
new file mode 100644
index 00000000..f8099478
--- /dev/null
+++ b/stylesheets/style.css
@@ -0,0 +1,1021 @@
+/* JRuby brand colours */
+:root {
+ --jruby-red: #c41e3a;
+ --jruby-red-dark: #9e0023;
+ --jruby-red-light: #e63050;
+ --jruby-dark: #1a1a2e;
+ --jruby-dark-soft: #2d2d44;
+ --headius-pink: #ff2d78;
+ --headius-pink-dark: #cc1a5c;
+ --headius-pink-light: #ff6fa3;
+ --text-light: #f8f8f8;
+ --pico-primary: var(--jruby-red);
+ --pico-primary-hover: var(--jruby-red-dark);
+}
+
+/* ─── Reset ─── */
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+/* ─── Base ─── */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
+ line-height: 1.6;
+ margin: 0;
+ padding: 0;
+ color: #1a1a1a;
+ background: #ffffff;
+}
+
+/* Override PicoCSS body > main responsive max-widths (510/700/950/1200px).
+ Padding removed — inner containers (.content-page, .post, .home-columns)
+ each manage their own spacing. */
+body > main,
+main {
+ max-width: 1100px;
+ margin: 0 auto;
+ padding: 0;
+ width: 100%;
+ box-sizing: border-box;
+}
+
+a {
+ color: var(--jruby-red);
+ text-decoration: none;
+}
+
+a:hover {
+ color: var(--jruby-red-dark);
+ text-decoration: underline;
+}
+
+code {
+ background: #f3f3f3;
+ border-radius: 3px;
+ font-size: 0.9em;
+ padding: 0.1em 0.4em;
+}
+
+pre code {
+ background: none;
+ padding: 0;
+ font-size: 1em;
+}
+
+pre {
+ background: #f3f3f3;
+ border-radius: 6px;
+ overflow-x: auto;
+ padding: 1rem 1.25rem;
+}
+
+/* ─── Mobile nav checkbox hack ─── */
+.nav-toggle {
+ display: none;
+ position: absolute;
+ opacity: 0;
+ pointer-events: none;
+}
+
+/* ─── Header / Nav ─── */
+/* max-width: none overrides PicoCSS body > header responsive constraints */
+.site-header {
+ background: var(--jruby-dark);
+ position: sticky;
+ top: 0;
+ z-index: 100;
+ max-width: none;
+ width: 100%;
+ padding: 0;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.3);
+ --pico-color: #fff;
+}
+
+.site-nav {
+ max-width: 1100px;
+ margin: 0 auto;
+ padding: 0 1.5rem;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ min-height: 60px;
+}
+
+.nav-brand {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+}
+
+.brand-link {
+ font-size: 1.6rem;
+ font-weight: 800;
+ letter-spacing: -0.5px;
+ text-decoration: none;
+ line-height: 1;
+}
+
+.brand-ruby {
+ color: var(--text-light);
+}
+
+.nav-links {
+ display: flex;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ gap: 0.25rem;
+ align-items: center;
+}
+
+.nav-links li {
+ padding: 0;
+ margin: 0;
+}
+
+.nav-links a {
+ color: rgba(255,255,255,0.85);
+ text-decoration: none;
+ font-size: 0.9rem;
+ font-weight: 500;
+ padding: 0.4rem 0.75rem;
+ margin: 0; /* override PicoCSS nav li a { margin: -0.5rem -0.5rem } */
+ border-radius: 4px;
+ transition: background 0.15s, color 0.15s;
+ display: block;
+}
+
+/* suppress PicoCSS breadcrumb float injected into every nav li */
+.nav-links li::before {
+ display: none;
+ float: none;
+ content: '' !important;
+}
+
+.nav-links a:hover {
+ background: rgba(255,255,255,0.12);
+ color: #fff;
+ text-decoration: none;
+}
+
+.nav-hamburger {
+ display: none;
+ flex-direction: column;
+ justify-content: space-between;
+ width: 28px;
+ height: 20px;
+ cursor: pointer;
+ padding: 0;
+}
+
+.nav-hamburger span {
+ display: block;
+ height: 2px;
+ background: rgba(255,255,255,0.8);
+ border-radius: 2px;
+ transition: all 0.2s;
+}
+
+/* Mobile nav open state */
+.nav-toggle:checked ~ .nav-links {
+ display: flex;
+}
+
+/* ─── Hero section ─── */
+.hero {
+ background: linear-gradient(135deg, var(--jruby-dark) 0%, var(--jruby-dark-soft) 100%);
+ padding: 3.5rem 1.5rem;
+ text-align: center;
+ color: #fff;
+ --pico-color: #fff;
+}
+
+.hero h1 {
+ font-size: clamp(2rem, 5vw, 3.25rem);
+ font-weight: 800;
+ margin: 0 0 0.5rem;
+ color: #fff;
+ letter-spacing: -1px;
+}
+
+.skip-link {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 300;
+ padding: 0.75rem 1rem;
+ background: #fff;
+ color: var(--jruby-dark);
+ font-weight: 700;
+ transform: translateY(-100%);
+}
+
+.skip-link:focus {
+ transform: translateY(0);
+}
+
+#main-content:focus {
+ outline: none;
+}
+
+.brand-link:focus-visible,
+.nav-toggle:focus-visible ~ .nav-brand .nav-hamburger {
+ outline: 2px solid #fff;
+ outline-offset: 4px;
+ border-radius: 4px;
+}
+
+#main-content pre:focus-visible,
+#main-content table:focus-visible {
+ outline: 2px solid var(--jruby-red);
+ outline-offset: 2px;
+}
+
+.nav-logo {
+ display: block;
+ width: auto;
+ height: 34px;
+}
+
+.hero-logo {
+ display: block;
+ width: 100%;
+ max-width: 420px;
+ height: auto;
+ margin: 0 auto;
+}
+
+.hero p.tagline {
+ font-size: 1.2rem;
+ color: #fff;
+ margin: 0 0 2rem;
+ max-width: 600px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.hero-cta {
+ display: inline-flex;
+ gap: 1rem;
+ flex-wrap: wrap;
+ justify-content: center;
+ margin-bottom: 2.5rem;
+}
+
+.btn-primary {
+ background: var(--jruby-red);
+ color: #fff;
+ padding: 0.75rem 1.75rem;
+ border-radius: 6px;
+ font-weight: 600;
+ font-size: 1rem;
+ text-decoration: none;
+ border: 2px solid var(--jruby-red);
+ transition: background 0.15s, border-color 0.15s;
+ display: inline-block;
+}
+
+.btn-primary:hover {
+ background: var(--jruby-red-dark);
+ border-color: var(--jruby-red-dark);
+ color: #fff;
+ text-decoration: none;
+}
+
+.btn-secondary {
+ background: transparent;
+ color: #fff;
+ padding: 0.75rem 1.75rem;
+ border-radius: 6px;
+ font-weight: 600;
+ font-size: 1rem;
+ text-decoration: none;
+ border: 2px solid rgba(255,255,255,0.4);
+ transition: background 0.15s, border-color 0.15s;
+ display: inline-block;
+}
+
+.btn-secondary:hover {
+ background: rgba(255,255,255,0.1);
+ border-color: rgba(255,255,255,0.7);
+ color: #fff;
+ text-decoration: none;
+}
+
+/* ─── Headius support banner ─── */
+.headius-banner {
+ background: linear-gradient(135deg, var(--headius-pink) 0%, #c0135a 100%);
+ color: #fff;
+ padding: 2rem 1.5rem;
+ text-align: center;
+ --pico-color: #fff;
+}
+
+.headius-banner h2 {
+ margin: 0 0 0.4rem;
+ font-size: 1.4rem;
+ font-weight: 700;
+ color: #fff;
+}
+
+.headius-banner p {
+ margin: 0 0 1.25rem;
+ color: #fff;
+ font-size: 1rem;
+ max-width: 600px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.btn-headius {
+ background: #fff;
+ color: var(--headius-pink-dark);
+ padding: 0.7rem 1.75rem;
+ border-radius: 6px;
+ font-weight: 700;
+ font-size: 1rem;
+ text-decoration: none;
+ border: 2px solid #fff;
+ transition: background 0.15s;
+ display: inline-block;
+}
+
+.btn-headius:hover {
+ background: rgba(255,255,255,0.9);
+ color: var(--headius-pink-dark);
+ text-decoration: none;
+}
+
+.headius-badge {
+ display: inline-block;
+ background: var(--headius-pink-dark);
+ color: #fff;
+ font-size: 0.75rem;
+ font-weight: 700;
+ padding: 0.2rem 0.6rem;
+ border-radius: 20px;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+ margin-bottom: 0.5rem;
+}
+
+/* ─── Feature cards ─── */
+.features {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ gap: 0;
+ padding: 2.5rem 1.5rem;
+ max-width: 1100px;
+ margin: 0 auto;
+ background: #f9f9fb;
+}
+
+.feature-card {
+ padding: 1.75rem 1.5rem;
+ border-right: 1px solid #e5e5e5;
+ text-align: center;
+}
+
+.feature-card:last-child {
+ border-right: none;
+}
+
+.feature-card h3 {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--jruby-dark);
+ margin: 0 0 0.75rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.feature-card ul {
+ list-style: none !important;
+ margin: 0 auto;
+ padding: 0;
+ font-size: 0.92rem;
+ color: #444;
+ text-align: left;
+ display: inline-block;
+}
+
+.feature-card ul li {
+ list-style: none !important;
+ padding: 0.3rem 0 0.3rem 1.5rem;
+ position: relative;
+}
+
+.feature-card ul li::marker {
+ content: '';
+}
+
+.feature-card ul li::before {
+ content: '';
+ position: absolute;
+ left: 1px;
+ top: 50%;
+ transform: translateY(-68%) rotate(45deg);
+ width: 5px;
+ height: 9px;
+ border-right: 2px solid #16a34a;
+ border-bottom: 2px solid #16a34a;
+}
+
+.feature-card p {
+ margin: 0;
+ font-size: 0.95rem;
+ color: #555;
+}
+
+/* ─── Two-column layout (home) ─── */
+.home-columns {
+ display: grid;
+ grid-template-columns: 2fr 1fr;
+ gap: 2.5rem;
+ max-width: 1100px;
+ margin: 0 auto;
+ padding: 2.5rem 1.5rem;
+}
+
+/* ─── Latest news section ─── */
+.latest-news h2 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--jruby-dark);
+ border-bottom: 2px solid var(--jruby-red);
+ padding-bottom: 0.4rem;
+ margin-bottom: 1.25rem;
+}
+
+.news-item {
+ margin-bottom: 1.5rem;
+ padding-bottom: 1.5rem;
+ border-bottom: 1px solid #eee;
+}
+
+.news-item:last-child {
+ border-bottom: none;
+}
+
+.news-item h3 {
+ margin: 0 0 0.25rem;
+ font-size: 1rem;
+}
+
+.news-item h3 a {
+ color: var(--jruby-dark);
+ font-weight: 600;
+}
+
+.news-item h3 a:hover {
+ color: var(--jruby-red);
+}
+
+.news-date {
+ font-size: 0.8rem;
+ color: #5f6368;
+ margin: 0 0 0.5rem;
+}
+
+.news-excerpt {
+ font-size: 0.9rem;
+ color: #444;
+ margin: 0;
+ line-height: 1.5;
+}
+
+/* ─── Quick links sidebar ─── */
+.quick-links h2 {
+ font-size: 1.3rem;
+ font-weight: 700;
+ color: var(--jruby-dark);
+ border-bottom: 2px solid var(--jruby-red);
+ padding-bottom: 0.4rem;
+ margin-bottom: 1.25rem;
+}
+
+.quick-links ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.quick-links li {
+ border-bottom: 1px solid #eee;
+}
+
+.quick-links li:last-child {
+ border-bottom: none;
+}
+
+.quick-links a {
+ display: block;
+ padding: 0.6rem 0;
+ font-size: 0.95rem;
+ color: var(--jruby-dark);
+ text-decoration: none;
+}
+
+.quick-links a:hover {
+ color: var(--jruby-red);
+}
+
+/* ─── Download page ─── */
+.release-section {
+ margin-bottom: 3rem;
+ border: 1px solid #e5e5e5;
+ border-radius: 8px;
+ overflow: hidden;
+}
+
+.release-header {
+ background: var(--jruby-dark);
+ color: #fff;
+ padding: 1.25rem 1.5rem;
+ display: flex;
+ align-items: baseline;
+ gap: 1rem;
+ flex-wrap: wrap;
+ --pico-color: #fff;
+}
+
+.content-page .release-header h2,
+.release-header h2 {
+ margin: 0;
+ font-size: 1.4rem;
+ color: #fff !important;
+}
+
+.release-badge {
+ background: var(--jruby-red);
+ color: #fff;
+ font-size: 0.7rem;
+ font-weight: 700;
+ padding: 0.2rem 0.6rem;
+ border-radius: 20px;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+.release-meta {
+ font-size: 0.85rem;
+ color: rgba(255,255,255,0.85);
+}
+
+.release-body {
+ padding: 1.25rem 1.5rem;
+}
+
+.release-description {
+ margin: 0 0 1rem;
+ font-size: 0.95rem;
+ color: #444;
+}
+
+.download-table {
+ width: 100%;
+ border-collapse: collapse;
+ font-size: 0.9rem;
+}
+
+.download-table th {
+ text-align: left;
+ padding: 0.5rem 0.75rem;
+ background: #f5f5f5;
+ font-weight: 600;
+ border-bottom: 1px solid #ddd;
+ color: #333;
+}
+
+.download-table td {
+ padding: 0.6rem 0.75rem;
+ border-bottom: 1px solid #eee;
+ vertical-align: middle;
+}
+
+.download-table tr:last-child td {
+ border-bottom: none;
+}
+
+.download-table a {
+ font-weight: 500;
+}
+
+.checksum-link {
+ font-size: 0.8rem;
+ color: #5f6368;
+}
+
+.checksum-link:hover {
+ color: var(--jruby-red);
+}
+
+/* ─── Post / content pages ─── */
+.post {
+ max-width: 760px;
+ margin: 0 auto;
+ padding: 2rem 1.5rem 3rem;
+}
+
+.post-header h1 {
+ font-size: 1.9rem;
+ margin-bottom: 0.25rem;
+ color: var(--jruby-dark);
+}
+
+.post-meta {
+ color: #5f6368;
+ font-size: 0.85rem;
+ margin-bottom: 2rem;
+ border-bottom: 1px solid #eee;
+ padding-bottom: 1rem;
+}
+
+.post-content h3,
+.post-content h2.as-h3 {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--jruby-dark);
+ margin-top: 1.75rem;
+}
+
+.post-content ul {
+ padding-left: 1.5rem;
+}
+
+.post-content li {
+ margin-bottom: 0.2rem;
+}
+
+.post-footer {
+ margin-top: 2rem;
+ padding-top: 1rem;
+ border-top: 1px solid #eee;
+ font-size: 0.9rem;
+}
+
+/* ─── News index ─── */
+.news-index h1 {
+ font-size: 1.9rem;
+ color: var(--jruby-dark);
+ margin-bottom: 0.25rem;
+}
+
+.news-list {
+ margin-top: 1.5rem;
+}
+
+.news-list-item {
+ display: grid;
+ grid-template-columns: 110px 1fr;
+ gap: 1rem;
+ padding: 0.9rem 0;
+ border-bottom: 1px solid #eee;
+ align-items: baseline;
+}
+
+.news-list-item:last-child {
+ border-bottom: none;
+}
+
+.news-list-date {
+ font-size: 0.8rem;
+ color: #5f6368;
+ white-space: nowrap;
+}
+
+.news-list-title a {
+ font-weight: 500;
+ color: var(--jruby-dark);
+ font-size: 0.97rem;
+}
+
+.news-list-title a:hover {
+ color: var(--jruby-red);
+}
+
+/* ─── Generic content page ─── */
+.content-page {
+ padding: 2rem 1.5rem 3rem;
+}
+
+.content-page h1 {
+ font-size: 2rem;
+ color: var(--jruby-dark);
+ border-bottom: 2px solid var(--jruby-red);
+ padding-bottom: 0.5rem;
+ margin-bottom: 1.5rem;
+}
+
+.content-page h2 {
+ font-size: 1.4rem;
+ color: var(--jruby-dark);
+ margin-top: 2rem;
+}
+
+.content-page h3 {
+ font-size: 1.1rem;
+ font-weight: 700;
+}
+
+/* ─── Footer ─── */
+/* max-width: none overrides PicoCSS body > footer responsive constraints */
+.site-footer {
+ background: var(--jruby-dark);
+ color: rgba(255,255,255,0.9);
+ max-width: none;
+ width: 100%;
+ --pico-color: rgba(255,255,255,0.9);
+ margin-top: 4rem;
+ padding: 3rem 1.5rem 1.5rem;
+}
+
+.footer-grid {
+ max-width: 1100px;
+ margin: 0 auto 2rem;
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
+ gap: 2rem;
+}
+
+.footer-grid .footer-col-heading {
+ color: #fff;
+ font-size: 0.85rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ margin: 0 0 0.75rem;
+}
+
+.footer-grid ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.footer-grid li {
+ margin-bottom: 0.4rem;
+}
+
+.footer-grid a {
+ color: rgba(255,255,255,0.85);
+ font-size: 0.88rem;
+ text-decoration: none;
+}
+
+.footer-grid a:hover {
+ color: #fff;
+}
+
+.footer-grid p {
+ font-size: 0.88rem;
+ margin: 0 0 0.75rem;
+ color: rgba(255,255,255,0.85);
+}
+
+.headius-footer-link {
+ display: inline-block;
+ background: var(--headius-pink-dark);
+ color: #fff !important;
+ padding: 0.4rem 0.9rem;
+ border-radius: 4px;
+ font-size: 0.85rem;
+ font-weight: 600;
+ text-decoration: none;
+}
+
+.headius-footer-link:hover {
+ background: var(--headius-pink-dark);
+ color: #fff !important;
+}
+
+.footer-bottom {
+ max-width: 1100px;
+ margin: 0 auto;
+ border-top: 1px solid rgba(255,255,255,0.1);
+ padding-top: 1rem;
+ font-size: 0.8rem;
+ color: rgba(255,255,255,0.65);
+ text-align: center;
+}
+
+.footer-bottom a {
+ color: rgba(255,255,255,0.8);
+ text-decoration: underline;
+}
+
+.content-page a:not(.btn):not([class]),
+.post a:not(.btn):not([class]) {
+ text-decoration: underline;
+}
+
+/* ─── Awards / recognition ─── */
+.awards-row {
+ background: #f9f9fb;
+ padding: 1.25rem 1.5rem;
+ text-align: center;
+ font-size: 0.85rem;
+ color: #666;
+ border-top: 1px solid #eee;
+}
+
+/* ─── Nightly builds page ─── */
+.nightly-section {
+ background: #fffbf0;
+ border: 1px solid #f0d070;
+ border-radius: 6px;
+ padding: 1rem 1.25rem;
+ margin-bottom: 1.5rem;
+ font-size: 0.9rem;
+}
+
+/* ─── Community cards ─── */
+.community-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
+ gap: 1.25rem;
+ margin-top: 1.5rem;
+}
+
+.community-card {
+ border: 1px solid #e5e5e5;
+ border-radius: 8px;
+ padding: 1.25rem;
+}
+
+.community-card h2 {
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--jruby-dark);
+ margin: 0 0 0.5rem;
+}
+
+.community-card p {
+ font-size: 0.9rem;
+ color: #555;
+ margin: 0 0 0.75rem;
+}
+
+.community-card a.card-link {
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--jruby-red);
+}
+
+/* ─── Security vulnerabilities ─── */
+.vuln-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.vuln-list li {
+ border-bottom: 1px solid #eee;
+ padding: 0.75rem 0;
+}
+
+.vuln-date {
+ font-size: 0.8rem;
+ color: #5f6368;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
+/* ─── Responsive ─── */
+/* The nav no longer fits on one line below this width */
+@media (max-width: 960px) {
+ /* Visually hidden but still keyboard operable; the label handles pointer input */
+ .nav-toggle {
+ display: block;
+ top: 8px;
+ left: 8px;
+ width: 44px;
+ height: 44px;
+ margin: 0;
+ }
+
+ .nav-hamburger {
+ display: flex;
+ }
+
+ .nav-links {
+ display: none;
+ flex-direction: column;
+ position: absolute;
+ top: 60px;
+ left: 0;
+ right: 0;
+ z-index: 200;
+ background: var(--jruby-dark-soft);
+ padding: 0.25rem 0;
+ gap: 0;
+ box-shadow: 0 4px 12px rgba(0,0,0,0.3);
+ }
+
+ .nav-links li {
+ display: block;
+ width: 100%;
+ }
+
+ .nav-links a {
+ display: block;
+ width: 100%;
+ padding: 1rem 1.5rem;
+ margin: 0;
+ border-radius: 0;
+ min-height: 44px; /* iOS minimum touch target */
+ box-sizing: border-box;
+ }
+
+ .site-header {
+ position: relative;
+ }
+}
+
+@media (max-width: 768px) {
+ /* Keep long commands and wide tables from stretching the page on phones */
+ .content-page code,
+ .post-content code {
+ overflow-wrap: anywhere;
+ }
+
+ .content-page table:not(.download-table),
+ .post-content table {
+ display: block;
+ max-width: 100%;
+ overflow-x: auto;
+ }
+
+ .features {
+ grid-template-columns: 1fr 1fr;
+ padding: 1.5rem;
+ }
+
+ .feature-card {
+ border-right: none;
+ border-bottom: 1px solid #e5e5e5;
+ }
+
+ .feature-card:nth-child(odd) {
+ border-right: 1px solid #e5e5e5;
+ }
+
+ .home-columns {
+ grid-template-columns: 1fr;
+ padding: 1.5rem;
+ gap: 2rem;
+ }
+
+ .footer-grid {
+ grid-template-columns: 1fr 1fr;
+ }
+
+ .news-list-item {
+ grid-template-columns: 1fr;
+ gap: 0.15rem;
+ }
+
+ .download-table {
+ font-size: 0.82rem;
+ }
+
+ .hero {
+ padding: 2.5rem 1rem;
+ }
+}
+
+@media (max-width: 480px) {
+ .features {
+ grid-template-columns: 1fr;
+ }
+
+ .feature-card {
+ border-right: none;
+ }
+
+ .feature-card:nth-child(odd) {
+ border-right: none;
+ }
+
+ .footer-grid {
+ grid-template-columns: 1fr;
+ }
+
+ main {
+ padding: 1.5rem 1rem 2rem;
+ }
+
+ .hero-cta {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .btn-primary,
+ .btn-secondary {
+ width: 100%;
+ text-align: center;
+ }
+}