BlackMonsterMedia commited on
Commit
7eb50ae
·
verified ·
1 Parent(s): 6a39230

Mete só as cores e o aspeto gráfico igual ao resto do site pf - Follow Up Deployment

Browse files
Files changed (4) hide show
  1. cna-matriculas.html +660 -0
  2. index.html +19 -0
  3. prompts.txt +323 -0
  4. semana-aberta.html +49 -10
cna-matriculas.html ADDED
@@ -0,0 +1,660 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>CNA - Matrículas - Relatórios UC</title>
7
+ <!doctype html>
8
+ <html lang="pt-PT">
9
+ <head>
10
+ <meta charset="utf-8" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <title>CNA 2025 · Universidade de Coimbra — Comparação Nacional</title>
13
+ <link rel="preconnect" href="https://fonts.googleapis.com">
14
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
15
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
16
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
17
+ <style>
18
+ :root {
19
+ --bg: #0b0c0f;
20
+ --card: #121319;
21
+ --muted: #98a2b3;
22
+ --text: #e6e7eb;
23
+ --border: #1f2230;
24
+ --accent: #e5e7eb;
25
+ }
26
+ *{box-sizing:border-box}
27
+ body { margin:0; font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; background: var(--bg); color: var(--text);}
28
+ .wrap { max-width: 1120px; margin: 0 auto; padding: 24px; }
29
+ h1 { font-size: clamp(24px, 3vw, 36px); margin: 0 0 6px 0; font-weight: 700; }
30
+ p.lead { color: var(--muted); margin: 0 0 16px 0; max-width: 70ch; }
31
+ .row { display:grid; grid-template-columns: 1fr; gap: 16px; }
32
+ @media (min-width: 860px) { .row.kpis { grid-template-columns: repeat(4,1fr);} .row.triple{grid-template-columns: repeat(3,1fr);} }
33
+ .card { background: var(--card); border:1px solid var(--border); border-radius: 16px; }
34
+ .card .content { padding: 16px; }
35
+ .muted { color: var(--muted); font-size: 13px; }
36
+ .kpi { font-size: 28px; font-weight: 600; }
37
+ .badge { display:inline-flex; align-items:center; gap:8px; padding:6px 10px; border:1px solid var(--border); border-radius: 999px; font-size:12px; }
38
+ .headline { display:flex; flex-direction:column; gap:12px; }
39
+ @media (min-width: 860px){ .headline { flex-direction:row; align-items:center; justify-content:space-between; }}
40
+ .small { font-size: 12px; }
41
+ .grid-2 { display:grid; grid-template-columns:1fr; gap:16px; }
42
+ @media (min-width: 860px){ .grid-2 { grid-template-columns: 2fr 1fr; }}
43
+ .list { display:grid; grid-template-columns: 1fr; gap:8px; }
44
+ @media (min-width: 640px){ .list { grid-template-columns: repeat(3,1fr);} }
45
+ .pill { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border:1px solid var(--border); border-radius:999px; font-weight:600; }
46
+ .label { font-weight:600; }
47
+ canvas { width:100% !important; height:100% !important; }
48
+ </style>
49
+ </head>
50
+ <body>
51
+ <main class="wrap">
52
+ <header>
53
+ <h1>CNA 2025 · 1.ª Fase — Universidade de Coimbra</h1>
54
+ <p class="lead">Enfoque na <strong>comparação nacional</strong> — evidenciando a posição relativa da UC face às restantes universidades. Dados: DGES / NONIO (UC).</p>
55
+ </header>
56
+
57
+ <section class="card">
58
+ <div class="content headline">
59
+ <div>
60
+ <div class="muted small">Comparação nacional</div>
61
+ <div style="font-size: clamp(20px, 2.2vw, 28px); font-weight: 700; line-height:1.15">Consolidámos a <u>3.ª maior universidade do país</u></div>
62
+ <div class="muted small">Critério: total de colocados/as na 1.ª fase (CNA 2025).</div>
63
+ </div>
64
+ <div style="display:flex; gap:8px; flex-wrap:wrap">
65
+ <span class="badge">#3 nacional</span>
66
+ <span class="badge">1.ª fase · colocados/as</span>
67
+ </div>
68
+ </div>
69
+ </section>
70
+
71
+ <section class="row kpis" style="margin-top:16px">
72
+ <div class="card"><div class="content"><div class="muted">Candidatos/as (PT)</div><div class="kpi" id="kpi-candidatos">55 292</div><div class="muted small">1.ª fase, total nacional</div></div></div>
73
+ <div class="card"><div class="content"><div class="muted">Vagas (PT)</div><div class="kpi" id="kpi-vagas">48 718</div><div class="muted small">1.ª fase, total nacional</div></div></div>
74
+ <div class="card"><div class="content"><div class="muted">Colocados/as na UC</div><div class="kpi" id="kpi-colocados-uc">3 475</div><div class="muted small">1.ª fase</div></div></div>
75
+ <div class="card"><div class="content"><div class="muted">Posição nacional</div><div class="kpi">#3</div><div class="muted small">por total de colocados/as</div></div></div>
76
+ </section>
77
+
78
+ <section class="card" style="margin-top:16px">
79
+ <div class="content">
80
+ <h3 style="margin:0 0 8px 0">Ranking nacional (1.ª fase · colocados/as)</h3>
81
+ <div style="height:340px"><canvas id="chart-ranking"></canvas></div>
82
+ <p class="muted small" style="margin-top:8px">Fonte: DGES / NONIO · Valores confirmados CNA 2025.</p>
83
+ </div>
84
+ </section>
85
+
86
+ <section class="bg-white rounded-xl shadow-lg p-8 mb-8" data-aos="fade-up">
87
+ <h3 class="text-xl font-bold text极=gray-800 mb-6">Distribuição de colocação por opção (PT)</h3>
88
+ <div class="h-64"><canvas id="chart-opcoes"></canvas></div>
89
+ <p class="text-gray-700 mt-4"><strong>63,1%</strong> dos/as estudantes foram colocados/as na <strong>1.ª opção</strong>.</p>
90
+ </section>
91
+
92
+ <section class="row triple" style="margin-top:16px">
93
+ <div class="card"><div class="content">
94
+ <h3 style="margin:0 0 8px 0">Candidaturas à UC</h3>
95
+ <div class="kpi">19 334</div>
96
+ <div class="muted small">1.ª fase (2025)</div>
97
+ <p class="muted" style="margin-top:8px">A UC mantém-se entre as mais procuradas, com volume elevado e consistente de candidaturas.</p>
98
+ </div></div>
99
+ <div class="card"><div class="content">
100
+ <h3 style="margin:0 0 8px 0">Perfil de colocados/as na UC</h3>
101
+ <div style="height:240px"><canvas id="chart-sexo"></canvas></div>
102
+ <p class="muted small" style="margin-top:8px">63,3% feminino · 36,7% masculino.</p>
103
+ </div></div>
104
+ <div class="card"><div class="content">
105
+ <h3 style="margin:0 0 8px 0">Matrículas (UC)</h3>
106
+ <div class="kpi">3 256 / 3 475</div>
107
+ <div class="muted small">Matriculados/as / Colocados/as</div>
108
+ <p class="muted" style="margin-top:8px">Taxa global de matrícula: <span id="taxa-matricula"></span>.</p>
109
+ </div></div>
110
+ </section>
111
+
112
+ <section class="card" style="margin-top:16px">
113
+ <div class="content">
114
+ <h3 style="margin:0 0 8px 0">% de colocados/as em 1.ª opção por Faculdade</h3>
115
+ <div style="height:320px"><canvas id="chart-primeira-opcao"></canvas></div>
116
+ <p class="muted small" style="margin-top:8px">Números absolutos: FLUC 330/540 · FDUC 273/383 · FMUC 199/347 · FCTUC 735/1005 · FFUC 177/258 · FEUC 187/334 · FPCEUC 134/238 · FCDEFUC 89/96 · ESEUC 152/274.</p>
117
+ </div>
118
+ </section>
119
+
120
+ <section class="card" style="margin-top:16px">
121
+ <div class="content">
122
+ <h3 style="margin:0 0 8px 0">Taxa de matrícula por Faculdade</h3>
123
+ <div style="height:320px"><canvas id="chart-matriculas"></canvas></div>
124
+ <p class="muted small" style="margin-top:8px">Números absolutos: FLUC 494/540 · FDUC 345/383 · FMUC 344/347 · FCTUC 967/1005 · FFUC 246/258 · FEUC 303/334 · FPCEUC 220/238 · FCDEFUC 93/96 · ESEUC 244/274.</p>
125
+ </div>
126
+ </section>
127
+
128
+ <section class="card" style="margin-top:16px">
129
+ <div class="content">
130
+ <h3 style="margin:0 0 8px 0">Distribuição de matriculados/as por nota de candidatura</h3>
131
+ <div style="height:320px"><canvas id="chart-notas"></canvas></div>
132
+ <p class="muted small" style="margin-top:8px">Destaque para os intervalos ]16;18] e ]14;16]; há <strong>427</strong> alunos/as com nota ≥18 valores.</p>
133
+ </div>
134
+ </section>
135
+
136
+ <section class="bg-white rounded-xl shadow-lg p-8 mb-8" data-aos="fade-up">
137
+ <h3 class="text-xl font-bold text-gray-800 mb-4">2.ª fase – Candidaturas UC</h3>
138
+ <div class="text-2xl font-bold text-gray-800">3.484</div>
139
+ <div class="text-gray-600 text-sm">Candidaturas (2025)</div>
140
+ </section>
141
+
142
+ </main>
143
+
144
+ <!-- Footer -->
145
+ <footer class="bg-gray-800 text-white py-12">
146
+ <div class="container mx-auto px-6">
147
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
148
+ <div class="md:col-span-2">
149
+ <h3 class="text-xl font-bold mb-4">Universidade de Coimbra</h3>
150
+ <p class="text-gray-400">Análise de dados e relatórios de marketing institucional.</p>
151
+ </div>
152
+ <div>
153
+ <h3 class="text-xl极= font-bold mb-4">Contactos</h3>
154
+ <address class="text-gray-400 not-italic">
155
+ <p>Rua Pedro Nunes, Instituto Pedro Nunes, Bloco C - 3030-792</p>
156
+ <p>Email: info@blackmonstermedia.com</p>
157
+ <p>Telefone: 914251472</p>
158
+ </address>
159
+ </div>
160
+ </div>
161
+ <div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-400">
162
+ <p>&copy; 2025 Black Monster Media. Todos os direitos reservados.</p>
163
+ </div>
164
+ </div>
165
+ </footer>
166
+ ================
167
+ // Dados — EXACTOS do report
168
+ // =======================
169
+ const numerosGerais = { candidatos: 55292, vagas: 48718 };
170
+ const uc = { candidaturas: 19334, colocados极=: 3475, sexo: [{label: 'Feminino', value: 63.3},{label: 'Masculino', value: 36.7}] };
171
+ const totalMatriculados = 3256;
172
+
173
+ const rankingColocados = [
174
+ { universidade: 'UL', colocados: 4246 },
175
+ { universidade: 'UP', colocados: 4202 },
176
+ { universidade: 'UC', colocados: 3475 },
177
+ { universidade: 'UM', colocados: 3431 },
178
+ { universidade: 'UNL', colocados: 3388 },
179
+ { universidade: 'UA', colocados: 3352 },
180
+ { universidade: 'UÉ', colocados: 3452 },
181
+ { universidade: 'ISCTE-IUL', colocados: 3396 },
182
+ { universidade极=: 'UBI', colocados: 3296 },
183
+ { universidade: 'UTAD', colocados: 3302 },
184
+ { universidade: 'UAç', colocados: 3341 },
185
+ { universidade: 'UAlg', colocados: 195极=9 },
186
+ { universidade: 'UMa', colocados: 2012 },
187
+ ];
188
+
189
+ const procuraOpcoes = [
190
+ { opcao: '极=1.ª', percent: 63.1 },
191
+ { opcao: '2.ª', percent: 18.5 },
192
+ { opcao: '3.ª', percent: 9.3 },
193
+ { opca极=o: '4.ª', percent: 5.0 },
194
+ { opcao: '5.极=ª', percent: 2.6 },
195
+ { opcao: '6.ª', percent: 1.4 },
196
+ ];
197
+
198
+ const colocacaoPrimeiraOpcao = [
199
+ { faculdade: 'FLUC', valor: 330, total: 540 },
200
+ { faculdade: 'FDUC', valor: 273, total: 383 },
201
+ { faculdade: 'FMUC', valor: 199, total: 347 },
202
+ { faculdade: 'FCTUC', valor极=: 735, total: 1005 },
203
+ { faculdade: 'FFUC', valor: 177, total: 258 },
204
+ { faculdade: 'FEUC', valor: 187, total: 334 },
205
+ { faculdade: 'FPCEUC', valor: 134, total: 极=238 },
206
+ 极= { faculdade: 'FCDEFUC', valor: 89, total: 96 },
207
+ { faculdade: 'ESEUC', valor: 152, total: 274 },
208
+ ];
209
+
210
+ const matriculas = [
211
+ { faculdade: 'FLUC', matriculados: 494, colocados: 540 },
212
+ { faculdade: 'FDUC', matriculados: 345, colocados: 383 },
213
+ { faculdade: 'FMUC', matriculados: 344, colocados: 347 },
214
+ { faculdade: 'FCTUC', matriculados: 967, colocados: 1005 },
215
+ { faculdade: 'FFUC', matriculados: 246, colocados: 258 },
216
+ { faculdade: 'FEUC', matriculados: 303, colocados: 334 },
217
+ { faculdade: 'FPCEUC', matriculados: 220, colocados极=: 238 },
218
+ { faculdade: '极=FCDEFUC', matriculados: 93, colocados: 96 },
219
+ { faculdade: 'ESEUC', matriculados: 244, colocados: 274 },
220
+ ];
221
+
222
+ const notas = [
223
+ { intervalo: ']18;20]', qtd: 427 },
224
+ { intervalo: ']16;18]', qtd: 1188 },
225
+ { intervalo: ']14;16]', qtd: 1162 },
226
+ { intervalo: ']12;14]', qtd: 455 },
227
+ { intervalo: '[10;12]', qtd: 极=24 },
228
+ ];
229
+
230
+ // Util
231
+ const pct = (a,b) => b === 0 ? 0 : Math.round((a/b)*1000)/10; // 1 casa decimal
232
+
233
+ // KPI de taxa matrícula
234
+ document.getElementById('taxa-matricula').textContent = pct(totalMatriculados, uc.colocados) + '%';
235
+
236
+ // Cores (deixamos Chart.js escolher por defeito, sem estilos rígidos)
237
+
238
+ // Ranking
239
+ new Chart(document.getElementById('chart-ranking'), {
240
+ type: 'bar',
241
+ data: {
242
+ labels: rankingColocados.map(r => r.universidade),
243
+ datasets: [{ label: 'Colocados/as', data: rankingColocados.map(r =>极= r.colocados), borderWidth: 1 }]
244
+ },
245
+ options: {
246
+ responsive: true,
247
+ maintainAspectRatio: false,
248
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y.toLocaleString('pt-PT') } } },
249
+ scales: { y极=: { beginAtZero: true } }
250
+ }
251
+ });
252
+
253
+ // Opções
254
+ new Chart(document.getElementById('chart-opcoes'), {
255
+ type: 'bar',
256
+ data: {
257
+ labels: procuraOpcoes.map(o => o.opcao),
258
+ datasets: [{ label: '%', data: procuraOpcoes.map(o => o.percent), borderWidth: 1 }]
259
+ },
260
+ options: {
261
+ responsive: true,
262
+ maintainAspectRatio: false,
263
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed极=.y + '%' } } },
264
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
265
+ }
266
+ });
267
+
268
+ // Sexo
269
+ new Chart(document.getElementById('chart-sex极=o'), {
270
+ type: 'pie',
271
+ 极= data: {
272
+ labels: uc.sexo.map(s => s.label),
273
+ datasets: [{ data: uc.sexo极=.map(s => s.value) }]
274
+ },
275
+ options: { responsive: true, maintainAspectRatio: false }
276
+ });
277
+
278
+ // 1.ª opção por Faculdade
279
+ new Chart(document.getElementById('chart-primeira-opcao'), {
280
+ type: 'bar',
281
+ data: {
282
+ labels: colocacaoPrimeiraOpcao.map(f => f.faculdade),
283
+ datasets: [{
284
+ label: '% 1.ª opção',
285
+ data: colocacaoPrimeiraOpcao.map(f => pct(f.valor, f.total)),
286
+ borderWidth: 1
287
+ }]
288
+ },
289
+ options: {
290
+ responsive: true,
291
+ maintainAspectRatio: false,
292
+ plugins: { tooltip: { callbacks极=: { label: ctx => ctx.parsed.y + '%' } } },
293
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%极=' } } }
294
+ }
295
+ });
296
+
297
+ // Matrículas por Faculdade
298
+ new Chart(document.getElementById('chart-matriculas'), {
299
+ type: 'bar',
300
+ data: {
301
+ labels: matriculas.map(m => m.faculdade),
302
+ datasets: [{
303
+ label: 'Taxa de matrícula (%)',
304
+ data: matriculas.map(m => pct(m.matriculados, m.colocados)),
305
+ borderWidth: 1
306
+ }]
307
+ },
308
+ options: {
309
+ responsive: true,
310
+ maintainAspectRatio: false,
311
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
312
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
313
+ }
314
+ });
315
+
316
+ // Notas极=
317
+ new Chart(document.getElementById('chart-notas'), {
318
+ type: 'bar',
319
+ data: {
320
+ labels极=: notas.map(n => n.intervalo),
321
+ datasets: [{ label: 'Matriculados/as', data: notas.map(n => n.qtd), borderWidth: 1 }]
322
+ },
323
+ options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } } }
324
+ });
325
+ </script>
326
+ </body>
327
+ </html>
328
+ =======
329
+ <script>
330
+ AOS.init({
331
+ duration: 800,
332
+ easing: 'ease-in-out',
333
+ once: true
334
+ });
335
+ feather.replace();
336
+
337
+ // =======================
338
+ // Dados — EXACTOS do report
339
+ // =======================
340
+ const numerosGerais = { candidatos: 55292, vagas: 48718 };
341
+ const uc = { candidaturas: 193极=34, colocados: 3475, sexo: [{label: 'Feminino', value: 63.3},{label: 'Masculino', value: 36.7}] };
342
+ const totalMatriculados = 3256;
343
+
344
+ const rankingColocados = [
345
+ { universidade: 'UL', colocados: 4246 },
346
+ { universidade: 'UP', colocados: 4202 },
347
+ { universidade: 'UC', colocados: 3475 },
348
+ { universidade: 'UM', colocados: 3431 },
349
+ { universidade: 'UNL', colocados: 3388 },
350
+ { universidade: 'UA', colocados: 3352 },
351
+ { universidade: 'UÉ', colocados: 3452 },
352
+ { universidade: 'ISCTE-IUL', colocados: 3396 },
353
+ { universidade: 'UBI', colocados: 3296 },
354
+ { universidade: 'UTAD', colocados: 3302 },
355
+ { universidade: 'UAç', colocados: 3341 },
356
+ { universidade: 'UAl极=g', colocados: 1959 },
357
+ { universidade: 'UMa', colocados极=: 2012 },
358
+ ];
359
+
360
+ const procuraOpcoes = [
361
+ { opcao: '1.ª', percent: 63.1 },
362
+ { opcao: '2.ª', percent: 18.5 },
363
+ { opcao: '3.ª', percent: 9.3 },
364
+ { opcao: '极=4.ª', percent: 5.0 },
365
+ { opcao: '5.ª', percent: 2.6 },
366
+ { opcao: '6.ª', percent: 1.4 },
367
+ ];
368
+
369
+ const colocacaoPrimeiraOpcao = [
370
+ { faculdade: 'FLUC', valor: 330, total: 540 },
371
+ { faculdade: 'FDUC', valor: 273, total: 383 },
372
+ { faculdade: 'FMUC', valor: 199, total: 347 },
373
+ { faculdade: 'FCTUC', valor: 735, total: 1005 },
374
+ { faculdade: 'FFUC', valor: 177, total: 258 },
375
+ { faculdade: 'FEUC', valor: 187, total: 334 },
376
+ { faculdade: 'FPCEUC', valor: 134极=, total: 238 },
377
+ { faculdade: 'FCDEFUC', valor: 89, total: 极=96 },
378
+ { faculdade: 'ESEUC', valor: 152, total: 274 },
379
+ ];
380
+
381
+ const matriculas = [
382
+ { faculdade: 'FLUC', matriculados: 494, colocados: 540 },
383
+ { faculdade: 'FDU极=C', matriculados: 345, colocados: 383 },
384
+ { faculdade极=: 'FMUC', matriculados: 344, colocados: 347 },
385
+ { faculdade: 'FCTUC', matriculados: 967, colocados: 1005 },
386
+ { faculdade: 'FFUC', matriculados: 246, colocados: 258 },
387
+ { faculdade: 'FEUC', matriculados: 303, colocados: 334 },
388
+ { faculdade: 'FPCEUC', matriculados: 220, colocados: 238 },
389
+ { faculdade: 'FCDEFUC', matriculados: 93, colocados: 96 },
390
+ { faculdade: 'ESEUC', matriculados: 244, colocados: 274 },
391
+ ];
392
+
393
+ const notas = [
394
+ { intervalo: ']18;20]', qtd: 427 },
395
+ { intervalo: ']16;18]', qtd: 1188 },
396
+ { intervalo: ']14;16]', qtd极=: 1162 },
397
+ { intervalo: ']12;14]', qtd: 455 },
398
+ { intervalo: '[10;12]', qtd: 24 },
399
+ ];
400
+
401
+ // Util
402
+ const pct = (a,b) => b === 0 ? 0 : Math.round((a/b)*1000)/10; // 1 casa decimal
403
+
404
+ // KPI de taxa matrícula
405
+ document.getElementById('taxa-matricula').textContent = pct(totalMatriculados, uc.colocados) + '%';
406
+
407
+ // Ranking
408
+ new Chart(document.getElementById('chart-ranking'), {
409
+ type: 'bar',
410
+ data: {
411
+ labels: rankingColocados.map(r => r.universidade),
412
+ datasets: [{ label: 'Colocados/as', data: rankingColocados.map(r => r.colocados), borderWidth: 1, backgroundColor: '#3B82F6' }]
413
+ },
414
+ options: {
415
+ responsive: true,
416
+ maintainAspectRatio: false,
417
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y.toLocaleString('pt-PT') } } },
418
+ scales: { y: { beginAtZero: true } }
419
+ }
420
+ });
421
+
422
+ // Opções
423
+ new Chart(document.getElementById('chart-opcoes'), {
424
+ type: 'bar',
425
+ data: {
426
+ labels: procuraOpcoes.map(o => o.opcao),
427
+ datasets: [{ label: '%', data: procuraOpcoes.map(o => o.percent), borderWidth: 1, backgroundColor: '#10B981' }]
428
+ },
429
+ options: {
430
+ responsive: true,
431
+ maintainAspectRatio: false,
432
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
433
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
434
+ }
435
+ });
436
+
437
+ // Sexo
438
+ new Chart(document.getElementById('chart-sexo'), {
439
+ type: 'pie',
440
+ data: {
441
+ labels: uc.sexo.map(s => s.label),
442
+ datasets: [{ data: uc.sexo.map(s => s.value), backgroundColor: ['#3B82F6', '#10B981'] }]
443
+ },
444
+ options: { responsive: true, maintainAspectRatio: false }
445
+ });
446
+
447
+ // 1.ª opção por Faculdade
448
+ new Chart(document.getElementById('chart-primeira-opcao'), {
449
+ type: 'bar',
450
+ data: {
451
+ labels: colocacaoPrimeiraOpcao.map(f => f.faculdade),
452
+ datasets: [{
453
+ label: '% 1.ª opção',
454
+ data: colocacaoPrimeiraOpcao.map(f => pct(f.val极=or, f.total)),
455
+ borderWidth: 1,
456
+ backgroundColor: '#8B5CF6'
457
+ }]
458
+ },
459
+ options: {
460
+ responsive: true,
461
+ maintainAspectRatio: false,
462
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' }极= } },
463
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
464
+ }
465
+ });
466
+
467
+ // Matrículas por Faculdade
468
+ new Chart(document.getElementById('chart-matriculas'), {
469
+ type: 'bar',
470
+ data: {
471
+ labels: matriculas.map(m => m.faculdade),
472
+ datasets: [{
473
+ label: 'Taxa de matrícula (%)',
474
+ data: matriculas.map(m => pct(m.matriculados, m.colocados)),
475
+ borderWidth: 1,
476
+ backgroundColor: '#F59E0B'
477
+ }]
478
+ },
479
+ options: {
480
+ responsive: true,
481
+ maintainAspectRatio: false,
482
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
483
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
484
+ }
485
+ });
486
+
487
+ // Notas
488
+ new Chart(document.getElementById('chart-notas'), {
489
+ type: 'bar',
490
+ data: {
491
+ labels: notas.map(n => n.intervalo),
492
+ datasets: [{ label: 'Matriculados/as', data: notas.map(n => n.qtd), borderWidth: 1, backgroundColor: '#EC4899' }]
493
+ },
494
+ options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } } }
495
+ });
496
+ </script>
497
+ </body>
498
+ </html>
499
+ =======================
500
+ // Dados — EXACTOS do report
501
+ // =======================
502
+ const numerosGerais = { candidatos: 55292, vagas: 48718 };
503
+ const uc = { candidaturas: 19334, colocados: 3475, sexo: [{label: 'Feminino', value: 63.3},{label: 'Masculino', value: 36.7}] };
504
+ const totalMatriculados = 3256;
505
+
506
+ const rankingColocados = [
507
+ { universidade: 'UL', colocados: 4246 },
508
+ { universidade: 'UP', colocados: 4202 },
509
+ { universidade: 'UC', colocados: 3475 },
510
+ { universidade: 'UM', colocados: 3431 },
511
+ { universidade: 'UNL', colocados: 3388 },
512
+ { universidade: 'UA', colocados: 3352 },
513
+ { universidade: 'UÉ', colocados: 3452 },
514
+ { universidade: 'ISCTE-IUL', colocados: 3396 },
515
+ { universidade: 'UBI', colocados: 3296 },
516
+ { universidade: 'UTAD', colocados: 3302 },
517
+ { universidade: 'UAç', colocados: 3341 },
518
+ { universidade: 'UAlg', colocados: 1959 },
519
+ { universidade: 'UMa', colocados: 2012 },
520
+ ];
521
+
522
+ const procuraOpcoes = [
523
+ { opcao: '1.ª', percent: 63.1 },
524
+ { opcao: '2.ª', percent: 18.5 },
525
+ { opcao: '3.ª', percent: 9.3 },
526
+ { opcao: '4.ª', percent: 5.0 },
527
+ { opcao: '5.ª', percent: 2.6 },
528
+ { opcao: '6.ª', percent: 1.4 },
529
+ ];
530
+
531
+ const colocacaoPrimeiraOpcao = [
532
+ { faculdade: 'FLUC', valor: 330, total: 540 },
533
+ { faculdade: 'FDUC', valor: 273, total: 383 },
534
+ { faculdade: 'FMUC', valor: 199, total: 347 },
535
+ { faculdade: 'FCTUC', valor: 735, total: 1005 },
536
+ { faculdade: 'FFUC', valor: 177, total: 258 },
537
+ { faculdade: 'FEUC', valor: 187, total: 334 },
538
+ { faculdade: 'FPCEUC', valor: 134, total: 238 },
539
+ { faculdade: 'FCDEFUC', valor: 89, total: 96 },
540
+ { faculdade: 'ESEUC', valor: 152, total: 274 },
541
+ ];
542
+
543
+ const matriculas = [
544
+ { faculdade: 'FLUC', matriculados: 494, colocados: 540 },
545
+ { faculdade: 'FDUC', matriculados: 345, colocados: 383 },
546
+ { faculdade: 'FMUC', matriculados: 344, colocados: 347 },
547
+ { faculdade: 'FCTUC', matriculados: 967, colocados: 1005 },
548
+ { faculdade: 'FFUC', matriculados: 246, colocados: 258 },
549
+ { faculdade: 'FEUC', matriculados: 303, colocados: 334 },
550
+ { faculdade: 'FPCEUC', matriculados: 220, colocados: 238 },
551
+ { faculdade: 'FCDEFUC', matriculados: 93, colocados: 96 },
552
+ { faculdade: 'ESEUC', matriculados: 244, colocados: 274 },
553
+ ];
554
+
555
+ const notas = [
556
+ { intervalo: ']18;20]', qtd: 427 },
557
+ { intervalo: ']16;18]', qtd: 1188 },
558
+ { intervalo: ']14;16]', qtd: 1162 },
559
+ { intervalo: ']12;14]', qtd: 455 },
560
+ { intervalo: '[10;12]', qtd: 24 },
561
+ ];
562
+
563
+ // Util
564
+ const pct = (a,b) => b === 0 ? 0 : Math.round((a/b)*1000)/10; // 1 casa decimal
565
+
566
+ // KPI de taxa matrícula
567
+ document.getElementById('taxa-matricula').textContent = pct(totalMatriculados, uc.colocados) + '%';
568
+
569
+ // Cores (deixamos Chart.js escolher por defeito, sem estilos rígidos)
570
+
571
+ // Ranking
572
+ new Chart(document.getElementById('chart-ranking'), {
573
+ type: 'bar',
574
+ data: {
575
+ labels: rankingColocados.map(r => r.universidade),
576
+ datasets: [{ label: 'Colocados/as', data: rankingColocados.map(r => r.colocados), borderWidth: 1 }]
577
+ },
578
+ options: {
579
+ responsive: true,
580
+ maintainAspectRatio: false,
581
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y.toLocaleString('pt-PT') } } },
582
+ scales: { y: { beginAtZero: true } }
583
+ }
584
+ });
585
+
586
+ // Opções
587
+ new Chart(document.getElementById('chart-opcoes'), {
588
+ type: 'bar',
589
+ data: {
590
+ labels: procuraOpcoes.map(o => o.opcao),
591
+ datasets: [{ label: '%', data: procuraOpcoes.map(o => o.percent), borderWidth: 1 }]
592
+ },
593
+ options: {
594
+ responsive: true,
595
+ maintainAspectRatio: false,
596
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
597
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
598
+ }
599
+ });
600
+
601
+ // Sexo
602
+ new Chart(document.getElementById('chart-sexo'), {
603
+ type: 'pie',
604
+ data: {
605
+ labels: uc.sexo.map(s => s.label),
606
+ datasets: [{ data: uc.sexo.map(s => s.value) }]
607
+ },
608
+ options: { responsive: true, maintainAspectRatio: false }
609
+ });
610
+
611
+ // 1.ª opção por Faculdade
612
+ new Chart(document.getElementById('chart-primeira-opcao'), {
613
+ type: 'bar',
614
+ data: {
615
+ labels: colocacaoPrimeiraOpcao.map(f => f.faculdade),
616
+ datasets: [{
617
+ label: '% 1.ª opção',
618
+ data: colocacaoPrimeiraOpcao.map(f => pct(f.valor, f.total)),
619
+ borderWidth: 1
620
+ }]
621
+ },
622
+ options: {
623
+ responsive: true,
624
+ maintainAspectRatio: false,
625
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
626
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
627
+ }
628
+ });
629
+
630
+ // Matrículas por Faculdade
631
+ new Chart(document.getElementById('chart-matriculas'), {
632
+ type: 'bar',
633
+ data: {
634
+ labels: matriculas.map(m => m.faculdade),
635
+ datasets: [{
636
+ label: 'Taxa de matrícula (%)',
637
+ data: matriculas.map(m => pct(m.matriculados, m.colocados)),
638
+ borderWidth: 1
639
+ }]
640
+ },
641
+ options: {
642
+ responsive: true,
643
+ maintainAspectRatio: false,
644
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
645
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
646
+ }
647
+ });
648
+
649
+ // Notas
650
+ new Chart(document.getElementById('chart-notas'), {
651
+ type: 'bar',
652
+ data: {
653
+ labels: notas.map(n => n.intervalo),
654
+ datasets: [{ label: 'Matriculados/as', data: notas.map(n => n.qtd), borderWidth: 1 }]
655
+ },
656
+ options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } } }
657
+ });
658
+ </script>
659
+ </body>
660
+ </html>
index.html CHANGED
@@ -182,6 +182,25 @@
182
  </div>
