Compare commits

..

6 Commits

124 changed files with 5039 additions and 649 deletions

2
.bundle/config Normal file
View File

@ -0,0 +1,2 @@
---
BUNDLE_PATH: "vendor/bundle"

View File

@ -1,3 +1,6 @@
source "https://rubygems.org" source "https://rubygems.org"
gem "jekyll-theme-console", path: "./_vendor/jekyll-theme-console" gem "jekyll-theme-console", path: "./_vendor/jekyll-theme-console"
gem 'jekyll-feed' gem 'jekyll-feed'
gem "jekyll"
gem "webrick"

View File

@ -38,6 +38,8 @@ GEM
safe_yaml (~> 1.0) safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0) terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7) webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (3.0.0) jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54) sass-embedded (~> 1.54)
jekyll-seo-tag (2.8.0) jekyll-seo-tag (2.8.0)
@ -56,24 +58,30 @@ GEM
pathutil (0.16.2) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (5.0.3) public_suffix (5.0.3)
rake (13.3.0)
rb-fsevent (0.11.2) rb-fsevent (0.11.2)
rb-inotify (0.10.1) rb-inotify (0.10.1)
ffi (~> 1.0) ffi (~> 1.0)
rexml (3.2.5) rexml (3.2.5)
rouge (4.1.2) rouge (4.1.2)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sass-embedded (1.64.1-x86_64-linux-musl) sass-embedded (1.64.1)
google-protobuf (~> 3.23) google-protobuf (~> 3.23)
rake (>= 13.0.0)
terminal-table (3.0.2) terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3) unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.4.2) unicode-display_width (2.4.2)
webrick (1.8.1) webrick (1.8.1)
PLATFORMS PLATFORMS
x86_64-linux
x86_64-linux-musl x86_64-linux-musl
DEPENDENCIES DEPENDENCIES
jekyll
jekyll-feed
jekyll-theme-console! jekyll-theme-console!
webrick
BUNDLED WITH BUNDLED WITH
2.4.10 2.4.10

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2025 Caution, SEZC Copyright (c) 2023 Distrust, LLC
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@ -20,8 +20,3 @@ _site: build
serve: build serve: build
# Run Docker container with listener for current dir and port mapping # Run Docker container with listener for current dir and port mapping
docker run --rm -p 0.0.0.0:4000:80 -it caution-co docker run --rm -p 0.0.0.0:4000:80 -it caution-co
.PHONY: publish
publish: build
docker tag caution-co git.distrust.co/caution/website
docker push git.distrust.co/caution/website

View File

@ -39,17 +39,3 @@ $ make _site
```shell ```shell
$ make fullclean $ make fullclean
``` ```
### Releasing
1. Build and publish the image
```shell
make publish
```
2. Restart the `caution` deployment in the Kubernetes cluster
```shell
kubectl -n website rollout restart deploy/website-caution
```

View File

@ -1,24 +1,23 @@
title: Caution — Verifiable Compute title: Caution
email: info@caution.co email: info@caution.co
description: erifiable, platform-agnostic confidential compute. description: The first open source platform for encrypted data recovery and escrow.
baseurl: "" baseurl: ""
url: "https://caution.co" url: "https://caution.co"
banner: "https://caution.co/assets/base/caution-thumbnail.png" banner: "https://caution.co/assets/base/caution-thumbnail.png"
header_pages: header_pages:
- index.md - index.md
style: dark style: dark
listen_for_clients_preferred_style: false listen_for_clients_preferred_style: false
footer: "© 2025 Caution"
theme: jekyll-theme-console theme: jekyll-theme-console
permalink: blog/:title.html permalink: blog/:title.html
plugins: plugins:
- jekyll-feed - jekyll-feed
# Exclude from processing. # Exclude from processing.
# The following items will not be processed, by default. # The following items will not be processed, by default.
# Any item listed under the `exclude:` key here will be automatically added to # Any item listed under the `exclude:` key here will be automatically added to

View File

@ -0,0 +1,5 @@
<h2>About Caution</h2>
<p>The Caution team has helped build and secure some of the highest-risk systems in the world via their consulting company Distrust. This includes vaulting infrastructure at BitGo, Unit410, and Turnkey, as well as security work with electrical grid operators, industrial control systems, and other mission-critical systems.</p>

View File

@ -0,0 +1,32 @@
<section class="mid-tall-section">
{% unless include.hide_title == 'true' %}
<div class="flex-container-inner">
<div class="text-well center">
<h4 class="carousel-title" >trusted by industry leaders</h4>
</div>
</div>
{% endunless %}
<div class="logo-section">
<div class="logo-slider" id="logoSlider">
<img src="assets/base/companies/coinbase-white.svg" alt="Coinbase">
<img src="assets/base/companies/bitgo-logo-white.svg" alt="BitGo">
<img style="filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(102%) contrast(102%);"
src="assets/base/companies/bishop-fox-dark.png" alt="Bishop Fox">
<img style="filter: invert(100)" src="assets/base/companies/turnkey-black.svg" alt="Turnkey">
<img style="height: 40px" src="assets/base/companies/falconx-white.svg" alt="FalconX">
<img src="assets/base/companies/exodus-white.svg" alt="Exodus">
<img src="assets/base/companies/sidero-labs-white.png" alt="Sidero Labs">
<img src="assets/base/companies/zoom-white.png" alt="Zoom">
<img src="assets/base/companies/mysten-labs-white.svg" alt="Mysten Labs">
<img style="height: 60px; filter: invert(100%) sepia(100%) saturate(0%) hue-rotate(288deg) brightness(200%) contrast(102%);"
src="assets/base/companies/ankr.png" alt="Ankr">
<img style="height: 60px" src="assets/base/companies/hashicorp-white.png" alt="HashiCorp">
<img style="filter: invert(100)" src="assets/base/companies/block-one-dark.svg" alt="Block One">
<img src="assets/base/companies/ledn-white.svg" alt="Ledn">
<img src="assets/base/companies/fitbit-white.png" alt="Fitbit">
<img src="assets/base/companies/dfns-color.png" alt="Dfns">
</div>
</div>
</section>

3
_includes/divider.html Normal file
View File

@ -0,0 +1,3 @@
<div class="divider">
<br>
</div>

405
_includes/faqs.html Normal file
View File

@ -0,0 +1,405 @@
<!-- FAQ section uses <details> for native accessibility and keyboard support -->
<section class="faq" aria-labelledby="faq-title">
<div class="faq-wrap">
<h2 id="faq-title" class="faq-title">Frequently asked questions</h2>
<p class="subtext faq-description">
Were here to help with any questions about plans, pricing, or whats
included.
</p>
<!-- Category group -->
<section class="faq-group" aria-labelledby="faq-plans">
<h3 id="faq-plans" class="faq-group-title">Plans &amp; prices</h3>
<div class="faq-list">
<details class="faq-item" open>
<summary class="faq-q">
<span class="faq-q-text">Which plan is best for me?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
The right plan depends on your operating model: how you balance
control, effort, and recovery assurances.
</p>
<!-- <p>Start with your context: what youre protecting, how often you expect to recover, and how much operational work you want to own.</p> -->
<!-- <p>Match your situation to the level of control and support you need.</p> -->
<ul class="plans-list">
<li>
<a href="#open-source"
><strong>Self-hosted open source</strong></a
>
is for organizations with dedicated technical resources and
operational maturity to manage everything themselves — from
infrastructure and encrypted storage to quorum coordination
and recovery ceremonies. It gives maximum control at zero
cost, but requires significant ongoing effort.
</li>
<li>
<a href="#paidplans"><strong>On-demand</strong></a> is for
individuals, family offices, or small teams who need a safety
net for critical data without frequent recoveries. For
example, safeguarding high-value keys, estate records, or
sensitive archives. You store your own data and pay only if
recovery is triggered.
</li>
<li>
<a href="#paidplans"><strong>Enterprise</strong></a>
is for companies that want to reduce operational load and
increase confidence in their recovery process without adding
headcount. It includes managed storage, scheduled recoveries,
guided onboarding, premium support, and predictable timelines
— making recovery part of your operations without creating
extra work for your team.
</li>
<li>
<a href="#paidplans"><strong>Dedicated</strong></a> is for
organizations with nuanced requirements — such as strict
compliance, jurisdictional controls, or complete isolation. It
provides a fully private deployment with tailored
infrastructure and a recovery policy designed specifically for
your organization.
</li>
</ul>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text">Can I self-host?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
Yes. Caution is fully open source, and you can run it yourself
at no cost. This option is best for organizations with dedicated
technical resources who are willing to handle everything
themselves — from setting up infrastructure and managing
encrypted storage to coordinating quorum members and running
recovery ceremonies. It offers maximum control, but requires
significant ongoing effort.
</p>
<p>
<a href="#paidplans">Enterprise</a> and
<a href="#paidplans">Dedicated</a>
plans remove that operational burden by providing managed
storage, guaranteed recovery timelines, and support.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>Whats included in the On-demand plan?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
<a href="#paidplans">On-demand</a> lets you store your own
encrypted backups and only pay if you need a recovery. Its the
leanest option, with minimal overhead. For teams that want
proactive support or guaranteed timelines,
<a href="#paidplans">Enterprise</a> is a better fit.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>Does the On-demand plan include support?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
Free support through our open-source Community is available with
every plan, including
<a href="#paidplans">On-demand</a>.
</p>
<p>
<a href="#paidplans">On-demand</a> itself is designed as a
self-service tier, but limited paid support can be added if
needed. For teams that want ongoing guidance, guaranteed
response times, and recovery assistance,
<a href="#paidplans">Enterprise</a> or
<a href="#paidplans">Dedicated</a> plans are a better fit.
</p>
<p>
<a href="contact.html">Talk to our Sales team</a>
to explore the right level of support for your needs.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>How does the Enterprise plan differ from On-demand?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
<a href="#paidplans">Enterprise</a> includes 10 TB of managed
encrypted storage, geo-replication, two scheduled recoveries per
year, and premium support. Its designed to reduce your
operational risk without needing to self-manage.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>Why does On-demand recovery cost more?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
Each <a href="#paidplans">On-demand</a> recovery mobilizes a
full recovery ceremony from scratch, with quorum approvals and
offline security checks.
<a href="#paidplans">Enterprise</a> customers benefit from lower
recovery costs because their environments are provisioned in
advance.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text">How does pricing work for Dedicated?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
<a href="#paidplans">Dedicated</a> deployments start at $300K
and are tailored for organizations that need fully isolated
environments. This includes private infrastructure, custom
recovery policies, compliance-driven infrastructure, and
expanded storage capacity.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text">Can I switch plans later?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>Yes. You can move between plans as your needs evolve.</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text">Are there any hidden fees?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
No. All storage, recovery, and support costs are published.
Optional add-ons (like additional storage and priority
recoveries) are
<a href="#compare">billed separately</a>. For predictable
budgeting, most organizations choose
<a href="#paidplans">Enterprise</a> or
<a href="#paidplans">Dedicated</a>.
</p>
</div>
</div>
</details>
</div>
</section>
<!-- Category: Security & infrastructure -->
<section class="faq-group" aria-labelledby="faq-security">
<h3 id="faq-security" class="faq-group-title">
Security &amp; infrastructure
</h3>
<div class="faq-list">
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>How does Caution ensure recoveries are secure?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
Our recoveries are quorum-based, end-to-end encrypted, and are
run fully offline to prevent outside interference. No single
person, system, or service can trigger a recovery on their own —
multi-party approval is always required. Every step is
cryptographically logged and verifiable, so you can audit the
process independently.
</p>
<p>
Learn more about our threat model, design principles, and
security architecture in
<a href="#">our documentation</a>
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>What does “open source transparency” mean?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>
We believe that true security requires transparency and
verifiability — you should never have to trust what you cant
see. Open source means our softwares code is public and freely
available to inspect, audit, and even run yourself.
</p>
<p>
Caution is and will always remain fully open source. We dont
sell source code. What we offer commercially is hosting,
automation, and support for organizations that want the
assurance of managed operations without giving up control.
</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text">Who has access to my data?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>Only you. Caution never sees plaintext data.</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>What happens if something happens to Caution?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>Only you. Caution never sees plaintext data.</p>
</div>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>What type of data can I back up and secure with Caution?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>Only you. Caution never sees plaintext data.</p>
</div>
</div>
</details>
</div>
</section>
<!-- Category: Data storage -->
<section class="faq-group" aria-labelledby="faq-storage">
<h3 id="faq-storage" class="faq-group-title">Data storage</h3>
<div class="faq-list">
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>How much data is included in each plan?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<p>Lorem ipsum</p>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>What happens if I exceed my 10TB storage limit?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>Lorem ipsum</p>
</div>
</div>
</details>
</div>
</section>
<!-- Category: Recovery -->
<section class="faq-group" aria-labelledby="faq-recovery">
<h3 id="faq-recovery" class="faq-group-title">Recovery</h3>
<div class="faq-list">
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text">How do scheduled recoveries work?</span>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<p>Lorem ipsum</p>
</div>
</details>
<details class="faq-item">
<summary class="faq-q">
<span class="faq-q-text"
>How is a &lt;48h priority recovery different from standard?</span
>
<span class="faq-toggle" aria-hidden="true"></span>
</summary>
<div class="faq-a">
<div class="faq-a-inner">
<p>Lorem ipsum</p>
</div>
</div>
</details>
</div>
</section>
</div>
</section>

70
_includes/footer.html.bkp Normal file
View File

@ -0,0 +1,70 @@
<footer class="site-footer">
<div class="footer-top container">
<div class="footer-logo">
<a href="/index.html" class="footer-logo">
<img
src="/assets/base/caution-logo/caution-logo-png/caution-logo-text-white.png"
alt="Caution logo"
/>
</a>
</div>
<div>
<p class="footer-subheading footer-mobile">
Sleep better knowing your encrypted data is always recoverable.
</p>
</div>
<div class="footer-links">
<div class="footer-column footer-product">
<h4>Product</h4>
<a href="/dr.html" rel="noopener noreferrer">Overview</a>
<a href="/pricing.html" rel="noopener noreferrer">Pricing</a>
<a href="#" rel="noopener noreferrer">Docs</a>
</div>
<div class="footer-column footer-resources">
<h4>Resources</h4>
<a href="/faq.html" rel="noopener noreferrer">FAQs</a>
<a href="#" rel="noopener noreferrer">Brand</a>
<a href="#" rel="noopener noreferrer">Contact</a>
</div>
<div class="footer-column footer-company">
<h4>Company</h4>
<a href="#" rel="noopener noreferrer">About</a>
<a href="/research-and-development.html" rel="noopener noreferrer"
>R&D</a
>
<a href="#" rel="noopener noreferrer">Privacy</a>
</div>
</div>
</div>
<div class="footer-middle container">
<p class="footer-heading footer-desktop">
Secure what matters most with Caution.
</p>
<div class="social-icons">
<a
href="https://git.distrust.co/public/"
target="_blank"
rel="noopener noreferrer"
aria-label="Forgejo"
>
<img src="/assets/base/social/forgejo-logo.svg" alt="Forgejo logo" />
</a>
<a
href="#"
target="_blank"
rel="noopener noreferrer"
aria-label="Mastodon"
>
<img src="/assets/base/social/Mastodon-logo.svg" alt="Mastodon logo" />
</a>
</div>
</div>
<div class="footer-bottom container">
<p class="footer-subheading footer-desktop">
Sleep better knowing your encrypted data is always recoverable.
</p>
<p class="copyright">© 2025 Caution. All rights reserved.</p>
</div>
</footer>

View File

@ -20,14 +20,62 @@
sizes="16x16" sizes="16x16"
href="/assets/favicons/favicon-caution-96x96.png" href="/assets/favicons/favicon-caution-96x96.png"
/> />
<!-- Preload Plus Jakarta Sans font weights -->
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-ExtraLight.otf"
as="font"
type="font/otf"
crossorigin
/>
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-Light.otf"
as="font"
type="font/otf"
crossorigin
/>
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-Regular.otf"
as="font"
type="font/otf"
crossorigin
/>
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-Medium.otf"
as="font"
type="font/otf"
crossorigin
/>
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-SemiBold.otf"
as="font"
type="font/otf"
crossorigin
/>
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-Bold.otf"
as="font"
type="font/otf"
crossorigin
/>
<link
rel="preload"
href="/assets/fonts/PlusJakartaSans-ExtraBold.otf"
as="font"
type="font/otf"
crossorigin
/>
<!-- Preload Plus Jakarta Sans font weights -->
<title>{{ page.title }}</title> <title>{{ page.title }}</title>
<link rel="stylesheet" href="styles.css" /> <link rel="stylesheet" href="styles.css" />
<meta content="{{ site.title }}" property="og:site_name" /> <meta content="{{ site.title }}" property="og:site_name" />
{% assign page_url = page.url | absolute_url | replace: 'index.html','' %} {% {% if page.noindex %}
assign og_img = page.og_image | default: site.og_image | absolute_url %} {% if
page.noindex %}
<meta name="robots" content="noindex" /> <meta name="robots" content="noindex" />
{% endif %} {% if page.title %} {% endif %} {% if page.title %}
<meta content="{{ page.tagline }}" property="og:title" /> <meta content="{{ page.tagline }}" property="og:title" />
@ -80,10 +128,12 @@
| relative_url }}"> <link rel="stylesheet" type="text/css" href="{{ | relative_url }}"> <link rel="stylesheet" type="text/css" href="{{
"/assets/main-dark.css" | relative_url }}"> "/assets/main-dark.css" | relative_url }}">
<script src="/assets/js/main.js" defer></script>
<!-- "Really, there is nothing interesting to see here. It is a static website. --> <!-- "Really, there is nothing interesting to see here. It is a static website. -->
<!-- Here is the terraform code that deployed it, and here is the site source repo. --> <!-- Here is the terraform code that deployed it, and here is the site source repo. -->
<!-- If you find anything interesting or want to talk to us, reach out via our /contact page!" --> <!-- If you find anything interesting or want to talk to us, reach out via our /contact page!" -->
<!-- https://git.distrust.co/public/stack --> <!-- https://git.distrust.co/public/stack -->
<!-- https://git..co/public/website --> <!-- https://git.distrust.co/public/website -->
<!-- mobile menu content --> <!-- mobile menu content -->
</head> </head>

View File

