diff --git a/website/landing/css/additional-styles/utility-patterns.css b/website/landing/css/additional-styles/utility-patterns.css index e181ceac..e1edaa0e 100644 --- a/website/landing/css/additional-styles/utility-patterns.css +++ b/website/landing/css/additional-styles/utility-patterns.css @@ -29,6 +29,11 @@ } } +/* Inline code, styled like GitHub's with a visible border. */ +code { + @apply font-mono text-[0.85em] text-zinc-700 bg-zinc-100 border border-zinc-200 rounded-md px-[0.4em] py-[0.1em] whitespace-nowrap; +} + /* Buttons */ .btn, .btn-sm { diff --git a/website/landing/images/ingress-diagram.svg b/website/landing/images/ingress-diagram.svg new file mode 100644 index 00000000..cfc1b642 --- /dev/null +++ b/website/landing/images/ingress-diagram.svg @@ -0,0 +1,5 @@ + + +prod-1prod-2caddywebWireGuard meshdbInternetHTTPSweb:8080db:5432:443webweb:8080 \ No newline at end of file diff --git a/website/landing/index-new.html b/website/landing/index-new.html deleted file mode 100644 index 148e2e76..00000000 --- a/website/landing/index-new.html +++ /dev/null @@ -1,1053 +0,0 @@ - - - - - - Self-host and scale web apps without Kubernetes complexity | Uncloud - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
-
- - - - - -
-
-
- - -
- - -
-
- -
-
-
-

- Multi-machine Docker Compose for production -

-

- Uncloud creates a Docker cluster with self-configuring WireGuard mesh, zero-downtime - deploys, cross-machine scaling, automatic HTTPS via Caddy, service discovery, and an - intuitive CLI. - Everything you need to run web apps on cloud VMs or your own hardware, using - familiar Compose files. Without cluster-management overhead. -

-

- A simpler alternative to - Kubernetes, - Swarm, - Nomad, and - Kamal. -

- -
-
-
- - -
- -
- - - -
-
- - -
- - -
-
-
- -
- We’re moving 300+ websites onto - a dozen Uncloud machines, where each owner gets their own - machines to run whatever they need. -
- - Read Radboud University’s announcement - - - - -
- Miek Gieben -
-
Miek Gieben
-
- Creator of CoreDNS · ex-Google SRE · Radboud University -
-
-
-
-
-
-
- - -
-
-
- - -
- -
-
- Create a cluster -
-

- Turn any Linux machines into a Docker cluster -

-

- Uncloud creates a lightweight decentralised cluster of Docker hosts that share their - state peer-to-peer. The cluster keeps running even if some machines go down. -

- Each machine joins a secure WireGuard mesh network, so services can talk to each other - across machines. -

-
    -
  • - - - - Mix cloud VMs and bare-metal servers -
  • -
  • - - - - No control plane or quorum to maintain -
  • -
  • - - - - Cheap enough to run a cluster per team, project, or client -
  • -
  • - - - - SSH is all you need -
  • -
-
- - - - - -
-

- “In my opinion, Swarm is dead, Nomad is not anymore a free software since it was - bought by IBM. So the only robust alternative to the bloat of K8s is Uncloud.” -

- - Frédéric Logier (fredix) on Discord - -
-
- - - -
-
-
- - -
-
-
-
-

- PaaS-like workflow on your own servers -

-

- Deploy with the simplicity of Heroku or Fly.io while keeping full control over your - infrastructure. -

-
- -
- -
-
-
- - - - - - -

- Your infrastructure -

-
-
-
    -
  • - - - - Full control over your servers and data -
  • -
  • - - - - Predictable costs without per-request pricing -
  • -
  • - - - - No vendor lock-in or platform dependencies -
  • -
  • - - - - SSH into machines and debug with standard tools -
  • -
-
-
-
- - -
-
-
- - - -

Familiar Docker Compose - workflow

-
-
-
    -
  • - - - - Build, push, and deploy with one command -
  • -
  • - - - - No image registry required -
  • -
  • - - - - Zero-downtime rolling deployments -
  • -
  • - - - - Scale replicas across machines -
  • -
-
-
-
- - -
-
-
- - - -

Low maintenance

-
-
-
    -
  • - - - - No control plane or quorum to manage -
  • -
  • - - - - Secure cross-machine communication without opening ports -
  • -
  • - - - - Services find each other automatically -
  • -
  • - - - - Automatic HTTPS via Let's Encrypt -
  • -
-
-
-
-
-
-
-
- - -
-
- -
-
- - -
-
-
- How it works -
-

- Simple by design,
- powerful in practice -

-

- Uncloud replaces complex clusters with a simple network of machines working - seamlessly together — no maintenance overhead, just reliable infrastructure. -

-
- - -
- -
- - - -
-
- Secure private network -
-
- Each machine joins a WireGuard mesh network with automatic peer discovery - and NAT traversal. Containers get unique IPs and can communicate directly - across machines. -
-
-
- - -
- - - -
-
- Fully decentralised -
-
- Unlike traditional orchestrators, there's no central control plane to - maintain. Each machine maintains a synchronised copy of the cluster - state - through peer-to-peer communication, keeping cluster operations - functional - even if some machines go offline. -
-
-
- - -
- - - -
-
- Smart CLI -
-
- Control your entire infrastructure using intuitive Docker-like commands from - anywhere. Deploy, monitor, and scale applications across all your machines - while the CLI only needs SSH access to a single machine. -
-
-
-
-
- - -
-
-
- Uncloud cluster diagram -
- Multi-provider cluster of 3 machines -
-
-
-
-
-
- - -
-
- -
-
- - - -

Deploy anywhere

-
-

Run your apps on any Linux machine — from cloud VMs and - dedicated servers to bare metal at your office or home.

-
- - -
-
- - - -

Automatic HTTPS

-
-

Get free TLS certificates and automatic HTTPS for your - domains with zero configuration using built-in Caddy reverse proxy.

-
- - -
-
- - - - -

Load balancing

-
-

Distribute traffic across container replicas running on - different machines for improved reliability and performance.

-
- - -
-
- - - -

Service discovery

-
-

Access any service by its name from any container using the - built-in DNS that automatically tracks services across your network.

-
- - -
-
- - - -

Infrastructure as Code

-
-

Define your entire app stack in a familiar Docker Compose - file. No need to learn a new config format.

-
- - -
-
- - - - -

No vendor lock-in

-
-

Mix cloud providers and your own hardware freely to - optimise costs and performance, without changing how you deploy or manage apps.

-
-
-
- -
-
- - -
-
-
-
-

- See in action -

-

- Deploy a highly available web app with automatic HTTPS across multiple regions and - on-premises in just a couple minutes. -

-
- -
- - - - -
-
-
-
- - -
-
-
-
-

- Be part of the development - - journey - - -

-

- Subscribe to follow the progress and get early insights into new features.
- See previous newsletters. -

- - -
- -
- -
-

- Want to contribute? Check out the - GitHub issues - and join the - Discord server. -

-
-
-
-
-
- -
- - - - -
- - - - - - - diff --git a/website/landing/index.html b/website/landing/index.html index 2e4343bd..ee809af9 100644 --- a/website/landing/index.html +++ b/website/landing/index.html @@ -38,6 +38,10 @@ max-width: 24px; max-height: 24px; } + + .text-balance { + text-wrap: balance; + } @@ -96,6 +100,8 @@ + + @@ -116,30 +122,47 @@

