Refresh website
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
nemunaire 2025-04-16 14:18:28 +02:00
parent a6cac31ec2
commit 77bd52330d
16 changed files with 469 additions and 205 deletions

View file

@ -45,11 +45,11 @@ languages:
carousel:
- title: "domains-lists"
description: "**Page d'accueil:** liste des domaines, de différents hébergeurs"
description: "**Page d'accueil:** liste des domaines, de différents hébergeurs"
image: "/img/screenshots/domains-list.webp"
- title: "domain-abstract"
description: "Une zone simplifiée"
description: "**La gestion d'une zone:** groupé par sous-domaines et services"
image: "/img/screenshots/domain-abstract.webp"
- title: "service-caa"
@ -77,7 +77,7 @@ languages:
image: "/img/screenshots/domain-abstract-list.webp"
- title: "sources"
description: "Liste des sources existantes où récupérer les domaines"
description: "Liste des hébergeurs existantes où récupérer les domaines"
image: "/img/screenshots/sources.png"
params:
@ -106,7 +106,7 @@ params:
image: "/img/screenshots/domains-list.webp"
- title: "domain-abstract"
description: "Simplified zone: records grouped by services"
description: "**Manage a zone:** records are grouped by subdomain and service"
image: "/img/screenshots/domain-abstract.webp"
- title: "service-caa"
@ -134,7 +134,7 @@ params:
image: "/img/screenshots/domain-abstract-list.webp"
- title: "sources"
description: "Existing sources where pull domains"
description: "Existing name service providers where pull domains"
image: "/img/screenshots/sources.png"
menu:

5
content/community.en.md Normal file
View file

@ -0,0 +1,5 @@
+++
title = "Community"
+++
{{% partial "community.html" %}}

5
content/community.fr.md Normal file
View file

@ -0,0 +1,5 @@
+++
title = "Community"
+++
{{% partial "community.html" %}}

View file

@ -1,8 +1,8 @@
- id: slogan
translation: "Finally a simple interface for domain names."
translation: "Manage all your domain names in one place."
- id: lead
translation: "is a modern open-source web application, that aims to simplify all your usages of domain names. Connecting a blog, a shop or doing advanced stuff is just a click away."
translation: "is a free web application that centralizes the management of your domain names from different registrars and hosts."
- id: tryit
translation: "Try it online now"
@ -44,20 +44,11 @@
translation: "Press Kit"
- id: features-title
translation: |
Do you find <span class="text-hilight">hosting providers' interfaces</span> for domain name <span class="text-hilight">incomprehensible</span> or <span class="text-hilight">unusable</span>?
translation: "Main features"
- id: features-lead
translation: |
Reconcile with your domain names, thanks to an interface designed for you.
- id: features-col1
translation: |
**Neophyte** friends, our **simple** interface will guide you in the configuration of your domain name, without going through the proper domain name terminology.
- id: features-col2
translation: |
Recognized **experts:** change your point of view on DNS, with an **ergonomic** interface in the age of time that will meet all your expectations.
Find out how happyDomain can simplify your domain name management.
- id: features-grid-title
translation: What can happyDomain do for you today?
@ -65,9 +56,30 @@
- id: features-grid-footer
translation: And we have many other features in preparation...
- id: discover-title
translation: "How it works"
- id: discover-lead
translation: "A simple approach to efficient domain management."
- id: discover-1-title
translation: "Connect your accounts"
- id: discover-1-text
translation: "Add your access information to the various registrars and DNS hosts."
- id: discover-2-title
translation: "Import your domains"
- id: discover-2-text
translation: "Automatically import all your domain names and configurations into happyDomain."
- id: discover-3-title
translation: "Manage with efficiently"
- id: discover-3-text
translation: "Edit, add and synchronize all your DNS records from a single interface."
- id: downloads-title
translation: |
Downloads
Downloads.
- id: downloads-subtitle
translation: |
happyDomain on premise.
- id: downloads-docker
translation: |
@ -167,18 +179,43 @@
- id: footer-us-button-link
translation: "/en/who-we-are/"
- id: footer-happydomain-features
translation: "Features"
- id: footer-happydomain-testimonials
translation: "Testimonials"
- id: footer-happydomain-downloads
translation: "Downloads"
- id: footer-happydomain-prices
translation: "Pricing"
- id: footer-happydomain-github
translation: "GitHub"
- id: footer-resources
translation: "Resources"
- id: footer-resources-docs
translation: "Documentation"
- id: footer-resources-api
translation: "API"
- id: footer-resources-blog
translation: "Blog"
- id: footer-resources-community
translation: "Contribute"
- id: footer-resources-faq
translation: "FAQ"
- id: footer-company
translation: "Our association"
- id: footer-company-about
translation: "About us"
- id: footer-company-contact
translation: "Contact"
- id: footer-follow
translation: "Follow us"
- id: cta-account-title
translation: "Add your domain names"
translation: "Ready to simplify your domain management?"
- id: cta-account-text
translation: "3 minutes to create your new preferred domain name management space."
- id: cta-account-button1
translation: "Join hundreds of users who trust happyDomain to centralize and facilitate their domain name management."
- id: cta-account-button
translation: "Create my online space"
- id: cta-account-or
translation: "or"
- id: cta-account-button2
translation: "On premise setup"
- id: cta-account-button2-link
translation: "https://help.happydomain.org/en/deploy/docker/"
- id: cta-newsletter-title
translation: "Stay a step ahead!"

View file