@ -1,30 +1,78 @@
{%- assign page_paths = site.header_pages | default: default_paths -%} {%- assign page_paths = site.header_pages | default: default_paths -%}
<header>
<div class="menu"> <header class="header-navbar">
<div class="left-menu"> <div class="nav-container container">
<a id="home-link" href="/index.html"> <a href="/index.html" class="nav-logo">
<img <img
class="menu-logo" src="/assets/base/caution-logo/caution-icon-black.svg"
src="/assets/base/caution-logo-triangle-black.svg" alt="Caution logo"
alt="Caution triangle logo with black text" />
/> </a>
</a>
<nav class="nav-menu">
<!--<div class="nav-dropdown">
<button class="nav-dropdown-toggle">
Caution
<img
src="/assets/base/dropdown.svg"
alt="Dropdown caret"
class="nav-caret-icon"
/>
</button>
<ul class="nav-dropdown-menu">
<li>
<a href="/company.html" rel="noopener noreferrer">About</a>
</li>
<li>
<a href="/research-and-development.html" rel="noopener noreferrer"
>R&D</a
>
</li>
<li><a href="#" rel="noopener noreferrer">Contact</a></li>
</ul>
</div>-->
<!--
<a class="nav-link" href="/dr.html" rel="noopener noreferrer"
>Disaster Recovery</a
>
<a class="nav-link" href="/pricing.html" rel="noopener noreferrer"
>Pricing</a
>
<a class="nav-link" href="#">Docs</a>-->
</nav>
<div class="nav-cta">
<a href="/blog.html" class="btn btn-primary" rel="noopener noreferrer"
>Blog →</a
>
</div> </div>
<div class="right-menu"> </div>
<ul class="header-page-links show"> </header>
{%- for path in page_paths -%} {%- assign my_page = site.pages | where:
"path", path | first -%} {%- if my_page.title -%} {%- if my_page.title <!-- <header>
!= 'Home' -%} <div class="menu">
<li> <div class="left-menu">
<a href="{{ my_page.url | relative_url }}" <a id="home-link" href="/index.html">
>{{ my_page.title | escape }}</a <img class="menu-logo" src="/assets/base/caution-logo/caution-icon-black.svg"
> alt="Caution triangle logo with black text" />
</li> </a>
{%- endif -%} {%- endif -%} {%- endfor -%} </div>
<li class="show"> <div class="right-menu">
<a href="/contact.html" class="mega-inverted button">Work with us</a> <ul class="header-page-links show">
</li> {%- for path in page_paths -%}
</ul> {%- assign my_page = site.pages | where: "path", path | first -%}
{%- if my_page.title -%}
{%- if my_page.title != 'Home' -%}
<li><a href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a></li>
{%- endif -%}
{%- endif -%}
{%- endfor -%}
<li class="show">
<a href="#" class="btn btn-primary">Get started →</a>
</li>
</ul>
<input type="checkbox" id="menu-toggle" /> <input type="checkbox" id="menu-toggle" />
<label for="menu-toggle" class="hamburger-menu"> <label for="menu-toggle" class="hamburger-menu">
@ -34,42 +82,48 @@
</label> </label>
<div class="menu-content"> <div class="menu-content">
<div class="inner-menu-content"></div> <div class="inner-menu-content">
{% include nav-links.html %}
</div>
</div> </div>
</div> </div>
</div> </div>
<script>
document.addEventListener("DOMContentLoaded", function () {
let pathSegment = window.location.pathname.split("/")[1];
if (pathSegment.endsWith(".html")) {
pathSegment = pathSegment.replace(".html", "");
<script>
document.addEventListener('DOMContentLoaded', function () {
let pathSegment = window.location.pathname.split('/')[1];
if (pathSegment.endsWith('.html')) {
pathSegment = pathSegment.replace('.html', '');
} }
const navLinks = document.querySelectorAll(".header-page-links li a"); const navLinks = document.querySelectorAll('.header-page-links li a');
navLinks.forEach((link) => { navLinks.forEach(link => {
let linkPath = link let linkPath = link.getAttribute('href').replace('/', '').replace('.html', '');
.getAttribute("href")
.replace("/", "")
.replace(".html", "");
if (linkPath === pathSegment) { if (linkPath === pathSegment) {
link.classList.add("active"); link.classList.add('active');
} }
}); });
}); });
let prevScrollPos = window.scrollY; let prevScrollPos = window.scrollY;
const hamburgerMenu = document.querySelector(".menu-content"); const hamburgerMenu = document.querySelector('.menu-content');
window.addEventListener("scroll", () => { window.addEventListener('scroll', () => {
const currentScrollPos = window.scrollY; const currentScrollPos = window.scrollY;
if (currentScrollPos > prevScrollPos) { if (currentScrollPos > prevScrollPos) {
document.getElementById("menu-toggle").checked = false; document.getElementById('menu-toggle').checked = false;
} }
prevScrollPos = currentScrollPos; prevScrollPos = currentScrollPos;
}); });
</script> </script>
</header> </header>
-->

61
_includes/live-tools.html Normal file
View File

@ -0,0 +1,61 @@
<section style="margin-bottom: 0px;" class="flex-container" id="ready-to-use">
<div class="flex-container-inner">
<h2 class="hero-header gradient-text center">ready to use</h2>
<p class="hero-p center" style="margin-top: 20px; max-width: 700px">Production-ready, verifiable open source tools.<p>
</div>
</section>
<section style="margin-top: 40px;" class="live-tools-cards">
<div class="flex-container">
<div class="flex-container-inner">
<div class="text-well card">
<div class="live-tool-name">
StageX
</div>
<p>Security-first Linux distribution for reducing supply chain risks. Minimal, bootstrapped, hermetic, deterministic, reproducible, and multi-party signed.</p>
<a href="https://codeberg.org/stagex/stagex" rel=”noopener noreferrer target="_blank" class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
<div class="flex-container-inner">
<div class="text-well card">
<div class="live-tool-name">
AirgapOS
</div>
<p>Immutable Linux distribution for offline secret management. Diskless, reproducible, and hardened for air-gapped environments.</p>
<a href="https://git.distrust.co/public/airgap" rel=”noopener noreferrer target="_blank" class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
</div>
<div class="flex-container">
<div class="flex-container-inner">
<div class="text-well card">
<div class="live-tool-name">
Keyfork
</div>
<p>Toolchain for generating and managing a wide range of cryptographic keys offline and on smartcards from a shared BIP39 mnemonic phrase.</p>
<a href="https://git.distrust.co/public/keyfork" rel=”noopener noreferrer target="_blank" class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
<div class="flex-container-inner">
<div class="text-well card">
<div class="live-tool-name">
Icepick
</div>
<p>Framework for rapidly developing applications to perform transfer and staking cryptocurrency operations..</p>
<a href="https://git.distrust.co/public/icepick" rel=”noopener noreferrer target="_blank" class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
</div>
</section>

10
_includes/nav-links.html Normal file
View File

@ -0,0 +1,10 @@
{%- for path in page_paths -%}
{%- assign my_page = site.pages | where: "path", path | first -%}
{%- if my_page.title -%}
{%- if my_page.title != 'Home' -%}
<div>
<a href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
</div>
{%- endif -%}
{%- endif -%}
{%- endfor -%}

47
_includes/powered-by.html Normal file
View File

@ -0,0 +1,47 @@
<section style="margin-bottom: 0px;" class="flex-container">
<div class="flex-container-inner">
<h2 class="hero-header gradient-text center">powered by distrust</h2>
<p class="hero-p center" style="margin-top: 20px; max-width: 700px">Companies across high-risk industries adopt our methodologies and tooling to secure their critical systems.<p>
</div>
</section>
<section style="margin-top: 40px;" class="flex-container powered-by">
<div class="flex-container-inner">
<div class="text-well card">
<div class="img-container">
<img src="assets/base/companies/turnkey-black.svg" style="filter: invert(100)">
</div>
<p class="text-description-desktop">Turnkey secures billions of dollars in digital assets and relies on Distrust tools to address fundamental risks in their technology stack.</p>
<p class="text-description-mobile">Turnkey secures billions of dollars in digital assets and relies on Distrust tools to systematically address fundamental risks in their technology stack.</p>
<a href="https://whitepaper.turnkey.com/foundations#abstract" rel=”noopener noreferrer target="_blank" class="arrow-link">
Learn more
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
<div class="flex-container-inner">
<div class="text-well card">
<div class="img-container">
<img src="assets/base/companies/mysten-labs-white.svg" style="width: 250px">
</div>
<p>The creators of the SUI blockchain, Mysten Labs, eliminate single points of failure in their systems with the help of Distrust tooling and advice.</p>
<a href="https://github.com/MystenLabs/sui/blob/main/docker/sui-node-deterministic/Dockerfile" rel=”noopener noreferrer target="_blank" class="arrow-link">
Learn more
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
<div class="flex-container-inner">
<div class="text-well card">
<div class="img-container">
<img src="assets/base/companies/sidero-labs-white.png" style="filter: grayscale(); width: 150px">
</div>
<p>Sidero Labs' Talos Linux, a widely used Kubernetes distribution, uses Distrust's StageX and services, to bolster their supply chain security.</p>
<a href="https://github.com/siderolabs/talos/releases/tag/v1.10.0-alpha.2" rel=”noopener noreferrer target="_blank" class="arrow-link">
Learn more
<span class="arrow">&#x2192;</span>
</a>
</div>
</div>
</section>

View File

@ -0,0 +1,8 @@
<section>
<h4 class="gradient-text center" style="line-height: 50px; max-width: 600px; margin: auto;">can't afford a breach?</h4>
<p class="hero-p center" style="max-width: 650px; margin-top: 10px">Let's talk. We help teams where security is mission-critical.</p>
<div class="button-container center">
<a href="/contact.html" class="mega button center">Work with us</a>
</div>
</section>

View File

@ -0,0 +1,44 @@
<section class="testimonials">
<div class="testimonial-card">
<img src="/assets/base/companies/ledn-white.svg" alt="Logoipsum" class="testimonial-logo" />
<blockquote class="testimonial-quote">
“Fusce vel dui. In turpis. Maecenas nec odio et ante tincidunt tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia”
</blockquote>
<div class="testimonial-author">
<img src="/path/to/avatar1.jpg" alt="Jess Newman" class="testimonial-avatar" />
<div>
<p class="testimonial-name">Jess Newman</p>
<p class="testimonial-title">CTO at Ledn</p>
</div>
</div>
</div>
<div class="testimonial-card">
<img src="/assets/base/companies/mysten-labs-white.svg" alt="Logoipsum" class="testimonial-logo" />
<blockquote class="testimonial-quote">
“Fusce vel dui. In turpis. Maecenas nec odio et ante tincidunt tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia”
</blockquote>
<div class="testimonial-author">
<img src="/path/to/avatar1.jpg" alt="Jess Newman" class="testimonial-avatar" />
<div>
<p class="testimonial-name">Jess Newman</p>
<p class="testimonial-title">CTO at Mysten Labs</p>
</div>
</div>
</div>
</section>
<div class="testimonial-card">
<img src="/assets/base/companies/hashicorp-white.png" alt="Logoipsum" class="testimonial-logo" />
<blockquote class="testimonial-quote">
“Fusce vel dui. In turpis. Maecenas nec odio et ante tincidunt tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia”
</blockquote>
<div class="testimonial-author">
<img src="/path/to/avatar1.jpg" alt="Jess Newman" class="testimonial-avatar" />
<div>
<p class="testimonial-name">John Doe</p>
<p class="testimonial-title">CTO at Etherfi</p>
</div>
</div>
</div>
</section>

View File

@ -0,0 +1,32 @@
<div class="threatmodel-cta-columns">
<div class="flex-container-inner">
<h2 class="hero-header gradient-text">distrust<br>threat model</h2>
</div>
<div class="threatmodel-cta-right-column">
<div class="button-container" style="font-size: 1.5rem">
<a href="/threatmodel.html" class="mega button">Explore threat model</a>
</div>
</div>
</div>
<section class="threatmodel-cta" style="margin-top: 50px !important">
<div class="flex-container properties">
<div class="flex-container-inner">
<p><b>Tiered threat levels</b></p>
<p>From script kiddies to nation states, our model adapts to what youre protecting, and who you're protecting against.</p>
</div>
<div class="flex-container-inner">
<p><b>Cut attack surface</b></p>
<p>Rather than focusing on specific vulnerabilities, our model helps eliminate entire classes of attacks by design.</p>
</div>
<div class="flex-container-inner">
<p><b>Assume compromise</b></p>
<p>Design with the assumption that systems are already breached to build resilient defenses.</p>
</div>
</div>
<div class="threatmodel-cta-bottom">
<div class="button-container" style="font-size: clamp(1rem, 10vw, 1.3rem)">
<a href="/threatmodel.html" class="mega button">Explore threat model</a>
</div>
</div>
</section>

16
_includes/values.html Normal file
View File

@ -0,0 +1,16 @@
<section class="flex-container tall-section">
<div class="flex-container-inner">
<h2 class="gradient-text">our manifesto</h2>
<p class="hero-p">Every day, we apply these guiding principles to how we think, build, and secure systems.</p>
</div>
<div class="flex-container-inner">
<ol class="values-container">
<li>decentralize trust</li>
<li>open source everything</li>
<li>security beyond compliance</li>
<li>move thoughtfully &#38; improve things</li>
<li>impact over profit</li>
</ol>
</div>
</section>

View File

@ -0,0 +1,33 @@
<section class="why-choose-distrust" style="margin-bottom: 10rem">
<div class="flex-container">
<div class="flex-container-inner">
<h2 class="gradient-text">why choose Distrust</h2>
<p class="text-description-desktop">Benefit from our approach—a blend of proven methodologies and open source tooling we created, shaped by lessons from securing some of the world's highest-risk organizations.</p>
</div>
<div class="flex-container-inner">
</div>
</div>
<br>
<div class="flex-container properties">
<div class="flex-container-inner">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height=="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-layers-icon lucide-layers"><path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z"/><path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12"/><path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17"/></svg>
<p><b>Eliminate root causes</b></p>
<p>We don't just scan for bugs—we eliminate entire categories of bugs at the source using a first-principles methodology.</p>
</div>
<div class="flex-container-inner">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-big-icon lucide-circle-check-big"><path d="M21.801 10A10 10 0 1 1 17 3.335"/><path d="m9 11 3 3L22 4"/></svg>
<p><b>Verifiable</b></p>
<p>No guessing, no shortcuts. Every recommendation is backed by logic and rigor, not gut feel or just to check boxes.</p>
</div>
<div class="flex-container-inner">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-alert-icon lucide-shield-alert"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="M12 8v4"/><path d="M12 16h.01"/></svg>
<p><b>Proven track record</b></p>
<p>Our security engineers have secured some of the highest risk infrastructure in the world (BitGo, Turnkey, Unit 410).</p>
</div>
<div class="flex-container-inner">
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-handshake-icon lucide-handshake"><path d="m11 17 2 2a1 1 0 1 0 3-3"/><path d="m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4"/><path d="m21 3 1 11h-2"/><path d="M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3"/><path d="M3 4h8"/></svg>
<p><b>Embedded collaborations</b></p>
<p>We act as true partners— our goal is to make our clients succeed and not depend on us.</p>
</div>
</div>
</section>

39
_layouts/blog.html Normal file
View File

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container">
<main class="blog">
<div class="entry">
<div class="posts">
{% for post in site.posts %}
<div class="blog-details">
<div class="blog-details-date">{{ post.date | date: "%b %e, %Y" }}</div>
<div class="blog-details-read-time">{{ post.content | number_of_words | divided_by: 200 }} min read</div>
</div>
<a class="blog-link" href="{{ post.url | relative_url }}" title="{{ post.title }}">
<article>
<h1>{{ post.title }}</h1>
<p>{{ post.excerpt | strip_html | truncatewords: 25 }}</p>
</article>
<div class="arrow-link">
Read
<span class="arrow">&#x2192;</span>
</div>
</a>
{% endfor %}
</div>
</div>
<p>
{% for author in page.authors %}
— {{ author.name }}{% unless forloop.last %}, {% endunless %}
{% endfor %}
</p>
</main>
</div>
{%- include footer.html -%}
</body>
</html>

229
_layouts/company.html Normal file
View File

@ -0,0 +1,229 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container">
<main>
<section class="hero">
<div class="hero-content">
<h1 class="hero-title">Transparent, flexible pricing.</h1>
<p class="subtext">
Choose the control level and recovery guarantees that match your
risk profile.
</p>
<div class="hero-landing-cta">
<a href="#" class="btn">Get started →</a>
<a href="/contact.html" class="btn btn-secondary"
>Contact sales →</a
>
</div>
</div>
</section>
<section class="pricing-options section">
<div class="pricing-grid">
<!-- Card 1: Open source -->
<a class="pricing-card" href="#" aria-label="open-source pricing">
<h3 class="card-title">Open source</h3>
<p class="card-body">
Self-host with full control. Deploy, run, and audit every line
of code. Free forever with optional paid support.
</p>
<!-- corner arrow -->
<span class="card-corner" aria-hidden="true">
<!-- tiny NE arrow -->
<svg
viewBox="0 0 20 20"
class="corner-icon"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6 6h8v8"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
<path
d="M6 14L14 6"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
</svg>
</span>
</a>
<!-- Card 2: Managed by Caution -->
<a
class="pricing-card"
href="#"
aria-label="managed-by-caution pricing"
>
<h3 class="card-title">Managed by Caution</h3>
<p class="card-body">
Choose a hosted recovery service. Pick from paid plans with
verifiable guarantees.
</p>
<span class="card-corner" aria-hidden="true">
<svg
viewBox="0 0 20 20"
class="corner-icon"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6 6h8v8"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
<path
d="M6 14L14 6"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
</svg>
</span>
</a>
</div>
</section>
<section class="open-source">
<div class="open-source-container">
<img class="open-source-img" src="/assets/base/bubble.svg" alt="" />
<div class="open-source-content">
<span class="tag-pill">Open source</span>
<h2 class="open-source-title">Selfhost<br />for free</h2>
<p class="subtext oss">
Open source at the core. Audit, customize, and selfhost Caution
Disaster Recovery — transparent, free, and fully under your
control.
</p>
<div class="hero-landing-cta">
<a href="#" class="btn">Read the docs →</a>
</div>
</div>
</div>
</section>
<!-- PAID PLANS -->
<section class="plans">
<header class="plans__head">
<span class="tag-pill">Paid plans</span>
<h2 class="plans__title">Managed by Caution</h2>
<p class="subtext pricing-plans">
Prefer not to selfhost? Choose one of our managed recovery plans.
</p>
</header>
<div class="plans__grid">
<!-- Ondemand -->
<article class="plan-card">
<h3 class="plan-card__name">Ondemand</h3>
<p class="plan-card__desc">
Store your own data and pay only when you need to recover. No
recurring fees.
</p>
<div class="price">
<span class="price__currency">$</span>
<span class="price__amount">0</span>
<span class="price__unit">/year</span>
</div>
<p class="plan-card__note">Pay per recovery, no recurring fees</p>
<a href="/get-started" class="btn">Get started →</a>
<div class="plan-card__includes">
<h4>Includes:</h4>
<ul class="list-check-included">
<li>Selfstore your encrypted backups</li>
<li>$100K per each onschedule recovery</li>
<li>Email support</li>
</ul>
</div>
</article>
<!-- Enterprise -->
<article class="plan-card plan-card--primary">
<h3 class="plan-card__name">Enterprise</h3>
<p class="plan-card__desc">
Enterprise-grade data storage and recovery with premium support.
</p>
<div class="price">
<span class="price__currency">$</span>
<span class="price__amount">15K</span>
<span class="price__unit">/year</span>
</div>
<p class="plan-card__note">Billed annually</p>
<a href="/get-started" class="btn btn-primary">Get started →</a>
<div class="plan-card__includes">
<h4>Includes:</h4>
<ul class="list-check-included">
<li>10TB of data storage, then $X/TB/year</li>
<li>2 scheduled recoveries per year</li>
<li>$10K per each extra onschedule recovery</li>
<li>Guided onboarding + premium support</li>
</ul>
</div>
</article>
<!-- Dedicated -->
<article class="plan-card">
<h3 class="plan-card__name">Dedicated</h3>
<p class="plan-card__desc">
Private infrastructure with full isolation and custom
governance.
</p>
<div class="price">
<span class="price__amount">Custom</span>
</div>
<p class="plan-card__note">Bespoke implementation, from $300K</p>
<a href="/contact" class="btn">Contact sales →</a>
<div class="plan-card__includes">
<h4>Includes:</h4>
<ul class="list-check-included">
<li>Fully isolated environment</li>
<li>Private recovery infrastructure</li>
<li>Custom governance controls</li>
<li>Dedicated support team</li>
</ul>
</div>
</article>
</div>
</section>
<!-- Pricing: Included with every plan -->
<section class="included">
<h3 class="included__title">Included with every plan:</h3>
<ul class="included__grid list-check">
<li>Open source transparency</li>
<li>Verifiable, quorumbased recovery</li>
<li>Fullsource bootstrapped binaries</li>
<li>Airgapped recovery ceremonies</li>
<li>Policybased recovery engine</li>
<li>Cryptographic audit logs</li>
<li>Guided policy creation</li>
<li>Built-in threat modeling logic</li>
<li>Ongoing community support</li>
</ul>
</section>
</main>
</div>
{%- include footer.html -%}
</body>
</html>