- Self-host and scale web apps
- without the complexity + Multi-machine Docker Compose for production

- Take your Docker Compose apps to production with zero-downtime deployments, automatic - HTTPS, and cross-machine scaling. No Kubernetes required. + Uncloud creates a Docker cluster with self-configuring WireGuard mesh, zero-downtime + deploys, cross-machine scaling, automatic HTTPS via Caddy, service discovery, and an + intuitive CLI. + Everything you need to run web apps on cloud VMs or your own hardware, using + familiar Compose files. Without cluster-management overhead. +

+

+ A simpler alternative to + Kubernetes, + Swarm, + Nomad, and + Kamal.

@@ -147,471 +170,679 @@
-
-
- -
-
-
-
-
-
-
- -
-
# Start with any cloud VM or your own server
-
$ uc machine init root@137.123.45.67
- -
 
-
# Deploy your app with automatic HTTPS
-
$ uc run --name my-app -p app.example.com:8000/https app-image:latest
-
✨ Your app is available at https://app.example.com
- -
 
-
# Achieve high availability by adding more machines and scaling the app
-
$ uc machine add ubuntu@65.21.45.67
-
$ uc scale my-app 2
-
-
+ +
+
-
- - -
-
+
-
-

- PaaS-like workflow on your own servers -

-