@ -1,11 +1,11 @@
- id: slogan
translation: "L'interface des noms de domaines."
translation: "Gérez tous vos noms de domaine en un seul endroit."
- id: lead
translation: "est une application web libre, moderne, qui veut vous simplifier l'usage des noms de domaines. Connecter un blog, une boutique ou effectuer des opérations avancées devient vraiment facile."
translation: "est une application web libre qui centralise la gestion de vos noms de domaine provenant de différents bureaux d'enregistrement et hébergeurs."
- id: tryit
translation: "Essayer en ligne maintenant"
translation: "Essayer maintenant"
- id: downloadit
translation: "Télécharger"
@ -44,20 +44,10 @@
translation: "Dossier de presse"
- id: features-title
translation: |
Vous trouvez les <span class="text-hilight">interfaces des hébergeurs</span> de noms de domaine <span class="text-hilight">incompréhensibles</span> ou <span class="text-hilight">inutilisables</span>?
translation: "Fonctionnalités principales"
- id: features-lead
translation: |
Réconciliez-vous avec vos noms de domaine, grâce à une interface pensée pour vous.
- id: features-col1
translation: |
Amis **néophytes**, notre interface **simple** saura vous guider dans la configuration de votre nom de domaine, sans passer par la terminologie propre des noms de domaine.
- id: features-col2
translation: |
**Experts** chevronnés: changez votre point de vue sur le DNS, avec une interface **ergonomique** dans lair du temps, qui répondra à toutes vos attentes.
translation: "Découvrez comment happyDomain peut simplifier la gestion de vos noms de domaine."
- id: features-grid-title
translation: Que peut faire happyDomain pour vous aujourd'hui?
@ -65,9 +55,30 @@
- id: features-grid-footer
translation: Et nous avons encore bien d'autres fonctionnalités en préparation...
- id: discover-title
translation: "Comment ça marche"
- id: discover-lead
translation: "Une approche simple pour une gestion de domaine efficace."
- id: discover-1-title
translation: "Connectez vos comptes"
- id: discover-1-text
translation: "Ajoutez vos informations d'accès aux différents bureaux d'enregistrement et hébergeurs DNS."
- id: discover-2-title
translation: "Importez vos domaines"
- id: discover-2-text
translation: "Importez automatiquement tous vos noms de domaine et leurs configurations dans happyDomain."
- id: discover-3-title
translation: "Gérez efficacement"
- id: discover-3-text
translation: "Modifiez, ajoutez et synchronisez tous vos enregistrements DNS depuis une seule interface."
- id: downloads-title
translation: |
Téléchargements
Téléchargements.
- id: downloads-subtitle
translation: |
happyDomain chez vous.
- id: downloads-docker
translation: |
@ -167,18 +178,43 @@
- id: footer-us-button-link
translation: "/fr/qui-sommes-nous/"
- id: footer-happydomain-features
translation: "Fonctionnalités"
- id: footer-happydomain-testimonials
translation: "Témoignages"
- id: footer-happydomain-downloads
translation: "Téléchargements"
- id: footer-happydomain-prices
translation: "Tarification"
- id: footer-happydomain-github
translation: "GitHub"
- id: footer-resources
translation: "Ressources"
- id: footer-resources-docs
translation: "Documentation"
- id: footer-resources-api
translation: "API"
- id: footer-resources-blog
translation: "Blog"
- id: footer-resources-community
translation: "Contribuez"
- id: footer-resources-faq
translation: "FAQ"
- id: footer-company
translation: "L'association"
- id: footer-company-about
translation: "À propos"
- id: footer-company-contact
translation: "Contact"
- id: footer-follow
translation: "Suivez-nous"
- id: cta-account-title
translation: "Ajoutez vos noms de domaines"
translation: "Prêt à simplifier votre gestion de domaines?"
- id: cta-account-text
translation: "Créez en 3 minutes votre nouvel espace préféré de gestion des noms de domaine."
- id: cta-account-button1
translation: "Rejoignez des centaines d'utilisateurs qui font confiance à happyDomain pour centraliser et faciliter leur gestion de noms de domaine."
- id: cta-account-button
translation: "Créer mon espace en ligne"
- id: cta-account-or
translation: "ou"
- id: cta-account-button2
translation: "Installer chez moi"
- id: cta-account-button2-link
translation: "https://help.happydomain.org/fr/deploy/testing/"
- id: cta-newsletter-title
translation: "Gardez une longueur d'avance!"

View file

@ -15,25 +15,27 @@
{{ partial "carousel.html" . }}
{{ partial "features.html" . }}
{{ partial "discover.html" . }}
{{ partial "features.html" . }}
{{/* partial "testimonials.html" . */}}
{{ partial "cta-join.html" . }}
{{ partial "downloads.html" . }}
{{ partial "community.html" . }}
{{/* partial "community.html" . */}}
{{ partial "cta-newsletter.html" . }}
{{/* partial "cta-newsletter.html" . */}}
</div>
<!-- /#all -->
{{ partial "survey.html" . }}
{{ partial "footer.html" . }}
{{ partial "survey.html" . }}
{{ partial "scripts.html" . }}
</body>

View file

@ -1,14 +1,14 @@
{{ if isset .Site.Params "carousel" }}
{{ if gt (len .Site.Params.carousel) 0 }}
<div class="carousel text-light p-4 pt-5 d-flex flex-nowrap align-items-center" style="gap: 1em 1em; overflow-x: scroll">
<section id="screenshots" class="carousel text-light p-4 pt-5 d-flex flex-nowrap align-items-center" style="gap: 1em 1em; overflow-x: scroll">
{{ range sort .Site.Params.carousel "weight" }}
<figure class="" style="min-width: 40vw">
<figure class="my-5 mr-5 text-center" style="min-width: 65vw">
<a href="{{ .image }}">
<img class="rounded img-thumbnail" src="{{ .image }}" alt="{{ .title }}">
<img class="rounded img-thumbnail" src="{{ .image }}" alt="{{ .title }}" style="max-height: 80vh;">
</a>
<figcaption class="mt-2 text-center">{{ .description | markdownify }}</figcaption>
</figure>
{{ end }}
</div>
</section>
{{ end }}
{{ end }}

View file