View File

@ -0,0 +1,231 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container">
<main>
<section class="hero">
<div class="hero-content">
<h1 class="hero-title">Transparent, flexible pricing.</h1>
<p class="subtext">
Choose the control level and recovery guarantees that match your
risk profile.
</p>
<div class="hero-landing-cta">
<a href="#" class="btn">Get started →</a>
<a href="/contact.html" class="btn btn-secondary"
>Contact sales →</a
>
</div>
</div>
</section>
<section class="pricing-options section">
<div class="pricing-grid">
<!-- Card 1: Open source -->
<a class="pricing-card" href="#" aria-label="open-source pricing">
<h3 class="card-title">Open source</h3>
<p class="card-body">
Self-host with full control. Deploy, run, and audit every line
of code. Free forever with optional paid support.
</p>
<!-- corner arrow -->
<span class="card-corner" aria-hidden="true">
<!-- tiny NE arrow -->
<svg
viewBox="0 0 20 20"
class="corner-icon"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6 6h8v8"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
<path
d="M6 14L14 6"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
</svg>
</span>
</a>
<!-- Card 2: Managed by Caution -->
<a
class="pricing-card"
href="#"
aria-label="managed-by-caution pricing"
>
<h3 class="card-title">Managed by Caution</h3>
<p class="card-body">
Choose a hosted recovery service. Pick from paid plans with
verifiable guarantees.
</p>
<span class="card-corner" aria-hidden="true">
<svg
viewBox="0 0 20 20"
class="corner-icon"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6 6h8v8"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
<path
d="M6 14L14 6"
fill="none"
stroke="currentColor"
stroke-width="1.75"
stroke-linecap="round"
/>
</svg>
</span>
</a>
</div>
</section>
<section class="open-source">
<div class="open-source-container">
<img class="open-source-img" src="/assets/base/bubble.svg" alt="" />
<div class="open-source-content">
<span class="tag-pill">Open source</span>
<h2 class="open-source-title">Selfhost<br />for free</h2>
<p class="subtext oss">
Open source at the core. Audit, customize, and selfhost Caution
Disaster Recovery — transparent, free, and fully under your
control.
</p>
<div class="hero-landing-cta">
<a href="#" class="btn">Read the docs →</a>
</div>
</div>
</div>
</section>
<!-- PAID PLANS -->
<section class="plans">
<header class="plans__head">
<span class="tag-pill">Paid plans</span>
<h2 class="plans__title">Managed by Caution</h2>
<p class="subtext pricing-plans">
Prefer not to selfhost? Choose one of our managed recovery plans.
</p>
</header>
<div class="plans__grid">
<!-- Ondemand -->
<article class="plan-card">
<h3 class="plan-card__name">Ondemand</h3>
<p class="plan-card__desc">
Store your own data and pay only when you need to recover. No
recurring fees.
</p>
<div class="plan-card__price">
<div class="price" aria-label="$0 per year">
<span class="price-amount">0</span>
<span class="price-currency" aria-hidden="true">$</span>
<span class="price-per" aria-hidden="true">/year</span>
</div>
</div>
<a href="/get-started" class="btn">Get started →</a>
<div class="plan-card__includes">
<h4>Includes:</h4>
<ul class="list-check-included">
<li>Selfstore your encrypted backups</li>
<li>$100K per each onschedule recovery</li>
<li>Email support</li>
</ul>
</div>
</article>
<!-- Enterprise -->
<article class="plan-card plan-card--primary">
<h3 class="plan-card__name">Enterprise</h3>
<p class="plan-card__desc">
Enterprise-grade data storage and recovery with premium support.
</p>
<div class="plan-card__price">
<div class="price" aria-label="$15K per year">
<span class="price-amount">15K</span>
<span class="price-currency" aria-hidden="true">$</span>
<span class="price-per" aria-hidden="true">/year</span>
</div>
</div>
<a href="/get-started" class="btn btn-primary">Get started →</a>
<div class="plan-card__includes">
<h4>Includes:</h4>
<ul class="list-check-included">
<li>10TB of data storage, then $X/TB/year</li>
<li>2 scheduled recoveries per year</li>
<li>$10K per each extra onschedule recovery</li>
<li>Guided onboarding + premium support</li>
</ul>
</div>
</article>
<!-- Dedicated -->
<article class="plan-card">
<h3 class="plan-card__name">Dedicated</h3>
<p class="plan-card__desc">
Private infrastructure with full isolation and custom
governance.
</p>
<div class="plan-card__price">
<div class="price price--word" aria-hidden="true">Custom</div>
<span class="sr-only">Custom pricing — contact sales</span>
</div>
<a href="/contact" class="btn">Contact sales →</a>
<div class="plan-card__includes">
<h4>Includes:</h4>
<ul class="list-check-included">
<li>Fully isolated environment</li>
<li>Private recovery infrastructure</li>
<li>Custom governance controls</li>
<li>Dedicated support team</li>
</ul>
</div>
</article>
</div>
</section>
<!-- Pricing: Included with every plan -->
<section class="included">
<h3 class="included__title">Included with every plan:</h3>
<ul class="included__grid list-check">
<li>Open source transparency</li>
<li>Verifiable, quorumbased recovery</li>
<li>Fullsource bootstrapped binaries</li>
<li>Airgapped recovery ceremonies</li>
<li>Policybased recovery engine</li>
<li>Cryptographic audit logs</li>
<li>Guided policy creation</li>
<li>Built-in threat modeling logic</li>
<li>Ongoing community support</li>
</ul>
</section>
</main>
</div>
{%- include footer.html -%}
</body>
</html>

0
_layouts/faq.html Normal file
View File

7
_layouts/home.html Normal file
View File

@ -0,0 +1,7 @@
---
layout: default
---
{{ content }}
{% assign contentwonl = content | strip_newlines %} {% unless contentwonl == "" %} <br /> {% endunless %}
{%- assign date_format = "%Y-%m-%d" -%}

View File

@ -1,118 +1,22 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}"> <html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%} {%- include head.html -%}
<body> <body>
<section class="logo-section align-logo"> {%- include header.html -%}
<div class="logo fade-in">
<a href="/">
<img
src="/assets/base/c-logos/logo-bw.svg"
alt="Caution logo"
style="opacity: 0.85"
/>
</a>
</div>
</section>
<section class="align"> <main>
<div class="heading fade-in"> <section class="hero landing">
<p class="pill">COMING SOON</p> <div class="hero-content landing container">
<h1 class="headline">Verifiable compute</h1> <h1 class="hero-title landing">Verifiable Compute</h1>
<p class="subtext delay-1"> <p class="subtext">
Caution is the next-gen compute platform verifiable, portable, and Caution is the next-gen compute platform verifiable, portable, and fast to deploy. Built by the security engineers behind <a href="https://distrust.co" target="_blank" rel="noopener noreferrer">Distrust</a>.
fast to deploy. Built by the security engineers behind </p>
<a <div class="hero-cta">
rel="”noopener" <a href="/blog.html" class="btn">Blog →</a>
noreferrer” </div>
target="_blank"
href="https://distrust.co/"
class="distrust-link-subtext"
>Distrust</a
>
</p>
</div>
</section>
<div class="info-block center fade-in delay-2">
<span class="spaced-text">HELP</span>
<span class="spaced-text">US</span>
<span class="spaced-text">SHAPE</span>
<span class="spaced-text">THE</span>
<span class="spaced-text">FUTURE</span><br />
<span class="spaced-text">JOIN</span>
<span class="spaced-text">THE</span>
<span class="spaced-text">DESIGN</span>
<span class="spaced-text">PARTNER</span>
<span class="spaced-text">PROGRAM</span>
</div>
<div class="waitlist-form">
<form
id="contact-form"
method="post"
class="email-form"
action="/submit-email"
>
<div class="input-wrapper">
<input
type="email"
name="email"
placeholder="Enter your email"
id="email"
class="email-input"
required
/>
<input
type="hidden"
id="name"
name="name"
class="form-input"
value="caution.co"
/>
<input
type="hidden"
id="company-name"
value="caution.co"
name="company-name"
class="form-input"
/>
<input
id="service"
type="hidden"
name="service"
class="form-select"
value="caution.co"
/>
<input
type="hidden"
id="other-source"
name="other-source"
class="form-input"
placeholder="Please specify"
/>
<input
type="hidden"
id="other-source"
name="help"
class="form-input"
placeholder="Please specify"
/>
<button type="submit" class="submit-btn" aria-label="Submit email">
<span class="arrow"></span>
</button>
</div> </div>
</form> </section>
</div> </main>
{%- include footer.html -%}
<div class="footer fade-in delay-3">
<p>No spam we'll only email you about Caution.</p>
</div>
<div class="footer-mobile">
<p>
Get in touch to learn about joining our Design Partner program. No spam
we'll only email you about Caution.
</p>
</div>
</body> </body>
</html> </html>

31
_layouts/post.html Normal file
View File

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container">
<main class="blog">
<article class="post">
<div class="blog-details">
<div class="blog-details-date">{{ page.date | date: "%b %e, %Y" }}</div>
<div class="blog-details-read-time">{{ page.content | number_of_words | divided_by: 200 }} min read</div>
</div>
<h1 style="margin-bottom: 40px">{{page.title}}</h1>
<div class="entry">
{{ content }}
</div>
<hr>
{% include blog-about-distrust.html %}
<p>
{% for author in page.authors %}
— {{ author.name }}{% unless forloop.last %}, {% endunless %}
{% endfor %}
</p>
</article>
</main>
</div>
{%- include footer.html -%}
</body>
</html>

1168
_layouts/pricing.html Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
<section class="hero">
<div class="hero-content">
<h1 class="hero-title">Transparent, flexible pricing</h1>
<p class="hero-subtext">
Choose the control level and recovery guarantees that match your risk
pofile.
</p>
<div class="hero-landing-cta">
<a href="#" class="btn btn-primary">Get started →</a>
<a href="/contact.html" class="btn btn-secondary">Contact sales →</a>
</div>
</div>
</section>

105
_layouts/services.html Normal file
View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container">
<main>
<div class="video-background-container" style="top: 350px">
<video autoplay muted loop playsinline class="video-background">
<source src="assets/videos/swirly-lines.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="assets/videos/swirly-lines.webm" type='video/webm; codecs="vp8, vorbis"' />
</video>
<!--<div class="gradient-overlay"></div> -->
</div>
<section class="flex-container capsule-header video-content">
<div class="flex-container-inner">
<div class="text-well center">
<div class="text-well" style="text-align: center; margin: auto">
<div class="capsule">services</div>
</div>
<br>
<h1 class="hero-title gradient-text hero-header">
solve your hardest security challenges
</h1>
<br>
<p class="hero-p center">Built by engineers behind BitGo, Unit410, and Turnkey, we apply hard-earned lessons from securing critical infrastructure to build transparent, resilient, and universally applicable security solutions.</p>
<div class="button-container">
<a href="/contact.html" class="mega button">Work with us</a>
</div>
</div>
</div>
</section>
<section class="mid-tall-section">
<div style="max-width: 800px; margin: auto; text-align: center; margin-bottom: 60px;">
<h2 class="gradient-text">our services</h2>
<p class="text-description-desktop">Distrust offers high-impact security consulting and open source tooling for companies that can't afford to fail.
</div>
<div class="flex-container">
<div class="flex-container-inner">
<div class="text-well">
<h3>retainer / fractional CISO</h3>
<p style="max-width: 555px">Get ongoing security leadership tailored precisely to your organization's needs. We embed with your team to provide strategic security direction and eliminate blind trust from your infrastructure—so you're prepared before threats emerge.</p>
<ul>
<li>Security program development</li>
<li>Incident response</li>
<li>Due diligence</li>
<li>Vetting security talent</li>
</ul>
<br>
<div class="button-container">
<a href="/contact.html" class="mega button">Work with us</a>
</div>
</div>
</div>
<div class="flex-container-inner">
<div class="text-well">
<h3>security assessments</h3>
<p style="max-width: 555px">Our assessments go beyond vulnerability scans—we eliminate risks at their source. Using first-principles threat modelling, we identify single points of failure and deliver actionable recommendations to secure your systems against sophisticated threats.</p>
<ul>
<li>Secure architecture review</li>
<li>Security audits</li>
<li>Penetration testing</li>
<li>Secure code review</li>
</ul>
<br>
<div class="button-container">
<a href="/contact.html" class="mega button">Book an assessment</a>
</div>
</div>
</div>
</div>
</section>
{% include companies-carousel.html %}
{% include why-choose-distrust.html %}
<div class="video-background-container-philosophy">
<video autoplay muted loop playsinline class="video-background-philosophy">
<source src="assets/videos/swirly-lines.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="assets/videos/swirly-lines.webm" type='video/webm; codecs="vp8, vorbis"' />
</video>
<div class="gradient-overlay-philosophy"></div>
</div>
<section class="flex-container video-content-philosophy">
<div class="flex-container-inner"></div>
<div class="flex-container-inner">
<h2 class="gradient-text why-distrust">our philosophy</h2>
<p>
Security shouldn't be based on blind trust, it should be based on <b>dis</b>trust, and verifiability. Most organizations treat cybersecurity like people once treated hygiene—poorly.
</p>
<p>At Distrust, we've identified fundamental methods to eliminate entire categories of risk at their source. Similarly to how handwashing revolutionized public health by preventing unseen threats like bacteria, our first-principles security methodology brings new levels of security to our clients by eliminating single points of failure, and providing verifiable, resilient protection for critical systems.
</p>
</div>
</section>
{%- include primary-cta.html -%}
</main>
</div>
{%- include footer.html -%}
</body>
</html>

185
_layouts/software.html Normal file
View File