- Deploy with the simplicity of Heroku or Fly.io while keeping full control over your infrastructure. -

-
+
+ + +

5.2K+

+

GitHub + stars

+
-
- -
-
-
- - - - - - -

- Your infrastructure -

-
-
-
    -
  • - - - - Full control over your servers and data -
  • -
  • - - - - Predictable costs without per-request pricing -
  • -
  • - - - - No vendor lock-in or platform dependencies -
  • -
  • - - - - SSH into machines and debug with standard tools -
  • -
-
-
-
+ + +

21K+

+

Downloads

+
- -
-
-
- - - -

Familiar Docker Compose workflow

-
-
-
    -
  • - - - - Build, push, and deploy with one command -
  • -
  • - - - - No image registry required -
  • -
  • - - - - Zero-downtime rolling deployments -
  • -
  • - - - - Scale replicas across machines -
  • -
-
-
-
+ + +

2x

+

Hacker News + front page

+
- -
-
-
- - - -

Low maintenance

-
-
-
    -
  • - - - - No control plane or quorum to manage -
  • -
  • - - - - Secure cross-machine communication without opening ports -
  • -
  • - - - - Services find each other automatically -
  • -
  • - - - - Automatic HTTPS via Let's Encrypt -
  • -
-
-
-
+ + +

380

+

Fans on + Discord

+
- -
+ +
+ + +
+
+
+ +
+ We’re moving 300+ websites onto + a dozen Uncloud machines, where each owner gets their own + machines to run whatever they need. +
+ + Read Radboud University’s announcement + + + + +
+ Miek Gieben +
+
Miek Gieben
+
+ Creator of CoreDNS · ex-Google SRE · Radboud University +
+
+
+
+
+
+
+ + +
+
-
-
- - -
-
-
- How it works -
-

- Simple by design,
- powerful in practice -

-

- Uncloud replaces complex clusters with a simple network of machines working - seamlessly together — no maintenance overhead, just reliable infrastructure. -

-
- - -
- -
- - - -
-
- Secure private network -
-
- Each machine joins a WireGuard mesh network with automatic peer discovery - and NAT traversal. Containers get unique IPs and can communicate directly - across machines. -
-
-
- - -
- - - -
-
- Fully decentralised -
-
- Unlike traditional orchestrators, there's no central control plane to - maintain. Each machine maintains a synchronised copy of the cluster - state - through peer-to-peer communication, keeping cluster operations - functional - even if some machines go offline. -
-
-
- - -
- - - -
-
- Smart CLI -
-
- Control your entire infrastructure using intuitive Docker-like commands from - anywhere. Deploy, monitor, and scale applications across all your machines - while the CLI only needs SSH access to a single machine. -
-
-
-
-
- - -
-
-
- Uncloud cluster diagram -
- Multi-provider cluster of 3 machines -
-
-
-
-
-
- - -
-
- -
-
- - - -

Deploy anywhere

-
-

Run your apps on any Linux machine — from cloud VMs and - dedicated servers to bare metal at your office or home.

-
- - -
-
- - - -

Automatic HTTPS

-
-

Get free TLS certificates and automatic HTTPS for your - domains with zero configuration using built-in Caddy reverse proxy.

-
- - -
-
- - - - -

Load balancing

-
-

Distribute traffic across container replicas running on - different machines for improved reliability and performance.

-
- - -
-
- - - -

Service discovery

-
-