@ -1,28 +1,14 @@
<div class="bg-light">
<div class="container pb-5">
<div class="card bg-secondary text-light" style="border-radius: 1rem; box-shadow: 3px 3px 5px #999">
<div class="card-body px-5 py-4">
<div class="row">
<div class="col-md-7 d-flex flex-column justify-content-center my-4">
<h2 class="font-weight-bold">
{{ i18n "cta-account-title" }}
</h2>
<p class="lead mb-0">
{{ i18n "cta-account-text" }}
</p>
</div>
<div class="offset-xl-1 col-xl-4 col-md-5 d-flex flex-column justify-content-center">
<a href="/join" class="btn btn-lg btn-primary py-2 mt-2" data-umami-event="cta-account-join">
{{ i18n "cta-account-button1" }}
</a>
<div class="text-center py-2">
&ndash; {{ i18n "cta-account-or" }} &ndash;
</div>
<a href="{{ i18n "cta-account-button2-link" }}" target="_blank" class="btn btn-lg btn-outline-info py-2 mb-2" data-umami-event="cta-account-download">
{{ i18n "cta-account-button2" }}
</a>
</div>
</div>
<!-- Call to Action Section -->
<section id="cta">
<div class="container">
<div class="cta-content">
<h2 class="display-5 font-weight-bold mb-4">{{ i18n "cta-account-title" }}</h2>
<div class="row mb-4">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 lead text-light">
{{ i18n "cta-account-text" }}
</p>
</div>
<a href="/join" class="btn btn-lg btn-light px-4" style="border-radius: 2em">{{ i18n "cta-account-button" }}</a>
</div>
</div>
</div>
</section>

View file

@ -1,42 +1,35 @@
<div class="container">
<div class="row mt-3">
<h3 class="text-center font-weight-bolder mt-5 mb-5 offset-md-2 col-md-8" style="line-height: 1.5em;">
{{ i18n "features-title" | safeHTML }}
</h3>
</div>
<div class="row mt-4 mb-5 text-justify">
<div class="col-md-4 pt-5">
<p class="font-weight-bold" style="font-size: 1.15rem;">
{{ i18n "features-lead" }}
</p>
</div>
<div class="col-sm-6 col-md-4">
<div class="text-center mb-2">
<hr style="margin-top: 21px; margin-bottom: -21px; border-color: #9720c955;">
<div class="circle-head" style="background-color: #4b1064">
<i class="bi bi-controller"></i>
</div>
<section id="discover" class="py-5" style="background: linear-gradient(to right, var(--secondary-ultralight) 0%, white 100%)">
<div class="container">
<div class="section-title text-center mb-5">
<h2 class="mb-3 display-4">
{{ i18n "discover-title" }}
</h2>
<div class="row">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 text-muted" style="font-size: 1.15rem;">
{{ i18n "discover-lead" }}
</p>
</div>
<p>
{{ i18n "features-col1" | markdownify }}
</p>
</div>
<div class="col-sm-6 col-md-4">
<div class="text-center mb-2">
<hr style="margin-top: 21px; margin-bottom: -21px; border-color: #9720c955;">
<div class="circle-head" style="background-color: #4b1064">
<i class="bi bi-rocket-takeoff"></i>
</div>
</div>
<p>
{{ i18n "features-col2" | markdownify }}
</p>
</div>
</div>
</div>
<div class="container my-5">
<h3 class="text-center mb-5">
<div class="steps">
<div class="step">
<div class="step-number">1</div>
<h3>{{ i18n "discover-1-title" }}</h3>
<p>{{ i18n "discover-1-text" }}</p>
</div>
<div class="step">
<div class="step-number">2</div>
<h3>{{ i18n "discover-2-title" }}</h3>
<p>{{ i18n "discover-2-text" }}</p>
</div>
<div class="step">
<div class="step-number">3</div>
<h3>{{ i18n "discover-3-title" }}</h3>
<p>{{ i18n "discover-3-text" }}</p>
</div>
</div>
<h3 class="text-center my-5">
{{ i18n "learnhow" }} happy<strong>Domain</strong> {{ i18n "canhelpyou" }}
</h3>
<div class="row row-cols-2 row-cols-sm-3 row-cols-md-4 row-cols-lg-5 justify-content-center">
@ -71,4 +64,5 @@
</a>
</div>
</div>
</div>
</div>
</section>

View file

@ -1,4 +1,4 @@
<div id="downloads" class="jumbotron" style="scroll-margin-top: 2em;">
<div id="downloads" class="py-5" style="scroll-margin-top: 2em;">
<div class="container">
<div class="row">
<div class="col-3 d-none d-md-flex flex-column justify-content-center">
@ -7,6 +7,9 @@
<div class="col">
<h3 class="font-weight-bolder">
{{ i18n "downloads-title" }}
<span class="text-muted">
{{ i18n "downloads-subtitle" }}
</span>
</h3>
<div class="row row-cols-1 row-cols-sm-3 my-4 align-items-center">

View file