183
  </div>
184
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  </div>
186
  </div>
187
  </section>
 
182
  </div>
183
  </div>
184
  </div>
185
+
186
+ <!-- CNA - Matrículas -->
187
+ <div class="report-card bg-white rounded-xl shadow-md overflow-hidden border-l-4 border-uc-gold" data-aos="fade-up" data-aos-delay="400">
188
+ <div class="p-6">
189
+ <div class="flex items-center mb-4">
190
+ <div class="bg-teal-100 p-3 rounded-full mr-4">
191
+ <i data-feather="edit" class="text-teal-600"></i>
192
+ </div>
193
+ <h3 class="text-xl font-bold text-gray-800">CNA - Matrículas</h3>
194
+ </div>
195
+ <p class="text-gray-600 mb-4">Análise das matrículas na Universidade de Coimbra.</p>
196
+ <div class="flex justify-between items-center">
197
+ <span class="text-sm text-gray-500">Período: Anual</span>
198
+ <a href="cna-matriculas.html" class="text-uc-blue hover:text-blue-700 font-medium flex items-center">
199
+ Ver relatório <i data-feather="chevron-right" class="ml-1"></i>
200
+ </a>
201
+ </div>
202
+ </div>
203
+ </div>
204
  </div>
205
  </div>
206
  </section>