Access any service by its name from any container using the - built-in DNS that automatically tracks services across your network.

-
- - -
-
- - - -

Infrastructure as Code

-
-

Define your entire app stack in a familiar Docker Compose - file. No need to learn a new config format.

-
- - -
-
- - - - -

No vendor lock-in

-
-

Mix cloud providers and your own hardware freely to - optimise costs and performance, without changing how you deploy or manage apps.

-
-
-
- -
-
- - -
-
-
-
-

- See in action +
+

+ Enjoy a Heroku-like workflow on your own servers

-

- Deploy a highly available web app with automatic HTTPS across multiple regions and - on-premises in just a couple minutes. -

-
- - - - -
-

-
-
- - -
-
-
-
-

- Be part of the development - - journey - - -

-

- Subscribe to follow the progress and get early insights into new features.
- See previous newsletters. -

- - -
- -
- -
-

- Want to contribute? Check out the - GitHub issues - and join the - Discord server. + +

+
+
+ Create a cluster +
+

+ Turn any Linux machines into a Docker cluster +

+

+ Uncloud creates a lightweight decentralised cluster of Docker hosts that share their + state peer-to-peer. The cluster keeps running even if some machines go down. +

+ Each machine joins a secure WireGuard mesh network, so services can talk to each other + across machines.

+
    +
  • + + + + Mix cloud VMs and bare-metal servers +
  • +
  • + + + + No control plane or quorum to maintain +
  • +
  • + + + + Cheap enough to run a cluster per team, project, or client +
  • +
  • + + + + SSH is all you need +
  • +
+
+ + + +
+

+ “In my opinion, Swarm is dead, Nomad is not anymore a free software since it was + bought by IBM. So the only robust alternative to the bloat of K8s is Uncloud.” +

+ + Frédéric Logier (@fredix) + +
+
+ + +
+
+
+ Build, push, deploy +
+

+ Deploy local Compose to production with one command +

+

+ Run uc deploy with your standard compose.yaml. It builds the + images, pushes them straight to your machines (transferring only the missing layers), + and shows a plan of exactly what will change. Confirm, and it rolls out with zero + downtime. And all this takes seconds. +

+
    +
  • + + + + Standard Compose format, no new spec to learn +
  • +
  • + + + + No registry to set up, pay for, or authenticate against. Powered by + Unregistry +
  • +
  • + + + + Terraform-style plan: review every change before applying +
  • +
  • + + + + Zero-downtime rolling updates with health checks +
  • +
  • + + + + Run locally or in your CI/CD pipelines +
  • +
+ +
+

+ “Uncloud checks almost all the boxes for me: an imperative push model, + Compose Specification, WireGuard out of the box, Caddy out of the box, Unregistry + (a big one), and a great CLI UX with excellent documentation.” +

+ + @pvalders + +
+
+ + +
+ + +
+
+
+ Publish +
+

+ Connect and publish your services +

+

+ Services on different machines reach each other by name over a private WireGuard mesh, + so your database never needs a public port. Publish the ones that should be public, and + the integrated Caddy handles HTTPS automatically. +

+
    +
  • + + + + Cross-machine communication and load balancing +
  • +
  • + + + + Caddy keeps its config up to date on any container change +
  • +
  • + + + + Certificates issued and renewed automatically +
  • +
+ + Diagram: users connect over HTTPS to the Caddy ingress, which load balances requests to web service replicas on both machines, while web connects to the db service over the internal network. +
+ + +
+ + +
+

+ “Before Uncloud, I was already using Wireguard, Caddy and docker-compose. + Now I just have a simpler way to set it up and have it all be almost-automatically + managed, plus I get DNS resolution for microservices for free.” +

+ + Paweł Zmarzły (@szawo) + +
+
+
+ + +
+
+
+ Scale +
+

+ Scale and grow without the ops overhead +

+

+ Run more replicas spread across machines for high availability. If a machine goes + down, the remaining replicas keep serving requests. Need capacity? Add a machine. + Retiring one? Remove it and redeploy. +

+

+ Nothing scales or reschedules on its own. It's predictable, boring infrastructure + for your peace of mind. +