@ -1,41 +1,40 @@
<div id="features" class="bg-light" style="scroll-margin-top: 2em;">
<div class="container py-3">
<div>
<h2 class="text-center font-weight-bolder mt-4 mb-5" style="line-height: 1.5em;">
{{ i18n "features-grid-title" }}
<section id="features" class="bg-light" style="scroll-margin-top: 2em;">
<div class="container py-4">
<div class="section-title text-center mt-5 mb-5">
<h2 class="mb-3 display-4">
{{ i18n "features-title" }}
</h2>
<div class="row">
<p class="offset-sm-1 col-sm-10 offset-md-2 col-md-8 text-muted" style="font-size: 1.15rem;">
{{ i18n "features-lead" }}
</p>
</div>
</div>
{{ range $index, $element := $.Site.Data.features.features }}
{{ if index .title $.Language.Lang }}
<div class="mb-5">
<div class="card" id="feature-{{ .id }}">
<div class="card-body row align-items-center">
{{ if and .img .img.src }}
<div class="col-md {{ if not (modBool $index 2) }}order-md-2{{ end }}">
<img src="{{ .img.src }}" class="card-img-top" alt="{{ index .img.alt $.Language.Lang }}">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3">
{{ range $index, $element := $.Site.Data.features.features }}
{{ if index .title $.Language.Lang }}
<div class="col mb-5">
<div class="h-100 card" id="feature-{{ .id }}">
{{ if and .img .img.src }}
<img src="{{ .img.src }}" class="card-img-top" alt="{{ index .img.alt $.Language.Lang }}">
{{ end }}
<div class="card-body align-items-center">
<div class="d-flex flex-column justify-content-center">
<h4 class="card-title font-weight-bolder">{{ index .title $.Language.Lang }}</h4>
<p class="card-text text-justify">{{ index .content $.Language.Lang }}</p>
{{ if and .link .link.link }}
<a href="{{ .link.link }}" class="card-link" data-umami-event="features-{{ .id }}">{{ index .link $.Language.Lang }}</a>
{{ end }}
{{ if and .link2 .link2.link }}
<br><a href="{{ .link2.link }}" class="card-link mt-2" data-umami-event="features-{{ .id }}-2">{{ index .link2 $.Language.Lang }}</a>
{{ end }}
</div>
</div>
{{ end }}
<div class="col-md d-flex flex-column justify-content-center py-4">
<h4 class="card-title font-weight-bolder">{{ index .title $.Language.Lang }}</h4>
<p class="card-text text-justify">{{ index .content $.Language.Lang }}</p>
{{ if and .link .link.link }}
<a href="{{ .link.link }}" class="card-link" data-umami-event="features-{{ .id }}">{{ index .link $.Language.Lang }}</a>
{{ end }}
{{ if and .link2 .link2.link }}
<br><a href="{{ .link2.link }}" class="card-link mt-2" data-umami-event="features-{{ .id }}-2">{{ index .link2 $.Language.Lang }}</a>
{{ end }}
</div>
</div>
</div>
</div>
{{ end }}
{{ end }}
{{ end }}
<div class="mt-3">
<h3 class="text-center font-weight-bolder mt-5 mb-5" style="line-height: 1.5em;">
{{ i18n "features-grid-footer" }}
</h3>
</div>
</div>
</div>
</section>

View file

