oficina / home Public

WIP: Calma in Home — theme, Onest, sky, door card, new icons

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev pushed by paul@keymail.dev 053197067266f3e4daffbcdd3c15660e13bc701c parent 7b81350
28 files changed, +185 −52
  • Makefile +1 −1
  • go.mod +1 −1
  • go.sum +6 −0
  • internal/home/app.go +1 −0
  • internal/home/brand.go +3 −0
  • internal/home/calma.go +53 −0
  • internal/home/credits/notices.json +11 −0
  • internal/home/credits_inventory_test.go +1 −1
  • internal/home/directory.go +1 −0
  • internal/home/directory_catalog.go +2 −2
  • internal/home/noscript_test.go +14 −11
  • internal/home/origins_test.go +19 −1
  • internal/home/render.go +6 −1
  • internal/home/static/brand/apple-touch-icon.png binary
  • internal/home/static/brand/brand.css +2 −2
  • internal/home/static/brand/calendar.svg +1 −10
  • internal/home/static/brand/calls.svg +1 −2
  • internal/home/static/brand/docs.svg +1 −5
  • internal/home/static/brand/fichas.svg +1 −0
  • internal/home/static/brand/files.svg +1 −0
  • internal/home/static/brand/icon-32.png binary
  • internal/home/static/brand/icon.svg +1 −3
  • internal/home/static/brand/mail.svg +1 −0
  • internal/home/static/brand/memoria.svg +1 −4
  • internal/home/static/brand/sheets.svg +1 −4
  • internal/home/static/brand/slides.svg +1 −3
  • internal/home/static/calma.css +46 −0
  • internal/home/templates/layout.html +8 −1