@ -0,0 +1,185 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container">
<main>
<div class="video-background-container">
<video autoplay muted loop playsinline class="video-background">
<source src="assets/videos/turq-blocks.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="assets/videos/turq-blocks.webm" type='video/webm; codecs="vp8, vorbis"' />
</video>
<div class="gradient-overlay"></div>
</div>
<section class="flex-container capsule-header video-content" style="margin-top: 80px">
<div class="flex-container-inner" style="padding-top: 0px">
<div class="text-well center">
<div class="capsule-teal">software</div>
<br>
<h1 style="max-width: 1000px; margin: auto">open source tools for verifiable security</h1>
<br>
<p class="hero-p center">Most systems still rely on single individuals or computers, unverifiable software, and opaque processes. Were redesigning security for transparency from the ground up.</p>
<div class="button-container center">
<a href="#ready-to-use" class="mega-teal button center">View software</a>
</div>
</div>
</div>
</section>
{%- include live-tools.html -%}
<div class="video-background-container-building-blocks">
<video autoplay muted loop playsinline class="video-background-building-blocks">
<source src="assets/videos/building-cubes.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="assets/videos/building-cubes.webm" type='video/webm; codecs="vp8, vorbis"' />
</video>
<div class="gradient-overlay-building-blocks"></div>
</div>
<section class="flex-container video-content-building-blocks">
<div class="flex-container-inner">
<h2 class="gradient-text why-distrust">building blocks <br> for provable security</h2>
<p class="hero-p">Modern software systems still rely on trust—maintainers, IT admins, third-party providers. But what happens when they are compromised? How do you verify that your systems haven't been tampered with?</p>
<p class="hero-p">Weve identified critical gaps and built tools to remove single points of failure across all levels of the software lifecycle—from toolchains and dependencies to how code is built, signed, verified and deployed.</p>
<p class="hero-p">By combining multi-party trust, remote attestation, and bit-for-bit reproducibility, we are eliminating trust assumptions, ensuring security isn't just a claim—it's provable. And as everything we do, all our software is open source.</p>
<a href="#roadmap" class="arrow-link">
See what we're building
<span class="arrow">&#x2192;</span>
</a>
</div>
<div class="flex-container-inner"></div>
</section>
<div class="roadmap" id="roadmap">
<h2 class="center gradient-text">our roadmap</h2>
<p style="margin-top: 20px" class="hero-p center">We're actively building some tools—and raising support to build others. Here's what's in-progress and what's coming next.</p>
</div>
<div id="kanban" class="flex-container">
<div class="flex-container-inner flex-container kanban-column column-backlog">
<h4 style="color: var(--light-grey)">backlog (fundraising)</h4>
<a target="_blank" rel=”noopener noreferrer class="flex-container-inner mini-card" href="https://git.distrust.co/public/bootproof">
<p><b>Bootproof</b></p>
<p>Prove what software booted on a system via remote attestation technologies.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" target="_blank" rel=”noopener noreferrer href="https://git.distrust.co/public/sourceid">
<p><b>SourceId</b></p>
<p>Verify source code inegrity with hash-based fingerprints.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" href="https://git.distrust.co/public/sigrev" class="arrow-link">
<p><b>SigRev</b></p>
<p>Crowdsource and discover signed manual code reviews.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
</div>
<div class="flex-container-inner flex-container kanban-column column-progress">
<h4 style="color: var(--light-purple)">in-progress</h4>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer target="_blank" href="https://qvs.distrust.co/">
<p><b>Trove</b></p>
<p>Documentation for managing secrets that you can't afford to lose.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer target="_blank" href="https://codeberg.org/stagex/repros">
<p><b>ReprOS</b></p>
<p>Create ephemeral build environments to eliminate persistent risks.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer href="https://git.distrust.co/public/enclaveos">
<p><b>EnclaveOS</b></p>
<p>Immutable operating system for powering secure enclaves.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
</div>
<div class="flex-container-inner flex-container kanban-column column-active">
<h4 style="color: var(--light-teal)">active</h4>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer target="_blank" href="https://codeberg.org/stagex/stagex">
<p><b>StageX</b></p>
<p>Hermetic, deterministic, reproducible, multi-signed OCI-based build toolchain.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer target="_blank" href="https://git.distrust.co/public/airgap">
<p><b>AirgapOS</b></p>
<p>Minimal, immutable, offline-first swiss-army knife for secret management.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer target="_blank" href="https://git.distrust.co/public/keyfork">
<p><b>Keyfork</b></p>
<p>Derive keys from a single entropy source to simplify their management.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
<a class="flex-container-inner mini-card" rel=”noopener noreferrer target="_blank" href="https://git.distrust.co/public/icepick">
<p><b>Icepick</b></p>
<p>Framework for offline cryptographic signing operations.</p>
<div class="arrow-link">
View git repository
<span class="arrow">&#x2192;</span>
</div>
</a>
</div>
</div>
{%- include divider.html -%}
{% include powered-by.html %}
{%- include divider.html -%}
<section class="flex-container">
<div class="flex-container-inner"></div>
<div class="flex-container-inner">
<h4 class="quote" style="filter: brightness(80%)">❝We want to use our knowledge to improve security, privacy, and freedom for as many people as possible. We believe that verifiable foundations for building technology are essential to human wellbeing and solving the coordination problem.❝ — Distrust team</h4>
</div>
</section>
{%- include divider.html -%}
<div class="software-cta">
<h4 class="gradient-text center" style="line-height: 50px; max-width: 650px; margin: auto;">fund open source development</h4>
<p class="hero-p center text-description-desktop" style="max-width: 650px; margin-top: 10px">Your support funds the tools. Your forks spread the mission. Help us build transparent, verifiable security tools — together.</p>
<p class="hero-p center text-description-mobile" style="max-width: 650px; margin-top: 10px">Your support funds the tools. Help us build transparent, verifiable security tools — together.</p>
<div class="button-container center">
<a href="/contact.html" class="mega-teal button center">Get in touch</a>
</div>
</div>
</main>
</div>
{%- include footer.html -%}
</body>
</html>

View File

@ -1,32 +1,56 @@
</html>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}"> <html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%} {%- include head.html -%}
<!-- <div class="video-background-container">
<video autoplay muted loop playsinline class="video-background">
<source src="assets/videos/caution-waitlist.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
<source src="assets/videos/caution-waitlist.webm" type='video/webm; codecs="vp8, vorbis"' />
</video>
</div> -->
<body> <body>
<section class="logo-section align-logo"> <section class="logo-section center">
<div class="logo"> <div class="logo">
<a href="/"> <a href="/">
<img src="/assets/base/c-logos/logo-bw.svg" alt="Caution logo" style="opacity: 0.85"> <img src="/assets/base/caution-logo/caution-logo-text-black.svg" alt="Caution logo" style="height: clamp(1.5rem, 10vw, 2rem); opacity: 0.8">
</a> </a>
</div> </div>
</section>
<section class="align">
<div class="heading">
<p class="pill">THANK YOU</p>
<h1 class="headline">You're in!</h1>
<p class="subtext-thnx">
Thanks for joining our Design Partner Program list. We will reach out soon with next steps as we expand the program.
</p>
</div>
<div class="heading center">
<h1>You're in</h1>
<p class="subtext-thanks center">
Thanks for joining. Well email you when early access opens up.
</p>
</div>
</section> </section>
<div class="info-block-thanks fade-in delay-4">
<span class="spaced-text">SOMETHING</span>
<span class="spaced-text">EXCITING</span>
<span class="spaced-text">IS</span>
<span class="spaced-text">COMING</span>
<span class="spaced-text">AND</span>
<span class="spaced-text">YOU'LL</span>
<span class="spaced-text">BE</span>
<span class="spaced-text">THE</span>
<span class="spaced-text">FIRST</span>
<span class="spaced-text">TO</span>
<span class="spaced-text">KNOW</span>
</div>
<div class="footer">
<p>Built by the team behind <a rel=”noopener noreferrer target="_blank" href="https://distrust.co/" class="distrust-link-footer">Distrust</a>, formerly at BitGo, Unit410, and Turnkey.</p>
</div>
<div class="footer-mobile">
<p>The first open source platform for encrypted data recovery and escrow. By the team behind <a rel=”noopener noreferrer target="_blank" href="https://distrust.co/" class="distrust-link-footer">Distrust</a>, formerly at BitGo, Unit410, and Turnkey.</p>
</div>
</body> </body>
</html> </html>

104
_layouts/threatmodel.html Normal file
View File

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html lang="{{ page.lang | default: site.lang | default: en }}">
{%- include head.html -%}
<body>
{%- include header.html -%}
<div class="container blog">
<main>
<section class="flex-container threat model" style="margin-top: 80px; margin-bottom: 10px !important;">
<div class="flex-container-inner">
<h1>Distrust threat model</h1>
<p>Distrust's threat model aids organizations in methodically eliminating surface area for attack, making entire classes of attacks impossible.
<br>
<br>Unlike conventional frameworks (e.g., STRIDE, PASTA) that focus on identifying and preventing specific risks, our threat model assumes that at some level <b>systems are already compromised</b>. This pessimistic set of assumptions allows organizations to build systems that can remain secure even when up against their worst case adversary.</p>
</div>
</section>
<section class="flex-container threat model" style="margin-top: 50px; margin-bottom: 10px !important">
<div class="flex-container-inner">
<h2>Levels</h2>
<p>While the end-goal is to adequately address the risks which stem from the <a href="#assumptions">assumptions</a>, organizations are at varying levels of maturity and often need a path towards mitigating threats in a phased approach. To this end, the threat model defines 4 levels, each corresponding to increasingly more sophisticated threat actors as the levels increase. Each threat actor is assumed to have access to specific methods of attack limited by factors such as cost to execute, sophistication, time required etc.</p>
<p>It is a reasonable approach to apply different threat model levels to different parts of systems relative to the amount of value they protect.</p>
</div>
</section>
<section class="flex-container threat model" style="margin-top: 50px; margin-bottom: 10px !important">
<div class="flex-container-inner">
<h3 id="level-1">Level 1</h3>
<p>Defense against remote adversaries with limited resources.</p>
<h5>Adversary</h5>
<p>An unskilled or lightly skilled individual leveraging widely available tools and publicly known vulnerabilities. Their attacks are largely opportunistic and automated. We do, however, assume they can be very patient and willing to work across a long time horizon.</p>
<h5>Capabilities</h5>
<ul>
<li>Scanning for and exploiting known vulnerabilities with public exploits.</li>
<li>Phishing attempts using off-the-shelf kits.</li>
<li>Basic malware deployment (e.g., ransomware-as-a-service).</li>
<li>Making malicious changes to open source libraries</li>
<li>Buying expired domain names</li>
</ul>
</div>
</section>
<section class="flex-container threat model" style="margin-top: 50px; margin-bottom: 10px !important">
<div class="flex-container-inner">
<h3 id="level-2">Level 2</h3>
<p>Defense against insiders.</p>
<h5>Adversary</h5>
<p>We assume the adversary is an individual or system that already has some level of privilege or trust inside the organization. This could be anything from a disgruntled employee to a compromised work station or server.</p>
<h5>Capabilities</h5>
<ul>
<li>Can execute any code on at least one work station.</li>
<li>Can exfiltrate any secrets exposed to system memory.</li>
<li>Can use reputation to fast track change deployment.</li>
<li>Administrative privileges (email, MDM, AWS etc.)</li>
<li>Unencrypted traffic interception.</li>
<li>Injection of malicious code into development pipelines.</li>
<li>Physical access to all devices in the office.</li>
<li>Ability to impersonate unsigned actions of other employees</li>
</ul>
</div>
</section>
<section class="flex-container threat model" style="margin-top: 50px; margin-bottom: 10px !important">
<div class="flex-container-inner">
<h3 id="level-3">Level 3</h3>
<p>Defense against well-funded organizations.</p>
<h5>Adversary</h5>
<p>An organized, well-funded group possessing diverse expertise across multiple domains (malware, supply chain, network exploitation, physical access, insider recruitment). Capable of sustained campaigns combining internal and external compromise.</p>
<h5>Capabilities</h5>
<ul>
<li>Deployment of agents willing to commit physical violence.</li>
<li>Compromised third party insiders (GitHub, AWS etc.)</li>
<li>Ability to do extensive reconnaissance on all personnel.</li>
<li>Access to large bot-nets or server farms.</li>
<li>Ability to purchase 0-day exploits for any internet connected device.</li>
<li>Coordinated, multi-stage attacks across digital and physical realms.</li>
</ul>
</div>
</section>
<section class="flex-container threat model" style="margin-top: 50px; margin-bottom: 10px !important">
<div class="flex-container-inner">
<h3 id="level-4">Level 4</h3>
<p>Defense against nation state actors.
<h5>Adversary</h5>
<p>A state-backed or similarly resourced entity capable of executing the most advanced forms of cyber and physical attacks, including full-spectrum operations across the supply chain, hardware, firmware, and human factors..</p>
<h5>Capabilities</h5>
<ul>
<li>Observe all displays and input devices in public areas.</li>
<li>Ability to tamper with a major hardware/firmware supply chain.</li>
<li>Access to any network-connected system.</li>
<li>Advanced side-channel attacks (RF, power, magnetic etc.).</li>
<li>Data extraction from insufficiently wiped systems.</li>
<li>Sophisticated deception and counter-forensics to evade detection.</li>
<li>Maximal access to computational resources.</li>
</ul>
</div>
</section>
</main>
</div>
{%- include footer.html -%}
</body>
</html>

View File

@ -0,0 +1,68 @@
---
layout: post
title: Introducing Generalized Verifiable Compute
date: 2025-09-29
---
What if the software running your systems isn't what you think? And if you had to prove what software is on a system, how would you do it?
Most of todays technologies are black boxes. From firmware and operating systems to compilers and cloud platforms, opacity is the default. Users can send requests to an API or server, but they cannot verify what software, or whose software, they are really interacting with. The issue impacts organizations internally as well, where system managers can't verify whether the code they think they deployed is actually what's running on the server. This is not just a usability issue, it is a systemic design failure and the result is software stacks riddled with blind spots, where compromise can occur at any stage and remain invisible.
After many years of working with high risk clients and analayzing different technologies, our team has concluded the pieces needed for verifiable systems already exist, but they are underutilized because they are misunderstood and difficult to use, a problem we needed to solve.
Reproducible builds, secure enclaves, and cryptographic remote attestation each solve parts of the problem. Taken together, they form the building blocks for **verifiable compute**, which allows software to be verified. Our work is focused on creating the next generation of cloud hosting platform centered around verifiability and elimination of single points of failure present in current market solutions.
Like “zero trust” before it, the term verifiable compute is already being hijacked by marketing teams. Companies throw it around to describe partial solutions, usually just proving a binary hash hasnt changed. We take a stricter view: verifiable compute means the entire supply chain can be checked. Anything less is **not** verifiable compute.
## The Real-World Risk of Unverifiability
The risks of unverifiable systems are not theoretical; theyve already caused some of the most damaging security incidents of the past decade.
SolarWinds (2020) showed how a compromised software supply chain can cascade globally. Attackers injected malicious code into SolarWinds Orion updates, which were then shipped to thousands of companies and U.S. government agencies. Because customers had no way to verify what software they were actually running, the backdoor spread silently through trusted update channels.
This is one of the many breaches which demonstrate that without verifiability across the entire stack, organizations have no reliable way to prove the integrity of the systems they depend on.
## The Building Blocks of True Verifiability
Our team established that three key technologies are essential for making software verifiable end-to-end:
- Reproducible builds
Reproducible builds force software to be bit-for-bit identical when built from the same soruce code, and eliminate certain categories of supply chain attacks and would have prevented incidents like SolarWinds. It allows for integrity verification, without which software is opaque and difficult to verify.
- Secure enclaves
Hardware-isolated execution (e.g., IOMMU-backed enclaves) prevents external processes — even privileged ones — from tampering with sensitive workloads. Enclaves give us strong isolation, but isolation alone doesnt prove what is running.
- Remote attestation
Remote hardware attestation (TPM2, Intel TDX, AMD SEV, AWS Nitro, and others) measures the state of a machine and provides cryptographic proof of what software is running. Attestation anchors trust at the hardware layer, but on its own it doesnt guarantee the softwares provenance or build integrity.
Taken together, these three technologies form the foundation of true verifiable compute: the ability to verify the integrity of software from the toolchain its built with to the hardware it runs on.
## Why Existing Platforms Fall Short
Current offerings from the major cloud providers (AWS, Azure, GCP, etc.) are demanding in terms of both expertise and time to set up. They also lock users into a single vendors ecosystem and force reliance and trust in one type of hardware or firmware. For example, AWS requires implicit trust in its proprietary Nitro Card, a black-box technology that customers cannot independently verify.
Other companies, such as Tinfoil, Turnkey, and Privy, offer wrappers around enclave and attestation technologies, but their solutions are limited to narrow use cases like digital asset wallets or running LLMs. Even then, what they provide is only surface-level verification: proving that a binarys hash hasnt changed. That does not give transparency into the entirety of what is running on the server.
In short, there are currently no solutions offering full transparency and elimination of single points of failure in the market.
## “Cautiously” Building the Next Generation of Verifiable Compute
Our team has chosen a no-compromise approach to solving this problem by building a cloud hosting platform, **Caution**, that:
- Is full-source bootstrapped and reproducible.
- Is portable across environments across major cloud platforms or bare metal.
- Uses multiple hardware attestations.
- Uses quorum authentication as a core primitive.
- Is fully open source.
Caution is the next generation cloud hosting platform launching in 2026. We believe this marks the beginning of a new era of infrastructure: verifiable, open, and resilient by default.
If youre interested in collaborating, contributing, or investing, wed love to talk. Email us at info@caution.co.

View File