+
+ + +
+ + +
+
+
+ Troubleshoot +
+

+ Troubleshoot with tools you already know +

+

+ When something breaks, use uc to list containers, read logs, and inspect + both the WireGuard network and the live Caddy config. Or SSH in and use the familiar + Docker and Linux tools. It's just Docker, WireGuard and Caddy underneath, exactly as + you'd expect. +

+ +
+

+ “It's all built on top of simple and familiar technologies. … This + gives me confidence that if something goes wrong, I will be able to debug myself. + I cannot say the same for SwarmKit or etcd.” +

+ + Paweł Zmarzły (@szawo) + +
+
+ + +
+ +
+
+
+ + +
+
+
+
+
+

+ Frequently asked questions +

+

+ Have another questions? Ask us on + Discord. +

+
+ +
+
+ + How is this different from Docker Swarm? + + +

+ Swarm needs a Raft quorum of manager nodes and has been in maintenance mode for + years. Uncloud has no control plane at all. Machines sync state peer to peer, and + any subset keeps working. You also get WireGuard networking across clouds and even + behind NAT, automatic HTTPS via Caddy, and image push without a registry. Swarm + gives you none of that out of the box. +

+
+ +
+ + What happens when a machine goes down? + + +

+ The rest of the cluster keeps working. There's no control plane to lose, and + healthy replicas on other machines keep serving traffic. Uncloud deliberately + doesn't auto-reschedule containers. You decide when to replace the machine and + redeploy, so nothing unpredictable happens without your control. +

+
+ +
+ + Will it replace my CI/CD? + + +

+ No, and that's deliberate. uc + is just a CLI that connects to your cluster over SSH. Run uc deploy + locally or in GitHub Actions to integrate with existing workflows. + There are no agents to install and no pipelines to migrate. +

+
+
+
+
+
+
+ + +
+ + +
+
+

+ Ready to make deploying to your own servers fun? +

+ + + +
+

+ Subscribe to follow the development journey and get early insights into new features.
+ See previous + newsletters. +