@ -1,42 +1,78 @@
<footer class="pt-3 pb-3 bg-dark text-light">
<footer class="pt-3 pb-2 bg-dark text-light">
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-4">
<div class="col">
<h3>
<svg version="1.1" viewBox="7 5 100 15" aria-labelledby="title" height="1.1em">
<title>happyDomain</title>
<g fill="#fff" stroke="#fff" stroke-width=".4" aria-label="happy"><path d="m7.1613 5.7392h0.28939v4.2106q2.59-0.96945 3.9791-0.96945 0.77412 0 1.172 0.30386 0.709 0.53537 0.709 2.0257v4.8907h-0.28939v-4.8907q0-1.3457-0.59325-1.7942-0.36174-0.27492-1.0563-0.27492-0.57878 0-1.3746 0.1881-0.88264 0.20981-2.5466 0.83199v5.9397h-0.28939z" /><path d="m21.175 12.721h-2.7781q-1.1214 0-1.6929 0.24598-0.82476 0.36174-0.82476 1.3095 0 0.79582 0.5209 1.2299 0.49196 0.41238 1.3022 0.41238h0.0217q0.83923 0 1.8231-0.60772 0.34003-0.20981 0.83923-0.57878 0.709-0.52813 0.78858-0.57878zm2.496 3.0748q-0.3762 0.44132-1.0852 0.44132-0.67283 0-1.0418-0.39068-0.36897-0.39067-0.36897-1.0635v-0.28215q-1.3674 0.99116-1.6206 1.1431-0.96222 0.56431-1.8304 0.56431h-0.0217q-0.93328 0-1.5048-0.49196-0.60772-0.52813-0.60772-1.4397 0-1.0852 0.90434-1.5265 0.65836-0.31833 1.9027-0.31833h2.7781v-1.0635q0-1.0056-0.29662-1.3529-0.67283-0.78858-2.3875-0.78858-0.78135 0-1.3963 0.29662-0.74518 0.34727-0.94051 1.0129l-0.27492-0.07958q0.22428-0.76688 1.0346-1.172 0.69453-0.34727 1.5772-0.34727 1.8449 0 2.6117 0.88987 0.3545 0.42685 0.3545 1.541v3.4148q0.0072 1.1648 1.1286 1.1648 0.57878 0 0.86817-0.34003z" /><path d="m25.27 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z" /><path d="m34.241 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z" /><path d="m49 16.627q-0.1881 1.3891-1.0707 2.1559-0.91157 0.78858-2.4092 0.78858-1.1141-0.0072-2.033-0.42685-1.0635-0.49196-1.4759-1.3963l0.26045-0.12299q0.37621 0.83199 1.3746 1.2733 0.8537 0.38344 1.8738 0.38344 1.3818 0 2.2066-0.709 0.80305-0.6873 0.97669-1.9534 0.05064-0.32556 0.05064-0.88264v-0.49196q-1.7074 0.62942-2.6551 0.83923-0.709 0.15193-1.2588 0.15193-0.80305 0-1.2444-0.3328-0.70177-0.52813-0.70177-2.0257v-4.8762h0.28215v4.8762q0 1.3529 0.59325 1.7942 0.36174 0.27492 1.0563 0.27492 0.57878 0 1.3818-0.1881 0.88264-0.20257 2.5466-0.82476v-5.9325h0.28215v6.6921q0 0.60048-0.03617 0.93328z" /></g>
<g fill="#fff" aria-label="Domain"><path d="m 53.228042,15.362291 h 1.938901 q 1.960602,0 2.966225,-0.940511 0.983919,-0.911573 0.983919,-2.684074 0,-1.786971 -0.991153,-2.749186 -1.020093,-0.991154 -2.987931,-0.991154 h -1.909961 z m 1.909961,-8.949325 q 2.626196,0 4.10931,1.439706 1.47588,1.425236 1.47588,3.885034 0,2.452563 -1.49035,3.841626 -1.475878,1.367358 -4.09484,1.367358 h -3.516064 v -10.533724 z" /><path d="m 62.228011,13.125048 q 0,-1.779737 1.070734,-2.814299 1.085204,-1.056266 2.973461,-1.056266 1.888258,0.0072 2.966228,1.056266 1.077971,1.041797 1.077971,2.814299 0,1.772501 -1.077971,2.807063 -1.07797,1.049032 -2.966228,1.049032 -1.88102,0 -2.973461,-1.041797 -1.070734,-1.049031 -1.070734,-2.814298 z m 1.598866,0 q 0,1.099674 0.593246,1.671215 0.622184,0.60048 1.852083,0.60048 1.2299,0 1.84485,-0.60048 0.593246,-0.571541 0.593246,-1.671215 0,-1.10691 -0.593246,-1.685686 -0.61495,-0.593245 -1.852083,-0.60048 -1.222666,0 -1.84485,0.60048 -0.593246,0.578776 -0.593246,1.685686 z" /><path d="m 73.66607,16.957892 h -1.606103 v -7.668782 h 1.606103 v 0.83199 q 0.687297,-0.535368 1.606105,-0.72347 0.708999,-0.144694 1.273307,-0.144694 0.947746,0 1.519285,0.426847 0.470258,0.340031 0.61495,0.600481 0.904338,-0.658358 1.786972,-0.853695 0.788583,-0.173633 1.396297,-0.173633 0.954981,0 1.526521,0.419613 0.918808,0.665592 0.918808,2.315104 v 4.970239 h -1.606103 v -4.970239 q 0,-0.84646 -0.267684,-1.041797 -0.144695,-0.10852 -0.557072,-0.10852 -0.470255,0 -1.172023,0.166398 -0.998386,0.340031 -1.729091,0.933276 v 5.020882 h -1.613339 v -4.970239 q 0,-0.84646 -0.260448,-1.041797 -0.151929,-0.115755 -0.557073,-0.115755 -0.448553,0 -1.09244,0.151929 -0.759643,0.173632 -1.786972,0.824756 z" /><path d="m 91.051057,14.051772 -1.996779,-0.166398 q -0.954979,0 -1.381828,0.166398 -0.376203,0.151929 -0.376203,0.535368 0,0.368969 0.24598,0.549837 0.289388,0.23151 0.839224,0.23151 h 0.0217 q 0.62942,0 1.425236,-0.405143 0.376206,-0.224275 1.222666,-0.651123 z m 3.935677,2.286165 q -0.752409,0.593246 -1.917197,0.636654 -0.911572,0 -1.46141,-0.528133 -0.245978,-0.238745 -0.383437,-0.542603 -0.477491,0.325562 -0.745175,0.470256 -1.070737,0.578776 -2.07636,0.578776 h -0.0217 q -1.121378,0 -1.852083,-0.578776 -0.839224,-0.665593 -0.839224,-1.786971 0,-1.389063 1.266071,-1.953369 0.759645,-0.332797 2.098063,-0.332797 l 1.996779,0.311092 v -0.643888 q 0,-1.157552 -1.700157,-1.157552 -1.418,0 -2.604492,0.911572 l -0.860928,-1.215429 q 0.549836,-0.499195 1.46141,-0.918807 0.80305,-0.36897 1.794206,-0.36897 2.061887,0 2.995165,0.998389 0.520899,0.571541 0.520899,1.808675 v 3.002401 q 0.0072,0.361734 0.419613,0.434082 h 0.07958 q 0.535365,0 1.157552,-0.405144 z" /><path d="m 96.448142,6.566922 q 0.368969,0 0.636653,0.24598 0.289388,0.267684 0.289388,0.658358 0,0.390674 -0.289388,0.658358 -0.267684,0.245979 -0.636653,0.245979 -0.347266,0 -0.629418,-0.238745 -0.303858,-0.274918 -0.303858,-0.665592 0,-0.390674 0.303858,-0.672827 0.282152,-0.231511 0.629418,-0.231511 z m -0.80305,10.38903 v -7.668782 h 1.598869 v 7.668782 z" /><path d="m 100.803432,16.957892 h -1.598869 v -7.668782 h 1.598869 v 0.774113 q 0.803053,-0.477491 1.758032,-0.665593 0.752409,-0.144694 1.345655,-0.144694 0.969449,0 1.562695,0.405143 0.969446,0.672828 0.969446,2.329574 v 4.970239 h -1.6061 v -4.970239 q 0,-0.831991 -0.289388,-1.034562 -0.173632,-0.12299 -0.636653,-0.12299 -0.477491,0 -1.179256,0.151929 -0.810287,0.180867 -1.924431,0.759643 z" /></g>
</svg>
</h3>
<ul class="footer-links">
<li><a href="#features">{{ i18n "footer-happydomain-features" }}</a></li>
<li><a href="#discover">{{ i18n "discover-title" }}</a></li>
<!--li><a href="#testimonials">{{ i18n "footer-happydomain-testimonials" }}</a></li-->
<li><a href="#downloads">{{ i18n "footer-happydomain-downloads" }}</a></li>
<!--li><a href="#">{{ i18n "footer-happydomain-prices" }}</a></li-->
<li><a href="https://github.com/happyDomain/happydomain/">{{ i18n "footer-happydomain-github" }}</a></li>
</ul>
</div>
<div class="col">
<h3>{{ i18n "footer-resources" }}</h3>
<ul class="footer-links">
<li><a href="https://help.happydomain.org/{{ .Site.Language.Lang }}/" target="_blank">{{ i18n "footer-resources-docs" }}</a></li>
<li><a href="https://app.happydomain.org/swagger/index.html" target="_blank">{{ i18n "footer-resources-api" }}</a></li>
<li><a href="https://blog.happydomain.org/">{{ i18n "footer-resources-blog" }}</a></li>
<li><a href="/{{ .Site.Language.Lang }}/community/">{{ i18n "footer-resources-community" }}</a></li>
<!--li><a href="#">{{ i18n "footer-resources-faq" }}</a></li-->
</ul>
</div>
<div class="col">
<h3>{{ i18n "footer-company" }}</h3>
<ul class="footer-links">
<li><a href="{{ i18n "footer-us-button-link" }}">{{ i18n "footer-company-about" }}</a></li>
<li><a href="/{{ .Site.Language.Lang }}/community/">{{ i18n "footer-company-contact" }}</a></li>
<li><a href="/{{ .Site.Language.Lang }}/legal-notice/">
{{ i18n "legal-notice" }}
</a></li>
</ul>
</div>
<div class="col">
<h3>{{ i18n "footer-follow" }}</h3>
<div class="d-flex flex-wrap justify-content-between footer-links" style="gap: .5em; font-size: 2em">
<a href="https://framagit.org/happyDomain/happydomain" target="_blank">
<i class="bi bi-gitlab"></i>
</a>
<a href="https://github.com/happyDomain/happydomain" target="_blank">
<i class="bi bi-github"></i>
</a>
<a href="https://feedback.happydomain.org/" target="_blank">
<i class="bi bi-lightbulb-fill"></i>
</a>
<a href="https://floss.social/@happyDomain" target="_blank">
<i class="bi bi-mastodon"></i>
</a>
<a
href="#"
data-contact="Y29udGFjdEBoYXBweWRvbWFpbi5vcmc="
onfocus="this.href = 'mailto:' + atob(this.dataset.contact)"
>
<i class="bi bi-envelope-at"></i>
</a>
</div>
</div>
</div>
<div>
<p class="pt-2 pb-0 text-center">
&copy;
2019-2025
<svg version="1.1" viewBox="7 5 100 15" aria-labelledby="title" height="1.1em">
<title>happyDomain</title>
<g fill="#fff" stroke="#fff" stroke-width=".4" aria-label="happy"><path d="m7.1613 5.7392h0.28939v4.2106q2.59-0.96945 3.9791-0.96945 0.77412 0 1.172 0.30386 0.709 0.53537 0.709 2.0257v4.8907h-0.28939v-4.8907q0-1.3457-0.59325-1.7942-0.36174-0.27492-1.0563-0.27492-0.57878 0-1.3746 0.1881-0.88264 0.20981-2.5466 0.83199v5.9397h-0.28939z" /><path d="m21.175 12.721h-2.7781q-1.1214 0-1.6929 0.24598-0.82476 0.36174-0.82476 1.3095 0 0.79582 0.5209 1.2299 0.49196 0.41238 1.3022 0.41238h0.0217q0.83923 0 1.8231-0.60772 0.34003-0.20981 0.83923-0.57878 0.709-0.52813 0.78858-0.57878zm2.496 3.0748q-0.3762 0.44132-1.0852 0.44132-0.67283 0-1.0418-0.39068-0.36897-0.39067-0.36897-1.0635v-0.28215q-1.3674 0.99116-1.6206 1.1431-0.96222 0.56431-1.8304 0.56431h-0.0217q-0.93328 0-1.5048-0.49196-0.60772-0.52813-0.60772-1.4397 0-1.0852 0.90434-1.5265 0.65836-0.31833 1.9027-0.31833h2.7781v-1.0635q0-1.0056-0.29662-1.3529-0.67283-0.78858-2.3875-0.78858-0.78135 0-1.3963 0.29662-0.74518 0.34727-0.94051 1.0129l-0.27492-0.07958q0.22428-0.76688 1.0346-1.172 0.69453-0.34727 1.5772-0.34727 1.8449 0 2.6117 0.88987 0.3545 0.42685 0.3545 1.541v3.4148q0.0072 1.1648 1.1286 1.1648 0.57878 0 0.86817-0.34003z" /><path d="m25.27 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z" /><path d="m34.241 14.935q0.98392 1.0129 2.7998 1.0129h0.0217q1.5555 0 2.3875-0.8971 0.82476-0.88264 0.82476-2.4598 0-1.3891-0.61495-2.2862-0.709-1.0346-2.0257-1.0346-1.3746 0-3.3931 0.95498zm0-5.9325v0.90434q1.9606-0.92604 3.3931-0.92604 1.4469 0 2.2355 1.1141 0.69453 0.98392 0.69453 2.496 0 1.7002-0.91157 2.6624-0.92604 0.98392-2.6117 0.98392-1.7291 0-2.7998-0.91157v4.2106h-0.28939v-10.534z" /><path d="m49 16.627q-0.1881 1.3891-1.0707 2.1559-0.91157 0.78858-2.4092 0.78858-1.1141-0.0072-2.033-0.42685-1.0635-0.49196-1.4759-1.3963l0.26045-0.12299q0.37621 0.83199 1.3746 1.2733 0.8537 0.38344 1.8738 0.38344 1.3818 0 2.2066-0.709 0.80305-0.6873 0.97669-1.9534 0.05064-0.32556 0.05064-0.88264v-0.49196q-1.7074 0.62942-2.6551 0.83923-0.709 0.15193-1.2588 0.15193-0.80305 0-1.2444-0.3328-0.70177-0.52813-0.70177-2.0257v-4.8762h0.28215v4.8762q0 1.3529 0.59325 1.7942 0.36174 0.27492 1.0563 0.27492 0.57878 0 1.3818-0.1881 0.88264-0.20257 2.5466-0.82476v-5.9325h0.28215v6.6921q0 0.60048-0.03617 0.93328z" /></g>
<g fill="#fff" aria-label="Domain"><path d="m 53.228042,15.362291 h 1.938901 q 1.960602,0 2.966225,-0.940511 0.983919,-0.911573 0.983919,-2.684074 0,-1.786971 -0.991153,-2.749186 -1.020093,-0.991154 -2.987931,-0.991154 h -1.909961 z m 1.909961,-8.949325 q 2.626196,0 4.10931,1.439706 1.47588,1.425236 1.47588,3.885034 0,2.452563 -1.49035,3.841626 -1.475878,1.367358 -4.09484,1.367358 h -3.516064 v -10.533724 z" /><path d="m 62.228011,13.125048 q 0,-1.779737 1.070734,-2.814299 1.085204,-1.056266 2.973461,-1.056266 1.888258,0.0072 2.966228,1.056266 1.077971,1.041797 1.077971,2.814299 0,1.772501 -1.077971,2.807063 -1.07797,1.049032 -2.966228,1.049032 -1.88102,0 -2.973461,-1.041797 -1.070734,-1.049031 -1.070734,-2.814298 z m 1.598866,0 q 0,1.099674 0.593246,1.671215 0.622184,0.60048 1.852083,0.60048 1.2299,0 1.84485,-0.60048 0.593246,-0.571541 0.593246,-1.671215 0,-1.10691 -0.593246,-1.685686 -0.61495,-0.593245 -1.852083,-0.60048 -1.222666,0 -1.84485,0.60048 -0.593246,0.578776 -0.593246,1.685686 z" /><path d="m 73.66607,16.957892 h -1.606103 v -7.668782 h 1.606103 v 0.83199 q 0.687297,-0.535368 1.606105,-0.72347 0.708999,-0.144694 1.273307,-0.144694 0.947746,0 1.519285,0.426847 0.470258,0.340031 0.61495,0.600481 0.904338,-0.658358 1.786972,-0.853695 0.788583,-0.173633 1.396297,-0.173633 0.954981,0 1.526521,0.419613 0.918808,0.665592 0.918808,2.315104 v 4.970239 h -1.606103 v -4.970239 q 0,-0.84646 -0.267684,-1.041797 -0.144695,-0.10852 -0.557072,-0.10852 -0.470255,0 -1.172023,0.166398 -0.998386,0.340031 -1.729091,0.933276 v 5.020882 h -1.613339 v -4.970239 q 0,-0.84646 -0.260448,-1.041797 -0.151929,-0.115755 -0.557073,-0.115755 -0.448553,0 -1.09244,0.151929 -0.759643,0.173632 -1.786972,0.824756 z" /><path d="m 91.051057,14.051772 -1.996779,-0.166398 q -0.954979,0 -1.381828,0.166398 -0.376203,0.151929 -0.376203,0.535368 0,0.368969 0.24598,0.549837 0.289388,0.23151 0.839224,0.23151 h 0.0217 q 0.62942,0 1.425236,-0.405143 0.376206,-0.224275 1.222666,-0.651123 z m 3.935677,2.286165 q -0.752409,0.593246 -1.917197,0.636654 -0.911572,0 -1.46141,-0.528133 -0.245978,-0.238745 -0.383437,-0.542603 -0.477491,0.325562 -0.745175,0.470256 -1.070737,0.578776 -2.07636,0.578776 h -0.0217 q -1.121378,0 -1.852083,-0.578776 -0.839224,-0.665593 -0.839224,-1.786971 0,-1.389063 1.266071,-1.953369 0.759645,-0.332797 2.098063,-0.332797 l 1.996779,0.311092 v -0.643888 q 0,-1.157552 -1.700157,-1.157552 -1.418,0 -2.604492,0.911572 l -0.860928,-1.215429 q 0.549836,-0.499195 1.46141,-0.918807 0.80305,-0.36897 1.794206,-0.36897 2.061887,0 2.995165,0.998389 0.520899,0.571541 0.520899,1.808675 v 3.002401 q 0.0072,0.361734 0.419613,0.434082 h 0.07958 q 0.535365,0 1.157552,-0.405144 z" /><path d="m 96.448142,6.566922 q 0.368969,0 0.636653,0.24598 0.289388,0.267684 0.289388,0.658358 0,0.390674 -0.289388,0.658358 -0.267684,0.245979 -0.636653,0.245979 -0.347266,0 -0.629418,-0.238745 -0.303858,-0.274918 -0.303858,-0.665592 0,-0.390674 0.303858,-0.672827 0.282152,-0.231511 0.629418,-0.231511 z m -0.80305,10.38903 v -7.668782 h 1.598869 v 7.668782 z" /><path d="m 100.803432,16.957892 h -1.598869 v -7.668782 h 1.598869 v 0.774113 q 0.803053,-0.477491 1.758032,-0.665593 0.752409,-0.144694 1.345655,-0.144694 0.969449,0 1.562695,0.405143 0.969446,0.672828 0.969446,2.329574 v 4.970239 h -1.6061 v -4.970239 q 0,-0.831991 -0.289388,-1.034562 -0.173632,-0.12299 -0.636653,-0.12299 -0.477491,0 -1.179256,0.151929 -0.810287,0.180867 -1.924431,0.759643 z" /></g>
</svg>
2019-2024
</div>
<div class="col-sm-6 col-md-3 d-flex flex-column">
<a href="/{{ .Site.Language.Lang }}/legal-notice/" class="text-light">
{{ i18n "legal-notice" }}
</a>
</div>
<div class="col-sm-6 col-md-3 d-flex justify-content-end" style="margin-top: -.5em; gap: .5em; font-size: 2em">
<a href="https://framagit.org/happyDomain/happydomain" class="text-light" target="_blank">
<i class="bi bi-gitlab"></i>
</a>
<a href="https://github.com/happyDomain/happydomain" class="text-light" target="_blank">
<i class="bi bi-github"></i>
</a>
<a href="https://feedback.happydomain.org/" class="text-light" target="_blank">
<i class="bi bi-lightbulb-fill"></i>
</a>
<a href="https://floss.social/@happyDomain" class="text-light" target="_blank">
<i class="bi bi-mastodon"></i>
</a>
<a
href="#"
data-contact="Y29udGFjdEBoYXBweWRvbWFpbi5vcmc="
onfocus="this.href = 'mailto:' + atob(this.dataset.contact)"
class="text-light"
>
<i class="bi bi-envelope-at"></i>
</a>
</div>
</p>
</div>
</div>
</footer>

