Skip to content

Commit 1b6efb4

Browse files
author
Argos
committed
fix: pin landing font and naturalize pt-BR copy
The landing relied on Inter via the system font stack only, so browsers without Inter installed fell back to system-ui, which Chromium resolves differently per lang attribute. Load Inter from Google Fonts, relax the negative letter-spacing on h1/h2 so pt-BR diacritics do not collide with adjacent glyphs, and use text-wrap: balance/pretty for consistent wrap. Also revise the pt-BR copy to read like native Brazilian Portuguese: restore articles, remove calques, and align terminology with live production (cues, refresh, Rode o set). Re-render the pt-BR media kit from the updated localization map.
1 parent 667feef commit 1b6efb4

8 files changed

Lines changed: 26 additions & 23 deletions

File tree

docs/index.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@
1616
<link rel="icon" href="./favicon.svg" type="image/svg+xml">
1717
<link rel="icon" href="./favicon-32.png" sizes="32x32" type="image/png">
1818
<link rel="apple-touch-icon" href="./apple-touch-icon.png">
19+
<link rel="preconnect" href="https://fonts.googleapis.com">
20+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
21+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700;800;900&display=swap" rel="stylesheet">
1922
<style>
2023
:root { color-scheme: dark; --bg:#0b0b0d; --panel:#131419; --panel2:#0f1014; --ink:#f5f1e8; --muted:#aaa5a0; --line:#303138; --accent:#ff6b1a; --soft:#ffb07d; --ok:#47db90; --max:1180px; }
2124
* { box-sizing:border-box; }
2225
html { scroll-behavior:smooth; background:var(--bg); }
23-
body { margin:0; min-width:0; overflow-x:hidden; background:radial-gradient(circle at 88% 0%,rgba(255,107,26,.14),transparent 34rem),var(--bg); color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; line-height:1.55; }
26+
body { margin:0; min-width:0; overflow-x:hidden; background:radial-gradient(circle at 88% 0%,rgba(255,107,26,.14),transparent 34rem),var(--bg); color:var(--ink); font-family:"Inter",Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; line-height:1.55; font-feature-settings:"kern","calt"; }
2427
img { display:block; max-width:100%; }
2528
a { color:inherit; }
2629
a:focus-visible, summary:focus-visible { outline:3px solid var(--soft); outline-offset:4px; border-radius:5px; }
@@ -38,9 +41,9 @@
3841
.hero { display:grid; grid-template-columns:minmax(0,.82fr) minmax(420px,1.18fr); gap:clamp(2rem,5vw,4.5rem); align-items:center; padding-block:clamp(4rem,8vw,7.5rem); }
3942
.eyebrow { margin:0 0 1rem; color:var(--soft); font:800 .78rem/1.2 ui-monospace,Consolas,monospace; letter-spacing:.13em; text-transform:uppercase; }
4043
h1,h2,h3,p { overflow-wrap:anywhere; }
41-
h1 { max-width:10ch; margin:0; font-size:clamp(3.3rem,7.6vw,7rem); line-height:.87; letter-spacing:-.075em; }
44+
h1 { max-width:10ch; margin:0; font-size:clamp(3.3rem,7.6vw,7rem); line-height:.87; letter-spacing:-.04em; text-wrap:balance; }
4245
h1 span,h2 span { color:var(--accent); }
43-
.lede { max-width:58ch; margin:1.6rem 0 0; color:#d4cec6; font-size:clamp(1.03rem,2vw,1.22rem); }
46+
.lede { max-width:58ch; margin:1.6rem 0 0; color:#d4cec6; font-size:clamp(1.03rem,2vw,1.22rem); text-wrap:pretty; }
4447
.actions { display:flex; flex-wrap:wrap; gap:.75rem; margin-top:2rem; }
4548
.button { display:inline-flex; min-height:48px; align-items:center; justify-content:center; padding:.75rem 1.08rem; border:1px solid var(--line); border-radius:9px; background:var(--panel); text-decoration:none; font-weight:800; }
4649
.button.primary { border-color:var(--accent); background:var(--accent); color:#160b05; }
@@ -59,7 +62,7 @@
5962
.proof-item span { display:block; margin-top:.2rem; color:var(--muted); font-size:.86rem; }
6063
.section { padding-block:clamp(4.5rem,8vw,7.5rem); }
6164
.section-head { display:grid; grid-template-columns:minmax(0,.8fr) minmax(280px,.6fr); gap:2rem; align-items:end; margin-bottom:2.2rem; }
62-
h2 { max-width:13ch; margin:0; font-size:clamp(2.35rem,5.6vw,5rem); line-height:.95; letter-spacing:-.055em; }
65+
h2 { max-width:13ch; margin:0; font-size:clamp(2.35rem,5.6vw,5rem); line-height:.95; letter-spacing:-.035em; text-wrap:balance; }
6366
.section-head p { margin:0; color:var(--muted); font-size:1.03rem; }
6467
.gallery { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
6568
figure { margin:0; min-width:0; overflow:hidden; border:1px solid var(--line); border-radius:16px; background:var(--panel2); }

docs/media/pt-BR/performance.png

5.9 KB
Loading
3.15 KB
Loading

docs/media/pt-BR/stage-control.png

-324 Bytes
Loading
4.28 KB
Loading

docs/media/pt-BR/workflow.png

-476 Bytes
Loading

docs/site-i18n.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
},
9090
'pt-BR': {
9191
title: 'Ableton RC Setlist — seu setlist do Ableton Live no palco',
92-
description: 'Ableton RC Setlist é uma extensão source-available para Ableton Live com músicas guiadas por localizadores, letras sincronizadas e controles protegidos para o palco.',
92+
description: 'Ableton RC Setlist é uma extensão source-available para Ableton Live, com setlist guiado por localizadores do Arrangement, letras sincronizadas e controles protegidos para o palco.',
9393
skip: 'Pular para o conteúdo',
9494
navAria: 'Navegação principal',
9595
navProduct: 'Produto',
@@ -99,9 +99,9 @@
9999
navSource: 'Código-fonte',
100100
language: 'Idioma',
101101
heroEyebrow: 'Extensão para Ableton Live · v0.4.1',
102-
heroLede: 'Transforme localizadores do Arrangement em um setlist real para operação, uma tela de letras sincronizadas e controles protegidos para o palco — tudo rodando localmente entre o Ableton Live e o navegador.',
102+
heroLede: 'Transforme os localizadores do Arrangement em um setlist de verdade para a operação, com letras sincronizadas e controles protegidos para o palco — tudo rodando localmente entre o Ableton Live e o navegador.',
103103
download: 'Baixar .ablx',
104-
readDocs: 'Ler a documentação',
104+
readDocs: 'Ver a documentação',
105105
fine: 'Sem conta · sem assinatura · sem analytics · source-available',
106106
heroAlt: 'Composição com as interfaces reais Performance e Controle de Palco do Ableton RC Setlist',
107107
productTruth: 'Produto real',
@@ -117,18 +117,18 @@
117117
noTelemetryBody: 'Os dados do seu show permanecem locais',
118118
shipped: 'A interface entregue',
119119
seeShow: 'Veja o show.',
120-
runSet: 'Conduza o set.',
121-
productIntro: 'O produto permanece ancorado no Ableton Live. O navegador entrega ao operador e ao performer a informação de que cada um precisa, sem inventar uma segunda timeline.',
120+
runSet: 'Rode o set.',
121+
productIntro: 'O produto fica ancorado no Ableton Live. O navegador entrega ao operador e ao performer a informação que cada um precisa, sem inventar uma segunda timeline.',
122122
performanceAlt: 'Interface Performance com música atual e próxima, seção, letras, timecode, compasso, BPM e clique',
123-
performanceBody: 'Estado do show em alto contraste, indicações atuais e seguintes, letras sincronizadas, timecode, compasso, tempo e clique.',
123+
performanceBody: 'Estado do show em alto contraste, cue atual e próximo, letras sincronizadas, timecode, compasso, tempo e clique.',
124124
stageControl: 'Controle de palco',
125125
stageAlt: 'Interface Controle de Palco com setlist, controles de seção, estado do show e transporte',
126-
stageBody: 'Navegação por músicas e seções, transporte protegido, quantização, clique, atualização, ferramentas, bloqueio e retorno ao vivo.',
126+
stageBody: 'Navegação por músicas e seções, transporte protegido, quantização, clique, refresh, ferramentas, bloqueio e retorno ao vivo.',
127127
workflowEyebrow: 'Fluxo em três etapas',
128128
fromLocators: 'Dos localizadores',
129129
toStage: 'ao palco.',
130130
workflowBody: 'Escreva uma vez a estrutura do show no Arrangement com tags de automação. O Ableton RC Setlist transforma essa estrutura em telas para operador e performer.',
131-
workflowAlt: 'Fluxo dos localizadores ao palco: marque o Arrangement, conduza o set e acompanhe o show',
131+
workflowAlt: 'Fluxo dos localizadores ao palco: marque o Arrangement, rode o set e leia o show',
132132
builtFor: 'Feito para ensaio e palco',
133133
liveSet: 'Um Live Set que pode ser lido como um show.',
134134
truthful: 'A interface mostra as funções que já fazem parte da v0.4.1. Sem métricas fictícias e sem conteúdo de shows incluído na extensão.',
@@ -137,34 +137,34 @@
137137
feature1Body: 'Transforme marcadores do Arrangement em músicas e seções ordenadas, com tags opcionais de automação.',
138138
feature2Label: '02 · SEGURANÇA',
139139
feature2Title: 'Transporte protegido',
140-
feature2Body: 'Anterior e Próxima exigem um toque deliberado. O retorno de saltos e quantização aguarda confirmação do Live.',
140+
feature2Body: 'Anterior e Próxima exigem confirmação deliberada. Saltos e quantização só acontecem depois da confirmação do Live.',
141141
feature3Label: '03 · LETRAS',
142142
feature3Title: 'Palavras sincronizadas',
143143
feature3Body: 'Crie, marque o tempo, edite e exiba LRC autorizado ou texto simples em perfis locais de show.',
144144
feature4Label: '04 · RETORNO',
145-
feature4Title: 'Indicações atuais e seguintes',
146-
feature4Body: 'Veja duração da música e do setlist, seção, progresso do loop, compasso estável, BPM e estado do clique de uma vez.',
145+
feature4Title: 'Cue atual e próximo',
146+
feature4Body: 'Veja a duração da música e do setlist, a seção, o progresso do loop, o compasso estável, o BPM e o estado do clique de uma vez.',
147147
feature5Label: '05 · DADOS DO SHOW',
148148
feature5Title: 'Setlists salvos e exportação',
149-
feature5Body: 'Mantenha vários setlists dentro do Live Set atual, preserve ordem e letras, recupere perfis excluídos e exporte CSV.',
149+
feature5Body: 'Mantenha vários setlists dentro do Live Set atual, preserve a ordem e as letras, recupere perfis apagados e exporte em CSV.',
150150
feature6Label: '06 · REDE',
151151
feature6Title: 'Acesso local pelo navegador',
152-
feature6Body: 'Abra o Controle de Palco ou a tela Performance somente leitura em um notebook, tablet ou celular confiável na LAN.',
152+
feature6Body: 'Abra o Controle de Palco ou a tela Performance em modo somente leitura a partir de um notebook, tablet ou celular confiável na LAN.',
153153
editorialAlt: 'Composição editorial de palco com as interfaces reais Performance e Controle de Palco',
154154
oneSession: 'Uma sessão · duas telas',
155155
controlShow: 'Controle o show.',
156156
notScreen: 'Não a tela.',
157157
editorialBody: 'Opere pelo Controle de Palco e mantenha a Performance visível para a informação que importa no próximo segundo.',
158158
release: 'Versão 0.4.1',
159159
installTitle: 'Instale, ensaie, verifique.',
160-
installBody: 'O Ableton RC Setlist requer Ableton Live 12.4.5+ Suite (Beta) com suporte a Extensions e a Control Surface externa AbletonOSC. Windows está validado; macOS permanece experimental nesta versão.',
160+
installBody: 'O Ableton RC Setlist precisa do Ableton Live 12.4.5+ Suite (Beta) com suporte a Extensions e da Control Surface externa AbletonOSC. O Windows está validado; o macOS segue experimental nesta versão.',
161161
installGuide: 'Guia de instalação',
162162
releaseNotes: 'O que há de novo',
163163
check1: 'Instale o único pacote Ableton-RC-Setlist-0.4.1.ablx',
164-
check2: 'Instale o AbletonOSC separadamente pelo projeto original',
164+
check2: 'Instale o AbletonOSC à parte, pelo projeto original',
165165
check3: 'Inicie o servidor local em Extensions no Live',
166166
check4: 'Abra Controle de Palco ou Performance em uma LAN confiável',
167-
check5: 'Ensaie transporte, indicações, clique e letras antes do uso no palco',
167+
check5: 'Ensaie transporte, cues, clique e letras antes de usar no palco',
168168
license: 'Licença:',
169169
licenseBody: 'Ableton RC Setlist é source-available sob a licença PolyForm Noncommercial 1.0.0. Uso comercial não é permitido.',
170170
copyright: 'Copyright © 2026 Gabriel Worm.',

scripts/render-media-kit.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@ function localizeTemplate(template, locale) {
8484
['PRODUCT TRUTH · v0.4.1 · LOCAL FIRST', 'PRODUTO REAL · v0.4.1 · LOCAL PRIMEIRO'],
8585
['ONE .ABLX · NO ACCOUNT · NO TELEMETRY · v0.4.1', 'UM .ABLX · SEM CONTA · SEM TELEMETRIA · v0.4.1'],
8686
['From locator<br><span>to stage.</span>', 'Do localizador<br><span>ao palco.</span>'],
87-
['Run the set, follow every section and keep lyrics or chords visible in the browser.', 'Conduza o set, acompanhe cada seção e mantenha letras ou cifras visíveis no navegador.'],
87+
['Run the set, follow every section and keep lyrics or chords visible in the browser.', 'Rode o set, acompanhe cada seção e mantenha letras ou cifras visíveis no navegador.'],
8888
['UTILITY · WORKFLOW · ABLETON LIVE EXTENSION', 'UTILIDADE · FLUXO · EXTENSÃO PARA ABLETON LIVE'],
8989
['Workflow · three steps', 'Fluxo · três etapas'],
9090
['From locator<br><span>to performance.</span>', 'Do localizador<br><span>à performance.</span>'],
9191
['01 · Live', '01 · Live'],
9292
['Map the Arrangement', 'Mapeie o Arrangement'],
9393
['02 · Operate', '02 · Operar'],
94-
['Run the set', 'Conduza o set'],
95-
['Songs, sections, quantization, click, refresh and guarded transport.', 'Músicas, seções, quantização, clique, atualização e transporte protegido.'],
94+
['Run the set', 'Rode o set'],
95+
['Songs, sections, quantization, click, refresh and guarded transport.', 'Músicas, seções, quantização, clique, refresh e transporte protegido.'],
9696
['03 · Stage', '03 · Palco'],
9797
['Read the show', 'Acompanhe o show'],
9898
['Current and next state, timecode, bar/beat, BPM/click and synchronized lyrics.', 'Estado atual e seguinte, timecode, compasso, BPM/clique e letras sincronizadas.'],

0 commit comments

Comments
 (0)