prompts.txt CHANGED
@@ -248,3 +248,326 @@ Impressões: 228 182
248
  CTR: 0,69%
249
  Cool.
250
  Vamos agora para a página dos mestrados e doutoramentos.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  CTR: 0,69%
249
  Cool.
250
  Vamos agora para a página dos mestrados e doutoramentos.
251
+
252
+ Cria um novo bloco como os outros que digam CNA - Matriculas na Universidade de Coimbra
253
+ Atualiza a página da semana aberta com estes números:
254
+ Semana Aberta:
255
+ - inscritos em 2025: 2576
256
+ - presenças em 2025: 2135
257
+ - inscritos em 2024: 2050
258
+ - presenças em 2024: 2370
259
+ - inscritos em 2023: 938
260
+ - presenças em 2023: 1000
261
+ Observações:
262
+ Conseguimos manter a tendência crescente de inscrições.
263
+ O número de participantes não correspondeu à subida do total de inscritos e, na nossa opinião, deveu-se ao fato da alteração da data do evento.
264
+
265
+ Pega no código que te vou dar e altera-o para estar na mesma onda das outras páginas:
266
+ <!doctype html>
267
+ <html lang="pt-PT">
268
+ <head>
269
+ <meta charset="utf-8" />
270
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
271
+ <title>CNA 2025 · Universidade de Coimbra — Comparação Nacional</title>
272
+ <link rel="preconnect" href="https://fonts.googleapis.com">
273
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
274
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
275
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
276
+ <style>
277
+ :root {
278
+ --bg: #0b0c0f;
279
+ --card: #121319;
280
+ --muted: #98a2b3;
281
+ --text: #e6e7eb;
282
+ --border: #1f2230;
283
+ --accent: #e5e7eb;
284
+ }
285
+ *{box-sizing:border-box}
286
+ body { margin:0; font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; background: var(--bg); color: var(--text);}
287
+ .wrap { max-width: 1120px; margin: 0 auto; padding: 24px; }
288
+ h1 { font-size: clamp(24px, 3vw, 36px); margin: 0 0 6px 0; font-weight: 700; }
289
+ p.lead { color: var(--muted); margin: 0 0 16px 0; max-width: 70ch; }
290
+ .row { display:grid; grid-template-columns: 1fr; gap: 16px; }
291
+ @media (min-width: 860px) { .row.kpis { grid-template-columns: repeat(4,1fr);} .row.triple{grid-template-columns: repeat(3,1fr);} }
292
+ .card { background: var(--card); border:1px solid var(--border); border-radius: 16px; }
293
+ .card .content { padding: 16px; }
294
+ .muted { color: var(--muted); font-size: 13px; }
295
+ .kpi { font-size: 28px; font-weight: 600; }
296
+ .badge { display:inline-flex; align-items:center; gap:8px; padding:6px 10px; border:1px solid var(--border); border-radius: 999px; font-size:12px; }
297
+ .headline { display:flex; flex-direction:column; gap:12px; }
298
+ @media (min-width: 860px){ .headline { flex-direction:row; align-items:center; justify-content:space-between; }}
299
+ .small { font-size: 12px; }
300
+ .grid-2 { display:grid; grid-template-columns:1fr; gap:16px; }
301
+ @media (min-width: 860px){ .grid-2 { grid-template-columns: 2fr 1fr; }}
302
+ .list { display:grid; grid-template-columns: 1fr; gap:8px; }
303
+ @media (min-width: 640px){ .list { grid-template-columns: repeat(3,1fr);} }
304
+ .pill { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border:1px solid var(--border); border-radius:999px; font-weight:600; }
305
+ .label { font-weight:600; }
306
+ canvas { width:100% !important; height:100% !important; }
307
+ </style>
308
+ </head>
309
+ <body>
310
+ <main class="wrap">
311
+ <header>
312
+ <h1>CNA 2025 · 1.ª Fase — Universidade de Coimbra</h1>
313
+ <p class="lead">Enfoque na <strong>comparação nacional</strong> — evidenciando a posição relativa da UC face às restantes universidades. Dados: DGES / NONIO (UC).</p>
314
+ </header>
315
+
316
+ <section class="card">
317
+ <div class="content headline">
318
+ <div>
319
+ <div class="muted small">Comparação nacional</div>
320
+ <div style="font-size: clamp(20px, 2.2vw, 28px); font-weight: 700; line-height:1.15">Consolidámos a <u>3.ª maior universidade do país</u></div>
321
+ <div class="muted small">Critério: total de colocados/as na 1.ª fase (CNA 2025).</div>
322
+ </div>
323
+ <div style="display:flex; gap:8px; flex-wrap:wrap">
324
+ <span class="badge">#3 nacional</span>
325
+ <span class="badge">1.ª fase · colocados/as</span>
326
+ </div>
327
+ </div>
328
+ </section>
329
+
330
+ <section class="row kpis" style="margin-top:16px">
331
+ <div class="card"><div class="content"><div class="muted">Candidatos/as (PT)</div><div class="kpi" id="kpi-candidatos">55 292</div><div class="muted small">1.ª fase, total nacional</div></div></div>
332
+ <div class="card"><div class="content"><div class="muted">Vagas (PT)</div><div class="kpi" id="kpi-vagas">48 718</div><div class="muted small">1.ª fase, total nacional</div></div></div>
333
+ <div class="card"><div class="content"><div class="muted">Colocados/as na UC</div><div class="kpi" id="kpi-colocados-uc">3 475</div><div class="muted small">1.ª fase</div></div></div>
334
+ <div class="card"><div class="content"><div class="muted">Posição nacional</div><div class="kpi">#3</div><div class="muted small">por total de colocados/as</div></div></div>
335
+ </section>
336
+
337
+ <section class="card" style="margin-top:16px">
338
+ <div class="content">
339
+ <h3 style="margin:0 0 8px 0">Ranking nacional (1.ª fase · colocados/as)</h3>
340
+ <div style="height:340px"><canvas id="chart-ranking"></canvas></div>
341
+ <p class="muted small" style="margin-top:8px">Fonte: DGES / NONIO · Valores confirmados CNA 2025.</p>
342
+ </div>
343
+ </section>
344
+
345
+ <section class="card" style="margin-top:16px">
346
+ <div class="content">
347
+ <h3 style="margin:0 0 8px 0">Distribuição de colocação por opção (PT)</h3>
348
+ <div style="height:280px"><canvas id="chart-opcoes"></canvas></div>
349
+ <p class="muted small" style="margin-top:8px"><strong>63,1%</strong> dos/as estudantes foram colocados/as na <strong>1.ª opção</strong>.</p>
350
+ </div>
351
+ </section>
352
+
353
+ <section class="row triple" style="margin-top:16px">
354
+ <div class="card"><div class="content">
355
+ <h3 style="margin:0 0 8px 0">Candidaturas à UC</h3>
356
+ <div class="kpi">19 334</div>
357
+ <div class="muted small">1.ª fase (2025)</div>
358
+ <p class="muted" style="margin-top:8px">A UC mantém-se entre as mais procuradas, com volume elevado e consistente de candidaturas.</p>
359
+ </div></div>
360
+ <div class="card"><div class="content">
361
+ <h3 style="margin:0 0 8px 0">Perfil de colocados/as na UC</h3>
362
+ <div style="height:240px"><canvas id="chart-sexo"></canvas></div>
363
+ <p class="muted small" style="margin-top:8px">63,3% feminino · 36,7% masculino.</p>
364
+ </div></div>
365
+ <div class="card"><div class="content">
366
+ <h3 style="margin:0 0 8px 0">Matrículas (UC)</h3>
367
+ <div class="kpi">3 256 / 3 475</div>
368
+ <div class="muted small">Matriculados/as / Colocados/as</div>
369
+ <p class="muted" style="margin-top:8px">Taxa global de matrícula: <span id="taxa-matricula"></span>.</p>
370
+ </div></div>
371
+ </section>
372
+
373
+ <section class="card" style="margin-top:16px">
374
+ <div class="content">
375
+ <h3 style="margin:0 0 8px 0">% de colocados/as em 1.ª opção por Faculdade</h3>
376
+ <div style="height:320px"><canvas id="chart-primeira-opcao"></canvas></div>
377
+ <p class="muted small" style="margin-top:8px">Números absolutos: FLUC 330/540 · FDUC 273/383 · FMUC 199/347 · FCTUC 735/1005 · FFUC 177/258 · FEUC 187/334 · FPCEUC 134/238 · FCDEFUC 89/96 · ESEUC 152/274.</p>
378
+ </div>
379
+ </section>
380
+
381
+ <section class="card" style="margin-top:16px">
382
+ <div class="content">
383
+ <h3 style="margin:0 0 8px 0">Taxa de matrícula por Faculdade</h3>
384
+ <div style="height:320px"><canvas id="chart-matriculas"></canvas></div>
385
+ <p class="muted small" style="margin-top:8px">Números absolutos: FLUC 494/540 · FDUC 345/383 · FMUC 344/347 · FCTUC 967/1005 · FFUC 246/258 · FEUC 303/334 · FPCEUC 220/238 · FCDEFUC 93/96 · ESEUC 244/274.</p>
386
+ </div>
387
+ </section>
388
+
389
+ <section class="card" style="margin-top:16px">
390
+ <div class="content">
391
+ <h3 style="margin:0 0 8px 0">Distribuição de matriculados/as por nota de candidatura</h3>
392
+ <div style="height:320px"><canvas id="chart-notas"></canvas></div>
393
+ <p class="muted small" style="margin-top:8px">Destaque para os intervalos ]16;18] e ]14;16]; há <strong>427</strong> alunos/as com nota ≥18 valores.</p>
394
+ </div>
395
+ </section>
396
+
397
+ <section class="card" style="margin-top:16px">
398
+ <div class="content">
399
+ <h3 style="margin:0 0 8px 0">2.ª fase – Candidaturas UC</h3>
400
+ <div class="kpi">3 484</div>
401
+ <div class="muted small">Candidaturas (2025)</div>
402
+ </div>
403
+ </section>
404
+
405
+ <footer class="muted small" style="margin-top:16px; padding:8px 4px 32px">© Universidade de Coimbra · 2025 · Dados: DGES / NONIO · Visualização: BMM</footer>
406
+ </main>
407
+
408
+ <script>
409
+ // =======================
410
+ // Dados — EXACTOS do report
411
+ // =======================
412
+ const numerosGerais = { candidatos: 55292, vagas: 48718 };
413
+ const uc = { candidaturas: 19334, colocados: 3475, sexo: [{label: 'Feminino', value: 63.3},{label: 'Masculino', value: 36.7}] };
414
+ const totalMatriculados = 3256;
415
+
416
+ const rankingColocados = [
417
+ { universidade: 'UL', colocados: 4246 },
418
+ { universidade: 'UP', colocados: 4202 },
419
+ { universidade: 'UC', colocados: 3475 },
420
+ { universidade: 'UM', colocados: 3431 },
421
+ { universidade: 'UNL', colocados: 3388 },
422
+ { universidade: 'UA', colocados: 3352 },
423
+ { universidade: 'UÉ', colocados: 3452 },
424
+ { universidade: 'ISCTE-IUL', colocados: 3396 },
425
+ { universidade: 'UBI', colocados: 3296 },
426
+ { universidade: 'UTAD', colocados: 3302 },
427
+ { universidade: 'UAç', colocados: 3341 },
428
+ { universidade: 'UAlg', colocados: 1959 },
429
+ { universidade: 'UMa', colocados: 2012 },
430
+ ];
431
+
432
+ const procuraOpcoes = [
433
+ { opcao: '1.ª', percent: 63.1 },
434
+ { opcao: '2.ª', percent: 18.5 },
435
+ { opcao: '3.ª', percent: 9.3 },
436
+ { opcao: '4.ª', percent: 5.0 },
437
+ { opcao: '5.ª', percent: 2.6 },
438
+ { opcao: '6.ª', percent: 1.4 },
439
+ ];
440
+
441
+ const colocacaoPrimeiraOpcao = [
442
+ { faculdade: 'FLUC', valor: 330, total: 540 },
443
+ { faculdade: 'FDUC', valor: 273, total: 383 },
444
+ { faculdade: 'FMUC', valor: 199, total: 347 },
445
+ { faculdade: 'FCTUC', valor: 735, total: 1005 },
446
+ { faculdade: 'FFUC', valor: 177, total: 258 },
447
+ { faculdade: 'FEUC', valor: 187, total: 334 },
448
+ { faculdade: 'FPCEUC', valor: 134, total: 238 },
449
+ { faculdade: 'FCDEFUC', valor: 89, total: 96 },
450
+ { faculdade: 'ESEUC', valor: 152, total: 274 },
451
+ ];
452
+
453
+ const matriculas = [
454
+ { faculdade: 'FLUC', matriculados: 494, colocados: 540 },
455
+ { faculdade: 'FDUC', matriculados: 345, colocados: 383 },
456
+ { faculdade: 'FMUC', matriculados: 344, colocados: 347 },
457
+ { faculdade: 'FCTUC', matriculados: 967, colocados: 1005 },
458
+ { faculdade: 'FFUC', matriculados: 246, colocados: 258 },
459
+ { faculdade: 'FEUC', matriculados: 303, colocados: 334 },
460
+ { faculdade: 'FPCEUC', matriculados: 220, colocados: 238 },
461
+ { faculdade: 'FCDEFUC', matriculados: 93, colocados: 96 },
462
+ { faculdade: 'ESEUC', matriculados: 244, colocados: 274 },
463
+ ];
464
+
465
+ const notas = [
466
+ { intervalo: ']18;20]', qtd: 427 },
467
+ { intervalo: ']16;18]', qtd: 1188 },
468
+ { intervalo: ']14;16]', qtd: 1162 },
469
+ { intervalo: ']12;14]', qtd: 455 },
470
+ { intervalo: '[10;12]', qtd: 24 },
471
+ ];
472
+
473
+ // Util
474
+ const pct = (a,b) => b === 0 ? 0 : Math.round((a/b)*1000)/10; // 1 casa decimal
475
+
476
+ // KPI de taxa matrícula
477
+ document.getElementById('taxa-matricula').textContent = pct(totalMatriculados, uc.colocados) + '%';
478
+
479
+ // Cores (deixamos Chart.js escolher por defeito, sem estilos rígidos)
480
+
481
+ // Ranking
482
+ new Chart(document.getElementById('chart-ranking'), {
483
+ type: 'bar',
484
+ data: {
485
+ labels: rankingColocados.map(r => r.universidade),
486
+ datasets: [{ label: 'Colocados/as', data: rankingColocados.map(r => r.colocados), borderWidth: 1 }]
487
+ },
488
+ options: {
489
+ responsive: true,
490
+ maintainAspectRatio: false,
491
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y.toLocaleString('pt-PT') } } },
492
+ scales: { y: { beginAtZero: true } }
493
+ }
494
+ });
495
+
496
+ // Opções
497
+ new Chart(document.getElementById('chart-opcoes'), {
498
+ type: 'bar',
499
+ data: {
500
+ labels: procuraOpcoes.map(o => o.opcao),
501
+ datasets: [{ label: '%', data: procuraOpcoes.map(o => o.percent), borderWidth: 1 }]
502
+ },
503
+ options: {
504
+ responsive: true,
505
+ maintainAspectRatio: false,
506
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
507
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
508
+ }
509
+ });
510
+
511
+ // Sexo
512
+ new Chart(document.getElementById('chart-sexo'), {
513
+ type: 'pie',
514
+ data: {
515
+ labels: uc.sexo.map(s => s.label),
516
+ datasets: [{ data: uc.sexo.map(s => s.value) }]
517
+ },
518
+ options: { responsive: true, maintainAspectRatio: false }
519
+ });
520
+
521
+ // 1.ª opção por Faculdade
522
+ new Chart(document.getElementById('chart-primeira-opcao'), {
523
+ type: 'bar',
524
+ data: {
525
+ labels: colocacaoPrimeiraOpcao.map(f => f.faculdade),
526
+ datasets: [{
527
+ label: '% 1.ª opção',
528
+ data: colocacaoPrimeiraOpcao.map(f => pct(f.valor, f.total)),
529
+ borderWidth: 1
530
+ }]
531
+ },
532
+ options: {
533
+ responsive: true,
534
+ maintainAspectRatio: false,
535
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
536
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
537
+ }
538
+ });
539
+
540
+ // Matrículas por Faculdade
541
+ new Chart(document.getElementById('chart-matriculas'), {
542
+ type: 'bar',
543
+ data: {
544
+ labels: matriculas.map(m => m.faculdade),
545
+ datasets: [{
546
+ label: 'Taxa de matrícula (%)',
547
+ data: matriculas.map(m => pct(m.matriculados, m.colocados)),
548
+ borderWidth: 1
549
+ }]
550
+ },
551
+ options: {
552
+ responsive: true,
553
+ maintainAspectRatio: false,
554
+ plugins: { tooltip: { callbacks: { label: ctx => ctx.parsed.y + '%' } } },
555
+ scales: { y: { beginAtZero: true, ticks: { callback: v => v + '%' } } }
556
+ }
557
+ });
558
+
559
+ // Notas
560
+ new Chart(document.getElementById('chart-notas'), {
561
+ type: 'bar',
562
+ data: {
563
+ labels: notas.map(n => n.intervalo),
564
+ datasets: [{ label: 'Matriculados/as', data: notas.map(n => n.qtd), borderWidth: 1 }]
565
+ },
566
+ options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } } }
567
+ });
568
+ </script>
569
+ </body>
570
+ </html>
571
+
572
+ Mete só as cores e o aspeto gráfico igual ao resto do site pf
573
+ Mete só as cores e o aspeto gráfico igual ao resto do site pf
semana-aberta.html CHANGED
@@ -169,18 +169,57 @@
169
  </div>