+
+
@@ -732,6 +963,123 @@
+ + + diff --git a/website/landing/style.css b/website/landing/style.css index 0414109f..130e0602 100644 --- a/website/landing/style.css +++ b/website/landing/style.css @@ -962,6 +962,26 @@ select{ } } +/* Inline code, styled like GitHub's with a visible border. */ + +code{ + white-space: nowrap; + border-radius: 0.375rem; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(228 228 231 / var(--tw-border-opacity)); + --tw-bg-opacity: 1; + background-color: rgb(244 244 245 / var(--tw-bg-opacity)); + padding-left: 0.4em; + padding-right: 0.4em; + padding-top: 0.1em; + padding-bottom: 0.1em; + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 0.85em; + --tw-text-opacity: 1; + color: rgb(63 63 70 / var(--tw-text-opacity)); +} + /* Buttons */ .btn, @@ -1292,10 +1312,6 @@ input[type="search"]::-webkit-search-results-decoration { display: inline-flex; } -.table{ - display: table; -} - .grid{ display: grid; } @@ -1384,6 +1400,10 @@ input[type="search"]::-webkit-search-results-decoration { width: 100%; } +.min-w-0{ + min-width: 0px; +} + .max-w-3xl{ max-width: 48rem; } @@ -1412,6 +1432,10 @@ input[type="search"]::-webkit-search-results-decoration { max-width: 20rem; } +.shrink{ + flex-shrink: 1; +} + .shrink-0{ flex-shrink: 0; } @@ -1434,11 +1458,19 @@ input[type="search"]::-webkit-search-results-decoration { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.cursor-pointer{ + cursor: pointer; +} + .select-none{ -webkit-user-select: none; user-select: none; } +.list-none{ + list-style-type: none; +} + .grid-cols-1{ grid-template-columns: repeat(1, minmax(0, 1fr)); } @@ -1529,6 +1561,12 @@ input[type="search"]::-webkit-search-results-decoration { margin-bottom: calc(3rem * var(--tw-space-y-reverse)); } +.space-y-16 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(4rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(4rem * var(--tw-space-y-reverse)); +} + .space-y-2 > :not([hidden]) ~ :not([hidden]){ --tw-space-y-reverse: 0; margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); @@ -1553,6 +1591,11 @@ input[type="search"]::-webkit-search-results-decoration { border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); } +.divide-zinc-200 > :not([hidden]) ~ :not([hidden]){ + --tw-divide-opacity: 1; + border-color: rgb(228 228 231 / var(--tw-divide-opacity)); +} + .overflow-hidden{ overflow: hidden; } @@ -1593,6 +1636,11 @@ input[type="search"]::-webkit-search-results-decoration { border-width: 2px; } +.border-y{ + border-top-width: 1px; + border-bottom-width: 1px; +} + .border-b-2{ border-bottom-width: 2px; } @@ -1629,6 +1677,11 @@ input[type="search"]::-webkit-search-results-decoration { border-color: rgb(161 161 170 / var(--tw-border-opacity)); } +.border-zinc-600{ + --tw-border-opacity: 1; + border-color: rgb(82 82 91 / var(--tw-border-opacity)); +} + .border-zinc-700\/50{ border-color: rgb(63 63 70 / 0.5); } @@ -1683,6 +1736,11 @@ input[type="search"]::-webkit-search-results-decoration { background-color: rgb(234 179 8 / var(--tw-bg-opacity)); } +.bg-zinc-100{ + --tw-bg-opacity: 1; + background-color: rgb(244 244 245 / var(--tw-bg-opacity)); +} + .bg-zinc-50{ --tw-bg-opacity: 1; background-color: rgb(250 250 250 / var(--tw-bg-opacity)); @@ -1693,6 +1751,10 @@ input[type="search"]::-webkit-search-results-decoration { background-color: rgb(63 63 70 / var(--tw-bg-opacity)); } +.bg-zinc-700\/60{ + background-color: rgb(63 63 70 / 0.6); +} + .bg-zinc-800{ --tw-bg-opacity: 1; background-color: rgb(39 39 42 / var(--tw-bg-opacity)); @@ -1826,6 +1888,11 @@ input[type="search"]::-webkit-search-results-decoration { padding-bottom: 1rem; } +.py-5{ + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + .py-8{ padding-top: 2rem; padding-bottom: 2rem; @@ -1839,6 +1906,10 @@ input[type="search"]::-webkit-search-results-decoration { padding-bottom: 1rem; } +.pb-8{ + padding-bottom: 2rem; +} + .pl-4{ padding-left: 1rem; } @@ -1983,6 +2054,11 @@ input[type="search"]::-webkit-search-results-decoration { color: rgb(0 0 0 / var(--tw-text-opacity)); } +.text-blue-500{ + --tw-text-opacity: 1; + color: rgb(59 130 246 / var(--tw-text-opacity)); +} + .text-emerald-500{ --tw-text-opacity: 1; color: rgb(16 185 129 / var(--tw-text-opacity)); @@ -2008,6 +2084,11 @@ input[type="search"]::-webkit-search-results-decoration { color: rgb(17 24 39 / var(--tw-text-opacity)); } +.text-green-400{ + --tw-text-opacity: 1; + color: rgb(74 222 128 / var(--tw-text-opacity)); +} + .text-green-500{ --tw-text-opacity: 1; color: rgb(34 197 94 / var(--tw-text-opacity)); @@ -2018,6 +2099,16 @@ input[type="search"]::-webkit-search-results-decoration { color: rgb(79 70 229 / var(--tw-text-opacity)); } +.text-red-500{ + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +} + +.text-sky-300{ + --tw-text-opacity: 1; + color: rgb(125 211 252 / var(--tw-text-opacity)); +} + .text-transparent{ color: transparent; } @@ -2027,6 +2118,11 @@ input[type="search"]::-webkit-search-results-decoration { color: rgb(255 255 255 / var(--tw-text-opacity)); } +.text-yellow-500{ + --tw-text-opacity: 1; + color: rgb(234 179 8 / var(--tw-text-opacity)); +} + .text-zinc-100{ --tw-text-opacity: 1; color: rgb(244 244 245 / var(--tw-text-opacity)); @@ -2088,6 +2184,10 @@ input[type="search"]::-webkit-search-results-decoration { text-decoration-color: #a1a1aa; } +.decoration-zinc-500{ + text-decoration-color: #71717a; +} + .underline-offset-2{ text-underline-offset: 2px; } @@ -2173,6 +2273,10 @@ input[type="search"]::-webkit-search-results-decoration { transition-duration: 150ms; } +.duration-200{ + transition-duration: 200ms; +} + .\[background\:linear-gradient\(theme\(colors\.white\)\2c theme\(colors\.zinc\.50\)\)_padding-box\2c linear-gradient\(120deg\2c theme\(colors\.zinc\.300\)\2c theme\(colors\.zinc\.100\)\2c theme\(colors\.zinc\.300\)\)_border-box\]{ background: linear-gradient(#fff,#fafafa) padding-box,linear-gradient(120deg,#d4d4d8,#f4f4f5,#d4d4d8) border-box; } @@ -2361,6 +2465,16 @@ input[type="search"]::-webkit-search-results-decoration { display: none; } +.hover\:bg-white:hover{ + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +} + +.hover\:bg-zinc-700:hover{ + --tw-bg-opacity: 1; + background-color: rgb(63 63 70 / var(--tw-bg-opacity)); +} + .hover\:bg-zinc-800:hover{ --tw-bg-opacity: 1; background-color: rgb(39 39 42 / var(--tw-bg-opacity)); @@ -2384,6 +2498,10 @@ input[type="search"]::-webkit-search-results-decoration { text-decoration-color: #f4f4f5; } +.hover\:decoration-zinc-300:hover{ + text-decoration-color: #d4d4d8; +} + .hover\:decoration-zinc-400:hover{ text-decoration-color: #a1a1aa; } @@ -2467,6 +2585,11 @@ input[type="search"]::-webkit-search-results-decoration { --tw-ring-offset-width: 2px; } +.group[open] .group-open\:rotate-45{ + --tw-rotate: 45deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + .group:hover .group-hover\:translate-x-0{ --tw-translate-x: 0px; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); @@ -2597,6 +2720,10 @@ input[type="search"]::-webkit-search-results-decoration { margin-bottom: 0px; } + .md\:mt-16{ + margin-top: 4rem; + } + .md\:max-w-4xl{ max-width: 56rem; } @@ -2621,6 +2748,12 @@ input[type="search"]::-webkit-search-results-decoration { gap: 0px; } + .md\:space-y-28 > :not([hidden]) ~ :not([hidden]){ + --tw-space-y-reverse: 0; + margin-top: calc(7rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(7rem * var(--tw-space-y-reverse)); + } + .md\:px-5{ padding-left: 1.25rem; padding-right: 1.25rem; @@ -2641,6 +2774,10 @@ input[type="search"]::-webkit-search-results-decoration { padding-bottom: 6rem; } + .md\:pb-12{ + padding-bottom: 3rem; + } + .md\:pb-16{ padding-bottom: 4rem; } @@ -2678,14 +2815,6 @@ input[type="search"]::-webkit-search-results-decoration { } @media (min-width: 1024px){ - .lg\:order-1{ - order: 1; - } - - .lg\:order-2{ - order: 2; - } - .lg\:col-span-2{ grid-column: span 2 / span 2; } @@ -2694,10 +2823,22 @@ input[type="search"]::-webkit-search-results-decoration { grid-column: span 8 / span 8; } + .lg\:col-start-1{ + grid-column-start: 1; + } + .lg\:col-start-2{ grid-column-start: 2; } + .lg\:row-start-1{ + grid-row-start: 1; + } + + .lg\:mt-16{ + margin-top: 4rem; + } + .lg\:mt-24{ margin-top: 6rem; } @@ -2768,3 +2909,7 @@ input[type="search"]::-webkit-search-results-decoration { margin-left: calc(6rem * calc(1 - var(--tw-space-x-reverse))); } } + +.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{ + display: none; +}