View file

@ -1,22 +1,27 @@
<div class="jumbotron bg-light mt-n1 mb-0">
<div class="container">
<section class="jumbotron mt-n1 mb-0" style="background: linear-gradient(135deg, var(--primary-ultralight) 0%, white 100%)">
<div class="container-fluid">
<div class="row">
<div class="col-md-3 d-flex flex-column mb-4">
<div class="col-md-3 d-flex flex-column mb-5">
<img src="/img/screenshots/happydomain-rounded.webp" alt="happyDomain logo">
</div>
<div class="col">
<h2 class="display-5 text-center text-muted">
<h2 class="display-4 text-center text-dark font-weight-bold">
{{ i18n "slogan" }}
</h2>
<p class="mt-4 lead">
<p class="mt-5 lead text-center text-muted">
happy<strong>Domain</strong>
{{ i18n "lead" | markdownify }}
</p>
<p class="mt-4">
<a class="btn btn-primary mt-2" data-umami-event="jumbo-tryit" href="{{ .Site.Params.tryit }}">{{ i18n "tryit" }} &#187;</a>
<a class="btn btn-outline-secondary mt-2" data-umami-event="jumbo-downloads" href="#downloads">{{ i18n "downloadit" }} &#187;</a>
</p>
<div class="mt-5 card bg-secondary text-light flex-row align-items-center" style="border-radius: .3rem">
<div class="mt-5 py-2 d-none d-md-flex justify-content-center">
<a class="btn btn-lg btn-primary px-4 mr-3" data-umami-event="jumbo-tryit" href="{{ .Site.Params.tryit }}" style="border-radius: 2em">{{ i18n "tryit" }} &#187;</a>
<a class="btn btn-lg btn-outline-secondary px-4 ml-3" data-umami-event="jumbo-downloads" href="#downloads" style="border-radius: 2em">{{ i18n "downloadit" }}</a>
</div>
<div class="container mt-5 py-2 d-flex d-md-none flex-column justify-content-center">
<a class="btn btn-lg btn-primary px-4 mb-3" data-umami-event="jumbo-tryit" href="{{ .Site.Params.tryit }}" style="border-radius: 2em">{{ i18n "tryit" }} &#187;</a>
<a class="btn btn-lg btn-outline-secondary px-4" data-umami-event="jumbo-downloads" href="#downloads" style="border-radius: 2em">{{ i18n "downloadit" }}</a>
</div>
<!--div class="mt-5 card bg-secondary text-light flex-row align-items-center" style="border-radius: .3rem">
<div class="card-body">
<h3>{{ i18n "conf-fosdem24-title" }}</h3>
<p class="card-text">
@ -26,8 +31,9 @@
</p>
</div>
<img src="/img/assets/FOSDEM24_logo.png" alt="FOSDEM 2024" style="height: 10em">
</div>
</div-->
</div>
</div>
</div>
</div>
</section>