@ -3,6 +3,17 @@
*/ */
:root { :root {
--base-color: #120F1A;
--header-color: #120F1A;
--border: solid 2px #292929;
--selection-background: rgba(219, 219, 219, 0.99);
--selection-text: #000;
--background-color: #f1f2f9;
--text-color: var(--base-color);
--placeholder-color: rgba(0, 0, 0, 0.5);
--link-color: var(--base-color);
--raisin-black: #120F1A;
/* yoinkt from Material Design 2014, Deep Purple A200 */
--purple: #7C4DFF; --purple: #7C4DFF;
--light-purple: #A998ED; --light-purple: #A998ED;
--mid-purple: #473C68; --mid-purple: #473C68;

View File

@ -3,6 +3,15 @@
*/ */
:root { :root {
--base-color: rgba(0, 0, 0, 0.87);
--header-color: rgba(0, 0, 0, 0);
--border: dashed 1px rgba(0, 0, 0, 1);
--selection-background: rgba(0, 0, 0, 0.99);
--selection-text: #FFF;
--background-color: #FFF;
--text-color: var(--base-color);
--placeholder-color: var(--base-color);
--link-color: var(--base-color);
--dark-purple: #241846; --dark-purple: #241846;
--light-purple: #7952EB; --light-purple: #7952EB;
--code-color-1: #aaaaaa; --code-color-1: #aaaaaa;

File diff suppressed because it is too large Load Diff

1
assets/.prettierignore Normal file
View File

@ -0,0 +1 @@
*.js

View File

@ -0,0 +1,3 @@
<svg width="27" height="28" viewBox="0 0 27 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.5 2.75C11.275 2.75 9.09989 3.4098 7.24984 4.64597C5.39979 5.88213 3.95785 7.63914 3.10636 9.69481C2.25487 11.7505 2.03209 14.0125 2.46617 16.1948C2.90025 18.3771 3.97171 20.3816 5.54505 21.955C7.11839 23.5283 9.12295 24.5998 11.3052 25.0338C13.4875 25.4679 15.7495 25.2451 17.8052 24.3936C19.8609 23.5422 21.6179 22.1002 22.854 20.2502C24.0902 18.4001 24.75 16.225 24.75 14C24.75 12.5226 24.459 11.0597 23.8937 9.69481C23.3283 8.3299 22.4996 7.08971 21.455 6.04505C20.4103 5.00039 19.1701 4.17172 17.8052 3.60636C16.4403 3.04099 14.9774 2.75 13.5 2.75ZM18.3375 11.3112L13.1963 18.0612C13.0915 18.1974 12.9569 18.3077 12.8028 18.3838C12.6487 18.4598 12.4793 18.4996 12.3075 18.5C12.1366 18.5009 11.9678 18.4629 11.8138 18.3888C11.6598 18.3148 11.5247 18.2066 11.4188 18.0725L8.67375 14.5738C8.5829 14.457 8.51592 14.3236 8.47664 14.181C8.43736 14.0384 8.42655 13.8894 8.44483 13.7427C8.46312 13.5959 8.51013 13.4542 8.58319 13.3255C8.65624 13.1969 8.75392 13.084 8.87063 12.9931C9.10634 12.8096 9.40529 12.7273 9.70172 12.7642C9.84849 12.7825 9.99023 12.8295 10.1188 12.9026C10.2474 12.9756 10.3604 13.0733 10.4513 13.19L12.285 15.53L16.5375 9.905C16.6276 9.78681 16.7401 9.68753 16.8686 9.61282C16.9971 9.53812 17.1391 9.48945 17.2864 9.4696C17.4337 9.44975 17.5834 9.45911 17.7271 9.49714C17.8708 9.53517 18.0056 9.60113 18.1238 9.69125C18.2419 9.78137 18.3412 9.89389 18.4159 10.0224C18.4906 10.1509 18.5393 10.2928 18.5592 10.4401C18.579 10.5874 18.5696 10.7372 18.5316 10.8808C18.4936 11.0245 18.4276 11.1593 18.3375 11.2775V11.3112Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

9
assets/base/bubble.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.15 65">
<defs>
<style>
.cls-1 {
fill: #fff;
stroke: #0f0f0f;
stroke-linecap: round;
stroke-width: 9px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<g>
<line class="cls-1" x1="61.86" y1="44.6" x2="71.37" y2="60.18"/>
<g>
<line class="cls-1" x1="14.12" y1="44.73" x2="4.5" y2="60.48"/>
<line class="cls-1" x1="23.66" y1="60.5" x2="4.59" y2="60.5"/>
<line class="cls-1" x1="47.19" y1="20.24" x2="37.57" y2="4.5"/>
<line class="cls-1" x1="28.13" y1="20.44" x2="37.51" y2="4.56"/>
<line class="cls-1" x1="52.57" y1="60.5" x2="71.65" y2="60.5"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 829 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 76.15 65">
<defs>
<style>
.cls-1 {
fill: #fff;
stroke: #fff;
stroke-linecap: round;
stroke-width: 9px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<g>
<line class="cls-1" x1="61.86" y1="44.6" x2="71.37" y2="60.18"/>
<g>
<line class="cls-1" x1="14.12" y1="44.73" x2="4.5" y2="60.48"/>
<line class="cls-1" x1="23.66" y1="60.5" x2="4.59" y2="60.5"/>
<line class="cls-1" x1="47.19" y1="20.24" x2="37.57" y2="4.5"/>
<line class="cls-1" x1="28.13" y1="20.44" x2="37.51" y2="4.56"/>
<line class="cls-1" x1="52.57" y1="60.5" x2="71.65" y2="60.5"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410.36 69.1">
<defs>
<style>
.cls-1 {
fill: #0f0f0f;
}
.cls-2 {
fill: #fff;
stroke: #0f0f0f;
stroke-linecap: round;
stroke-width: 9px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<g>
<path class="cls-1" d="M270.35,69.1c-6.53,0-11.4-1.57-14.6-4.7-3.13-3.2-4.7-8.03-4.7-14.5V5.6L266.05,0v50.4c0,2.27.63,3.97,1.9,5.1s3.23,1.7,5.9,1.7c1,0,1.93-.1,2.8-.3.87-.2,1.73-.43,2.6-.7v11.4c-.87.47-2.1.83-3.7,1.1-1.53.27-3.27.4-5.2.4h0ZM246.15,28.4v-11.4h33.1v11.4h-33.1ZM282.75,68V17h15v51h-15ZM282.25,10.2V0h16v10.2h-16ZM328.71,69c-5.6,0-10.53-1.1-14.8-3.3-4.2-2.27-7.5-5.4-9.9-9.4-2.33-4.07-3.5-8.73-3.5-14s1.17-9.87,3.5-13.8c2.4-3.93,5.7-7,9.9-9.2,4.27-2.2,9.2-3.3,14.8-3.3s10.6,1.1,14.8,3.3c4.27,2.2,7.57,5.27,9.9,9.2s3.5,8.53,3.5,13.8-1.2,9.93-3.6,14c-2.33,4-5.63,7.13-9.9,9.4-4.2,2.2-9.1,3.3-14.7,3.3h0ZM328.71,57.2c2.33,0,4.43-.6,6.3-1.8,1.93-1.2,3.47-2.9,4.6-5.1,1.13-2.27,1.7-4.97,1.7-8.1,0-4.6-1.23-8.13-3.7-10.6-2.4-2.53-5.37-3.8-8.9-3.8s-6.53,1.27-9,3.8c-2.4,2.53-3.6,6.07-3.6,10.6,0,3.13.57,5.83,1.7,8.1,1.13,2.2,2.63,3.9,4.5,5.1,1.93,1.2,4.07,1.8,6.4,1.8ZM359.86,68V17h14.7v12h.3v39h-15ZM395.36,68v-31.6c0-2.8-.73-4.9-2.2-6.3-1.4-1.4-3.47-2.1-6.2-2.1-2.33,0-4.43.53-6.3,1.6-1.8,1.07-3.23,2.53-4.3,4.4-1,1.87-1.5,4.07-1.5,6.6l-1.3-12.3c1.67-3.73,4.1-6.7,7.3-8.9,3.27-2.27,7.27-3.4,12-3.4,5.67,0,10,1.6,13,4.8,3,3.13,4.5,7.37,4.5,12.7v34.5s-15,0-15,0Z"/>
<rect class="cls-1" x="234.14" y="23.52" width="15.04" height="2" transform="translate(217.06 266.17) rotate(-89.98)"/>
<path class="cls-1" d="M141.37,27.65h-15.45c-.21-1.59-.63-3.02-1.27-4.29-.64-1.28-1.48-2.37-2.53-3.27-1.05-.91-2.3-1.6-3.74-2.07-1.42-.49-3-.74-4.73-.74-3.07,0-5.72.75-7.94,2.26-2.2,1.5-3.9,3.68-5.1,6.52-1.17,2.84-1.76,6.28-1.76,10.32s.6,7.72,1.79,10.57c1.21,2.82,2.91,4.95,5.1,6.4,2.2,1.42,4.81,2.13,7.82,2.13,1.69,0,3.22-.22,4.6-.65,1.4-.43,2.63-1.06,3.68-1.88,1.07-.84,1.95-1.86,2.63-3.06.7-1.22,1.18-2.58,1.45-4.11l15.45.09c-.27,2.8-1.08,5.56-2.44,8.28-1.34,2.72-3.18,5.2-5.53,7.45-2.35,2.22-5.21,4-8.59,5.31-3.36,1.32-7.21,1.98-11.55,1.98-5.73,0-10.85-1.26-15.39-3.77-4.51-2.53-8.07-6.22-10.69-11.06s-3.92-10.73-3.92-17.67,1.33-12.86,3.99-17.7,6.25-8.52,10.78-11.03,9.61-3.77,15.23-3.77c3.83,0,7.37.54,10.63,1.61,3.25,1.05,6.12,2.6,8.59,4.63,2.47,2.02,4.48,4.5,6.02,7.45,1.54,2.95,2.5,6.31,2.87,10.1v-.03Z"/>
<path class="cls-1" d="M176.25,68c-.4-1.47-.7-3.03-.9-4.7-.13-1.67-.2-3.6-.2-5.8h-.4v-24.1c0-2.07-.7-3.67-2.1-4.8-1.33-1.2-3.33-1.8-6-1.8s-4.57.43-6.1,1.3c-1.47.87-2.43,2.13-2.9,3.8h-14.3c.67-4.6,3.03-8.4,7.1-11.4s9.63-4.5,16.7-4.5,12.93,1.63,16.8,4.9,5.8,7.97,5.8,14.1v22.5c0,1.67.1,3.37.3,5.1.27,1.67.67,3.47,1.2,5.4h-15ZM158.45,69c-5.07,0-9.1-1.27-12.1-3.8-3-2.6-4.5-6.03-4.5-10.3,0-4.73,1.77-8.53,5.3-11.4,3.6-2.93,8.6-4.83,15-5.7l14.9-2.1v8.7l-12.4,1.9c-2.67.4-4.63,1.13-5.9,2.2-1.27,1.07-1.9,2.53-1.9,4.4,0,1.67.6,2.93,1.8,3.8s2.8,1.3,4.8,1.3c3.13,0,5.8-.83,8-2.5,2.2-1.73,3.3-3.73,3.3-6l1.4,8c-1.47,3.8-3.7,6.67-6.7,8.6s-6.67,2.9-11,2.9h0ZM210.14,69c-3.6,0-6.7-.77-9.3-2.3-2.53-1.6-4.47-3.7-5.8-6.3-1.33-2.67-2-5.63-2-8.9V17h15v31.6c0,2.8.7,4.9,2.1,6.3s3.37,2.1,5.9,2.1c2.27,0,4.27-.53,6-1.6s3.1-2.53,4.1-4.4c1.07-1.93,1.6-4.13,1.6-6.6l1.3,12.3c-1.67,3.67-4.1,6.63-7.3,8.9-3.2,2.27-7.07,3.4-11.6,3.4ZM228.04,68v-12h-.3V17h15v51h-14.7Z"/>
<line class="cls-2" x1="61.86" y1="48.49" x2="71.37" y2="64.07"/>
<g>
<line class="cls-2" x1="14.12" y1="48.62" x2="4.5" y2="64.37"/>
<line class="cls-2" x1="23.66" y1="64.39" x2="4.59" y2="64.39"/>
<line class="cls-2" x1="47.19" y1="24.13" x2="37.57" y2="8.39"/>
<line class="cls-2" x1="28.13" y1="24.33" x2="37.51" y2="8.45"/>
<line class="cls-2" x1="52.57" y1="64.39" x2="71.65" y2="64.39"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410.36 69.1">
<defs>
<style>
.cls-1 {
stroke: #fff;
stroke-linecap: round;
stroke-width: 9px;
}
.cls-1, .cls-2 {
fill: #fff;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<g>
<path class="cls-2" d="M270.35,69.1c-6.53,0-11.4-1.57-14.6-4.7-3.13-3.2-4.7-8.03-4.7-14.5V5.6L266.05,0v50.4c0,2.27.63,3.97,1.9,5.1s3.23,1.7,5.9,1.7c1,0,1.93-.1,2.8-.3.87-.2,1.73-.43,2.6-.7v11.4c-.87.47-2.1.83-3.7,1.1-1.53.27-3.27.4-5.2.4h0ZM246.15,28.4v-11.4h33.1v11.4h-33.1ZM282.75,68V17h15v51h-15ZM282.25,10.2V0h16v10.2h-16ZM328.71,69c-5.6,0-10.53-1.1-14.8-3.3-4.2-2.27-7.5-5.4-9.9-9.4-2.33-4.07-3.5-8.73-3.5-14s1.17-9.87,3.5-13.8c2.4-3.93,5.7-7,9.9-9.2,4.27-2.2,9.2-3.3,14.8-3.3s10.6,1.1,14.8,3.3c4.27,2.2,7.57,5.27,9.9,9.2s3.5,8.53,3.5,13.8-1.2,9.93-3.6,14c-2.33,4-5.63,7.13-9.9,9.4-4.2,2.2-9.1,3.3-14.7,3.3h0ZM328.71,57.2c2.33,0,4.43-.6,6.3-1.8,1.93-1.2,3.47-2.9,4.6-5.1,1.13-2.27,1.7-4.97,1.7-8.1,0-4.6-1.23-8.13-3.7-10.6-2.4-2.53-5.37-3.8-8.9-3.8s-6.53,1.27-9,3.8c-2.4,2.53-3.6,6.07-3.6,10.6,0,3.13.57,5.83,1.7,8.1,1.13,2.2,2.63,3.9,4.5,5.1,1.93,1.2,4.07,1.8,6.4,1.8ZM359.86,68V17h14.7v12h.3v39h-15ZM395.36,68v-31.6c0-2.8-.73-4.9-2.2-6.3-1.4-1.4-3.47-2.1-6.2-2.1-2.33,0-4.43.53-6.3,1.6-1.8,1.07-3.23,2.53-4.3,4.4-1,1.87-1.5,4.07-1.5,6.6l-1.3-12.3c1.67-3.73,4.1-6.7,7.3-8.9,3.27-2.27,7.27-3.4,12-3.4,5.67,0,10,1.6,13,4.8,3,3.13,4.5,7.37,4.5,12.7v34.5s-15,0-15,0Z"/>
<rect class="cls-2" x="234.14" y="23.52" width="15.04" height="2" transform="translate(217.06 266.17) rotate(-89.98)"/>
<path class="cls-2" d="M141.37,27.65h-15.45c-.21-1.59-.63-3.02-1.27-4.29-.64-1.28-1.48-2.37-2.53-3.27-1.05-.91-2.3-1.6-3.74-2.07-1.42-.49-3-.74-4.73-.74-3.07,0-5.72.75-7.94,2.26-2.2,1.5-3.9,3.68-5.1,6.52-1.17,2.84-1.76,6.28-1.76,10.32s.6,7.72,1.79,10.57c1.21,2.82,2.91,4.95,5.1,6.4,2.2,1.42,4.81,2.13,7.82,2.13,1.69,0,3.22-.22,4.6-.65,1.4-.43,2.63-1.06,3.68-1.88,1.07-.84,1.95-1.86,2.63-3.06.7-1.22,1.18-2.58,1.45-4.11l15.45.09c-.27,2.8-1.08,5.56-2.44,8.28-1.34,2.72-3.18,5.2-5.53,7.45-2.35,2.22-5.21,4-8.59,5.31-3.36,1.32-7.21,1.98-11.55,1.98-5.73,0-10.85-1.26-15.39-3.77-4.51-2.53-8.07-6.22-10.69-11.06s-3.92-10.73-3.92-17.67,1.33-12.86,3.99-17.7,6.25-8.52,10.78-11.03,9.61-3.77,15.23-3.77c3.83,0,7.37.54,10.63,1.61,3.25,1.05,6.12,2.6,8.59,4.63,2.47,2.02,4.48,4.5,6.02,7.45,1.54,2.95,2.5,6.31,2.87,10.1v-.03Z"/>
<path class="cls-2" d="M176.25,68c-.4-1.47-.7-3.03-.9-4.7-.13-1.67-.2-3.6-.2-5.8h-.4v-24.1c0-2.07-.7-3.67-2.1-4.8-1.33-1.2-3.33-1.8-6-1.8s-4.57.43-6.1,1.3c-1.47.87-2.43,2.13-2.9,3.8h-14.3c.67-4.6,3.03-8.4,7.1-11.4s9.63-4.5,16.7-4.5,12.93,1.63,16.8,4.9,5.8,7.97,5.8,14.1v22.5c0,1.67.1,3.37.3,5.1.27,1.67.67,3.47,1.2,5.4h-15ZM158.45,69c-5.07,0-9.1-1.27-12.1-3.8-3-2.6-4.5-6.03-4.5-10.3,0-4.73,1.77-8.53,5.3-11.4,3.6-2.93,8.6-4.83,15-5.7l14.9-2.1v8.7l-12.4,1.9c-2.67.4-4.63,1.13-5.9,2.2-1.27,1.07-1.9,2.53-1.9,4.4,0,1.67.6,2.93,1.8,3.8s2.8,1.3,4.8,1.3c3.13,0,5.8-.83,8-2.5,2.2-1.73,3.3-3.73,3.3-6l1.4,8c-1.47,3.8-3.7,6.67-6.7,8.6s-6.67,2.9-11,2.9h0ZM210.14,69c-3.6,0-6.7-.77-9.3-2.3-2.53-1.6-4.47-3.7-5.8-6.3-1.33-2.67-2-5.63-2-8.9V17h15v31.6c0,2.8.7,4.9,2.1,6.3s3.37,2.1,5.9,2.1c2.27,0,4.27-.53,6-1.6s3.1-2.53,4.1-4.4c1.07-1.93,1.6-4.13,1.6-6.6l1.3,12.3c-1.67,3.67-4.1,6.63-7.3,8.9-3.2,2.27-7.07,3.4-11.6,3.4ZM228.04,68v-12h-.3V17h15v51h-14.7Z"/>
<line class="cls-1" x1="61.86" y1="48.49" x2="71.37" y2="64.07"/>
<g>
<line class="cls-1" x1="14.12" y1="48.62" x2="4.5" y2="64.37"/>
<line class="cls-1" x1="23.66" y1="64.39" x2="4.59" y2="64.39"/>
<line class="cls-1" x1="47.19" y1="24.13" x2="37.57" y2="8.39"/>
<line class="cls-1" x1="28.13" y1="24.33" x2="37.51" y2="8.45"/>
<line class="cls-1" x1="52.57" y1="64.39" x2="71.65" y2="64.39"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -0,0 +1,9 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="120" height="120" rx="40" fill="black"/>
<line x1="35.3151" y1="72.5648" x2="25.257" y2="89.8072" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="45.1346" y1="90.4807" x2="25.173" y2="90.4807" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="70.7604" y1="43.6463" x2="60.6878" y2="26.4125" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="50.3315" y1="43.3923" x2="60.1425" y2="26.0082" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(0.503871 0.863779 0.863779 -0.503871 88.4974 65.3846)" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(1 0 0 -1 71.5384 85.2307)" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 971 B

View File

@ -0,0 +1,8 @@
<svg width="86" height="77" viewBox="0 0 86 77" fill="none" xmlns="http://www.w3.org/2000/svg">
<line x1="17.3151" y1="53.5648" x2="7.25701" y2="70.8071" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="27.1345" y1="71.4808" x2="7.17298" y2="71.4808" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="52.7604" y1="24.6464" x2="42.6878" y2="7.41251" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="32.3315" y1="24.3924" x2="42.1424" y2="7.00827" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(0.503871 0.863779 0.863779 -0.503871 70.4976 46.3846)" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(1 0 0 -1 53.5386 66.2308)" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -0,0 +1,9 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="120" height="120" rx="40" fill="white"/>
<line x1="35.3151" y1="72.5648" x2="25.257" y2="89.8071" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="45.1345" y1="90.4808" x2="25.173" y2="90.4808" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="70.7604" y1="43.6464" x2="60.6878" y2="26.4125" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="50.3315" y1="43.3924" x2="60.1424" y2="26.0083" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(0.503871 0.863779 0.863779 -0.503871 88.4976 65.3846)" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(1 0 0 -1 71.5386 85.2308)" stroke="black" stroke-width="10.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 971 B

View File

@ -0,0 +1,8 @@
<svg width="86" height="77" viewBox="0 0 86 77" fill="none" xmlns="http://www.w3.org/2000/svg">
<line x1="17.3151" y1="53.5648" x2="7.25704" y2="70.8072" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="27.1346" y1="71.4807" x2="7.17304" y2="71.4807" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="52.7604" y1="24.6463" x2="42.6878" y2="7.41245" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="32.3315" y1="24.3923" x2="42.1425" y2="7.00821" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(0.503871 0.863779 0.863779 -0.503871 70.4974 46.3846)" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
<line x1="5.25" y1="-5.25" x2="25.2115" y2="-5.25" transform="matrix(1 0 0 -1 53.5384 66.2307)" stroke="white" stroke-width="10.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 425.32 82.88">
<defs>
<style>
.cls-1 {
stroke-miterlimit: 4;
stroke-width: 10.5px;
}
.cls-1, .cls-2 {
fill: none;
stroke: #000;
stroke-linecap: round;
}
.cls-3 {
fill: #fff;
}
.cls-2 {
stroke-width: 10.5px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<path d="M285.31,79.57c-6.53,0-11.4-1.57-14.6-4.7-3.13-3.2-4.7-8.03-4.7-14.5V16.07l15-5.6v50.4c0,2.27.63,3.97,1.9,5.1s3.23,1.7,5.9,1.7c1,0,1.93-.1,2.8-.3.87-.2,1.73-.43,2.6-.7v11.4c-.87.47-2.1.83-3.7,1.1-1.53.27-3.27.4-5.2.4ZM261.11,38.87v-11.4h33.1v11.4h-33.1ZM297.71,78.47V27.47h15v51h-15ZM297.21,20.67v-10.2h16v10.2h-16ZM343.67,79.47c-5.6,0-10.53-1.1-14.8-3.3-4.2-2.27-7.5-5.4-9.9-9.4-2.33-4.07-3.5-8.73-3.5-14s1.17-9.87,3.5-13.8c2.4-3.93,5.7-7,9.9-9.2,4.27-2.2,9.2-3.3,14.8-3.3s10.6,1.1,14.8,3.3c4.27,2.2,7.57,5.27,9.9,9.2,2.33,3.93,3.5,8.53,3.5,13.8s-1.2,9.93-3.6,14c-2.33,4-5.63,7.13-9.9,9.4-4.2,2.2-9.1,3.3-14.7,3.3ZM343.67,67.67c2.33,0,4.43-.6,6.3-1.8,1.93-1.2,3.47-2.9,4.6-5.1,1.13-2.27,1.7-4.97,1.7-8.1,0-4.6-1.23-8.13-3.7-10.6-2.4-2.53-5.37-3.8-8.9-3.8s-6.53,1.27-9,3.8c-2.4,2.53-3.6,6.07-3.6,10.6,0,3.13.57,5.83,1.7,8.1,1.13,2.2,2.63,3.9,4.5,5.1,1.93,1.2,4.07,1.8,6.4,1.8ZM374.82,78.47V27.47h14.7v12h.3v39h-15ZM410.32,78.47v-31.6c0-2.8-.73-4.9-2.2-6.3-1.4-1.4-3.47-2.1-6.2-2.1-2.33,0-4.43.53-6.3,1.6-1.8,1.07-3.23,2.53-4.3,4.4-1,1.87-1.5,4.07-1.5,6.6l-1.3-12.3c1.67-3.73,4.1-6.7,7.3-8.9,3.27-2.27,7.27-3.4,12-3.4,5.67,0,10,1.6,13,4.8,3,3.13,4.5,7.37,4.5,12.7v34.5h-15Z"/>
<rect class="cls-3" x="249.09" y="33.99" width="15.04" height="2" transform="translate(221.54 291.59) rotate(-89.98)"/>
<path d="M156.33,38.12h-15.45c-.21-1.59-.63-3.02-1.27-4.29-.64-1.28-1.48-2.37-2.53-3.27-1.05-.91-2.3-1.6-3.74-2.07-1.42-.49-3-.74-4.73-.74-3.07,0-5.72.75-7.94,2.26-2.2,1.5-3.9,3.68-5.1,6.52-1.17,2.84-1.76,6.28-1.76,10.32s.6,7.72,1.79,10.57c1.21,2.82,2.91,4.95,5.1,6.4,2.2,1.42,4.81,2.13,7.82,2.13,1.69,0,3.22-.22,4.6-.65,1.4-.43,2.63-1.06,3.68-1.88,1.07-.84,1.95-1.86,2.63-3.06.7-1.22,1.18-2.58,1.45-4.11l15.45.09c-.27,2.8-1.08,5.56-2.44,8.28-1.34,2.72-3.18,5.2-5.53,7.45-2.35,2.22-5.21,4-8.59,5.31-3.36,1.32-7.21,1.98-11.55,1.98-5.73,0-10.85-1.26-15.39-3.77-4.51-2.53-8.07-6.22-10.69-11.06-2.62-4.84-3.92-10.73-3.92-17.67s1.33-12.86,3.99-17.7c2.66-4.84,6.25-8.52,10.78-11.03,4.53-2.51,9.61-3.77,15.23-3.77,3.83,0,7.37.54,10.63,1.61,3.25,1.05,6.12,2.6,8.59,4.63,2.47,2.02,4.48,4.5,6.02,7.45,1.54,2.95,2.5,6.31,2.87,10.1Z"/>
<path d="M191.21,78.47c-.4-1.47-.7-3.03-.9-4.7-.13-1.67-.2-3.6-.2-5.8h-.4v-24.1c0-2.07-.7-3.67-2.1-4.8-1.33-1.2-3.33-1.8-6-1.8s-4.57.43-6.1,1.3c-1.47.87-2.43,2.13-2.9,3.8h-14.3c.67-4.6,3.03-8.4,7.1-11.4s9.63-4.5,16.7-4.5,12.93,1.63,16.8,4.9c3.87,3.27,5.8,7.97,5.8,14.1v22.5c0,1.67.1,3.37.3,5.1.27,1.67.67,3.47,1.2,5.4h-15ZM173.41,79.47c-5.07,0-9.1-1.27-12.1-3.8-3-2.6-4.5-6.03-4.5-10.3,0-4.73,1.77-8.53,5.3-11.4,3.6-2.93,8.6-4.83,15-5.7l14.9-2.1v8.7l-12.4,1.9c-2.67.4-4.63,1.13-5.9,2.2-1.27,1.07-1.9,2.53-1.9,4.4,0,1.67.6,2.93,1.8,3.8,1.2.87,2.8,1.3,4.8,1.3,3.13,0,5.8-.83,8-2.5,2.2-1.73,3.3-3.73,3.3-6l1.4,8c-1.47,3.8-3.7,6.67-6.7,8.6-3,1.93-6.67,2.9-11,2.9ZM225.1,79.47c-3.6,0-6.7-.77-9.3-2.3-2.53-1.6-4.47-3.7-5.8-6.3-1.33-2.67-2-5.63-2-8.9V27.47h15v31.6c0,2.8.7,4.9,2.1,6.3s3.37,2.1,5.9,2.1c2.27,0,4.27-.53,6-1.6,1.73-1.07,3.1-2.53,4.1-4.4,1.07-1.93,1.6-4.13,1.6-6.6l1.3,12.3c-1.67,3.67-4.1,6.63-7.3,8.9-3.2,2.27-7.07,3.4-11.6,3.4ZM243,78.47v-12h-.3V27.47h15v51h-14.7Z"/>
<g>
<line class="cls-2" x1="16.64" y1="57.52" x2="5.34" y2="76.88"/>
<line class="cls-2" x1="27.66" y1="77.63" x2="5.25" y2="77.63"/>
<line class="cls-2" x1="56.43" y1="25.05" x2="45.12" y2="5.7"/>
<line class="cls-2" x1="33.5" y1="24.77" x2="44.51" y2="5.25"/>
<line class="cls-1" x1="74.22" y1="57.52" x2="85.51" y2="76.88"/>
<line class="cls-2" x1="63.2" y1="77.63" x2="85.61" y2="77.63"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 456.59 120">
<defs>
<style>
.cls-1 {
stroke-miterlimit: 4;
stroke-width: 10.5px;
}
.cls-1, .cls-2 {
fill: none;
stroke: #fff;
stroke-linecap: round;
}
.cls-2 {
stroke-width: 10.5px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<path d="M316.58,92.38c-6.53,0-11.4-1.57-14.6-4.7-3.13-3.2-4.7-8.03-4.7-14.5V28.88l15-5.6v50.4c0,2.27.63,3.97,1.9,5.1s3.23,1.7,5.9,1.7c1,0,1.93-.1,2.8-.3.87-.2,1.73-.43,2.6-.7v11.4c-.87.47-2.1.83-3.7,1.1-1.53.27-3.27.4-5.2.4ZM292.38,51.68v-11.4h33.1v11.4h-33.1ZM328.98,91.28v-51h15v51h-15ZM328.48,33.48v-10.2h16v10.2h-16ZM374.94,92.28c-5.6,0-10.53-1.1-14.8-3.3-4.2-2.27-7.5-5.4-9.9-9.4-2.33-4.07-3.5-8.73-3.5-14s1.17-9.87,3.5-13.8c2.4-3.93,5.7-7,9.9-9.2,4.27-2.2,9.2-3.3,14.8-3.3s10.6,1.1,14.8,3.3c4.27,2.2,7.57,5.27,9.9,9.2,2.33,3.93,3.5,8.53,3.5,13.8s-1.2,9.93-3.6,14c-2.33,4-5.63,7.13-9.9,9.4-4.2,2.2-9.1,3.3-14.7,3.3ZM374.94,80.48c2.33,0,4.43-.6,6.3-1.8,1.93-1.2,3.47-2.9,4.6-5.1,1.13-2.27,1.7-4.97,1.7-8.1,0-4.6-1.23-8.13-3.7-10.6-2.4-2.53-5.37-3.8-8.9-3.8s-6.53,1.27-9,3.8c-2.4,2.53-3.6,6.07-3.6,10.6,0,3.13.57,5.83,1.7,8.1,1.13,2.2,2.63,3.9,4.5,5.1,1.93,1.2,4.07,1.8,6.4,1.8ZM406.09,91.28v-51h14.7v12h.3v39h-15ZM441.59,91.28v-31.6c0-2.8-.73-4.9-2.2-6.3-1.4-1.4-3.47-2.1-6.2-2.1-2.33,0-4.43.53-6.3,1.6-1.8,1.07-3.23,2.53-4.3,4.4-1,1.87-1.5,4.07-1.5,6.6l-1.3-12.3c1.67-3.73,4.1-6.7,7.3-8.9,3.27-2.27,7.27-3.4,12-3.4,5.67,0,10,1.6,13,4.8,3,3.13,4.5,7.37,4.5,12.7v34.5h-15Z"/>
<rect x="280.36" y="46.8" width="15.04" height="2" transform="translate(240 335.66) rotate(-89.98)"/>
<path d="M187.6,50.93h-15.45c-.21-1.59-.63-3.02-1.27-4.29-.64-1.28-1.48-2.37-2.53-3.27-1.05-.91-2.3-1.6-3.74-2.07-1.42-.49-3-.74-4.73-.74-3.07,0-5.72.75-7.94,2.26-2.2,1.5-3.9,3.68-5.1,6.52-1.17,2.84-1.76,6.28-1.76,10.32s.6,7.72,1.79,10.57c1.21,2.82,2.91,4.95,5.1,6.4,2.2,1.42,4.81,2.13,7.82,2.13,1.69,0,3.22-.22,4.6-.65,1.4-.43,2.63-1.06,3.68-1.88,1.07-.84,1.95-1.86,2.63-3.06.7-1.22,1.18-2.58,1.45-4.11l15.45.09c-.27,2.8-1.08,5.56-2.44,8.28-1.34,2.72-3.18,5.2-5.53,7.45-2.35,2.22-5.21,4-8.59,5.31-3.36,1.32-7.21,1.98-11.55,1.98-5.73,0-10.85-1.26-15.39-3.77-4.51-2.53-8.07-6.22-10.69-11.06-2.62-4.84-3.92-10.73-3.92-17.67s1.33-12.86,3.99-17.7c2.66-4.84,6.25-8.52,10.78-11.03,4.53-2.51,9.61-3.77,15.23-3.77,3.83,0,7.37.54,10.63,1.61,3.25,1.05,6.12,2.6,8.59,4.63,2.47,2.02,4.48,4.5,6.02,7.45,1.54,2.95,2.5,6.31,2.87,10.1Z"/>
<path d="M222.48,91.28c-.4-1.47-.7-3.03-.9-4.7-.13-1.67-.2-3.6-.2-5.8h-.4v-24.1c0-2.07-.7-3.67-2.1-4.8-1.33-1.2-3.33-1.8-6-1.8s-4.57.43-6.1,1.3c-1.47.87-2.43,2.13-2.9,3.8h-14.3c.67-4.6,3.03-8.4,7.1-11.4s9.63-4.5,16.7-4.5,12.93,1.63,16.8,4.9c3.87,3.27,5.8,7.97,5.8,14.1v22.5c0,1.67.1,3.37.3,5.1.27,1.67.67,3.47,1.2,5.4h-15ZM204.68,92.28c-5.07,0-9.1-1.27-12.1-3.8-3-2.6-4.5-6.03-4.5-10.3,0-4.73,1.77-8.53,5.3-11.4,3.6-2.93,8.6-4.83,15-5.7l14.9-2.1v8.7l-12.4,1.9c-2.67.4-4.63,1.13-5.9,2.2-1.27,1.07-1.9,2.53-1.9,4.4,0,1.67.6,2.93,1.8,3.8,1.2.87,2.8,1.3,4.8,1.3,3.13,0,5.8-.83,8-2.5,2.2-1.73,3.3-3.73,3.3-6l1.4,8c-1.47,3.8-3.7,6.67-6.7,8.6-3,1.93-6.67,2.9-11,2.9ZM256.37,92.28c-3.6,0-6.7-.77-9.3-2.3-2.53-1.6-4.47-3.7-5.8-6.3-1.33-2.67-2-5.63-2-8.9v-34.5h15v31.6c0,2.8.7,4.9,2.1,6.3s3.37,2.1,5.9,2.1c2.27,0,4.27-.53,6-1.6,1.73-1.07,3.1-2.53,4.1-4.4,1.07-1.93,1.6-4.13,1.6-6.6l1.3,12.3c-1.67,3.67-4.1,6.63-7.3,8.9-3.2,2.27-7.07,3.4-11.6,3.4ZM274.27,91.28v-12h-.3v-39h15v51h-14.7Z"/>
<rect width="120" height="120" rx="40" ry="40"/>
<line class="cls-2" x1="35.32" y1="72.56" x2="25.26" y2="89.81"/>
<line class="cls-2" x1="45.13" y1="90.48" x2="25.17" y2="90.48"/>
<line class="cls-2" x1="70.76" y1="43.65" x2="60.69" y2="26.41"/>
<line class="cls-2" x1="50.33" y1="43.39" x2="60.14" y2="26.01"/>
<line class="cls-1" x1="86.61" y1="72.56" x2="96.67" y2="89.81"/>
<line class="cls-2" x1="76.79" y1="90.48" x2="96.75" y2="90.48"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 456.59 120">
<defs>
<style>
.cls-1 {
stroke-miterlimit: 4;
stroke-width: 10.5px;
}
.cls-1, .cls-2 {
fill: none;
stroke: #000;
stroke-linecap: round;
}
.cls-3 {
fill: #fff;
}
.cls-2 {
stroke-width: 10.5px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<path class="cls-3" d="M316.58,92.38c-6.53,0-11.4-1.57-14.6-4.7-3.13-3.2-4.7-8.03-4.7-14.5V28.88l15-5.6v50.4c0,2.27.63,3.97,1.9,5.1s3.23,1.7,5.9,1.7c1,0,1.93-.1,2.8-.3.87-.2,1.73-.43,2.6-.7v11.4c-.87.47-2.1.83-3.7,1.1-1.53.27-3.27.4-5.2.4ZM292.38,51.68v-11.4h33.1v11.4h-33.1ZM328.98,91.28v-51h15v51h-15ZM328.48,33.48v-10.2h16v10.2h-16ZM374.94,92.28c-5.6,0-10.53-1.1-14.8-3.3-4.2-2.27-7.5-5.4-9.9-9.4-2.33-4.07-3.5-8.73-3.5-14s1.17-9.87,3.5-13.8c2.4-3.93,5.7-7,9.9-9.2,4.27-2.2,9.2-3.3,14.8-3.3s10.6,1.1,14.8,3.3c4.27,2.2,7.57,5.27,9.9,9.2,2.33,3.93,3.5,8.53,3.5,13.8s-1.2,9.93-3.6,14c-2.33,4-5.63,7.13-9.9,9.4-4.2,2.2-9.1,3.3-14.7,3.3ZM374.94,80.48c2.33,0,4.43-.6,6.3-1.8,1.93-1.2,3.47-2.9,4.6-5.1,1.13-2.27,1.7-4.97,1.7-8.1,0-4.6-1.23-8.13-3.7-10.6-2.4-2.53-5.37-3.8-8.9-3.8s-6.53,1.27-9,3.8c-2.4,2.53-3.6,6.07-3.6,10.6,0,3.13.57,5.83,1.7,8.1,1.13,2.2,2.63,3.9,4.5,5.1,1.93,1.2,4.07,1.8,6.4,1.8ZM406.09,91.28v-51h14.7v12h.3v39h-15ZM441.59,91.28v-31.6c0-2.8-.73-4.9-2.2-6.3-1.4-1.4-3.47-2.1-6.2-2.1-2.33,0-4.43.53-6.3,1.6-1.8,1.07-3.23,2.53-4.3,4.4-1,1.87-1.5,4.07-1.5,6.6l-1.3-12.3c1.67-3.73,4.1-6.7,7.3-8.9,3.27-2.27,7.27-3.4,12-3.4,5.67,0,10,1.6,13,4.8,3,3.13,4.5,7.37,4.5,12.7v34.5h-15Z"/>
<rect class="cls-3" x="280.36" y="46.8" width="15.04" height="2" transform="translate(240 335.66) rotate(-89.98)"/>
<path class="cls-3" d="M187.6,50.93h-15.45c-.21-1.59-.63-3.02-1.27-4.29-.64-1.28-1.48-2.37-2.53-3.27-1.05-.91-2.3-1.6-3.74-2.07-1.42-.49-3-.74-4.73-.74-3.07,0-5.72.75-7.94,2.26-2.2,1.5-3.9,3.68-5.1,6.52-1.17,2.84-1.76,6.28-1.76,10.32s.6,7.72,1.79,10.57c1.21,2.82,2.91,4.95,5.1,6.4,2.2,1.42,4.81,2.13,7.82,2.13,1.69,0,3.22-.22,4.6-.65,1.4-.43,2.63-1.06,3.68-1.88,1.07-.84,1.95-1.86,2.63-3.06.7-1.22,1.18-2.58,1.45-4.11l15.45.09c-.27,2.8-1.08,5.56-2.44,8.28-1.34,2.72-3.18,5.2-5.53,7.45-2.35,2.22-5.21,4-8.59,5.31-3.36,1.32-7.21,1.98-11.55,1.98-5.73,0-10.85-1.26-15.39-3.77-4.51-2.53-8.07-6.22-10.69-11.06-2.62-4.84-3.92-10.73-3.92-17.67s1.33-12.86,3.99-17.7c2.66-4.84,6.25-8.52,10.78-11.03,4.53-2.51,9.61-3.77,15.23-3.77,3.83,0,7.37.54,10.63,1.61,3.25,1.05,6.12,2.6,8.59,4.63,2.47,2.02,4.48,4.5,6.02,7.45,1.54,2.95,2.5,6.31,2.87,10.1Z"/>
<path class="cls-3" d="M222.48,91.28c-.4-1.47-.7-3.03-.9-4.7-.13-1.67-.2-3.6-.2-5.8h-.4v-24.1c0-2.07-.7-3.67-2.1-4.8-1.33-1.2-3.33-1.8-6-1.8s-4.57.43-6.1,1.3c-1.47.87-2.43,2.13-2.9,3.8h-14.3c.67-4.6,3.03-8.4,7.1-11.4s9.63-4.5,16.7-4.5,12.93,1.63,16.8,4.9c3.87,3.27,5.8,7.97,5.8,14.1v22.5c0,1.67.1,3.37.3,5.1.27,1.67.67,3.47,1.2,5.4h-15ZM204.68,92.28c-5.07,0-9.1-1.27-12.1-3.8-3-2.6-4.5-6.03-4.5-10.3,0-4.73,1.77-8.53,5.3-11.4,3.6-2.93,8.6-4.83,15-5.7l14.9-2.1v8.7l-12.4,1.9c-2.67.4-4.63,1.13-5.9,2.2-1.27,1.07-1.9,2.53-1.9,4.4,0,1.67.6,2.93,1.8,3.8,1.2.87,2.8,1.3,4.8,1.3,3.13,0,5.8-.83,8-2.5,2.2-1.73,3.3-3.73,3.3-6l1.4,8c-1.47,3.8-3.7,6.67-6.7,8.6-3,1.93-6.67,2.9-11,2.9ZM256.37,92.28c-3.6,0-6.7-.77-9.3-2.3-2.53-1.6-4.47-3.7-5.8-6.3-1.33-2.67-2-5.63-2-8.9v-34.5h15v31.6c0,2.8.7,4.9,2.1,6.3s3.37,2.1,5.9,2.1c2.27,0,4.27-.53,6-1.6,1.73-1.07,3.1-2.53,4.1-4.4,1.07-1.93,1.6-4.13,1.6-6.6l1.3,12.3c-1.67,3.67-4.1,6.63-7.3,8.9-3.2,2.27-7.07,3.4-11.6,3.4ZM274.27,91.28v-12h-.3v-39h15v51h-14.7Z"/>
<rect class="cls-3" width="120" height="120" rx="40" ry="40"/>
<line class="cls-2" x1="35.32" y1="72.56" x2="25.26" y2="89.81"/>
<line class="cls-2" x1="45.13" y1="90.48" x2="25.17" y2="90.48"/>
<line class="cls-2" x1="70.76" y1="43.65" x2="60.69" y2="26.41"/>
<line class="cls-2" x1="50.33" y1="43.39" x2="60.14" y2="26.01"/>
<line class="cls-1" x1="86.61" y1="72.56" x2="96.67" y2="89.81"/>
<line class="cls-2" x1="76.79" y1="90.48" x2="96.75" y2="90.48"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 425.32 82.88">
<defs>
<style>
.cls-1 {
stroke-miterlimit: 4;
stroke-width: 10.5px;
}
.cls-1, .cls-2 {
fill: none;
stroke: #fff;
stroke-linecap: round;
}
.cls-3 {
fill: #fff;
}
.cls-2 {
stroke-width: 10.5px;
}
</style>
</defs>
<g id="Layer_1-2" data-name="Layer 1">
<path class="cls-3" d="M285.31,79.57c-6.53,0-11.4-1.57-14.6-4.7-3.13-3.2-4.7-8.03-4.7-14.5V16.07l15-5.6v50.4c0,2.27.63,3.97,1.9,5.1s3.23,1.7,5.9,1.7c1,0,1.93-.1,2.8-.3.87-.2,1.73-.43,2.6-.7v11.4c-.87.47-2.1.83-3.7,1.1-1.53.27-3.27.4-5.2.4ZM261.11,38.87v-11.4h33.1v11.4h-33.1ZM297.71,78.47V27.47h15v51h-15ZM297.21,20.67v-10.2h16v10.2h-16ZM343.67,79.47c-5.6,0-10.53-1.1-14.8-3.3-4.2-2.27-7.5-5.4-9.9-9.4-2.33-4.07-3.5-8.73-3.5-14s1.17-9.87,3.5-13.8c2.4-3.93,5.7-7,9.9-9.2,4.27-2.2,9.2-3.3,14.8-3.3s10.6,1.1,14.8,3.3c4.27,2.2,7.57,5.27,9.9,9.2,2.33,3.93,3.5,8.53,3.5,13.8s-1.2,9.93-3.6,14c-2.33,4-5.63,7.13-9.9,9.4-4.2,2.2-9.1,3.3-14.7,3.3ZM343.67,67.67c2.33,0,4.43-.6,6.3-1.8,1.93-1.2,3.47-2.9,4.6-5.1,1.13-2.27,1.7-4.97,1.7-8.1,0-4.6-1.23-8.13-3.7-10.6-2.4-2.53-5.37-3.8-8.9-3.8s-6.53,1.27-9,3.8c-2.4,2.53-3.6,6.07-3.6,10.6,0,3.13.57,5.83,1.7,8.1,1.13,2.2,2.63,3.9,4.5,5.1,1.93,1.2,4.07,1.8,6.4,1.8ZM374.82,78.47V27.47h14.7v12h.3v39h-15ZM410.32,78.47v-31.6c0-2.8-.73-4.9-2.2-6.3-1.4-1.4-3.47-2.1-6.2-2.1-2.33,0-4.43.53-6.3,1.6-1.8,1.07-3.23,2.53-4.3,4.4-1,1.87-1.5,4.07-1.5,6.6l-1.3-12.3c1.67-3.73,4.1-6.7,7.3-8.9,3.27-2.27,7.27-3.4,12-3.4,5.67,0,10,1.6,13,4.8,3,3.13,4.5,7.37,4.5,12.7v34.5h-15Z"/>
<rect class="cls-3" x="249.09" y="33.99" width="15.04" height="2" transform="translate(221.54 291.59) rotate(-89.98)"/>
<path class="cls-3" d="M156.33,38.12h-15.45c-.21-1.59-.63-3.02-1.27-4.29-.64-1.28-1.48-2.37-2.53-3.27-1.05-.91-2.3-1.6-3.74-2.07-1.42-.49-3-.74-4.73-.74-3.07,0-5.72.75-7.94,2.26-2.2,1.5-3.9,3.68-5.1,6.52-1.17,2.84-1.76,6.28-1.76,10.32s.6,7.72,1.79,10.57c1.21,2.82,2.91,4.95,5.1,6.4,2.2,1.42,4.81,2.13,7.82,2.13,1.69,0,3.22-.22,4.6-.65,1.4-.43,2.63-1.06,3.68-1.88,1.07-.84,1.95-1.86,2.63-3.06.7-1.22,1.18-2.58,1.45-4.11l15.45.09c-.27,2.8-1.08,5.56-2.44,8.28-1.34,2.72-3.18,5.2-5.53,7.45-2.35,2.22-5.21,4-8.59,5.31-3.36,1.32-7.21,1.98-11.55,1.98-5.73,0-10.85-1.26-15.39-3.77-4.51-2.53-8.07-6.22-10.69-11.06-2.62-4.84-3.92-10.73-3.92-17.67s1.33-12.86,3.99-17.7c2.66-4.84,6.25-8.52,10.78-11.03,4.53-2.51,9.61-3.77,15.23-3.77,3.83,0,7.37.54,10.63,1.61,3.25,1.05,6.12,2.6,8.59,4.63,2.47,2.02,4.48,4.5,6.02,7.45,1.54,2.95,2.5,6.31,2.87,10.1Z"/>
<path class="cls-3" d="M191.21,78.47c-.4-1.47-.7-3.03-.9-4.7-.13-1.67-.2-3.6-.2-5.8h-.4v-24.1c0-2.07-.7-3.67-2.1-4.8-1.33-1.2-3.33-1.8-6-1.8s-4.57.43-6.1,1.3c-1.47.87-2.43,2.13-2.9,3.8h-14.3c.67-4.6,3.03-8.4,7.1-11.4s9.63-4.5,16.7-4.5,12.93,1.63,16.8,4.9c3.87,3.27,5.8,7.97,5.8,14.1v22.5c0,1.67.1,3.37.3,5.1.27,1.67.67,3.47,1.2,5.4h-15ZM173.41,79.47c-5.07,0-9.1-1.27-12.1-3.8-3-2.6-4.5-6.03-4.5-10.3,0-4.73,1.77-8.53,5.3-11.4,3.6-2.93,8.6-4.83,15-5.7l14.9-2.1v8.7l-12.4,1.9c-2.67.4-4.63,1.13-5.9,2.2-1.27,1.07-1.9,2.53-1.9,4.4,0,1.67.6,2.93,1.8,3.8,1.2.87,2.8,1.3,4.8,1.3,3.13,0,5.8-.83,8-2.5,2.2-1.73,3.3-3.73,3.3-6l1.4,8c-1.47,3.8-3.7,6.67-6.7,8.6-3,1.93-6.67,2.9-11,2.9ZM225.1,79.47c-3.6,0-6.7-.77-9.3-2.3-2.53-1.6-4.47-3.7-5.8-6.3-1.33-2.67-2-5.63-2-8.9V27.47h15v31.6c0,2.8.7,4.9,2.1,6.3s3.37,2.1,5.9,2.1c2.27,0,4.27-.53,6-1.6,1.73-1.07,3.1-2.53,4.1-4.4,1.07-1.93,1.6-4.13,1.6-6.6l1.3,12.3c-1.67,3.67-4.1,6.63-7.3,8.9-3.2,2.27-7.07,3.4-11.6,3.4ZM243,78.47v-12h-.3V27.47h15v51h-14.7Z"/>
<g>
<line class="cls-2" x1="16.64" y1="57.52" x2="5.34" y2="76.88"/>
<line class="cls-2" x1="27.66" y1="77.63" x2="5.25" y2="77.63"/>
<line class="cls-2" x1="56.43" y1="25.05" x2="45.12" y2="5.7"/>
<line class="cls-2" x1="33.5" y1="24.77" x2="44.51" y2="5.25"/>
<line class="cls-1" x1="74.22" y1="57.52" x2="85.51" y2="76.88"/>
<line class="cls-2" x1="63.2" y1="77.63" x2="85.61" y2="77.63"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

3
assets/base/check.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="9" height="9" viewBox="0 0 9 9" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.5 2.25L3.375 6.375L1.5 4.5" stroke="#181D27" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1 @@
<svg id="svg1681" xmlns="http://www.w3.org/2000/svg" width="300" height="77.54" viewBox="0 0 300 77.54"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="M56.15,0H21.39A21.39,21.39,0,0,0,0,21.39V56.15A21.39,21.39,0,0,0,21.39,77.54H56.15A21.38,21.38,0,0,0,77.54,56.15V21.39A21.39,21.39,0,0,0,56.15,0ZM5.76,40.46V37.89a2.62,2.62,0,0,1,1-2.35L22.21,20.06a2.6,2.6,0,0,1,2.35-1h2.58a2.6,2.6,0,0,1,2.35,1l9.56,9.6-4.7,4.69-8.5-8.53L12.49,39.18,21,47.72l-4.7,4.69-9.57-9.6A2.63,2.63,0,0,1,5.76,40.46Zm9.83,24.83a1.12,1.12,0,0,1-1.59,0l-2.65-2.65a1.12,1.12,0,0,1,0-1.59L60.54,11.86a1.11,1.11,0,0,1,1.59,0l2.65,2.64a1.13,1.13,0,0,1,0,1.6ZM71.78,40.47a2.6,2.6,0,0,1-1,2.34L55.33,58.29a2.62,2.62,0,0,1-2.35,1H50.41a2.62,2.62,0,0,1-2.35-1L37.21,47.35l4.69-4.69,9.8,9.86L65.06,39.17l-9.8-9.87L60,24.61,70.82,35.55a2.66,2.66,0,0,1,1,2.34Z"/><g id="layer2"><g id="text2555-4-2-6"><path id="path2692-8-9-2" class="cls-1" d="M107.08,27.21h-6.39v24h6.72q11.78,0,11.78-12.5,0-6-2.89-8.76t-9.22-2.79ZM91,59.39V19.08H108.3q10.33,0,15.38,5.15t5.09,14.53q0,9.24-5.45,15t-15,5.67Z"/><path id="path2694-4-8-6" class="cls-1" d="M140.84,24.19h-9.55v-6h9.55Zm-.13,35.2h-9.22V27.54h9.22Z"/><path id="path2696-0-2-4" class="cls-1" d="M157.93,60.34a23.8,23.8,0,0,1-5.61-.59,14,14,0,0,1-4-1.51,10.25,10.25,0,0,1-2.75-2.36A11.37,11.37,0,0,1,143.82,53a16.49,16.49,0,0,1-.88-3.38l8.53-1.67a8.24,8.24,0,0,0,2.26,4.23,6.35,6.35,0,0,0,4.39,1.41c2.93,0,4.43-1,4.5-3a2.55,2.55,0,0,0-1.41-2.23,19.62,19.62,0,0,0-5.51-1.67q-6.57-1.38-9.25-3.74a8.06,8.06,0,0,1-2.69-6.4,8.59,8.59,0,0,1,3.34-7.21q3.38-2.59,9.94-2.59c4.37,0,7.66.83,9.84,2.49a11.52,11.52,0,0,1,4.27,7.18l-8.73,1.94a7.43,7.43,0,0,0-1.87-3.84A4.9,4.9,0,0,0,157,33.25a5.38,5.38,0,0,0-3.09.75,2.38,2.38,0,0,0-1.08,2.07,2.72,2.72,0,0,0,.43,1.6,4.79,4.79,0,0,0,2,1.28,24.33,24.33,0,0,0,4.59,1.22c4.35.85,7.41,2.1,9.15,3.74a8.21,8.21,0,0,1,2.63,6.26,9.05,9.05,0,0,1-3.38,7.51q-3.37,2.67-10.33,2.66Z"/><path id="path2698-80-9-7" class="cls-1" d="M176.1,49.39V35.21h-3.7V27.54h3.7v-8h9.12v8h8.4v7.67h-8.4V47.65A4.1,4.1,0,0,0,186,50.5a3.9,3.9,0,0,0,2.89.89,23.86,23.86,0,0,0,4.16-.72l1,8.46a30.76,30.76,0,0,1-3.64.92,21.64,21.64,0,0,1-3.9.29q-5.25,0-7.88-3.05A11.82,11.82,0,0,1,176.1,49.39Z"/><path id="path2700-6-5-4" class="cls-1" d="M205.26,59.39h-9.21V27.54h9.21V38.89h.13a35.72,35.72,0,0,1,1.35-5.84,9.57,9.57,0,0,1,1.9-3.48A6,6,0,0,1,211,28a9.07,9.07,0,0,1,3-.43h1.54V38h-3.48c-2.6,0-4.38.43-5.34,1.31s-1.45,2.49-1.45,4.85Z"/><path id="path2702-9-9-3" class="cls-1" d="M237.61,59.39V50.53h-.13q-1,5.22-3.71,7.52a9.75,9.75,0,0,1-6.66,2.29c-3.34,0-5.83-1-7.44-3.05s-2.43-4.85-2.43-8.46V27.54h9.21v18.7a6.65,6.65,0,0,0,1.28,4.26,5,5,0,0,0,4,1.58,5.31,5.31,0,0,0,5.84-5.84V27.54h9.12V59.39Z"/><path id="path2704-7-46-3" class="cls-1" d="M263.82,60.34a23.8,23.8,0,0,1-5.61-.59,13.93,13.93,0,0,1-4-1.51,10.1,10.1,0,0,1-2.75-2.36A11.37,11.37,0,0,1,249.71,53a15.87,15.87,0,0,1-.88-3.38l8.53-1.67a8.17,8.17,0,0,0,2.26,4.23A6.35,6.35,0,0,0,264,53.55c2.93,0,4.43-1,4.5-3a2.55,2.55,0,0,0-1.41-2.23,19.62,19.62,0,0,0-5.51-1.67q-6.57-1.38-9.25-3.74a8.06,8.06,0,0,1-2.69-6.4A8.59,8.59,0,0,1,253,29.28q3.38-2.59,9.94-2.59t9.84,2.49A11.52,11.52,0,0,1,277,36.36l-8.73,1.94a7.43,7.43,0,0,0-1.87-3.84,4.9,4.9,0,0,0-3.57-1.21,5.41,5.41,0,0,0-3.09.75,2.38,2.38,0,0,0-1.08,2.07,2.72,2.72,0,0,0,.43,1.6,4.79,4.79,0,0,0,2,1.28,24.33,24.33,0,0,0,4.59,1.22q6.53,1.28,9.16,3.74a8.24,8.24,0,0,1,2.62,6.26,9.05,9.05,0,0,1-3.38,7.51q-3.37,2.67-10.33,2.66Z"/><path id="path2706-2-4-1" class="cls-1" d="M282,49.39V35.21h-3.71V27.54H282v-8h9.12v8h8.4v7.67h-8.4V47.65a4.1,4.1,0,0,0,.82,2.85,3.9,3.9,0,0,0,2.89.89,24.16,24.16,0,0,0,4.16-.72l1,8.46a31.25,31.25,0,0,1-3.64.92,21.72,21.72,0,0,1-3.9.29q-5.25,0-7.88-3.05A11.77,11.77,0,0,1,282,49.39Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1 @@
<svg id="svg1681" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 393.45 322.36"><defs><style>.cls-1{fill:#fff;}</style></defs><g id="layer1"><path id="path1927-7-5-9-8-2-7-6-3-3-4-5-3-2-2-0" class="cls-1" d="M112.06,45.08c-5.26,0-8.16,0-14,5.8L5.8,143.13C0,148.91,0,151.87,0,157.11v15.32c0,5.24,0,8.19,5.77,14l57.05,57.26,28-28L40.13,164.81l79.58-79.58L170.4,136.1l28-28-57-57.18c-5.9-5.89-8.75-5.82-14-5.83Z" transform="translate(0 0)"/><path id="path1931-4-9-5-1-0-2-97-3-8-9-0-1-4-7-55" class="cls-1" d="M323,78l-28,28,58.41,58.81L273.8,244.33l-58.4-58.81-28,28,64.68,65.12c5.86,5.86,8.74,5.83,14,5.84l15.28,0c5.26,0,8.22,0,14-5.8l92.26-92.25c5.78-5.78,5.78-8.72,5.79-14V157.14c0-5.23-.11-8.3-5.74-14Z" transform="translate(0 0)"/><g id="g2384"><path id="path2388" class="cls-1" d="M336,2l15.78,15.78a6.69,6.69,0,0,1,0,9.49L58.59,320.39a6.69,6.69,0,0,1-9.49,0L33.32,304.62a6.71,6.71,0,0,1,0-9.5L326.47,2A6.69,6.69,0,0,1,336,2Z" transform="translate(0 0)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 KiB

1
assets/base/dropdown.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.293 7.793a1 1 0 0 1 1.414 0L12 14.086l6.293-6.293a1 1 0 1 1 1.414 1.414L13.414 15.5a2 2 0 0 1-2.828 0L4.293 9.207a1 1 0 0 1 0-1.414" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 295 B

3
assets/base/info.svg Normal file
View File

@ -0,0 +1,3 @@
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.5 11.5L8.5 8.5M8.5 5.5H8.4925M1 8.5C1 4.35786 4.35786 1 8.5 1C12.6421 1 16 4.35786 16 8.5C16 12.6421 12.6421 16 8.5 16C4.35786 16 1 12.6421 1 8.5Z" stroke="#8CBDE0" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 346 B

View File

@ -0,0 +1,3 @@
<svg width="27" height="28" viewBox="0 0 27 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.98075 21.11C9.71232 22.4561 11.8758 23.1236 14.0648 22.987C16.2538 22.8505 18.3176 21.9193 19.8684 20.3684C21.4193 18.8176 22.3505 16.7538 22.487 14.5648C22.6236 12.3758 21.9561 10.2123 20.61 8.48075L7.98075 21.11ZM6.39 19.5193L19.0193 6.89C17.2877 5.5439 15.1242 4.87643 12.9352 5.01298C10.7462 5.14953 8.68241 6.0807 7.13156 7.63156C5.5807 9.18241 4.64953 11.2462 4.51298 13.4352C4.37643 15.6242 5.0439 17.7877 6.39 19.5193ZM13.5 25.25C7.28663 25.25 2.25 20.2134 2.25 14C2.25 7.78663 7.28663 2.75 13.5 2.75C19.7134 2.75 24.75 7.78663 24.75 14C24.75 20.2134 19.7134 25.25 13.5 25.25Z" fill="#0F0F0F"/>
</svg>

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

View File

@ -0,0 +1,3 @@
<svg width="17" height="20" viewBox="0 0 17 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.9314 4.42782C16.6696 2.2789 14.9732 0.585406 12.9623 0.257251C12.623 0.201802 11.3376 0 8.35989 0H8.33765C5.35916 0 4.72014 0.201802 4.38088 0.257251C2.42595 0.576314 0.640663 2.098 0.207516 4.27238C-0.000822073 5.34319 -0.0230559 6.53037 0.0156474 7.61935C0.0708199 9.18104 0.0815251 10.74 0.209987 12.2953C0.298796 13.3285 0.453721 14.3534 0.673602 15.3623C1.08534 17.2258 2.75205 18.7766 4.38499 19.4093C6.1333 20.0691 8.01345 20.1786 9.81497 19.7256C10.0131 19.6747 10.2091 19.6156 10.4029 19.5483C10.8402 19.3947 11.3532 19.2229 11.7304 18.9211C11.7355 18.9169 11.7398 18.9114 11.7428 18.9051C11.7458 18.8988 11.7474 18.8919 11.7476 18.8848V17.3776C11.7475 17.371 11.7461 17.3644 11.7434 17.3585C11.7408 17.3525 11.7369 17.3473 11.7322 17.3432C11.7274 17.3391 11.7219 17.3363 11.7161 17.3348C11.7102 17.3334 11.7041 17.3334 11.6982 17.3349C10.544 17.6393 9.36128 17.7918 8.17461 17.7894C6.1324 17.7894 5.58314 16.7195 5.42585 16.2741C5.29943 15.8891 5.21914 15.4876 5.18704 15.0796C5.18672 15.0728 5.18787 15.0659 5.19037 15.0597C5.19288 15.0534 5.19672 15.0479 5.20152 15.0435C5.20634 15.0392 5.21202 15.0362 5.21808 15.0347C5.22415 15.0332 5.23044 15.0334 5.23646 15.0351C6.37144 15.3374 7.5349 15.4899 8.70246 15.4896C8.98326 15.4896 9.26323 15.4896 9.54405 15.4814C10.7183 15.4451 11.956 15.3787 13.1113 15.1296C13.1401 15.1233 13.169 15.1178 13.1937 15.1096C15.016 14.7233 16.7502 13.5107 16.9265 10.44C16.9331 10.3191 16.9495 9.17377 16.9495 9.04832C16.9504 8.62201 17.0739 6.02404 16.9314 4.42782ZM14.1267 12.0899H12.2105V6.90851C12.2105 5.8177 11.7987 5.26138 10.9612 5.26138C10.0406 5.26138 9.57945 5.91949 9.57945 7.2194V10.0555H7.67476V7.2194C7.67476 5.91949 7.2128 5.26138 6.29216 5.26138C5.45962 5.26138 5.04376 5.8177 5.04293 6.90851V12.0899H3.12837V6.75124C3.12837 5.66042 3.38063 4.79383 3.88514 4.15146C4.40557 3.51062 5.08824 3.18156 5.93559 3.18156C6.91633 3.18156 7.65747 3.59787 8.15154 4.42962L8.62835 5.3132L9.10596 4.42962C9.60004 3.59787 10.3412 3.18156 11.3203 3.18156C12.1668 3.18156 12.8494 3.51062 13.3715 4.15146C13.8761 4.79324 14.1283 5.65983 14.1283 6.75124L14.1267 12.0899Z" fill="#6F6F6F"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

View File

@ -0,0 +1,7 @@
<svg width="16" height="24" viewBox="0 0 16 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.59155 18.9401V8.93871C3.59155 7.58537 4.1291 6.28746 5.08593 5.3305C6.04276 4.37355 7.34051 3.83594 8.69367 3.83594H10.7345" stroke="#6F6F6F" stroke-width="2.5"/>
<path d="M3.59155 18.9418V15.8801C3.59155 14.5268 4.1291 13.2289 5.08593 12.2719C6.04276 11.315 7.34051 10.7773 8.69367 10.7773H10.7345" stroke="#6F6F6F" stroke-width="2.5"/>
<path d="M12.1632 5.674C13.1776 5.674 13.9999 4.85154 13.9999 3.837C13.9999 2.82245 13.1776 2 12.1632 2C11.1488 2 10.3264 2.82245 10.3264 3.837C10.3264 4.85154 11.1488 5.674 12.1632 5.674Z" stroke="#6F6F6F" stroke-width="2.5"/>
<path d="M12.1632 12.6154C13.1776 12.6154 13.9999 11.7929 13.9999 10.7784C13.9999 9.76386 13.1776 8.94141 12.1632 8.94141C11.1488 8.94141 10.3264 9.76386 10.3264 10.7784C10.3264 11.7929 11.1488 12.6154 12.1632 12.6154Z" stroke="#6F6F6F" stroke-width="2.5"/>
<path d="M3.59165 22.0002C4.60606 22.0002 5.42841 21.1777 5.42841 20.1632C5.42841 19.1486 4.60606 18.3262 3.59165 18.3262C2.57723 18.3262 1.75488 19.1486 1.75488 20.1632C1.75488 21.1777 2.57723 22.0002 3.59165 22.0002Z" stroke="#6F6F6F" stroke-width="2.5"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

View File

Before

Width:  |  Height:  |  Size: 5.0 MiB

After

Width:  |  Height:  |  Size: 5.0 MiB

View File

@ -1,4 +1,40 @@
document.addEventListener('DOMContentLoaded', function () { // === Navbar dropdown toggle ===
document.addEventListener("DOMContentLoaded", function () {
const dropdown = document.querySelector(".nav-dropdown");
if (!dropdown) return;
const toggle = dropdown.querySelector(".nav-dropdown-toggle");
const menu = dropdown.querySelector(".nav-dropdown-menu");
toggle.addEventListener("click", function (e) {
e.stopPropagation();
dropdown.classList.toggle("open");
menu.style.display = dropdown.classList.contains("open") ? "block" : "none";
});
document.addEventListener("click", function () {
dropdown.classList.remove("open");
menu.style.display = "none";
});
});
// === Navbar dropdown toggle ENDS === //
// === NAVBAR SCROLL STARTS === //
window.addEventListener("scroll", function () {
const header = document.querySelector(".header-navbar");
if (this.window.scrollY > 20) {
header.classList.add("scrolled");
} else {
header.classList.remove("scrolled");
}
});
// === NAVBAR SCROLL ENDS === //
document.addEventListener("DOMContentLoaded", function () {
const collapsibleButton = document.querySelector(".hamburger-menu"); const collapsibleButton = document.querySelector(".hamburger-menu");
const menuContent = document.querySelector(".menu-content"); const menuContent = document.querySelector(".menu-content");
collapsibleButton.addEventListener("click", function () { collapsibleButton.addEventListener("click", function () {
@ -19,20 +55,19 @@ document.addEventListener('DOMContentLoaded', function () {
// initializeCarousel(); // initializeCarousel();
// }) // })
// .catch(error => console.error('Error loading JSON:', error)); // .catch(error => console.error('Error loading JSON:', error));
} });
);
function createCarouselItems(items) { function createCarouselItems(items) {
const carousel = document.querySelector('#carousel'); const carousel = document.querySelector("#carousel");
items.forEach(item => { items.forEach((item) => {
const itemDiv = document.createElement('div'); const itemDiv = document.createElement("div");
itemDiv.className = 'carousel-item' itemDiv.className = "carousel-item";
const link = document.createElement('a'); const link = document.createElement("a");
link.className = 'carousel-link'; link.className = "carousel-link";
link.href = item.link; link.href = item.link;
link.target = '_blank'; link.target = "_blank";
link.rel = 'noopener noreferrer'; link.rel = "noopener noreferrer";
const linkText = document.createTextNode(item.description); const linkText = document.createTextNode(item.description);
link.appendChild(linkText); link.appendChild(linkText);
@ -42,7 +77,7 @@ function createCarouselItems(items) {
} }
function initializeCarousel() { function initializeCarousel() {
const carousel = document.querySelector('#carousel'); const carousel = document.querySelector("#carousel");
const items = Array.from(carousel.children); const items = Array.from(carousel.children);
const totalItems = items.length; const totalItems = items.length;
const middleIndex = Math.floor(totalItems / 2); const middleIndex = Math.floor(totalItems / 2);
@ -58,8 +93,8 @@ function initializeCarousel() {
let positionIndex = (currentIndex + index + totalItems) % totalItems; let positionIndex = (currentIndex + index + totalItems) % totalItems;
let offset = positionIndex - middleIndex; let offset = positionIndex - middleIndex;
item.style.transform = `translateY(${offset * 100}%)`; item.style.transform = `translateY(${offset * 100}%)`;
item.classList.toggle('active', positionIndex === middleIndex); item.classList.toggle("active", positionIndex === middleIndex);
item.style.visibility = 'visible'; item.style.visibility = "visible";
}); });
} }
@ -68,7 +103,7 @@ function initializeCarousel() {
} }
function initializeCompaniesCarousel() { function initializeCompaniesCarousel() {
const slider = document.getElementById('logoSlider'); const slider = document.getElementById("logoSlider");
slider.innerHTML += slider.innerHTML; slider.innerHTML += slider.innerHTML;
@ -88,29 +123,20 @@ function initializeCompaniesCarousel() {
requestAnimationFrame(animate); requestAnimationFrame(animate);
} }
document.addEventListener('DOMContentLoaded', function () { document.addEventListener("DOMContentLoaded", function () {
const footer = document.querySelector('footer'); const footer = document.querySelector("footer");
const path = window.location.pathname; const path = window.location.pathname;
if (!footer) return; if (!footer) return;
const borderStyles = {
'/software.html': '2px solid var(--light-teal)',
'/blog.html': '2px solid var(--pink)',
};
if (borderStyles[path]) {
footer.style.borderTop = borderStyles[path];
}
// Set hover color // Set hover color
const hoverColors = { const hoverColors = {
'/software.html': 'var(--light-teal)', "/software.html": "var(--light-teal)",
'/blog.html': 'var(--pink)', "/blog.html": "var(--pink)",
}; };
if (hoverColors[path]) { if (hoverColors[path]) {
const style = document.createElement('style'); const style = document.createElement("style");
style.innerHTML = ` style.innerHTML = `
.footer-links a:hover { .footer-links a:hover {
color: ${hoverColors[path]}; color: ${hoverColors[path]};

190
assets/pgp/anton.asc Normal file
View File

@ -0,0 +1,190 @@
anton@distrust.co
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGI/PwIBEACfbDXsSIoZzZP8jrk7h2D98bUW2lRYxxpRqjLfvr5M1z3VNHCC
HaHXIPhqTdu6BXWKJJxcdkvp4z5u6aykcAjcRi0MpcTX5tU9RnSvA1HIdDmLukIy
JFEPHxoCeeFBSgmtWYczn3eSmsAQBKCLFsEmVyjpivGlphFAfzcDqtKLhaQVjVU8
YTPty7JIoiYSvCXTHCdYenfQmbpldFuT/60xsc9PJP6wMGdszDc16XIPZUKBfRtf
qPQZPN37SHczuqCrrOr+8+4q1ZcxBRAZxcPpfPk7WG1UDfTZFLvEdNCIaG0+FDkQ
8yvrS/GC9UgO3uRieZ8K4Cd0iMR96nvizqQFHvB/Wn1VwGlptYnlbEcVXttV7v1F
PBtojkEALKXNUxupesnu4YgY09pJAqdhLB89Yk+7SBZWY7C8Ero79f6+ClkHWzM5
WJHOubKf91syeyqjlqdaxlHhVWH3gqpvFy42seXlmwPSRaKNuaHSwXizPmHinnSs
2uFaRdKevJ4MuhjIxXQlMRFzC74X8CIW5IJ4vK+zcslBFCpe1CuwDQoesY2Wblv+
E40YgtUDuDKO1keintjtxD1z5/8SUFLNQhUPx0v08P+p6C3AaVL5s2OtH7KJiDaP
SuT+V66FaKYLBmi0+ogIuStEJ8abtoRoWj9TWEMhrtnPv+5Qocr32cPgSQARAQAB
tB5BbnRvbiBMaXZhamEgPGFudG9uQGxpdmFqYS5tZT6JAlQEEwEKAD4WIQT0v1yB
7Hil3TQcke7cS30fUuC6TQUCYj8/AgIbAQUJA8JnAAULCQgHAgYVCgkICwIEFgID
AQIeAQIXgAAKCRDcS30fUuC6TRDOD/9DTjXjXvQJEBP0O0DCNEYSOxEeecZNslNo
5z9G7skCjzKU4Ytl7X1w/xE+LtpqrluDXzomLcoHPa5KN3kaiSwnzYXe4FWwv2Xd
1TmPyDzJJ8A/DGGOjYndVSpYKO2kKuxT/S2xg4KrfXr/oc8mIR0rqs3a/46GMqHR
sz4D5Gm62XfK/x+WIHbHi+CQsHAzwfBKUzReeqROLicJya/QKOaMDMtQpoMcTHPs
hLj1uKwl6ThGKM8cEzQvFxv1PknCOcqDdIMTrNHIsgY7VWs/bohGCZ7nf3lJ9aMY
17vZ0RrslJz+wCLUSxgEFqcJwsauHqEttTGAy+Uqi8Iunr9WP+unXsvmjNEWCkpr
OSP6wAb9KaLHc0dL22vRuOtAeLGE4vRrm+++uTuehz2tYHGKP3+AjHXeNTg5ejRe
34KPzl/LbxTDRyqx9n/XdLQLVvOxwo8ecm+bDsFqQ7of16C9/v7FJBGtcLVpQzVe
MD7d/6ABL73MtdGpJNC63fwPZnuNrEIrRKuOmpOq4YZsHmqqzgeuQAochd5PLt+N
Nti+FZ94/WiN5EKzjQO2HsmbXXJslY8lvsz5WHA5K68DMdb6ae0fBzRB4Jdg1+7y
F2LXE5k9rPDC0G0lyCEtZJWDhk4QbR5tEw/EQ0dH73843K2c4YoZjmw59DVMe8LO
rlrlm0qr7IkDSQQTAQoBMwIbAQULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAIZAVMU
gAAAAAAQADpwcm9vZkBhcmlhZG5lLmlkaHR0cHM6Ly90d2l0dGVyLmNvbS9hbnRv
bmxpdmFqYS9zdGF0dXMvMTc2MDczMzM2OTIzNzk1MDUyNzUUgAAAAAAQABxwcm9v
ZkBhcmlhZG5lLmlkZG5zOmFudG9ubGl2YWphLmNvbT90eXBlPVRYVDcUgAAAAAAQ
AB5wcm9vZkBhcmlhZG5lLmlkaHR0cHM6Ly9tYXN0b2Rvbi5vbmxpbmUvQGFudG9u
LxSAAAAAABAAFnByb29mQGFyaWFkbmUuaWRkbnM6bGl2YWphLm1lP3R5cGU9VFhU
FiEE9L9cgex4pd00HJHu3Et9H1Lguk0FAmYEi+AFCQeHs94ACgkQ3Et9H1Lguk3S
DBAAlvb+co0gPU0qJXOZld3UBY8stUK1VYeayWTHJ9977lnZzJ+gKUalbhsKvj5K
i7w6l2Xe+4VJzjpmc1I0pAR9anoKwscR/bdseXuXQJJ6x7E3Xn3ZZNyfk1M8jVns
KeTQ17quVy9m8qYJ3057sQ/oxXACYAD1D+mjhS5FrFU6XfBcEvaRYT26TEAwYadZ
I/KNFZfnEs0ZGDgiw14lrTCkMZuEyWNm0/2qVIC3FCSNTm51NRMmD3YbM4VgAc+l
nk9f9bRurGA2rUZJ/BNvGvalhD1rwxWg71XeXvnbk7+UqCkdtNfRtmVAvdpJ+EzW
VbRSX2CgJHff+E4yv5cCI1sB6GD9ODDTucPTY+uMuZOXM2k9k6lSt2wDp2FJ6bpo
IRoUl1D4pSNQEsGA1znL+CZLC9IEih+EXxfALzV2sy+laaTkMJCmXJQOke5egDhk
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
fbv5KWxmjZSWuLgbNQWxS4RKyNwed3VV4w==
=azKT
-----END PGP PUBLIC KEY BLOCK-----

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More