Por que Estilizar?
O Twine gera histórias como HTML. Isso significa que você pode usar CSS para transformar completamente a aparência — de um simples texto em um ambiente visual imersivo.
Onde Colocar o CSS
No Twine, há um passage especial chamado StyleSheet (ou STYLESHEET):
- Clique em "+" para criar um novo passage
- Nomeie-o exatamente como
StyleSheet
- No menu do passage, marque como “Stylesheet” (ícone de tag)
- Tudo que você escrever aqui será CSS puro
CSS Básico para Twine/Harlowe
Fundo e tipografia
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/* Estilo global da história */
tw-story {
background-color: #1a1a2e;
color: #e0e0e0;
font-family: 'Georgia', serif;
font-size: 1.1em;
line-height: 1.8;
}
/* Área de texto de cada passage */
tw-passage {
max-width: 700px;
margin: 0 auto;
padding: 2em;
}
/* Links (escolhas) */
tw-link, a {
color: #a78bfa;
text-decoration: none;
border-bottom: 1px solid #a78bfa;
transition: color 0.2s, border-color 0.2s;
}
tw-link:hover, a:hover {
color: #c4b5fd;
border-color: #c4b5fd;
}
|
Cabeçalhos e seções
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
h1, h2, h3 {
color: #c4b5fd;
font-family: 'Cinzel', 'Times New Roman', serif;
letter-spacing: 0.05em;
}
/* Separador visual */
hr {
border: none;
border-top: 1px solid rgba(255,255,255,0.15);
margin: 2em 0;
}
/* Destaque para texto importante */
em {
color: #fbbf24;
font-style: normal;
font-weight: bold;
}
|
Inserindo Imagens
Método 1: URL externa (sem instalação)
<img src="https://picsum.photos/700/300" alt="Paisagem do quarto misterioso">
Você acorda em um quarto desconhecido...
Método 2: Imagem como base64 (incorporada)
Para histórias offline, você pode converter imagens para base64:
<img src="data:image/png;base64,iVBORw0KGgo..."
alt="Descrição da imagem"
style="width:100%;border-radius:8px;margin-bottom:1em">
💡
Ferramentas para Base64
Use sites como base64.guru ou o comando Linux base64 imagem.png para converter imagens. Lembre-se: imagens grandes aumentam muito o tamanho do arquivo HTML.
Estilizando imagens no CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/* Imagens responsivas por padrão */
img {
max-width: 100%;
height: auto;
border-radius: 8px;
margin: 1em 0;
box-shadow: 0 4px 20px rgba(0,0,0,0.5);
}
/* Imagem de fundo por passage (use classes) */
.cenario-floresta {
background-image: url('floresta.jpg');
background-size: cover;
background-position: center;
padding: 3em;
border-radius: 12px;
color: white;
text-shadow: 0 1px 3px rgba(0,0,0,0.8);
}
|
No passage Twine, aplique a classe:
<div class="cenario-floresta">
Você entra na floresta escura. As árvores se fecham ao seu redor.
[[Seguir a trilha]]
[[Voltar para a cidade]]
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/* Aparecimento gradual dos passages */
tw-passage {
animation: fadeIn 0.5s ease;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* Pulsação em links importantes */
.link-importante {
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
|
Use no Twine:
<span class="link-importante">[[Abrir o portal]]</span>
Fontes do Google Fonts
Para usar fontes externas, crie um passage chamado Header (marcado como Header):
1
2
|
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700&family=EB+Garamond:ital@0;1&display=swap" rel="stylesheet">
|
Agora use as fontes no StyleSheet:
1
2
3
4
5
6
7
|
tw-story {
font-family: 'EB Garamond', serif;
}
h1, h2, h3, tw-link {
font-family: 'Cinzel', serif;
}
|
Projeto Guiado: Tema de Terror
Vamos criar um tema sombrio completo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
/* === TEMA TERROR FILOQUEST === */
:root {
--cor-fundo: #0d0d0d;
--cor-texto: #cccccc;
--cor-destaque: #8b0000;
--cor-link: #cc3333;
--fonte-principal: 'EB Garamond', serif;
}
tw-story {
background: var(--cor-fundo);
color: var(--cor-texto);
font-family: var(--fonte-principal);
font-size: 1.15em;
line-height: 2;
/* Textura de papel velho */
background-image:
radial-gradient(ellipse at center, #1a0a0a 0%, #0d0000 100%);
}
tw-passage {
max-width: 680px;
margin: 3em auto;
padding: 2.5em;
border: 1px solid #2a0a0a;
border-radius: 4px;
background: rgba(20,5,5,0.7);
box-shadow:
0 0 40px rgba(139,0,0,0.2),
inset 0 0 60px rgba(0,0,0,0.3);
}
tw-link, a {
color: var(--cor-link);
text-decoration: none;
border-bottom: 1px dotted var(--cor-link);
}
tw-link::before { content: "▸ "; opacity: 0.5; }
h1, h2 {
color: #8b0000;
text-align: center;
letter-spacing: 0.1em;
text-shadow: 0 0 20px rgba(139,0,0,0.5);
}
|
⚠️
Teste em diferentes navegadores
Sempre teste sua história em Chrome, Firefox e Safari antes de publicar. Algumas propriedades CSS podem se comportar diferentemente entre navegadores.
Próximos Passos