diff --git a/Makefile b/Makefile
index ab3b822..325fa46 100644
--- a/Makefile
+++ b/Makefile
@@ -116,7 +116,7 @@ credits:
GOOS=$$(go env GOHOSTOS) GOARCH=$$(go env GOHOSTARCH) CGO_ENABLED=0 \
go build -o "$$notices_tmp/notices" amadan.net/oficina/estilo.git/cmd/oficina-notices; \
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 "$$notices_tmp/notices" \
- -package ./cmd/home -lucide \
+ -package ./cmd/home -lucide -onest \
-exclude amadan.net/oficina/estilo.git,amadan.net/oficina/home/handoff,amadan.net/oficina/home/roster \
> "$$notices_tmp/notices.json"; \
mv "$$notices_tmp/notices.json" internal/home/credits/notices.json
diff --git a/go.mod b/go.mod
index 5f720d8..fd6bcbb 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.25.0
toolchain go1.26.5
require (
- amadan.net/oficina/estilo.git v0.0.0-20260911182719-0bcb9287988d
+ amadan.net/oficina/estilo.git v0.0.0-20260929070257-7a1a376ad2ab
amadan.net/oficina/home/handoff v0.0.0-20260908102137-481d2d57f489
amadan.net/oficina/home/roster v0.0.0-20260908123429-74dda570e0cf
amadan.net/rastrillo/rastrillo v0.26.1-0.20260908075707-29e4491631bd
diff --git a/go.sum b/go.sum
index 5ceb83e..7c2d369 100644
--- a/go.sum
+++ b/go.sum
@@ -2,6 +2,12 @@ amadan.net/carlos/platform.git/launchctx v0.0.0-20260911135504-fb577f96f7d1 h1:R
amadan.net/carlos/platform.git/launchctx v0.0.0-20260911135504-fb577f96f7d1/go.mod h1:6fBmMWgtESLFXZURzu/HyRXM0vyLuo4+XGGdKuZ+wao=
amadan.net/oficina/estilo.git v0.0.0-20260911182719-0bcb9287988d h1:3HsB96tGs+P0tGf2VzqpqA8yqYBhJ+apBh2txAoz9qI=
amadan.net/oficina/estilo.git v0.0.0-20260911182719-0bcb9287988d/go.mod h1:0R45/vCUAT+kpS7S6K/ZxBdE8f7YxFN4HT3HyDJ3nPY=
+amadan.net/oficina/estilo.git v0.0.0-20260929065402-0f830bc12f2c h1:XE8qYLSGKYLN+SNJv+/BMx0rCnHFUJusJcQ0/JLS+IM=
+amadan.net/oficina/estilo.git v0.0.0-20260929065402-0f830bc12f2c/go.mod h1:4u0jNBtIdMLOsJyrScfqoEuYDJF7BBM3qM9YWbzt6aw=
+amadan.net/oficina/estilo.git v0.0.0-20260929065843-683ccd534ead h1:t5QdNWBWWIJonOPdyD6CuwZ64XdahP7j8U+ewlTg1e8=
+amadan.net/oficina/estilo.git v0.0.0-20260929065843-683ccd534ead/go.mod h1:4u0jNBtIdMLOsJyrScfqoEuYDJF7BBM3qM9YWbzt6aw=
+amadan.net/oficina/estilo.git v0.0.0-20260929070257-7a1a376ad2ab h1:ypKDilZG0lxfXyPrEPVPmWFHnDNDsl1NE+IndxiukkY=
+amadan.net/oficina/estilo.git v0.0.0-20260929070257-7a1a376ad2ab/go.mod h1:4u0jNBtIdMLOsJyrScfqoEuYDJF7BBM3qM9YWbzt6aw=
amadan.net/oficina/home/handoff v0.0.0-20260908102137-481d2d57f489 h1:RPKtyry/71i06o8L+gjAaUyexbmG56kO1YPs601URAM=
amadan.net/oficina/home/handoff v0.0.0-20260908102137-481d2d57f489/go.mod h1:YISpzFJ+iMgrM0rUL032OSzsAQbP4/nozvXLCCOcn1k=
amadan.net/oficina/home/roster v0.0.0-20260908123429-74dda570e0cf h1:SRKjCUgtk42WwR7VSn+V0eLNk20mfiY8dQmzdw13Sbo=
diff --git a/internal/home/app.go b/internal/home/app.go
index 5f9b3e5..ecb12f8 100644
--- a/internal/home/app.go
+++ b/internal/home/app.go
@@ -245,6 +245,7 @@ func (a *App) Router() http.Handler {
r.Get("/static/tokens.css", serveAsset(staticAsset("tokens.css"), "text/css; charset=utf-8"))
r.Get("/static/theme.css", serveAsset(theme.CSS(), "text/css; charset=utf-8"))
mountBrand(r)
+ mountCalma(r)
mountSite(r)
return r
diff --git a/internal/home/brand.go b/internal/home/brand.go
index f065324..7afaeb5 100644
--- a/internal/home/brand.go
+++ b/internal/home/brand.go
@@ -24,6 +24,9 @@ func mountBrand(r chi.Router) {
"calendar.svg": "image/svg+xml",
"calls.svg": "image/svg+xml",
"memoria.svg": "image/svg+xml",
+ "fichas.svg": "image/svg+xml",
+ "mail.svg": "image/svg+xml",
+ "files.svg": "image/svg+xml",
} {
body, err := brandFS.ReadFile("static/brand/" + name)
if err != nil {
diff --git a/internal/home/calma.go b/internal/home/calma.go
new file mode 100644
index 0000000..d0d6e6b
--- /dev/null
+++ b/internal/home/calma.go
@@ -0,0 +1,53 @@
+package home
+
+import (
+ _ "embed"
+
+ "amadan.net/oficina/estilo.git/sky"
+ "amadan.net/oficina/estilo.git/theme"
+ "github.com/go-chi/chi/v5"
+)
+
+// Calma is the suite's look (estilo AGENTS.md, decisions table, row 8).
+// Home is where the suite meets you — the front page, the sign-in, your
+// home — so it is where the sky goes; the apps themselves never carry it.
+
+//go:embed static/calma.css
+var calmaCSS []byte
+
+// homeFuncs are the template helpers Home's layout calls. suiteSky is the
+// sky for pages that belong to no one team: all of Home's, today, since
+// the directory lists apps rather than one team's.
+var homeFuncs = map[string]any{
+ "suiteSky": func() sky.View { return sky.For(sky.SuiteSeed) },
+ // Onest's stylesheet, under estilo's versioned prefix.
+ "fontsCSS": func() string { return theme.FontPrefix + "fonts.css" },
+}
+
+// doorPages are the pages at the door — signing in, and everything on the
+// way in or out. The layout draws them as one card on the sky with the
+// Oficina mark, as Calma's sign-in does; every other page keeps the full
+// width (the directory lists apps; credits is a long page of notices).
+var doorPages = map[string]bool{
+ "signin.html": true,
+ "check_your_mail.html": true,
+ "signin_confirm.html": true,
+ "signin_failed.html": true,
+ "passkey_confirm.html": true,
+ "passkey_enrol.html": true,
+ "recovery_codes.html": true,
+ "assertion.html": true,
+ "handoff_failed.html": true,
+ "signout_confirm.html": true,
+ "directory_signed_out.html": true,
+}
+
+// mountCalma serves the Calma pieces Home's pages link: Onest, the sky's
+// layers and stylesheet, and Home's own few rules for placing it. Public
+// on both origins; every handler here serves a closed set.
+func mountCalma(r chi.Router) {
+ r.Handle(theme.FontPrefix+"*", theme.FontHandler())
+ r.Handle(sky.Prefix+"*", sky.Handler())
+ r.Get("/static/estilo/sky.css", serveAsset(sky.CSS(), "text/css; charset=utf-8"))
+ r.Get("/static/calma.css", serveAsset(calmaCSS, "text/css; charset=utf-8"))
+}
diff --git a/internal/home/credits/notices.json b/internal/home/credits/notices.json
index 3b82b7f..eefb54c 100644
--- a/internal/home/credits/notices.json
+++ b/internal/home/credits/notices.json
@@ -22,6 +22,17 @@
}
]
},
+ {
+ "Name": "Onest",
+ "Version": "Google Fonts v11",
+ "SourceURL": "https://github.com/googlefonts/onest",
+ "Notices": [
+ {
+ "Name": "OFL.txt",
+ "Text": "Copyright 2021 The Onest Project Authors (https://github.com/googlefonts/onest)\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\nThis license is copied below, and is also available with a FAQ at:\nhttps://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION \u0026 CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
+ }
+ ]
+ },
{
"Name": "amadan.net/carlos/platform.git/launchctx",
"Version": "v0.0.0-20260911135504-fb577f96f7d1",
diff --git a/internal/home/credits_inventory_test.go b/internal/home/credits_inventory_test.go
index 3d5f044..fd7352c 100644
--- a/internal/home/credits_inventory_test.go
+++ b/internal/home/credits_inventory_test.go
@@ -42,7 +42,7 @@ func TestCreditsMatchProductionDependencies(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- inventory.Components = append(inventory.Components, credits.Lucide(), credits.Component{Name: "Go", Version: runtime.Version(), SourceURL: "https://go.dev/LICENSE", Notices: []credits.Notice{{Name: "LICENSE", Text: string(goLicense)}}})
+ inventory.Components = append(inventory.Components, credits.Lucide(), credits.Onest(), credits.Component{Name: "Go", Version: runtime.Version(), SourceURL: "https://go.dev/LICENSE", Notices: []credits.Notice{{Name: "LICENSE", Text: string(goLicense)}}})
sort.Slice(inventory.Components, func(i, j int) bool { return inventory.Components[i].Name < inventory.Components[j].Name })
var embedded creditInventory
if err := json.Unmarshal(creditNotices, &embedded); err != nil {
diff --git a/internal/home/directory.go b/internal/home/directory.go
index fad22de..44d052b 100644
--- a/internal/home/directory.go
+++ b/internal/home/directory.go
@@ -120,6 +120,7 @@ func (a *App) directoryRouter() http.Handler {
r.Get("/static/tokens.css", serveAsset(staticAsset("tokens.css"), "text/css; charset=utf-8"))
r.Get("/static/theme.css", serveAsset(theme.CSS(), "text/css; charset=utf-8"))
mountBrand(r)
+ mountCalma(r)
mountSite(r)
})
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
diff --git a/internal/home/directory_catalog.go b/internal/home/directory_catalog.go
index dcee344..d94bec8 100644
--- a/internal/home/directory_catalog.go
+++ b/internal/home/directory_catalog.go
@@ -21,8 +21,8 @@ func directoryCatalog(cfg Runtime) []catalogApp {
{Name: "Calendar", Icon: "/static/brand/calendar.svg", Status: "Not connected to Home yet"},
{Name: "Calls", Icon: "/static/brand/calls.svg", Status: "Coming soon"},
{Name: "Memoria", Icon: "/static/brand/memoria.svg", Status: "Not connected to Home yet"},
- {Name: "Mail", Status: "Separate sign-in"},
- {Name: "Files", Status: "Separate sign-in"},
+ {Name: "Mail", Icon: "/static/brand/mail.svg", Status: "Separate sign-in"},
+ {Name: "Files", Icon: "/static/brand/files.svg", Status: "Separate sign-in"},
}
for i := range apps {
for _, app := range directoryApps() {
diff --git a/internal/home/noscript_test.go b/internal/home/noscript_test.go
index ad0985b..5824568 100644
--- a/internal/home/noscript_test.go
+++ b/internal/home/noscript_test.go
@@ -390,20 +390,23 @@ func TestVendoredAssetsMatchTheLibrary(t *testing.T) {
t.Error("static/tokens.css differs from ui.TokensCSS(); run `rastrillo doctor --fix`")
}
- stripHeader := func(css []byte) []byte {
- if bytes.HasPrefix(css, []byte("/*")) {
- if end := bytes.Index(css, []byte("*/")); end >= 0 {
- return css[end+2:]
- }
- }
- return css
- }
- want, ok := ui.ThemeCSS("day")
+ // The theme is estilo's own now — Calma, not rastrillo's day (estilo
+ // AGENTS.md, decisions table, row 8) — so the check is that Home serves
+ // exactly what its estilo pin ships, below, and that the theme still
+ // declares every token tokens.css uses.
+ day, ok := ui.ThemeCSS("day")
if !ok {
t.Fatal("ui has no day theme")
}
- if !bytes.Equal(stripHeader(theme.CSS()), stripHeader(want)) {
- t.Fatal("Estilo theme differs from selected Rastrillo day")
+ names := regexp.MustCompile(`(?m)^\s*(--rst-[a-z0-9-]+)\s*:`)
+ have := map[string]bool{}
+ for _, m := range names.FindAllSubmatch(theme.CSS(), -1) {
+ have[string(m[1])] = true
+ }
+ for _, m := range names.FindAllSubmatch(day, -1) {
+ if !have[string(m[1])] {
+ t.Errorf("estilo's theme does not declare %s, which tokens.css expects", m[1])
+ }
}
app := newTestApp(t)
for _, host := range []string{directoryHost, credentialHost} {
diff --git a/internal/home/origins_test.go b/internal/home/origins_test.go
index f44d7d2..4d62f88 100644
--- a/internal/home/origins_test.go
+++ b/internal/home/origins_test.go
@@ -5,21 +5,38 @@ import (
"net/http/httptest"
"testing"
+ "amadan.net/oficina/estilo.git/sky"
+ "amadan.net/oficina/estilo.git/theme"
"github.com/go-chi/chi/v5"
)
// sharedPublicPaths are served on BOTH Home origins: the design tokens, the
-// brand marks, and the front page's stylesheet and fonts. They are listed
+// brand marks, Calma's font and sky, and the front page's stylesheet and fonts. They are listed
// once because two copies of this list would drift, and a route that
// quietly stopped being shared — or quietly started — is exactly what the
// two tests below exist to catch.
var sharedPublicPaths = []string{
"/healthz", "/static/tokens.css", "/static/theme.css",
"/static/brand/icon.svg", "/static/brand/icon-32.png", "/static/brand/apple-touch-icon.png", "/static/brand/brand.css", "/static/brand/LICENSE.lucide", "/static/brand/docs.svg", "/static/brand/sheets.svg", "/static/brand/slides.svg", "/static/brand/calendar.svg", "/static/brand/calls.svg", "/static/brand/memoria.svg",
+ "/static/brand/fichas.svg", "/static/brand/mail.svg", "/static/brand/files.svg",
+ // Calma: Onest, the sky and its stylesheet, and Home's rules for placing it.
+ "/static/estilo/fonts/v1/*", "/static/estilo/sky/v1/*", "/static/estilo/sky.css", "/static/calma.css",
"/static/site/home.css", "/static/site/archivo.woff2", "/static/site/archivo-ext.woff2",
"/static/site/newsreader.woff2", "/static/site/newsreader-ext.woff2",
}
+// examplePath is a real file under a wildcard route, so fetching it
+// proves the handler is mounted rather than merely that chi has a pattern.
+func examplePath(route string) string {
+ switch route {
+ case "/static/estilo/fonts/v1/*":
+ return theme.FontPrefix + "onest-latin.woff2"
+ case "/static/estilo/sky/v1/*":
+ return sky.For(sky.SuiteSeed).Layers[0].Src
+ }
+ return route
+}
+
func sharedPublic(route string) bool {
for _, p := range sharedPublicPaths {
if p == route {
@@ -104,6 +121,7 @@ func TestSharedRoutesOnBothOrigins(t *testing.T) {
app := newTestApp(t)
for _, host := range []string{credentialHost, directoryHost} {
for _, path := range sharedPublicPaths {
+ path = examplePath(path)
req := httptest.NewRequest(http.MethodGet, "https://"+host+path, nil)
rec := httptest.NewRecorder()
app.Router().ServeHTTP(rec, req)
diff --git a/internal/home/render.go b/internal/home/render.go
index 4bc9705..5494e72 100644
--- a/internal/home/render.go
+++ b/internal/home/render.go
@@ -10,6 +10,7 @@ import (
"path"
"amadan.net/oficina/estilo.git/credits"
+ "amadan.net/oficina/estilo.git/sky"
"github.com/carlosframework/rastrillo/ui"
)
@@ -49,7 +50,8 @@ func newRenderer() (*renderer, error) {
// ui.Funcs supplies the helpers rastrillo's partials call —
// "T" among them — so the tree must carry them before those
// partials are parsed, not after.
- t, err := template.New(name).Funcs(ui.Funcs()).ParseFS(templatesFS, layoutFile)
+ isDoor := doorPages[name]
+ t, err := template.New(name).Funcs(ui.Funcs()).Funcs(homeFuncs).Funcs(template.FuncMap{"door": func() bool { return isDoor }}).ParseFS(templatesFS, layoutFile)
if err != nil {
return nil, fmt.Errorf("parse %s: %w", layoutFile, err)
}
@@ -59,6 +61,9 @@ func newRenderer() (*renderer, error) {
if t, err = t.ParseFS(credits.Templates(), "templates/*.html"); err != nil {
return nil, fmt.Errorf("parse credits partials: %w", err)
}
+ if t, err = t.ParseFS(sky.Templates(), "templates/*.html"); err != nil {
+ return nil, fmt.Errorf("parse sky partials: %w", err)
+ }
if t, err = t.ParseFS(templatesFS, f); err != nil {
return nil, fmt.Errorf("parse %s: %w", f, err)
}
diff --git a/internal/home/static/brand/apple-touch-icon.png b/internal/home/static/brand/apple-touch-icon.png
index 97b522c..0b71806 100644
Binary files a/internal/home/static/brand/apple-touch-icon.png and b/internal/home/static/brand/apple-touch-icon.png differ
diff --git a/internal/home/static/brand/brand.css b/internal/home/static/brand/brand.css
index 2e194c6..27e25ad 100644
--- a/internal/home/static/brand/brand.css
+++ b/internal/home/static/brand/brand.css
@@ -1,4 +1,5 @@
-/* Oficina brand artwork. Source: oficina/estilo brand/. */
+/* Oficina brand artwork. Source: oficina/estilo brand/. The icons carry
+ their own squircle and transparent corners, so nothing here rounds them. */
[estilo-brand] {
display: inline-flex;
align-items: center;
@@ -10,7 +11,6 @@
flex-shrink: 0;
inline-size: 1.75rem;
block-size: 1.75rem;
- border-radius: 21%;
vertical-align: middle;
}
[estilo-brand-icon="listing"] {
diff --git a/internal/home/static/brand/calendar.svg b/internal/home/static/brand/calendar.svg
index 97108f8..72c5aca 100644
--- a/internal/home/static/brand/calendar.svg
+++ b/internal/home/static/brand/calendar.svg
@@ -1,10 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Calendar"><title>Calendar</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#CB3F50"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 2v3" />
- <path d="M16 2v3" />
- <rect x="3" y="3" width="18" height="18" rx="2" />
- <path d="M3 9h18" />
- <path d="M8 13h.01" />
- <path d="M12 13h.01" />
- <path d="M16 13h.01" />
- <path d="M8 17h.01" />
- <path d="M12 17h.01" />
- <path d="M16 17h.01" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Calendar"><title>Calendar</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#d46568"/><stop offset="1" stop-color="#bc484f"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="44.9" width="0.88" height="11.0" fill="#feb8b4"/><rect x="5.57" y="37.3" width="0.65" height="17.8" fill="#ffaab0"/><rect x="7.47" y="29.0" width="1.11" height="25.1" fill="#ffc7c7"/><rect x="9.64" y="37.7" width="0.80" height="15.0" fill="#ffb3ad"/><rect x="11.83" y="32.4" width="1.03" height="18.9" fill="#feb9b3"/><rect x="13.88" y="15.4" width="1.15" height="34.4" fill="#ffb2b5"/><rect x="15.13" y="15.2" width="1.05" height="33.8" fill="#ffdbda"/><rect x="16.29" y="21.5" width="0.76" height="26.7" fill="#fed7d5"/><rect x="18.28" y="25.5" width="1.25" height="21.3" fill="#fedbdb"/><rect x="19.97" y="16.0" width="0.86" height="29.7" fill="#fed9d6"/><rect x="22.11" y="16.6" width="1.07" height="27.9" fill="#fed3d2"/><rect x="24.30" y="32.1" width="1.11" height="11.3" fill="#fec1c4"/><rect x="25.55" y="31.1" width="0.73" height="11.7" fill="#fba2a4"/><rect x="27.64" y="17.8" width="0.88" height="24.2" fill="#feb5b8"/><rect x="29.75" y="21.0" width="0.66" height="20.6" fill="#fecaca"/><rect x="31.86" y="26.3" width="0.89" height="15.0" fill="#fededb"/><rect x="33.40" y="15.7" width="0.61" height="25.4" fill="#fca7a3"/><rect x="35.64" y="5.5" width="0.71" height="35.8" fill="#ffd7d7"/><rect x="37.27" y="15.0" width="1.18" height="26.4" fill="#f3aca7"/><rect x="38.76" y="21.5" width="0.98" height="20.2" fill="#fec3c0"/><rect x="40.06" y="17.9" width="0.78" height="24.1" fill="#fed9d9"/><rect x="42.13" y="11.5" width="0.66" height="30.9" fill="#ffdadb"/><rect x="44.15" y="25.3" width="1.01" height="17.6" fill="#feb9bc"/><rect x="46.20" y="32.5" width="0.78" height="11.0" fill="#ffdada"/><rect x="48.18" y="21.5" width="1.03" height="22.5" fill="#ffb0af"/><rect x="50.48" y="21.7" width="0.95" height="22.8" fill="#fec0c3"/><rect x="52.36" y="29.3" width="0.79" height="15.5" fill="#ffd8d6"/><rect x="54.49" y="17.4" width="1.23" height="27.8" fill="#fdb0ac"/><rect x="56.60" y="9.1" width="1.08" height="36.1" fill="#fecacb"/><rect x="58.50" y="21.0" width="0.81" height="24.2" fill="#fed8d5"/><rect x="59.64" y="25.8" width="0.70" height="19.5" fill="#eeaaa8"/><rect x="60.93" y="22.6" width="1.29" height="22.6" fill="#fededf"/><rect x="63.09" y="15.3" width="1.28" height="29.6" fill="#fed8d5"/><rect x="65.21" y="28.9" width="0.90" height="15.7" fill="#f7acaf"/><rect x="67.24" y="33.4" width="0.89" height="11.0" fill="#feb4b6"/><rect x="69.17" y="20.7" width="0.96" height="23.4" fill="#ffd3d4"/><rect x="71.10" y="18.6" width="1.17" height="25.4" fill="#f1b2b3"/><rect x="72.51" y="25.4" width="0.90" height="18.4" fill="#faa4a9"/><rect x="74.50" y="22.6" width="1.15" height="21.2" fill="#f6abab"/><rect x="75.94" y="11.2" width="1.27" height="32.6" fill="#f6aba6"/><rect x="77.15" y="7.0" width="1.07" height="36.9" fill="#fed3d3"/><rect x="79.38" y="20.1" width="1.22" height="24.1" fill="#ffcac5"/><rect x="81.23" y="25.8" width="0.73" height="18.9" fill="#febab7"/><rect x="83.23" y="17.6" width="1.09" height="27.8" fill="#feaaa6"/><rect x="85.24" y="23.9" width="1.09" height="22.4" fill="#feb9bc"/><rect x="86.38" y="33.4" width="0.97" height="13.4" fill="#f1b4af"/><rect x="87.50" y="36.4" width="1.04" height="11.0" fill="#ffdcd9"/><rect x="88.79" y="34.2" width="0.93" height="14.0" fill="#ffbdbd"/><rect x="90.39" y="23.5" width="0.92" height="25.7" fill="#ffc1c4"/><rect x="91.70" y="22.5" width="0.97" height="27.7" fill="#eeaeb2"/><rect x="93.10" y="29.8" width="0.97" height="21.3" fill="#feb4af"/><rect x="94.72" y="33.7" width="0.66" height="18.6" fill="#fed2d3"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="22" y="26" width="56" height="52" rx="7" fill="#fff"/><path d="M22 33a7 7 0 0 1 7-7h42a7 7 0 0 1 7 7v7H22z" fill="#a4323b"/><g fill="#fff"><rect x="34" y="18" width="5" height="14" rx="2.5"/><rect x="61" y="18" width="5" height="14" rx="2.5"/></g><g fill="#a4323b"><circle cx="36" cy="52" r="3.5"/><circle cx="50" cy="52" r="3.5"/><circle cx="64" cy="52" r="3.5"/><circle cx="36" cy="65" r="3.5"/><circle cx="50" cy="65" r="3.5"/></g></svg>
diff --git a/internal/home/static/brand/calls.svg b/internal/home/static/brand/calls.svg
index a98731d..d3c4db4 100644
--- a/internal/home/static/brand/calls.svg
+++ b/internal/home/static/brand/calls.svg
@@ -1,2 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Calls"><title>Calls</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#087F8C"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5" />
- <rect x="2" y="6" width="14" height="12" rx="2" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Calls"><title>Calls</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#049cbd"/><stop offset="1" stop-color="#00829e"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="31.6" width="1.17" height="21.9" fill="#7fcee8"/><rect x="5.13" y="21.3" width="1.14" height="31.3" fill="#9ce5fd"/><rect x="6.84" y="18.3" width="0.62" height="33.1" fill="#90e4ff"/><rect x="8.59" y="27.1" width="0.81" height="23.0" fill="#72dbfd"/><rect x="10.07" y="27.1" width="1.10" height="22.1" fill="#76dcfa"/><rect x="12.28" y="14.7" width="1.28" height="33.0" fill="#7adff9"/><rect x="13.44" y="15.8" width="0.72" height="31.3" fill="#9addee"/><rect x="15.08" y="28.1" width="1.01" height="18.1" fill="#8bd2ec"/><rect x="16.62" y="34.5" width="0.67" height="11.0" fill="#b4ebff"/><rect x="17.74" y="30.3" width="1.10" height="14.8" fill="#99daf2"/><rect x="18.98" y="22.1" width="1.15" height="22.5" fill="#89d4f2"/><rect x="20.67" y="20.4" width="0.74" height="23.7" fill="#a6e8ff"/><rect x="22.88" y="30.4" width="0.95" height="13.3" fill="#b2ebff"/><rect x="24.29" y="25.9" width="0.60" height="17.7" fill="#adedff"/><rect x="26.55" y="8.9" width="1.00" height="34.7" fill="#7ed3f3"/><rect x="28.40" y="13.4" width="1.25" height="30.3" fill="#98e7ff"/><rect x="29.69" y="21.4" width="1.29" height="22.3" fill="#9be2fc"/><rect x="30.94" y="22.6" width="0.76" height="21.3" fill="#76dcff"/><rect x="32.41" y="15.5" width="1.16" height="28.7" fill="#a8e6ff"/><rect x="34.24" y="13.7" width="0.95" height="30.7" fill="#9ae1fe"/><rect x="35.92" y="26.7" width="0.77" height="17.9" fill="#7edbfe"/><rect x="37.29" y="33.8" width="1.08" height="11.0" fill="#5fcef2"/><rect x="38.77" y="30.0" width="1.22" height="14.9" fill="#bfecff"/><rect x="40.88" y="19.5" width="0.96" height="25.6" fill="#86d1eb"/><rect x="43.05" y="28.2" width="1.10" height="17.0" fill="#8adffa"/><rect x="45.15" y="26.8" width="0.87" height="18.4" fill="#6fd8f8"/><rect x="46.88" y="12.6" width="1.01" height="32.4" fill="#ace8fe"/><rect x="47.98" y="8.7" width="1.15" height="36.2" fill="#a3e9fe"/><rect x="49.52" y="15.4" width="1.16" height="29.2" fill="#97dcf4"/><rect x="50.97" y="23.6" width="0.98" height="20.8" fill="#88e1fe"/><rect x="53.09" y="17.8" width="1.08" height="26.1" fill="#9addf6"/><rect x="55.28" y="14.3" width="0.64" height="29.0" fill="#b5efff"/><rect x="57.13" y="28.2" width="0.88" height="14.7" fill="#7edbf9"/><rect x="59.43" y="29.3" width="1.00" height="12.9" fill="#c0efff"/><rect x="61.19" y="17.3" width="0.86" height="24.6" fill="#73ddf7"/><rect x="62.68" y="16.8" width="1.16" height="24.9" fill="#a1e5ff"/><rect x="64.56" y="25.2" width="0.98" height="16.2" fill="#88e5ff"/><rect x="66.22" y="20.9" width="1.28" height="20.4" fill="#82e5fe"/><rect x="67.76" y="8.5" width="1.24" height="32.9" fill="#88e6fe"/><rect x="69.71" y="7.4" width="1.23" height="34.2" fill="#8fdbf7"/><rect x="71.24" y="18.3" width="0.71" height="23.4" fill="#aeeaff"/><rect x="72.69" y="22.7" width="1.28" height="19.4" fill="#84d8f5"/><rect x="74.58" y="15.1" width="0.81" height="27.7" fill="#81e1ff"/><rect x="76.77" y="19.3" width="0.73" height="24.4" fill="#7de1fe"/><rect x="78.73" y="33.8" width="0.79" height="11.0" fill="#8dd2ed"/><rect x="80.46" y="32.3" width="0.92" height="13.6" fill="#71d9f5"/><rect x="81.67" y="24.0" width="1.05" height="22.6" fill="#b2e8fe"/><rect x="83.95" y="23.6" width="0.71" height="24.6" fill="#8ce7ff"/><rect x="85.30" y="31.0" width="0.88" height="18.0" fill="#97dbef"/><rect x="87.05" y="29.5" width="1.06" height="20.8" fill="#a3ecfe"/><rect x="88.76" y="17.7" width="0.68" height="33.8" fill="#88defc"/><rect x="90.97" y="20.9" width="0.62" height="32.1" fill="#8ccee5"/><rect x="92.72" y="34.3" width="0.95" height="19.8" fill="#84e6fd"/><rect x="93.83" y="36.0" width="0.99" height="18.7" fill="#7cd0e7"/><rect x="95.31" y="30.1" width="1.01" height="25.4" fill="#91e3ff"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="33" y="21" width="47" height="33" rx="12" fill="#fff" opacity=".5"/><path d="M26 36h32a12 12 0 0 1 12 12v14a12 12 0 0 1-12 12H40l-12 10v-10a12 12 0 0 1-12-12V48a12 12 0 0 1 12-12z" fill="#fff"/><g fill="#056b83"><rect x="28" y="51" width="5" height="12" rx="2.5"/><rect x="37" y="46" width="5" height="22" rx="2.5"/><rect x="46" y="50" width="5" height="14" rx="2.5"/><rect x="55" y="53" width="5" height="8" rx="2.5"/></g></svg>
diff --git a/internal/home/static/brand/docs.svg b/internal/home/static/brand/docs.svg
index 9b7f4c6..75e0a4f 100644
--- a/internal/home/static/brand/docs.svg
+++ b/internal/home/static/brand/docs.svg
@@ -1,5 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Docs"><title>Docs</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#2563EB"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z" />
- <path d="M14 2v5a1 1 0 0 0 1 1h5" />
- <path d="M10 9H8" />
- <path d="M16 13H8" />
- <path d="M16 17H8" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Docs"><title>Docs</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#5c8ae1"/><stop offset="1" stop-color="#4170cb"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="29.3" width="0.66" height="25.1" fill="#d5e3ff"/><rect x="6.12" y="31.1" width="0.88" height="23.1" fill="#c6dcff"/><rect x="7.79" y="21.7" width="0.96" height="32.3" fill="#a8cbfe"/><rect x="8.99" y="21.1" width="0.72" height="32.6" fill="#c1d4fe"/><rect x="11.18" y="37.2" width="1.25" height="16.0" fill="#b9d2fe"/><rect x="12.52" y="41.7" width="1.26" height="11.1" fill="#a0bfff"/><rect x="14.31" y="32.4" width="1.15" height="19.8" fill="#abc8ff"/><rect x="16.50" y="27.7" width="1.02" height="23.5" fill="#d0e0fe"/><rect x="18.25" y="36.0" width="0.76" height="14.3" fill="#bcd6fe"/><rect x="20.22" y="30.9" width="1.04" height="18.4" fill="#c0d5fe"/><rect x="21.74" y="17.1" width="0.77" height="31.2" fill="#d7e6fe"/><rect x="23.46" y="13.1" width="0.65" height="34.2" fill="#d2e3fe"/><rect x="25.33" y="23.0" width="1.17" height="23.2" fill="#a7c9fe"/><rect x="27.60" y="19.4" width="0.64" height="25.2" fill="#a3c2fe"/><rect x="29.54" y="11.2" width="1.13" height="32.3" fill="#afcdf9"/><rect x="31.49" y="22.4" width="1.07" height="20.1" fill="#bfd3fe"/><rect x="33.07" y="30.7" width="0.86" height="11.0" fill="#d7e7fe"/><rect x="34.74" y="25.0" width="1.23" height="16.0" fill="#d4e5ff"/><rect x="36.20" y="15.9" width="0.91" height="24.6" fill="#aecaff"/><rect x="38.14" y="19.1" width="1.22" height="20.8" fill="#bcd1fe"/><rect x="39.62" y="25.4" width="1.01" height="14.3" fill="#9fbffe"/><rect x="40.96" y="21.4" width="0.96" height="18.2" fill="#a2bffb"/><rect x="42.82" y="6.4" width="0.67" height="33.1" fill="#c7dbfe"/><rect x="45.04" y="8.5" width="0.76" height="31.2" fill="#a9c8ff"/><rect x="46.90" y="19.4" width="1.08" height="20.6" fill="#a4c1fb"/><rect x="49.12" y="13.1" width="0.96" height="27.5" fill="#b2cffe"/><rect x="51.29" y="13.2" width="0.82" height="28.1" fill="#9fc1fe"/><rect x="53.25" y="29.4" width="0.85" height="12.7" fill="#aac7fe"/><rect x="54.68" y="31.6" width="0.65" height="11.0" fill="#bdd2ff"/><rect x="55.92" y="25.5" width="1.12" height="17.7" fill="#d6e5fe"/><rect x="58.20" y="18.5" width="1.03" height="25.6" fill="#b5cdfe"/><rect x="59.34" y="24.1" width="0.65" height="20.4" fill="#aecefe"/><rect x="61.07" y="29.5" width="0.62" height="15.7" fill="#cfe0fe"/><rect x="63.29" y="15.2" width="1.29" height="30.7" fill="#abcaff"/><rect x="64.74" y="9.7" width="0.75" height="36.6" fill="#c5dbff"/><rect x="66.94" y="22.5" width="0.91" height="24.3" fill="#c6d8fe"/><rect x="69.15" y="25.6" width="1.24" height="21.6" fill="#aecdfe"/><rect x="70.98" y="17.6" width="0.94" height="29.7" fill="#c1d5ff"/><rect x="72.91" y="25.3" width="0.79" height="22.1" fill="#a2c3fa"/><rect x="75.16" y="36.4" width="1.20" height="11.0" fill="#a8c7fe"/><rect x="76.37" y="33.2" width="1.05" height="14.2" fill="#9ec0fe"/><rect x="77.93" y="22.3" width="1.26" height="25.1" fill="#b6d3fe"/><rect x="79.65" y="22.4" width="0.99" height="24.8" fill="#afc6fd"/><rect x="81.08" y="29.4" width="1.29" height="17.9" fill="#dce7fe"/><rect x="82.64" y="28.0" width="1.12" height="19.2" fill="#d6e3fe"/><rect x="83.93" y="18.2" width="0.65" height="29.1" fill="#a5c7fe"/><rect x="86.14" y="11.7" width="0.71" height="35.7" fill="#d2e3fe"/><rect x="88.11" y="25.4" width="0.79" height="22.2" fill="#9fc1f2"/><rect x="89.90" y="28.3" width="0.64" height="19.7" fill="#c0d7ff"/><rect x="91.43" y="21.3" width="0.77" height="27.1" fill="#b1c8fe"/><rect x="93.60" y="26.0" width="1.15" height="23.1" fill="#c7dbfe"/><rect x="95.21" y="38.7" width="1.29" height="11.1" fill="#b1ccfc"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><path d="M31 18h28l14 14v50H31z" fill="#fff"/><path d="M59 18v14h14" fill="#fff" opacity=".6"/><g fill="#2e5bb4"><rect x="38" y="44" width="28" height="4" rx="2"/><rect x="38" y="54" width="28" height="4" rx="2"/><rect x="38" y="64" width="18" height="4" rx="2"/></g></svg>
diff --git a/internal/home/static/brand/fichas.svg b/internal/home/static/brand/fichas.svg
new file mode 100644
index 0000000..2123615
--- /dev/null
+++ b/internal/home/static/brand/fichas.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Fichas"><title>Fichas</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#ab8704"/><stop offset="1" stop-color="#8e7002"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="27.5" width="0.86" height="23.2" fill="#eccd83"/><rect x="6.14" y="38.6" width="0.67" height="11.9" fill="#f0dfa4"/><rect x="7.41" y="36.2" width="0.93" height="14.2" fill="#f8e2a8"/><rect x="9.14" y="21.9" width="0.69" height="28.3" fill="#ffe691"/><rect x="11.42" y="19.0" width="1.06" height="31.3" fill="#e5c682"/><rect x="12.85" y="27.2" width="0.83" height="23.0" fill="#d9c886"/><rect x="14.34" y="28.1" width="1.19" height="22.1" fill="#e1ca85"/><rect x="16.48" y="16.8" width="0.88" height="33.3" fill="#f4da8f"/><rect x="18.73" y="25.3" width="0.79" height="24.7" fill="#dac490"/><rect x="20.04" y="35.7" width="0.95" height="14.1" fill="#ebd5a0"/><rect x="21.22" y="37.8" width="1.03" height="11.8" fill="#d5bc85"/><rect x="23.13" y="27.4" width="0.71" height="21.9" fill="#f1dc93"/><rect x="25.28" y="26.7" width="1.00" height="22.0" fill="#efd999"/><rect x="27.58" y="35.3" width="1.01" height="12.6" fill="#decc87"/><rect x="28.91" y="28.0" width="0.70" height="19.4" fill="#e0c786"/><rect x="30.01" y="17.8" width="1.16" height="29.1" fill="#f2de95"/><rect x="31.41" y="11.3" width="0.70" height="35.0" fill="#eacc83"/><rect x="33.32" y="19.4" width="0.84" height="26.0" fill="#f5d181"/><rect x="35.07" y="23.2" width="1.09" height="21.2" fill="#fad781"/><rect x="36.23" y="17.5" width="1.24" height="26.4" fill="#fde395"/><rect x="38.51" y="11.1" width="1.25" height="31.6" fill="#ffe3a7"/><rect x="40.52" y="25.6" width="0.94" height="16.1" fill="#ffe19a"/><rect x="42.29" y="29.7" width="1.12" height="11.3" fill="#efca78"/><rect x="44.52" y="16.3" width="1.10" height="23.9" fill="#f9dda2"/><rect x="46.45" y="18.2" width="0.90" height="21.4" fill="#e8c875"/><rect x="47.82" y="24.8" width="1.22" height="14.5" fill="#fdda84"/><rect x="49.42" y="21.7" width="0.89" height="17.4" fill="#e9cb7d"/><rect x="50.76" y="10.4" width="0.62" height="28.6" fill="#f1d088"/><rect x="52.92" y="4.7" width="1.16" height="34.4" fill="#e6d59f"/><rect x="54.27" y="13.2" width="1.22" height="26.1" fill="#f6d07a"/><rect x="55.83" y="19.1" width="1.04" height="20.5" fill="#ebd999"/><rect x="58.01" y="10.3" width="0.74" height="29.9" fill="#f6dca2"/><rect x="59.92" y="13.2" width="1.05" height="27.8" fill="#e1c572"/><rect x="61.25" y="24.9" width="0.91" height="16.7" fill="#f2e2aa"/><rect x="62.43" y="31.1" width="0.97" height="11.0" fill="#eed78f"/><rect x="64.36" y="25.8" width="0.70" height="17.3" fill="#fae191"/><rect x="65.79" y="18.6" width="1.00" height="25.3" fill="#f3d794"/><rect x="67.26" y="21.7" width="0.61" height="23.0" fill="#e2cc96"/><rect x="68.93" y="30.4" width="0.97" height="15.2" fill="#ebd19b"/><rect x="70.71" y="25.4" width="0.70" height="21.2" fill="#ffe69e"/><rect x="72.77" y="11.7" width="0.98" height="35.9" fill="#dcc68e"/><rect x="74.65" y="18.4" width="1.18" height="30.0" fill="#dfc890"/><rect x="76.46" y="29.1" width="1.11" height="20.0" fill="#fbe0a5"/><rect x="77.97" y="26.0" width="0.65" height="23.7" fill="#e7c678"/><rect x="79.51" y="19.8" width="1.27" height="30.3" fill="#ebd183"/><rect x="81.08" y="25.4" width="0.69" height="25.1" fill="#f9d78f"/><rect x="82.34" y="36.1" width="0.68" height="14.6" fill="#dfcb89"/><rect x="83.76" y="39.9" width="1.00" height="11.0" fill="#f5db81"/><rect x="85.69" y="30.9" width="1.03" height="20.2" fill="#e4ce96"/><rect x="87.33" y="24.6" width="0.70" height="26.6" fill="#fae0a5"/><rect x="88.77" y="30.1" width="0.74" height="21.1" fill="#d6bd85"/><rect x="90.61" y="34.7" width="0.83" height="16.6" fill="#e0c47b"/><rect x="92.62" y="21.0" width="1.18" height="30.3" fill="#f7e198"/><rect x="94.72" y="16.1" width="0.65" height="35.3" fill="#e3bc68"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="30" y="22" width="48" height="34" rx="5" fill="#fff" opacity=".5"/><rect x="22" y="32" width="56" height="42" rx="5" fill="#fff"/><rect x="22" y="32" width="56" height="10" rx="5" fill="#765d00" opacity=".3"/><g fill="#765d00"><rect x="30" y="50" width="40" height="4" rx="2"/><rect x="30" y="60" width="28" height="4" rx="2"/></g></svg>
diff --git a/internal/home/static/brand/files.svg b/internal/home/static/brand/files.svg
new file mode 100644
index 0000000..d9b65a1
--- /dev/null
+++ b/internal/home/static/brand/files.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Files"><title>Files</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#01a38f"/><stop offset="1" stop-color="#098777"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="28.2" width="1.07" height="24.5" fill="#b1f5e6"/><rect x="5.44" y="34.0" width="0.67" height="18.7" fill="#abf3e9"/><rect x="6.85" y="29.7" width="0.67" height="22.9" fill="#8befd6"/><rect x="9.10" y="15.8" width="1.00" height="36.8" fill="#96e4d5"/><rect x="10.24" y="18.5" width="1.11" height="34.0" fill="#7ad7c2"/><rect x="11.66" y="29.4" width="0.77" height="22.9" fill="#8ad3c1"/><rect x="12.82" y="35.4" width="0.72" height="16.8" fill="#88f6da"/><rect x="13.93" y="33.7" width="1.23" height="18.3" fill="#79ebd8"/><rect x="16.17" y="24.6" width="0.71" height="26.9" fill="#9bddcc"/><rect x="17.66" y="30.6" width="0.93" height="20.4" fill="#9ef1dc"/><rect x="19.42" y="39.4" width="1.00" height="11.0" fill="#96edd7"/><rect x="20.99" y="35.6" width="0.73" height="14.2" fill="#79f4e4"/><rect x="22.18" y="25.3" width="1.05" height="24.0" fill="#8fd6ca"/><rect x="24.05" y="18.8" width="0.65" height="29.5" fill="#7cd6c5"/><rect x="25.69" y="25.7" width="1.29" height="21.8" fill="#8aebd9"/><rect x="26.86" y="27.1" width="1.17" height="19.7" fill="#76dece"/><rect x="29.10" y="12.8" width="1.01" height="32.7" fill="#a0e8dc"/><rect x="30.29" y="8.3" width="0.62" height="36.5" fill="#8ce9dd"/><rect x="31.90" y="16.1" width="1.02" height="27.8" fill="#6bd7c5"/><rect x="34.13" y="27.4" width="1.30" height="15.3" fill="#6edfc5"/><rect x="36.36" y="17.1" width="0.97" height="24.5" fill="#8cd6c4"/><rect x="37.80" y="16.3" width="1.13" height="24.7" fill="#8ee1ce"/><rect x="39.00" y="23.3" width="1.20" height="17.2" fill="#82d2c6"/><rect x="40.53" y="29.0" width="0.95" height="11.0" fill="#6ce3cf"/><rect x="42.09" y="23.3" width="0.78" height="16.3" fill="#8dddc7"/><rect x="43.44" y="11.9" width="1.20" height="27.5" fill="#8cf2db"/><rect x="44.80" y="8.0" width="1.26" height="31.2" fill="#80efdf"/><rect x="46.08" y="13.4" width="0.67" height="25.8" fill="#95ecd7"/><rect x="47.60" y="18.9" width="0.92" height="20.3" fill="#8ee6cf"/><rect x="49.65" y="9.5" width="0.68" height="30.0" fill="#8af7de"/><rect x="51.91" y="6.2" width="0.61" height="33.8" fill="#9aede0"/><rect x="53.29" y="17.6" width="1.05" height="22.8" fill="#65e0cf"/><rect x="55.22" y="27.0" width="0.93" height="14.1" fill="#73d6c7"/><rect x="57.17" y="18.9" width="0.90" height="23.0" fill="#90f5e5"/><rect x="59.03" y="19.7" width="0.95" height="23.1" fill="#80e7cf"/><rect x="60.47" y="29.6" width="0.61" height="13.9" fill="#7cd1be"/><rect x="62.32" y="31.9" width="0.80" height="12.4" fill="#6fd3bf"/><rect x="64.36" y="16.7" width="0.83" height="28.6" fill="#8cf5e5"/><rect x="65.47" y="13.2" width="0.72" height="32.6" fill="#a0eddb"/><rect x="67.27" y="21.1" width="0.83" height="25.4" fill="#8fe5d0"/><rect x="69.42" y="24.6" width="0.70" height="22.6" fill="#91dac6"/><rect x="70.65" y="17.5" width="0.94" height="30.1" fill="#a3f5e2"/><rect x="72.80" y="15.1" width="1.18" height="33.0" fill="#8ae4d4"/><rect x="74.26" y="27.0" width="0.77" height="21.4" fill="#7cefdf"/><rect x="75.66" y="35.5" width="0.67" height="13.1" fill="#8bfce6"/><rect x="77.23" y="31.5" width="0.81" height="17.2" fill="#94ffe9"/><rect x="79.18" y="23.8" width="1.27" height="25.1" fill="#83e0ce"/><rect x="80.95" y="31.7" width="0.74" height="17.2" fill="#7ff0da"/><rect x="82.44" y="37.7" width="1.19" height="11.2" fill="#90e7d4"/><rect x="83.69" y="32.7" width="1.08" height="16.2" fill="#69dcc7"/><rect x="85.16" y="20.2" width="1.00" height="28.8" fill="#89e0cc"/><rect x="86.89" y="16.0" width="1.03" height="33.0" fill="#6ad5c3"/><rect x="88.00" y="21.7" width="0.81" height="27.3" fill="#84e2ce"/><rect x="89.38" y="27.9" width="1.01" height="21.2" fill="#91f3e6"/><rect x="90.97" y="23.5" width="0.71" height="25.7" fill="#7cdfca"/><rect x="92.67" y="15.3" width="1.20" height="34.1" fill="#6eddc8"/><rect x="94.51" y="23.4" width="0.82" height="26.3" fill="#9ae7dc"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><path d="M20 34a6 6 0 0 1 6-6h14l6 6h28a6 6 0 0 1 6 6v28a6 6 0 0 1-6 6H26a6 6 0 0 1-6-6z" fill="#fff"/><path d="M20 44h60" stroke="#047062" stroke-width="3" opacity=".35"/></svg>
diff --git a/internal/home/static/brand/icon-32.png b/internal/home/static/brand/icon-32.png
index bbfaca7..91203c1 100644
Binary files a/internal/home/static/brand/icon-32.png and b/internal/home/static/brand/icon-32.png differ
diff --git a/internal/home/static/brand/icon.svg b/internal/home/static/brand/icon.svg
index f30e545..7cb7482 100644
--- a/internal/home/static/brand/icon.svg
+++ b/internal/home/static/brand/icon.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Oficina"><title>Oficina</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#303642"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="3" rx="2" />
- <path d="M3 9h18" />
- <path d="M9 21V9" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Oficina"><title>Oficina</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><radialGradient id="c"><stop offset="0" stop-color="#fff" stop-opacity=".24"/><stop offset=".6" stop-color="#fff" stop-opacity="0"/></radialGradient><linearGradient id="l" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#fff" stop-opacity=".18"/><stop offset=".5" stop-color="#fff" stop-opacity="0"/></linearGradient><filter id="b" x="-20%" y="-20%" width="140%" height="140%"><feGaussianBlur stdDeviation="3"/></filter></defs><g clip-path="url(#s)"><g filter="url(#b)"><path d="M4 104L-34.71 -51.25L-32.31 -51.83Z" fill="#ae8a09"/><path d="M4 104L-32.48 -51.79L-30.07 -52.33Z" fill="#ab8c01"/><path d="M4 104L-30.25 -52.29L-27.83 -52.80Z" fill="#a78e04"/><path d="M4 104L-28.01 -52.76L-25.59 -53.24Z" fill="#a39009"/><path d="M4 104L-25.77 -53.21L-23.34 -53.65Z" fill="#9f9107"/><path d="M4 104L-23.52 -53.62L-21.08 -54.02Z" fill="#9b9306"/><path d="M4 104L-21.26 -53.99L-18.82 -54.36Z" fill="#979508"/><path d="M4 104L-19.00 -54.34L-16.55 -54.67Z" fill="#929703"/><path d="M4 104L-16.73 -54.65L-14.28 -54.95Z" fill="#8d990a"/><path d="M4 104L-14.46 -54.93L-12.00 -55.20Z" fill="#889a17"/><path d="M4 104L-12.18 -55.18L-9.72 -55.41Z" fill="#829c21"/><path d="M4 104L-9.91 -55.39L-7.44 -55.59Z" fill="#7c9d29"/><path d="M4 104L-7.63 -55.58L-5.16 -55.74Z" fill="#769f30"/><path d="M4 104L-5.34 -55.73L-2.87 -55.85Z" fill="#70a037"/><path d="M4 104L-3.06 -55.84L-0.59 -55.93Z" fill="#69a23e"/><path d="M4 104L-0.77 -55.93L1.70 -55.98Z" fill="#62a344"/><path d="M4 104L1.52 -55.98L3.99 -56.00Z" fill="#5ba44a"/><path d="M4 104L3.81 -56.00L6.28 -55.98Z" fill="#54a54f"/><path d="M4 104L6.09 -55.99L8.57 -55.93Z" fill="#4ea654"/><path d="M4 104L8.38 -55.94L10.85 -55.85Z" fill="#47a659"/><path d="M4 104L10.67 -55.86L13.14 -55.74Z" fill="#3fa75d"/><path d="M4 104L12.95 -55.75L15.42 -55.59Z" fill="#36a862"/><path d="M4 104L15.24 -55.60L17.70 -55.41Z" fill="#2ca867"/><path d="M4 104L17.52 -55.43L19.98 -55.20Z" fill="#20a96b"/><path d="M4 104L19.80 -55.22L22.26 -54.96Z" fill="#0ca970"/><path d="M4 104L22.07 -54.98L24.53 -54.68Z" fill="#03a975"/><path d="M4 104L24.35 -54.70L26.79 -54.37Z" fill="#0aa87a"/><path d="M4 104L26.61 -54.39L29.06 -54.03Z" fill="#09a87f"/><path d="M4 104L28.88 -54.05L31.31 -53.65Z" fill="#0ba783"/><path d="M4 104L31.13 -53.68L33.57 -53.24Z" fill="#03a787"/><path d="M4 104L33.39 -53.28L35.81 -52.81Z" fill="#0ba78b"/><path d="M4 104L35.63 -52.84L38.05 -52.33Z" fill="#08a68e"/><path d="M4 104L37.87 -52.37L40.28 -51.83Z" fill="#07a692"/><path d="M4 104L40.11 -51.87L42.51 -51.30Z" fill="#08a695"/><path d="M4 104L42.33 -51.34L44.73 -50.73Z" fill="#0ba598"/><path d="M4 104L44.55 -50.78L46.93 -50.13Z" fill="#02a59b"/><path d="M4 104L46.76 -50.18L49.13 -49.50Z" fill="#09a49e"/><path d="M4 104L48.96 -49.55L51.33 -48.84Z" fill="#03a4a1"/><path d="M4 104L51.15 -48.89L53.51 -48.15Z" fill="#0ea3a4"/><path d="M4 104L53.33 -48.20L55.68 -47.42Z" fill="#0ca3a6"/><path d="M4 104L55.50 -47.48L57.84 -46.67Z" fill="#0ba3a9"/><path d="M4 104L57.66 -46.73L59.99 -45.88Z" fill="#0ca2ac"/><path d="M4 104L59.82 -45.95L62.12 -45.07Z" fill="#00a2af"/><path d="M4 104L61.95 -45.14L64.25 -44.22Z" fill="#04a2b2"/><path d="M4 104L64.08 -44.29L66.36 -43.35Z" fill="#0ba1b4"/><path d="M4 104L66.20 -43.42L68.47 -42.44Z" fill="#04a1b8"/><path d="M4 104L68.30 -42.51L70.55 -41.50Z" fill="#0da0ba"/><path d="M4 104L70.39 -41.58L72.63 -40.53Z" fill="#0a9fbd"/><path d="M4 104L72.46 -40.61L74.69 -39.54Z" fill="#099fc0"/><path d="M4 104L74.52 -39.62L76.73 -38.51Z" fill="#0b9ec3"/><path d="M4 104L76.57 -38.60L78.76 -37.46Z" fill="#039ec7"/><path d="M4 104L78.60 -37.54L80.78 -36.37Z" fill="#0a9dcb"/><path d="M4 104L80.62 -36.46L82.78 -35.26Z" fill="#089ccf"/><path d="M4 104L82.62 -35.35L84.76 -34.12Z" fill="#099bd3"/><path d="M4 104L84.60 -34.21L86.73 -32.95Z" fill="#029ad8"/><path d="M4 104L86.57 -33.05L88.68 -31.76Z" fill="#0099dd"/><path d="M4 104L88.52 -31.85L90.61 -30.53Z" fill="#1a98de"/><path d="M4 104L90.46 -30.63L92.53 -29.28Z" fill="#2897e0"/><path d="M4 104L92.37 -29.38L94.42 -28.00Z" fill="#3295e2"/><path d="M4 104L94.27 -28.10L96.30 -26.69Z" fill="#3b94e3"/><path d="M4 104L96.15 -26.80L98.16 -25.36Z" fill="#4392e4"/><path d="M4 104L98.01 -25.47L100.00 -24.00Z" fill="#4a91e5"/><path d="M4 104L99.86 -24.11L101.82 -22.61Z" fill="#5190e6"/><path d="M4 104L101.68 -22.72L103.62 -21.20Z" fill="#578ee6"/><path d="M4 104L103.48 -21.31L105.40 -19.76Z" fill="#5d8de7"/><path d="M4 104L105.26 -19.88L107.16 -18.30Z" fill="#628be7"/><path d="M4 104L107.02 -18.42L108.90 -16.81Z" fill="#678ae7"/><path d="M4 104L108.76 -16.93L110.62 -15.30Z" fill="#6c88e7"/><path d="M4 104L110.48 -15.42L112.32 -13.76Z" fill="#7187e7"/><path d="M4 104L112.18 -13.89L113.99 -12.20Z" fill="#7686e6"/><path d="M4 104L113.86 -12.33L115.64 -10.62Z" fill="#7a84e6"/><path d="M4 104L115.51 -10.74L117.27 -9.01Z" fill="#7e83e5"/><path d="M4 104L117.14 -9.14L118.87 -7.38Z" fill="#8282e4"/><path d="M4 104L118.74 -7.51L120.45 -5.72Z" fill="#8780e3"/><path d="M4 104L120.33 -5.86L122.01 -4.05Z" fill="#8a7fe2"/><path d="M4 104L121.89 -4.18L123.54 -2.35Z" fill="#8e7ee1"/><path d="M4 104L123.42 -2.48L125.05 -0.63Z" fill="#927cdf"/><path d="M4 104L124.93 -0.76L126.54 1.12Z" fill="#967bde"/><path d="M4 104L126.42 0.98L127.99 2.88Z" fill="#997adc"/><path d="M4 104L127.88 2.74L129.43 4.66Z" fill="#9d78da"/><path d="M4 104L129.31 4.52L130.84 6.47Z" fill="#a077d8"/><path d="M4 104L130.72 6.32L132.22 8.29Z" fill="#a376d6"/><path d="M4 104L132.11 8.14L133.57 10.13Z" fill="#a675d3"/><path d="M4 104L133.47 9.99L134.90 12.00Z" fill="#aa74d1"/><path d="M4 104L134.80 11.85L136.20 13.88Z" fill="#ad73ce"/><path d="M4 104L136.10 13.73L137.48 15.78Z" fill="#af71cc"/><path d="M4 104L137.38 15.63L138.73 17.70Z" fill="#b270c9"/><path d="M4 104L138.63 17.54L139.95 19.63Z" fill="#b56fc6"/><path d="M4 104L139.85 19.48L141.14 21.58Z" fill="#b86ec3"/><path d="M4 104L141.05 21.43L142.31 23.55Z" fill="#ba6dc0"/><path d="M4 104L142.21 23.40L143.44 25.54Z" fill="#bd6cbd"/><path d="M4 104L143.35 25.38L144.55 27.54Z" fill="#bf6cb9"/><path d="M4 104L144.46 27.38L145.63 29.56Z" fill="#c16bb6"/><path d="M4 104L145.54 29.40L146.68 31.59Z" fill="#c36ab3"/><path d="M4 104L146.60 31.43L147.70 33.64Z" fill="#c569af"/><path d="M4 104L147.62 33.48L148.69 35.70Z" fill="#c769ab"/><path d="M4 104L148.61 35.54L149.65 37.78Z" fill="#c968a8"/><path d="M4 104L149.58 37.61L150.59 39.87Z" fill="#cb67a4"/><path d="M4 104L150.51 39.70L151.49 41.97Z" fill="#cd67a1"/><path d="M4 104L151.42 41.80L152.36 44.09Z" fill="#ce669d"/><path d="M4 104L152.29 43.92L153.20 46.22Z" fill="#d06699"/><path d="M4 104L153.14 46.05L154.01 48.36Z" fill="#d16695"/><path d="M4 104L153.95 48.18L154.79 50.51Z" fill="#d26592"/><path d="M4 104L154.73 50.34L155.54 52.67Z" fill="#d3658e"/><path d="M4 104L155.48 52.50L156.26 54.84Z" fill="#d4658a"/><path d="M4 104L156.20 54.67L156.95 57.02Z" fill="#d56586"/><path d="M4 104L156.89 56.85L157.60 59.22Z" fill="#d66582"/><path d="M4 104L157.55 59.04L158.23 61.42Z" fill="#d7657e"/><path d="M4 104L158.18 61.24L158.82 63.63Z" fill="#d8657a"/><path d="M4 104L158.78 63.45L159.38 65.85Z" fill="#d86576"/><path d="M4 104L159.34 65.67L159.91 68.07Z" fill="#d96572"/><path d="M4 104L159.87 67.89L160.41 70.31Z" fill="#d9666e"/><path d="M4 104L160.37 70.13L160.88 72.55Z" fill="#d9666a"/><path d="M4 104L160.84 72.37L161.31 74.79Z" fill="#d96666"/><path d="M4 104L161.28 74.61L161.71 77.05Z" fill="#d96762"/><path d="M4 104L161.68 76.87L162.08 79.30Z" fill="#d9675e"/><path d="M4 104L162.05 79.12L162.42 81.57Z" fill="#d9685a"/><path d="M4 104L162.39 81.39L162.72 83.84Z" fill="#d96956"/><path d="M4 104L162.70 83.65L163.00 86.11Z" fill="#d96952"/><path d="M4 104L162.98 85.93L163.24 88.38Z" fill="#d86a4d"/><path d="M4 104L163.22 88.20L163.44 90.66Z" fill="#d86b49"/><path d="M4 104L163.43 90.48L163.62 92.94Z" fill="#d76c45"/><path d="M4 104L163.60 92.76L163.76 95.23Z" fill="#d66d41"/><path d="M4 104L163.75 95.05L163.87 97.51Z" fill="#d66e3c"/><path d="M4 104L163.86 97.33L163.94 99.80Z" fill="#d56f38"/><path d="M4 104L163.94 99.62L163.99 102.09Z" fill="#d47033"/><path d="M4 104L163.99 101.91L164.00 104.38Z" fill="#d3712e"/><path d="M4 104L164.00 104.19L163.98 106.67Z" fill="#d17329"/><path d="M4 104L163.98 106.48L163.92 108.95Z" fill="#d07424"/><path d="M4 104L163.93 108.77L163.84 111.24Z" fill="#cf751e"/><path d="M4 104L163.84 111.06L163.72 113.52Z" fill="#ce7618"/><path d="M4 104L163.73 113.34L163.56 115.81Z" fill="#cc7810"/><path d="M4 104L163.58 115.63L163.38 118.09Z" fill="#cb7906"/><path d="M4 104L163.39 117.91L163.16 120.37Z" fill="#c87b05"/><path d="M4 104L163.18 120.18L162.91 122.64Z" fill="#c67c04"/><path d="M4 104L162.93 122.46L162.63 124.91Z" fill="#c37e05"/><path d="M4 104L162.65 124.73L162.31 127.18Z" fill="#c18007"/><path d="M4 104L162.34 127.00L161.96 129.44Z" fill="#bf8100"/><path d="M4 104L161.99 129.26L161.58 131.70Z" fill="#bc8204"/><path d="M4 104L161.62 131.52L161.17 133.95Z" fill="#ba8409"/><path d="M4 104L161.21 133.77L160.73 136.19Z" fill="#b88505"/><path d="M4 104L160.76 136.01L160.25 138.43Z" fill="#b58602"/><path d="M4 104L160.29 138.25L159.74 140.66Z" fill="#b38800"/><path d="M4 104L159.79 140.48L159.20 142.89Z" fill="#b08909"/></g><rect width="100" height="100" fill="url(#c)"/><rect width="100" height="100" fill="url(#l)"/></g><rect x="30.62" y="23.78" width="45.60" height="36.48" rx="7.98" fill="#fff" opacity=".55"/><rect x="22.64" y="36.32" width="50.16" height="38.76" rx="7.98" fill="#fff"/></svg>
diff --git a/internal/home/static/brand/mail.svg b/internal/home/static/brand/mail.svg
new file mode 100644
index 0000000..d75b4eb
--- /dev/null
+++ b/internal/home/static/brand/mail.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Mail"><title>Mail</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#c467a4"/><stop offset="1" stop-color="#ad4b8d"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="30.0" width="0.68" height="24.6" fill="#f0b3dd"/><rect x="5.31" y="33.7" width="0.91" height="20.9" fill="#f1a4d2"/><rect x="7.04" y="26.0" width="1.14" height="28.3" fill="#ffcee7"/><rect x="8.65" y="21.6" width="1.06" height="32.4" fill="#febae4"/><rect x="9.83" y="27.9" width="0.88" height="25.8" fill="#f4abd6"/><rect x="11.78" y="41.8" width="0.61" height="11.3" fill="#febee6"/><rect x="13.41" y="38.2" width="0.77" height="14.3" fill="#fab1d7"/><rect x="15.60" y="26.2" width="0.72" height="25.4" fill="#e7afd5"/><rect x="16.96" y="29.6" width="0.98" height="21.3" fill="#f4a3d0"/><rect x="18.70" y="36.0" width="1.25" height="13.9" fill="#ffc3ec"/><rect x="20.10" y="29.9" width="1.11" height="19.2" fill="#fed4eb"/><rect x="21.81" y="14.9" width="1.06" height="33.1" fill="#ecb0da"/><rect x="23.60" y="13.4" width="0.97" height="33.5" fill="#e1afd1"/><rect x="25.82" y="24.8" width="0.61" height="20.8" fill="#f8b7e5"/><rect x="27.92" y="17.3" width="1.13" height="27.0" fill="#eca5d7"/><rect x="29.18" y="12.0" width="0.79" height="31.5" fill="#fcb2e2"/><rect x="31.08" y="20.5" width="1.17" height="21.9" fill="#f5abd9"/><rect x="32.26" y="29.3" width="1.02" height="12.5" fill="#ffbfe7"/><rect x="34.51" y="25.9" width="0.67" height="15.1" fill="#ffd6ef"/><rect x="36.26" y="14.9" width="1.29" height="25.4" fill="#eaadd4"/><rect x="38.46" y="20.7" width="0.62" height="19.2" fill="#fed0e9"/><rect x="40.23" y="23.7" width="1.13" height="15.9" fill="#e7aecb"/><rect x="42.02" y="11.0" width="1.13" height="28.6" fill="#e6b0d4"/><rect x="43.88" y="3.4" width="1.19" height="36.3" fill="#fed7ed"/><rect x="45.53" y="13.1" width="0.65" height="26.9" fill="#ffceef"/><rect x="46.98" y="20.5" width="0.83" height="19.8" fill="#fecbeb"/><rect x="49.02" y="14.2" width="1.29" height="26.7" fill="#ffd0f0"/><rect x="50.20" y="11.0" width="0.96" height="30.2" fill="#fcc0e4"/><rect x="52.27" y="23.2" width="1.16" height="18.8" fill="#fecbef"/><rect x="53.86" y="31.6" width="0.88" height="11.0" fill="#eea9d1"/><rect x="56.10" y="23.5" width="0.70" height="20.0" fill="#fed8ef"/><rect x="57.41" y="17.4" width="1.19" height="26.6" fill="#edaad3"/><rect x="59.55" y="25.1" width="1.06" height="19.7" fill="#fecee8"/><rect x="61.23" y="28.0" width="1.22" height="17.4" fill="#ffc9e4"/><rect x="62.95" y="16.5" width="0.78" height="29.4" fill="#ffc3ea"/><rect x="64.10" y="9.9" width="1.22" height="36.3" fill="#fec7e9"/><rect x="66.13" y="17.4" width="1.11" height="29.2" fill="#f7c0e6"/><rect x="67.37" y="26.2" width="1.27" height="20.7" fill="#f7c2df"/><rect x="69.58" y="23.7" width="0.93" height="23.4" fill="#f3a2d2"/><rect x="70.85" y="18.4" width="1.21" height="28.7" fill="#fec8e6"/><rect x="72.51" y="23.6" width="0.86" height="23.6" fill="#ffb9e1"/><rect x="73.71" y="33.2" width="0.82" height="14.0" fill="#fbbce7"/><rect x="74.83" y="36.2" width="0.93" height="11.0" fill="#feb7dd"/><rect x="76.31" y="32.3" width="1.23" height="14.8" fill="#eaa9cd"/><rect x="77.62" y="22.5" width="0.86" height="24.6" fill="#ffcbe5"/><rect x="79.83" y="22.6" width="0.85" height="24.4" fill="#f2b5d5"/><rect x="81.23" y="28.9" width="0.65" height="18.1" fill="#f4a8dd"/><rect x="82.96" y="24.3" width="0.82" height="22.7" fill="#febfe9"/><rect x="84.94" y="10.8" width="0.60" height="36.3" fill="#f4b1db"/><rect x="86.97" y="17.8" width="0.96" height="29.5" fill="#fedcef"/><rect x="88.66" y="29.2" width="0.99" height="18.4" fill="#fed9ed"/><rect x="90.04" y="28.1" width="1.01" height="19.8" fill="#fdc4e9"/><rect x="92.23" y="20.8" width="0.82" height="27.8" fill="#fed4f0"/><rect x="93.92" y="30.1" width="1.18" height="19.2" fill="#ffc2e5"/><rect x="95.38" y="38.9" width="1.25" height="11.0" fill="#fedaef"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="20" y="28" width="60" height="44" rx="7" fill="#fff"/><path d="M24 34l26 19 26-19" fill="none" stroke="#963578" stroke-width="4.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
diff --git a/internal/home/static/brand/memoria.svg b/internal/home/static/brand/memoria.svg
index 6d7c4c8..28a1ef4 100644
--- a/internal/home/static/brand/memoria.svg
+++ b/internal/home/static/brand/memoria.svg
@@ -1,4 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Memoria"><title>Memoria</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#7C3FC8"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 22H5.5a1 1 0 0 1 0-5h4.501" />
- <path d="m21 22-1.879-1.878" />
- <path d="M3 19.5v-15A2.5 2.5 0 0 1 5.5 2H18a1 1 0 0 1 1 1v8" />
- <circle cx="17" cy="18" r="3" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Memoria"><title>Memoria</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#9c75d2"/><stop offset="1" stop-color="#865bbc"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="44.4" width="1.22" height="11.0" fill="#efe1ff"/><rect x="5.83" y="31.0" width="1.09" height="23.3" fill="#dfd3ff"/><rect x="7.64" y="26.8" width="1.18" height="26.3" fill="#e9e0ff"/><rect x="9.66" y="34.2" width="1.22" height="17.4" fill="#cfb0fd"/><rect x="11.60" y="25.9" width="0.74" height="24.4" fill="#e8d5ff"/><rect x="12.82" y="15.6" width="0.89" height="33.8" fill="#d6bef9"/><rect x="14.66" y="13.7" width="0.88" height="34.5" fill="#d0bbf7"/><rect x="16.75" y="26.9" width="1.04" height="19.8" fill="#e0cafc"/><rect x="17.89" y="27.5" width="0.64" height="18.5" fill="#e9dcff"/><rect x="19.92" y="17.4" width="1.05" height="27.4" fill="#ded0fe"/><rect x="21.99" y="22.0" width="0.70" height="21.8" fill="#dfd3fe"/><rect x="23.70" y="32.2" width="1.07" height="11.0" fill="#c5b2ed"/><rect x="25.68" y="27.1" width="1.05" height="15.4" fill="#e5cdfe"/><rect x="27.66" y="14.0" width="0.99" height="28.1" fill="#dac0fe"/><rect x="29.85" y="20.5" width="1.08" height="21.5" fill="#e7d6fe"/><rect x="31.64" y="22.3" width="0.70" height="19.6" fill="#e9ddff"/><rect x="33.09" y="12.5" width="0.76" height="29.5" fill="#ddcbfe"/><rect x="34.58" y="5.2" width="0.65" height="36.9" fill="#d8bcfc"/><rect x="36.12" y="11.9" width="0.94" height="30.5" fill="#d9cafe"/><rect x="37.65" y="23.6" width="0.73" height="19.0" fill="#dfd3ff"/><rect x="39.91" y="21.4" width="0.73" height="21.8" fill="#e9d8ff"/><rect x="41.05" y="16.6" width="1.14" height="26.8" fill="#ddcfff"/><rect x="43.32" y="25.7" width="0.73" height="18.2" fill="#c7b9eb"/><rect x="44.50" y="33.1" width="1.05" height="11.0" fill="#e8dffe"/><rect x="46.63" y="28.3" width="1.17" height="16.2" fill="#eaddff"/><rect x="48.68" y="15.3" width="0.98" height="29.4" fill="#e9defe"/><rect x="49.86" y="17.4" width="1.04" height="27.5" fill="#d4baff"/><rect x="52.00" y="25.8" width="0.71" height="19.2" fill="#c7b2ec"/><rect x="54.24" y="13.7" width="1.09" height="31.3" fill="#e1d6fe"/><rect x="55.41" y="8.3" width="0.89" height="36.6" fill="#d1bcf2"/><rect x="56.85" y="13.5" width="0.93" height="31.3" fill="#e0c7ff"/><rect x="59.15" y="28.6" width="0.95" height="15.9" fill="#d3b2fb"/><rect x="60.55" y="25.3" width="0.64" height="19.0" fill="#e0cffe"/><rect x="62.03" y="18.2" width="1.18" height="25.8" fill="#d7b9fd"/><rect x="63.33" y="19.8" width="0.70" height="24.0" fill="#dfcbff"/><rect x="65.17" y="31.6" width="0.80" height="11.8" fill="#ddd1ff"/><rect x="66.45" y="32.3" width="0.90" height="11.0" fill="#d9c5fb"/><rect x="68.56" y="17.6" width="0.62" height="25.4" fill="#e1ceff"/><rect x="70.28" y="12.4" width="1.15" height="30.5" fill="#cbb7f8"/><rect x="71.64" y="18.6" width="0.69" height="24.2" fill="#d5c3ff"/><rect x="73.57" y="21.7" width="0.75" height="21.2" fill="#cab5f7"/><rect x="74.80" y="14.4" width="0.97" height="28.6" fill="#eae2fe"/><rect x="76.61" y="7.2" width="0.88" height="36.1" fill="#d0bdff"/><rect x="78.10" y="15.7" width="1.28" height="28.0" fill="#e9e0ff"/><rect x="79.52" y="27.4" width="0.87" height="16.8" fill="#dbc3ff"/><rect x="81.32" y="27.9" width="0.60" height="16.9" fill="#ceb5ff"/><rect x="82.58" y="21.9" width="0.81" height="23.6" fill="#d9c9ff"/><rect x="84.56" y="24.4" width="0.80" height="22.1" fill="#dec1ff"/><rect x="86.28" y="36.1" width="1.06" height="11.4" fill="#c5b5ec"/><rect x="88.07" y="34.2" width="1.23" height="14.6" fill="#dcc1ff"/><rect x="89.18" y="25.6" width="0.73" height="23.9" fill="#d8bffd"/><rect x="90.67" y="18.5" width="0.77" height="32.1" fill="#e2c9fe"/><rect x="92.50" y="26.2" width="0.62" height="25.7" fill="#e0c3ff"/><rect x="93.83" y="32.2" width="0.83" height="20.7" fill="#e3d2ff"/><rect x="95.46" y="27.4" width="1.00" height="26.6" fill="#ebe0ff"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="28" y="18" width="44" height="64" rx="6" fill="#fff"/><path d="M52 18v24l7-5.5 7 5.5V18z" fill="#7146a6"/><rect x="28" y="18" width="6" height="64" rx="3" fill="#7146a6" opacity=".35"/></svg>
diff --git a/internal/home/static/brand/sheets.svg b/internal/home/static/brand/sheets.svg
index 3739ca0..d7a3364 100644
--- a/internal/home/static/brand/sheets.svg
+++ b/internal/home/static/brand/sheets.svg
@@ -1,4 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Sheets"><title>Sheets</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#168049"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v18" />
- <rect width="18" height="18" x="3" y="3" rx="2" />
- <path d="M3 9h18" />
- <path d="M3 15h18" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Sheets"><title>Sheets</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#5aa04a"/><stop offset="1" stop-color="#3d892a"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="44.8" width="0.65" height="11.0" fill="#accc9e"/><rect x="6.18" y="31.9" width="0.95" height="22.7" fill="#bff2b2"/><rect x="7.28" y="28.2" width="0.71" height="25.7" fill="#c5f4c4"/><rect x="9.26" y="35.2" width="0.69" height="17.4" fill="#bfeeb8"/><rect x="10.93" y="35.4" width="0.65" height="16.0" fill="#a3e19e"/><rect x="12.75" y="20.4" width="1.25" height="29.8" fill="#a8daa4"/><rect x="14.50" y="13.0" width="0.75" height="35.9" fill="#b1dbaf"/><rect x="16.53" y="23.7" width="0.71" height="23.9" fill="#c0e4b2"/><rect x="18.38" y="25.1" width="1.09" height="21.2" fill="#b2e4ab"/><rect x="19.99" y="16.2" width="0.89" height="29.2" fill="#a4cd9f"/><rect x="21.58" y="15.9" width="0.96" height="28.5" fill="#b9e5b5"/><rect x="23.79" y="31.6" width="0.77" height="11.8" fill="#a5d78e"/><rect x="25.07" y="31.9" width="0.66" height="11.0" fill="#c2e4b5"/><rect x="26.58" y="22.9" width="0.98" height="19.4" fill="#a0ce9d"/><rect x="28.56" y="15.8" width="0.92" height="26.1" fill="#9fd695"/><rect x="29.95" y="21.7" width="1.12" height="19.9" fill="#a5e5a1"/><rect x="32.03" y="23.5" width="0.62" height="18.0" fill="#a8cfa6"/><rect x="33.41" y="13.0" width="1.07" height="28.5" fill="#a6e9a5"/><rect x="35.27" y="5.0" width="1.01" height="36.6" fill="#aee1a1"/><rect x="36.51" y="11.2" width="1.11" height="30.5" fill="#c8efb6"/><rect x="38.77" y="23.0" width="0.86" height="19.1" fill="#baf9b4"/><rect x="40.86" y="15.0" width="1.00" height="27.6" fill="#c5f0c5"/><rect x="42.40" y="15.0" width="1.12" height="27.9" fill="#9ed798"/><rect x="43.52" y="23.1" width="0.92" height="20.2" fill="#a0d48f"/><rect x="45.48" y="32.7" width="0.61" height="11.0" fill="#a1da9f"/><rect x="46.71" y="30.4" width="0.80" height="13.6" fill="#97d298"/><rect x="48.73" y="17.7" width="0.80" height="26.7" fill="#c2f5b6"/><rect x="51.00" y="24.3" width="1.24" height="20.5" fill="#abdb9f"/><rect x="53.10" y="25.3" width="1.25" height="19.7" fill="#b5e9a8"/><rect x="54.21" y="17.1" width="1.28" height="28.0" fill="#9dce9a"/><rect x="55.73" y="8.4" width="1.09" height="36.8" fill="#bbeeb3"/><rect x="57.41" y="14.6" width="0.61" height="30.5" fill="#bde9b9"/><rect x="59.24" y="26.3" width="0.65" height="18.7" fill="#a1dda0"/><rect x="60.43" y="25.2" width="0.95" height="19.7" fill="#b9e4ad"/><rect x="62.25" y="16.8" width="0.71" height="27.8" fill="#b6e0a6"/><rect x="63.46" y="18.2" width="1.22" height="26.3" fill="#add9a9"/><rect x="65.01" y="29.2" width="0.93" height="15.0" fill="#b7dcad"/><rect x="66.39" y="33.0" width="1.23" height="11.0" fill="#c6e9b5"/><rect x="68.28" y="24.8" width="1.05" height="19.0" fill="#ade5ad"/><rect x="70.00" y="15.2" width="0.68" height="28.4" fill="#acdd95"/><rect x="71.92" y="21.5" width="0.83" height="22.0" fill="#b1e2ab"/><rect x="73.52" y="24.7" width="1.07" height="18.7" fill="#ccf1bc"/><rect x="75.03" y="15.8" width="1.18" height="27.6" fill="#addba9"/><rect x="76.44" y="7.2" width="0.90" height="36.4" fill="#baf3b1"/><rect x="78.59" y="15.9" width="0.76" height="28.0" fill="#a6de99"/><rect x="80.46" y="27.4" width="0.64" height="17.0" fill="#b7dca7"/><rect x="82.52" y="21.1" width="0.77" height="24.1" fill="#beefa4"/><rect x="84.53" y="21.3" width="0.86" height="24.8" fill="#c9efbc"/><rect x="86.73" y="36.3" width="0.87" height="11.0" fill="#b7e89e"/><rect x="88.29" y="35.8" width="0.73" height="12.4" fill="#a3ce95"/><rect x="89.91" y="24.1" width="0.69" height="25.2" fill="#b5e8ab"/><rect x="92.14" y="23.9" width="0.70" height="26.9" fill="#aad692"/><rect x="93.45" y="31.3" width="1.10" height="20.5" fill="#add0a0"/><rect x="95.03" y="31.3" width="0.65" height="21.7" fill="#c6f4c4"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="22" y="26" width="56" height="48" rx="6" fill="#fff"/><rect x="22" y="26" width="56" height="13" rx="6" fill="#26730e" opacity=".35"/><g stroke="#26730e" stroke-width="3"><path d="M42 26v48M22 52h56M22 64h56"/></g></svg>
diff --git a/internal/home/static/brand/slides.svg b/internal/home/static/brand/slides.svg
index ea6ead1..0fb0f9e 100644
--- a/internal/home/static/brand/slides.svg
+++ b/internal/home/static/brand/slides.svg
@@ -1,3 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Slides"><title>Slides</title><rect x="0" y="0" width="1024" height="1024" rx="0" fill="#C45B16"/><g transform="translate(153.6 153.6) scale(29.866666666666664)" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h20" />
- <path d="M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3" />
- <path d="m7 21 5-5 5 5" /></g></svg>
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 100 100" role="img" aria-label="Slides"><title>Slides</title><defs><clipPath id="s"><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z"/></clipPath><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#cb7227"/><stop offset="1" stop-color="#af5b03"/></linearGradient><filter id="h" x="-40%" y="-60%" width="180%" height="220%"><feGaussianBlur stdDeviation="5.5"/></filter></defs><g clip-path="url(#s)"><rect width="100" height="100" fill="url(#g)"/><g filter="url(#h)" opacity=".7"><rect x="4.00" y="39.2" width="0.73" height="16.7" fill="#fec6a5"/><rect x="5.60" y="37.1" width="1.25" height="18.3" fill="#f7b989"/><rect x="6.80" y="30.5" width="1.06" height="24.4" fill="#ffdec9"/><rect x="8.83" y="32.0" width="0.92" height="22.1" fill="#ffc79d"/><rect x="11.05" y="41.9" width="0.89" height="11.0" fill="#f8ab76"/><rect x="13.29" y="29.6" width="1.15" height="22.0" fill="#ffbf99"/><rect x="15.03" y="19.4" width="0.94" height="31.1" fill="#ffd0ad"/><rect x="17.27" y="26.9" width="0.90" height="22.1" fill="#ffd3b5"/><rect x="18.95" y="25.7" width="1.18" height="22.2" fill="#eab18a"/><rect x="20.22" y="16.6" width="0.87" height="30.4" fill="#fbb991"/><rect x="21.63" y="9.9" width="0.62" height="36.2" fill="#f9b178"/><rect x="23.67" y="20.5" width="1.29" height="24.3" fill="#f0bd9b"/><rect x="25.21" y="29.2" width="0.84" height="14.7" fill="#f1b585"/><rect x="26.54" y="26.1" width="1.05" height="17.1" fill="#ffbf91"/><rect x="28.30" y="17.1" width="0.82" height="25.3" fill="#fcc9a0"/><rect x="29.70" y="19.5" width="0.66" height="22.3" fill="#fecbad"/><rect x="31.22" y="28.8" width="0.92" height="12.5" fill="#f6b683"/><rect x="33.20" y="26.3" width="1.01" height="14.4" fill="#ffd1ad"/><rect x="34.55" y="14.8" width="0.89" height="25.8" fill="#ffbe99"/><rect x="35.70" y="8.4" width="1.30" height="32.0" fill="#fac5a7"/><rect x="36.97" y="10.7" width="0.93" height="29.7" fill="#ebb992"/><rect x="38.68" y="19.2" width="1.30" height="21.2" fill="#feb885"/><rect x="40.93" y="12.1" width="0.90" height="28.6" fill="#ffd5b4"/><rect x="42.26" y="5.8" width="1.22" height="35.2" fill="#ffd6bc"/><rect x="43.84" y="11.6" width="1.20" height="29.8" fill="#fedbc5"/><rect x="45.18" y="23.4" width="1.14" height="18.3" fill="#ffd7b9"/><rect x="47.02" y="28.3" width="0.89" height="14.0" fill="#fed1af"/><rect x="48.51" y="20.9" width="1.05" height="21.9" fill="#fecfab"/><rect x="49.83" y="18.2" width="1.07" height="25.0" fill="#ffdbc8"/><rect x="51.43" y="26.3" width="1.19" height="17.4" fill="#fed4b4"/><rect x="52.56" y="32.5" width="1.19" height="11.6" fill="#fed3b6"/><rect x="54.77" y="24.0" width="0.85" height="20.7" fill="#eab58f"/><rect x="56.66" y="11.9" width="1.29" height="33.2" fill="#f1ba9a"/><rect x="58.31" y="16.9" width="0.88" height="28.5" fill="#edb181"/><rect x="59.64" y="23.9" width="1.08" height="21.7" fill="#fdc69b"/><rect x="61.20" y="21.7" width="1.20" height="24.1" fill="#fecfae"/><rect x="62.30" y="14.9" width="0.78" height="30.9" fill="#fecea7"/><rect x="63.94" y="12.2" width="0.84" height="33.6" fill="#ffccac"/><rect x="65.73" y="25.5" width="0.75" height="20.3" fill="#f6bb8b"/><rect x="66.97" y="33.2" width="1.16" height="12.5" fill="#fec092"/><rect x="68.57" y="29.7" width="0.96" height="15.9" fill="#efba9b"/><rect x="69.87" y="22.2" width="0.76" height="23.4" fill="#fec396"/><rect x="71.46" y="22.3" width="1.03" height="23.1" fill="#ecbc95"/><rect x="73.22" y="31.9" width="0.84" height="13.3" fill="#f7ae7e"/><rect x="75.52" y="24.9" width="0.64" height="20.2" fill="#fee1ce"/><rect x="77.03" y="12.7" width="0.91" height="32.3" fill="#efbf9e"/><rect x="78.56" y="12.1" width="0.97" height="32.9" fill="#ffb183"/><rect x="80.59" y="23.3" width="1.30" height="21.8" fill="#fedfca"/><rect x="82.37" y="20.5" width="1.19" height="24.9" fill="#e5b692"/><rect x="83.58" y="13.9" width="0.64" height="31.8" fill="#f9b483"/><rect x="85.45" y="16.7" width="0.72" height="29.5" fill="#ffd2b5"/><rect x="87.10" y="31.1" width="1.17" height="15.6" fill="#febf8e"/><rect x="88.80" y="35.6" width="1.13" height="11.8" fill="#e9b190"/><rect x="90.54" y="26.5" width="1.28" height="21.8" fill="#fdbd8b"/><rect x="92.52" y="26.4" width="0.79" height="23.0" fill="#feceab"/><rect x="94.33" y="36.8" width="1.20" height="13.8" fill="#f7b182"/></g></g><path d="M96.00 50.00L95.97 64.13L95.90 68.64L95.77 71.90L95.60 74.54L95.37 76.79L95.09 78.76L94.75 80.51L94.37 82.10L93.92 83.54L93.43 84.86L92.87 86.07L92.26 87.19L91.59 88.22L90.85 89.17L90.05 90.05L89.17 90.85L88.22 91.59L87.19 92.26L86.07 92.87L84.86 93.43L83.54 93.92L82.10 94.37L80.51 94.75L78.76 95.09L76.79 95.37L74.54 95.60L71.90 95.77L68.64 95.90L64.13 95.97L50.00 96.00L35.87 95.97L31.36 95.90L28.10 95.77L25.46 95.60L23.21 95.37L21.24 95.09L19.49 94.75L17.90 94.37L16.46 93.92L15.14 93.43L13.93 92.87L12.81 92.26L11.78 91.59L10.83 90.85L9.95 90.05L9.15 89.17L8.41 88.22L7.74 87.19L7.13 86.07L6.57 84.86L6.08 83.54L5.63 82.10L5.25 80.51L4.91 78.76L4.63 76.79L4.40 74.54L4.23 71.90L4.10 68.64L4.03 64.13L4.00 50.00L4.03 35.87L4.10 31.36L4.23 28.10L4.40 25.46L4.63 23.21L4.91 21.24L5.25 19.49L5.63 17.90L6.08 16.46L6.57 15.14L7.13 13.93L7.74 12.81L8.41 11.78L9.15 10.83L9.95 9.95L10.83 9.15L11.78 8.41L12.81 7.74L13.93 7.13L15.14 6.57L16.46 6.08L17.90 5.63L19.49 5.25L21.24 4.91L23.21 4.63L25.46 4.40L28.10 4.23L31.36 4.10L35.87 4.03L50.00 4.00L64.13 4.03L68.64 4.10L71.90 4.23L74.54 4.40L76.79 4.63L78.76 4.91L80.51 5.25L82.10 5.63L83.54 6.08L84.86 6.57L86.07 7.13L87.19 7.74L88.22 8.41L89.17 9.15L90.05 9.95L90.85 10.83L91.59 11.78L92.26 12.81L92.87 13.93L93.43 15.14L93.92 16.46L94.37 17.90L94.75 19.49L95.09 21.24L95.37 23.21L95.60 25.46L95.77 28.10L95.90 31.36L95.97 35.87Z" fill="none" stroke="#fff" stroke-opacity=".18" stroke-width="1"/><rect x="18" y="24" width="64" height="42" rx="5" fill="#fff"/><g fill="#924b00"><rect x="30" y="46" width="8" height="12" rx="2"/><rect x="44" y="38" width="8" height="20" rx="2"/><rect x="58" y="32" width="8" height="26" rx="2"/></g><rect x="47.5" y="66" width="5" height="9" fill="#fff"/><rect x="37" y="74" width="26" height="5" rx="2.5" fill="#fff"/></svg>
diff --git a/internal/home/static/calma.css b/internal/home/static/calma.css
new file mode 100644
index 0000000..9aa4ae2
--- /dev/null
+++ b/internal/home/static/calma.css
@@ -0,0 +1,46 @@
+/* Home's own Calma rules: where the sky sits on Home's pages, and the
+ card the pages at the door are drawn as. Everything else is estilo's
+ theme (theme.css) and rastrillo's tokens.css. */
+
+/* tokens.css reserves the scrollbar's gutter on every page, so short and
+ long pages are the same width. Under the sky that reserved strip is a
+ visible pale band down the trailing edge, so Home takes the documented
+ opt-out; its pages have no layout that a scrollbar's arrival could jolt. */
+:root {
+ --rst-scrollbar-gutter: auto;
+}
+
+/* The sky hangs behind the top of every Home page, fading out before the
+ content gets busy. The host is at least as tall as the part of the sky
+ that shows, so a short page does not clip it. */
+[home-sky] {
+ --estilo-sky-top: -140px;
+ --estilo-sky-height: 560px;
+ min-height: 420px;
+}
+
+/* At the door: one card on the sky, the Oficina mark at its head. */
+main[home-door] {
+ box-sizing: border-box;
+ max-width: 460px;
+ margin: max(40px, 11vh) auto 48px;
+ padding: 34px 40px 32px;
+ background: var(--rst-surface);
+ border-radius: 20px;
+ box-shadow: 0 0 0 1px light-dark(transparent, var(--rst-line)), var(--rst-shadow-lift);
+}
+main[home-door] > [estilo-brand] {
+ margin: 0 0 22px;
+ font-size: 1.2rem;
+ font-weight: 650;
+ letter-spacing: -0.01em;
+}
+main[home-door] h1 {
+ letter-spacing: -0.02em;
+}
+@media (max-width: 520px) {
+ main[home-door] {
+ margin: 28px 14px 40px;
+ padding: 26px 22px 24px;
+ }
+}
diff --git a/internal/home/templates/layout.html b/internal/home/templates/layout.html
index b32780f..f747b33 100644
--- a/internal/home/templates/layout.html
+++ b/internal/home/templates/layout.html
@@ -8,15 +8,22 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{block "title" .}}Oficina{{end}}</title>
+<link rel="stylesheet" href="{{fontsCSS}}">
<link rel="stylesheet" href="/static/tokens.css">
<link rel="stylesheet" href="/static/theme.css">
+<link rel="stylesheet" href="/static/estilo/sky.css">
+<link rel="stylesheet" href="/static/calma.css">
{{block "head" .}}{{end}}
</head>
<body{{block "bodyattrs" .}}{{end}}>
+<div estilo-sky-host home-sky>
+{{template "estilo-sky" suiteSky}}
{{block "help" .}}{{end}}
-<main rst-page>
+<main rst-page{{if door}} home-door{{end}}>
+{{if door}}<p estilo-brand><img estilo-brand-icon src="/static/brand/icon.svg" alt="" width="36" height="36">Oficina</p>{{end}}
{{template "content" .}}
</main>
+</div>
{{block "scripts" .}}{{end}}
</body>
</html>