170
  </div>
171
 
172
- <!-- Observations -->
173
- <div class="bg-yellow-50 rounded-xl p-8 shadow-md border-l-4 border-yellow-500" data-aos="fade-up">
174
- <div class="flex items-center mb-6">
175
- <div class="bg-yellow-500 p-3 rounded-full mr-4">
176
- <i data-feather="alert-circle" class="text-white"></i>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  </div>
178
- <h2 class="text-2xl font-bold text-gray-800">Observações</h2>
179
  </div>
180
- <div class="space-y-4 text-gray-700">
181
- <p>✅ <strong>Estratégia eficaz:</strong> Campanha bem-sucedida com excelentes taxas de CTR em ambas as plataformas.</p>
182
- <p>📊 <strong>Alcance significativo:</strong> Mais de 626 mil pessoas alcançadas através da campanha Meta.</p>
183
- <p>🎯 <strong>Performance Google:</strong> CTR excepcional de 22,99% demonstra alta relevância dos anúncios.</p>
 
 
 
 
 
 
 
 
 
184
  </div>
185
  </div>
186
  </div>
 
169
  </div>
170
  </div>
171
 
172
+ <!-- Enrollment Stats -->
173
+ <div class="bg-gray-50 rounded-xl p-8 shadow-md mb-12" data-aos="fade-up">
174
+ <h2 class="text-2xl font-bold text-gray-800 mb-8 text-center">Participação - Evolução Anual</h2>
175
+
176
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8 mb-8">
177
+ <!-- 2025 -->
178
+ <div class="text-center">
179
+ <div class="bg-blue-600 text-white rounded-full p-6 mx-auto mb-4">
180
+ <span class="text-2xl font-bold">2025</span>
181
+ </div>
182
+ <div class="space-y-2">
183
+ <p class="text-lg font-semibold text-gray-800">2.576 inscritos</p>
184
+ <p class="text-lg font-semibold text-blue-600">2.135 presenças</p>
185
+ </div>
186
+ </div>
187
+
188
+ <!-- 2024 -->
189
+ <div class="text-center">
190
+ <div class="bg-gray-400 text-white rounded-full p-6 mx-auto mb-4">
191
+ <span class="text-2xl font-bold">2024</span>
192
+ </div>
193
+ <div class="space-y-2">
194
+ <p class="text-lg font-semibold text-gray-800">2.050 inscritos</p>
195
+ <p class="text-lg font-semibold text-gray-600">2.370 presenças</p>
196
+ </div>
197
+ </div>
198
+
199
+ <!-- 2023 -->
200
+ <div class="text-center">
201
+ <div class="bg-gray-300 text-gray-800 rounded-full p-6 mx-auto mb-4">
202
+ <span class="text-2xl font-bold">2023</span>
203
+ </div>
204
+ <div class="space-y-2">
205
+ <p class="text-lg font-semibold text-gray-800">938 inscritos</p>
206
+ <p class="text-lg font-semibold text-gray-500">1.000 presenças</p>
207
+ </div>
208
  </div>
 
209
  </div>
210
+
211
+ <!-- Observations -->
212
+ <div class="bg-yellow-50 rounded-xl p-8 shadow-md border-l-4 border-yellow-500" data-aos="fade-up">
213
+ <div class="flex items-center mb-6">
214
+ <div class="bg-yellow-500 p-3 rounded-full mr-4">
215
+ <i data-feather="alert-circle" class="text-white"></i>
216
+ </div>
217
+ <h2 class="text-2xl font-bold text-gray-800">Observações</h2>
218
+ </div>
219
+ <div class="space-y-4 text-gray-700">
220
+ <p>📈 <strong>Tendência crescente:</strong> Conseguimos manter o aumento no número de inscritos.</p>
221
+ <p>⚠️ <strong>Participação:</strong> O número de participantes não correspondeu à subida de inscritos, provavelmente devido à alteração da data do evento.</p>
222
+ </div>
223
  </div>
224
  </div>
225
  </div>