View file

@ -0,0 +1,2 @@
{{ $_hugo_config := `{ "version": 1 }` }}
{{ partial (.Get 0) . }}

View file

@ -1,8 +1,22 @@
:root {
--primary: #1cb487;
--primary-dark: #169c73;
--primary-light: #5ed1b0;
--primary-ultralight: #e7f7f2;
--secondary: #360b48;
--secondary-dark: #29083a;
--secondary-light: #4e1566;
--secondary-ultralight: #f0e6f3;
--dark: #2c3e50;
--light: #f8f9fa;
--gray: #6c757d;
}
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 400;
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/fonts/Montserrat.woff2) format('woff2');
src: local('Montserrat'), local('Montserrat-Regular'), url(/fonts/Montserrat.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@ -13,15 +27,19 @@ body {
font-family: Montserrat,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji,sans;
}
nav.navbar {
background: var(--light);
box-shadow: 0 0px 3px 0 #1cb487;
border-bottom: 1px solid #1cb487;
z-index: 2;
z-index: 1024;
transition: background 1s linear;
}
nav.navbar.beginscroll {
background: linear-gradient(90deg, var(--primary-ultralight) 0%, white 150%);
box-shadow: none;
border-bottom: 1px solid #f8f9fa;
border-bottom: none;
}
nav.navbar.scrolled {
background: var(--light);
box-shadow: 0 0px 3px 0 #1cb487;
border-bottom: 1px solid #1cb487;
}
@ -35,6 +53,16 @@ a.card:hover {
transform: scale(1.14);
}
.section-title::after {
content: '';
width: 120px;
height: 4px;
background: linear-gradient(90deg, var(--primary) 0%, var(--secondary) 100%);
display: block;
margin: 10px auto 0;
border-radius: 2px;
}
.link-rounded, .circle-head {
display: inline-flex;
justify-content: center;
@ -86,10 +114,135 @@ img {
max-width: 100%;
}
#features .card {
background-color: white;
border-radius: 10px;
padding-top: 3px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: transform 0.3s;
border-top: 4px solid var(--primary);
}
#features .card:nth-child(even) {
border-top: 4px solid var(--secondary);
}
#features .card:hover {
transform: translateY(-10px);
}
#discover .steps {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
margin-top: 60px;
position: relative;
}
#discover .steps::before {
content: '';
position: absolute;
top: 25px;
left: 10%;
width: 80%;
height: 2px;
background: linear-gradient(to right, var(--primary) 0%, var(--secondary) 100%);
z-index: 1;
}
#discover .step {
flex-basis: 30%;
text-align: center;
position: relative;
z-index: 2;
}
#discover .step-number {
background: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%);
color: white;
width: 50px;
height: 50px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
font-weight: bold;
margin: 0 auto 20px;
}
#discover .step h3 {
margin-bottom: 15px;
font-size: 22px;
}
#discover .step p {
color: var(--gray);
}
#cta {
padding: 100px 0;
background: linear-gradient(135deg, var(--secondary) 0%, var(--primary) 100%);
color: white;
text-align: center;
position: relative;
overflow: hidden;
}
#cta::before, #cta::after {
content: '';
position: absolute;
width: 300px;
height: 300px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.1);
}
#cta::before {
top: -150px;
left: -100px;
}
#cta::after {
bottom: -150px;
right: -100px;
width: 350px;
height: 350px;
}
.cta-content {
position: relative;
z-index: 2;
}
#cta p {
max-width: 700px;
}
footer {
border-top: 3px solid #9332bb;
}
.footer-links {
list-style: none;
padding: 0;
}
.footer-links li {
margin-bottom: 12px;
}
.footer-links a {
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
transition: color 0.3s;
}
.footer-links a:hover {
color: white;
}
#download-house {
animation: floatinghouse 6s linear infinite;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before After
Before After