PageSourceSearch

https://ospa.com.br/ospa-capital

html ospa.com.br collected 2026-10-04 15:15:04 UTC 89,969 bytes, 3,170 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pt-BR"><head>
3  <meta charset="utf-8">
4  <meta name="viewport" content="width=device-width,initial-scale=1">
5  <title>OSPA Capital — análise de viabilidade e financiamento imobiliário</title>
6
7  <!-- ─── SEO ─── -->
8  <meta name="description" content="A plataforma de viabilidade e crédito para o mercado imobiliário. Análise de viabilidade em minutos, estratégia de crédito e match com investidores institucionais.">
9  <meta name="robots" content="index, follow, max-image-preview:large">
10  <link rel="canonical" href="https://ospa.com.br/ospa-capital">
11  <meta name="theme-color" content="#082844">
12
13  <!-- Open Graph / Twitter -->
14  <meta property="og:type" content="website">
15  <meta property="og:site_name" content="OSPA Capital">
16  <meta property="og:locale" content="pt_BR">
17  <meta property="og:url" content="https://ospa.com.br/ospa-capital">
18  <meta property="og:title" content="OSPA Capital — análise de viabilidade e financiamento imobiliário">
19  <meta property="og:description" content="A plataforma de viabilidade e crédito para o mercado imobiliário. Análise de viabilidade em minutos, estratégia de crédito e match com investidores institucionais.">
20  <meta property="og:image" content="https://ospa.com.br/ospa-capital/hero-city-poster.jpg">
21  <meta property="og:image:width" content="1920">
22  <meta property="og:image:height" content="1080">
23  <meta name="twitter:card" content="summary_large_image">
24  <meta name="twitter:title" content="OSPA Capital — análise de viabilidade e financiamento imobiliário">
25  <meta name="twitter:description" content="A plataforma de viabilidade e crédito para o mercado imobiliário. Análise de viabilidade em minutos, estratégia de crédito e match com investidores institucionais.">
26  <meta name="twitter:image" content="https://ospa.com.br/ospa-capital/hero-city-poster.jpg">
27
28  <!-- Dados estruturados p/ buscadores e IAs (conteúdo espelha o site renderizado) -->
29  
29<script type="application/ld+json">
30  {
31    "@context": "https://schema.org",
32    "@graph": [
33      {
34        "@type": "Organization",
35        "@id": "https://ospa.com.br/ospa-capital#organization",
36        "name": "OSPA Capital",
37        "url": "https://ospa.com.br/ospa-capital",
38        "logo": "https://ospa.com.br/ospa-capital/ospa-logo.svg",
39        "email": "[email protected]",
40        "description": "A plataforma de viabilidade e crédito para o mercado imobiliário. Do empreendimento ao investidor com aderência ao perfil, com inteligência artificial.",
41        "parentOrganization": { "@type": "Organization", "name": "OSPA", "url": "https://ospa.com.br" },
42        "address": { "@type": "PostalAddress", "addressLocality": "Porto Alegre", "addressRegion": "RS", "addressCountry": "BR" }
43      },
44      {
45        "@type": "WebPage",
46        "@id": "https://ospa.com.br/ospa-capital#webpage",
47        "url": "https://ospa.com.br/ospa-capital",
48        "name": "OSPA Capital — análise de viabilidade e financiamento imobiliário",
49        "inLanguage": "pt-BR",
50        "description": "A plataforma de viabilidade e crédito para o mercado imobiliário. Análise de viabilidade em minutos, estratégia de crédito e match com investidores institucionais.",
51        "about": { "@id": "https://ospa.com.br/ospa-capital#organization" },
52        "primaryImageOfPage": "https://ospa.com.br/ospa-capital/hero-city-poster.jpg"
53      },
54      {
55        "@type": "FAQPage",
56        "@id": "https://ospa.com.br/ospa-capital#faq",
57        "mainEntity": [
58          {
59            "@type": "Question",
60            "name": "A plataforma é gratuita?",
61            "acceptedAnswer": { "@type": "Answer", "text": "Sim. Usar a plataforma é gratuito. A remuneração da OSPA Capital vem do sucesso da captação: sem captação, sem custo." }
62          },
63          {
64            "@type": "Question",
65            "name": "A OSPA Capital investe no meu empreendimento?",
66            "acceptedAnswer": { "@type": "Answer", "text": "Não. A OSPA Capital analisa o empreendimento e a operação, conecta com o investidor mais provável e acompanha o processo até o desembolso." }
67          },
68          {
69            "@type": "Question",
70            "name": "Em quanto tempo tenho uma viabilidade?",
71            "acceptedAnswer": { "@type": "Answer", "text": "Em minutos. A viabilidade completa pode ser feita manualmente, a partir dos documentos do empreendimento ou conectando o seu ERP." }
72          },
73          {
74            "@type": "Question",
75            "name": "Quem são os investidores na plataforma?",
76            "acceptedAnswer": { "@type": "Answer", "text": "FIIs, FIDCs, gestoras e demais veículos do mercado imobiliário brasileiro, lidos e monitorados para encontrar o de maior aderência à sua operação." }
77          },
78          {
79            "@type": "Question",
80            "name": "O que acontece com os dados do meu empreendimento?",
81            "acceptedAnswer": { "@type": "Answer", "text": "Os dados alimentam a viabilidade, a simulação de alavancagem e o match com investidores. Confidencialidade garantida: nada é compartilhado sem a sua autorização." }
82          }
83        ]
84      }
85    ]
86  }
87  </script>
87
88
89  <link rel="icon" href="/ospa-capital-home/72649e26.svg">
90  <link href="https://unpkg.com/[email protected]/dist/maplibre-gl.css" rel="stylesheet">
91  <style>/* ─────────────────────────────────────────────────────────────
92   OSPA Design System — Colors & Type
93   Source of truth: design-tokens.json (copied verbatim from the
94   OSPA platform repo's public/design-tokens.json).
95   ───────────────────────────────────────────────────────────── */
96
97/* Manrope — primary OSPA typeface (replacing Geist).
98   JetBrains Mono for tabular numerals and code blocks.
99   Both sourced from Google Fonts, SIL OFL, free for commercial use. */
100/* cyrillic-ext */
101@font-face {
102  font-family: 'JetBrains Mono';
103  font-style: normal;
104  font-weight: 400;
105  font-display: swap;
106  src: url("/ospa-capital-home/fonts/6c0ba77f.woff2") format('woff2');
107  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
108}
109/* cyrillic */
110@font-face {
111  font-family: 'JetBrains Mono';
112  font-style: normal;
113  font-weight: 400;
114  font-display: swap;
115  src: url("/ospa-capital-home/fonts/cff73fbb.woff2") format('woff2');
116  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
117}
118/* greek */
119@font-face {
120  font-family: 'JetBrains Mono';
121  font-style: normal;
122  font-weight: 400;
123  font-display: swap;
124  src: url("/ospa-capital-home/fonts/962da614.woff2") format('woff2');
125  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
126}
127/* vietnamese */
128@font-face {
129  font-family: 'JetBrains Mono';
130  font-style: normal;
131  font-weight: 400;
132  font-display: swap;
133  src: url("/ospa-capital-home/fonts/f500fb63.woff2") format('woff2');
134  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
135}
136/* latin-ext */
137@font-face {
138  font-family: 'JetBrains Mono';
139  font-style: normal;
140  font-weight: 400;
141  font-display: swap;
142  src: url("/ospa-capital-home/fonts/3bfb3f8b.woff2") format('woff2');
143  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
144}
145/* latin */
146@font-face {
147  font-family: 'JetBrains Mono';
148  font-style: normal;
149  font-weight: 400;
150  font-display: swap;
151  src: url("/ospa-capital-home/fonts/afa17591.woff2") format('woff2');
152  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
153}
154/* cyrillic-ext */
155@font-face {
156  font-family: 'JetBrains Mono';
157  font-style: normal;
158  font-weight: 500;
159  font-display: swap;
160  src: url("/ospa-capital-home/fonts/6c0ba77f.woff2") format('woff2');
161  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
162}
163/* cyrillic */
164@font-face {
165  font-family: 'JetBrains Mono';
166  font-style: normal;
167  font-weight: 500;
168  font-display: swap;
169  src: url("/ospa-capital-home/fonts/cff73fbb.woff2") format('woff2');
170  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
171}
172/* greek */
173@font-face {
174  font-family: 'JetBrains Mono';
175  font-style: normal;
176  font-weight: 500;
177  font-display: swap;
178  src: url("/ospa-capital-home/fonts/962da614.woff2") format('woff2');
179  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
180}
181/* vietnamese */
182@font-face {
183  font-family: 'JetBrains Mono';
184  font-style: normal;
185  font-weight: 500;
186  font-display: swap;
187  src: url("/ospa-capital-home/fonts/f500fb63.woff2") format('woff2');
188  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
189}
190/* latin-ext */
191@font-face {
192  font-family: 'JetBrains Mono';
193  font-style: normal;
194  font-weight: 500;
195  font-display: swap;
196  src: url("/ospa-capital-home/fonts/3bfb3f8b.woff2") format('woff2');
197  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
197BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
198}
199/* latin */
200@font-face {
201  font-family: 'JetBrains Mono';
202  font-style: normal;
203  font-weight: 500;
204  font-display: swap;
205  src: url("/ospa-capital-home/fonts/afa17591.woff2") format('woff2');
206  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
207}
208/* cyrillic-ext */
209@font-face {
210  font-family: 'JetBrains Mono';
211  font-style: normal;
212  font-weight: 600;
213  font-display: swap;
214  src: url("/ospa-capital-home/fonts/6c0ba77f.woff2") format('woff2');
215  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
216}
217/* cyrillic */
218@font-face {
219  font-family: 'JetBrains Mono';
220  font-style: normal;
221  font-weight: 600;
222  font-display: swap;
223  src: url("/ospa-capital-home/fonts/cff73fbb.woff2") format('woff2');
224  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
225}
226/* greek */
227@font-face {
228  font-family: 'JetBrains Mono';
229  font-style: normal;
230  font-weight: 600;
231  font-display: swap;
232  src: url("/ospa-capital-home/fonts/962da614.woff2") format('woff2');
233  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
234}
235/* vietnamese */
236@font-face {
237  font-family: 'JetBrains Mono';
238  font-style: normal;
239  font-weight: 600;
240  font-display: swap;
241  src: url("/ospa-capital-home/fonts/f500fb63.woff2") format('woff2');
242  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
243}
244/* latin-ext */
245@font-face {
246  font-family: 'JetBrains Mono';
247  font-style: normal;
248  font-weight: 600;
249  font-display: swap;
250  src: url("/ospa-capital-home/fonts/3bfb3f8b.woff2") format('woff2');
251  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
252}
253/* latin */
254@font-face {
255  font-family: 'JetBrains Mono';
256  font-style: normal;
257  font-weight: 600;
258  font-display: swap;
259  src: url("/ospa-capital-home/fonts/afa17591.woff2") format('woff2');
260  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
261}
262/* cyrillic-ext */
263@font-face {
264  font-family: 'Manrope';
265  font-style: normal;
266  font-weight: 400;
267  font-display: swap;
268  src: url("/ospa-capital-home/fonts/fdf9df79.woff2") format('woff2');
269  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
270}
271/* cyrillic */
272@font-face {
273  font-family: 'Manrope';
274  font-style: normal;
275  font-weight: 400;
276  font-display: swap;
277  src: url("/ospa-capital-home/fonts/f47f13d5.woff2") format('woff2');
278  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
279}
280/* greek */
281@font-face {
282  font-family: 'Manrope';
283  font-style: normal;
284  font-weight: 400;
285  font-display: swap;
286  src: url("/ospa-capital-home/fonts/4efd7353.woff2") format('woff2');
287  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
288}
289/* vietnamese */
290@font-face {
291  font-family: 'Manrope';
292  font-style: normal;
293  font-weight: 400;
294  font-display: swap;
295  src: url("/ospa-capital-home/fonts/6d92dd72.woff2") format('woff2');
296  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
297}
298/* latin-ext */
299@font-face {
300  font-family: 'Manrope';
301  font-style: normal;
302  font-weight: 400;
303  font-display: swap;
304  src: url("/ospa-capital-home/fonts/0040d3a6.woff2") format('woff2');
305  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
306}
307/* latin */
308@font-face {
309  font-family: 'Manrope';
310  font-style: normal;
311  font-weight: 400;
312  font-display: swap;
313  src: url("/ospa-capital-home/fonts/a1820773.woff2") format('woff2');
314  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
315}
316/* cyrillic-ext */
317@font-face {
318  font-family: 'Manrope';
319  font-style: normal;
320  font-weight: 500;
321  font-display: swap;
322  src: url("/ospa-capital-home/fonts/fdf9df79.woff2") format('woff2');
323  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
324}
325/* cyrillic */
326@font-face {
327  font-family: 'Manrope';
328  font-style: normal;
329  font-weight: 500;
330  font-display: swap;
331  src: url("/ospa-capital-home/fonts/f47f13d5.woff2") format('woff2');
332  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
333}
334/* greek */
335@font-face {
336  font-family: 'Manrope';
337  font-style: normal;
338  font-weight: 500;
339  font-display: swap;
340  src: url("/ospa-capital-home/fonts/4efd7353.woff2") format('woff2');
341  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
342}
343/* vietnamese */
344@font-face {
345  font-family: 'Manrope';
346  font-style: normal;
347  font-weight: 500;
348  font-display: swap;
349  src: url("/ospa-capital-home/fonts/6d92dd72.woff2") format('woff2');
350  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
351}
352/* latin-ext */
353@font-face {
354  font-family: 'Manrope';
355  font-style: normal;
356  font-weight: 500;
357  font-display: swap;
358  src: url("/ospa-capital-home/fonts/0040d3a6.woff2") format('woff2');
359  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
360}
361/* latin */
362@font-face {
363  font-family: 'Manrope';
364  font-style: normal;
365  font-weight: 500;
366  font-display: swap;
367  src: url("/ospa-capital-home/fonts/a1820773.woff2") format('woff2');
368  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
369}
370/* cyrillic-ext */
371@font-face {
372  font-family: 'Manrope';
373  font-style: normal;
374  font-weight: 600;
375  font-display: swap;
376  src: url("/ospa-capital-home/fonts/fdf9df79.woff2") format('woff2');
377  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
378}
379/* cyrillic */
380@font-face {
381  font-family: 'Manrope';
382  font-style: normal;
383  font-weight: 600;
384  font-display: swap;
385  src: url("/ospa-capital-home/fonts/f47f13d5.woff2") format('woff2');
386  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
387}
388/* greek */
389@font-face {
390  font-family: 'Manrope';
391  font-style: normal;
392  font-weight: 600;
393  font-display: swap;
394  src: url("/ospa-capital-home/fonts/4efd7353.woff2") format('woff2');
395  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
396}
397/* vietnamese */
398@font-face {
399  font-family: 'Manrope';
400  font-style: normal;
401  font-weight: 600;
402  font-display: swap;
403  src: url("/ospa-capital-home/fonts/6d92dd72.woff2") format('woff2');
404  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
405}
406/* latin-ext */
407@font-face {
408  font-family: 'Manrope';
409  font-style: normal;
410  font-weight: 600;
411  font-display: swap;
412  src: url("/ospa-capital-home/fonts/0040d3a6.woff2") format('woff2');
413  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
414}
415/* latin */
416@font-face {
417  font-family: 'Manrope';
418  font-style: normal;
419  font-weight: 600;
420  font-display: swap;
421  src: url("/ospa-capital-home/fonts/a1820773.woff2") format('woff2');
422  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
423}
424/* cyrillic-ext */
425@font-face {
426  font-family: 'Manrope';
427  font-style: normal;
428  font-weight: 700;
429  font-display: swap;
430  src: url("/ospa-capital-home/fonts/fdf9df79.woff2") format('woff2');
431  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
432}
433/* cyrillic */
434@font-face {
435  font-family: 'Manrope';
436  font-style: normal;
437  font-weight: 700;
438  font-display: swap;
439  src: url("/ospa-capital-home/fonts/f47f13d5.woff2") format('woff2');
440  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
441}
442/* greek */
443@font-face {
444  font-family: 'Manrope';
445  font-style: normal;
446  font-weight: 700;
447  font-display: swap;
448  src: url("/ospa-capital-home/fonts/4efd7353.woff2") format('woff2');
449  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
450}
451/* vietnamese */
452@font-face {
453  font-family: 'Manrope';
454  font-style: normal;
455  font-weight: 700;
456  font-display: swap;
457  src: url("/ospa-capital-home/fonts/6d92dd72.woff2") format('woff2');
458  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
459}
460/* latin-ext */
461@font-face {
462  font-family: 'Manrope';
463  font-style: normal;
464  font-weight: 700;
465  font-display: swap;
466  src: url("/ospa-capital-home/fonts/0040d3a6.woff2") format('woff2');
467  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
467BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
468}
469/* latin */
470@font-face {
471  font-family: 'Manrope';
472  font-style: normal;
473  font-weight: 700;
474  font-display: swap;
475  src: url("/ospa-capital-home/fonts/a1820773.woff2") format('woff2');
476  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
477}
478
479
480:root {
481  /* ── Raw OSPA palette ─────────────────────────────────────── */
482  --ospa-preto:       #000000;
483  --ospa-branco:      #FFFFFF;
484  --ospa-lua-nova:    #F7F7F7;
485  --ospa-marfim:      #ECECEC;
486  --ospa-pedra-clara: #D6D6D6;
487
488  --cinza-01: #292929;
489  --cinza-02: #727272;
490  --cinza-03: #B5B5B5;
491  --cinza-04: #DCDCDC;
492
493  --rosa-01:  #EA4172;
494
495  --azul-01:  #082844;  /* PRIMARY — Azul Urbe */
496  --azul-02:  #25476C;
497  --azul-03:  #536E83;
498  --azul-04:  #9CB0BF;
499
500  /* ── Semantic (light mode) ───────────────────────────────── */
501  --background:           var(--ospa-branco);
502  --foreground:           var(--ospa-preto);
503
504  --card:                 var(--ospa-branco);
505  --card-foreground:      var(--ospa-preto);
506  --popover:              var(--ospa-branco);
507  --popover-foreground:   var(--ospa-preto);
508
509  --primary:              var(--azul-01);
510  --primary-foreground:   var(--ospa-branco);
511
512  --secondary:            var(--ospa-marfim);
513  --secondary-foreground: var(--cinza-01);
514
515  --muted:                var(--ospa-marfim);
516  --muted-foreground:     var(--cinza-02);
517
518  --accent:               var(--azul-04);
519  --accent-foreground:    var(--ospa-preto);
520
521  --destructive:              var(--rosa-01);
522  --destructive-foreground:   var(--ospa-branco);
523
524  --border: var(--ospa-pedra-clara);
525  --input:  var(--ospa-marfim);
526  --ring:   var(--azul-01);
527
528  /* Charts */
529  --chart-1: var(--azul-01);
530  --chart-2: var(--azul-01);
531  --chart-3: var(--azul-03);
532  --chart-4: var(--rosa-01);
533  --chart-5: var(--azul-02);
534
535  /* Sidebar (always dark) */
536  --sidebar:                    var(--ospa-preto);
537  --sidebar-foreground:         var(--ospa-branco);
538  --sidebar-primary:            var(--azul-01);
539  --sidebar-primary-foreground: var(--ospa-branco);
540  --sidebar-accent:             var(--cinza-01);
541  --sidebar-accent-foreground:  var(--ospa-branco);
542  --sidebar-border:             var(--cinza-01);
543  --sidebar-ring:               var(--cinza-02);
544
545  /* ── Typography ──────────────────────────────────────────── */
546  --font-sans: 'Manrope', system-ui, -apple-system, Segoe UI, sans-serif;
547  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
548
549  --fs-display: 64px;
550  --fs-h1:      48px;
551  --fs-h2:      36px;
552  --fs-h3:      28px;
553  --fs-h4:      22px;
554  --fs-h5:      18px;
555  --fs-body-lg: 18px;
556  --fs-body-md: 16px;
557  --fs-body-sm: 14px;
558  --fs-caption: 12px;
559  --fs-label:   11px;
560  --fs-mono:    14px;
561
562  --fw-regular:  400;
563  --fw-medium:   500;
564  --fw-semibold: 600;
565  --fw-bold:     700;
566
567  --ls-tight:  -1.5px;
568  --ls-snug:   -1px;
569  --ls-normal: 0;
570  --ls-wide:   0.4px;
571  --ls-wider:  0.8px;
572
573  --lh-tight:   1.2;
574  --lh-snug:    1.4;
575  --lh-normal:  1.5;
576  --lh-relaxed: 1.6;
577  --lh-loose:   1.7;
578
579  /* ── Spacing (4px base) ──────────────────────────────────── */
580  --space-1:  4px;
581  --space-2:  8px;
582  --space-3:  12px;
583  --space-4:  16px;
584  --space-5:  20px;
585  --space-6:  24px;
586  --space-8:  32px;
587  --space-10: 40px;
588  --space-12: 48px;
589  --space-16: 64px;
590  --space-20: 80px;
591
592  /* ── Radii ───────────────────────────────────────────────── */
593  --radius-none: 0;
594  --radius-xs:   2px;
595  --radius-sm:   4px;
596  --radius-md:   6px;  /* inputs, badges */
597  --radius-lg:   8px;  /* cards default */
598  --radius-xl:   12px; /* modals, card effective */
599  --radius-2xl:  16px;
600  --radius-full: 9999px;
601  --radius:      0.5rem;
602
603  /* ── Shadows (tinted with OSPA Preto) ────────────────────── */
604  --shadow-xs: 0 1px 2px 0 rgba(25,25,25,0.05);
605  --shadow-sm: 0 1px 3px 0 rgba(25,25,25,0.10), 0 1px 2px -1px rgba(25,25,25,0.10);
606  --shadow-md: 0 4px 6px -1px rgba(25,25,25,0.10), 0 2px 4px -2px rgba(25,25,25,0.10);
607  --shadow-lg: 0 10px 15px -3px rgba(25,25,25,0.10), 0 4px 6px -4px rgba(25,25,25,0.10);
608  --shadow-xl: 0 20px 25px -5px rgba(25,25,25,0.10), 0 8px 10px -6px rgba(25,25,25,0.10);
609
610  /* ── Motion ──────────────────────────────────────────────── */
611  --dur-fast:   75ms;
612  --dur-base:   100ms;
613  --dur-slow:   150ms;
614  --dur-slower: 250ms;
615
616  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
617  --ease-enter:    cubic-bezier(0.0, 0, 0.2, 1);
618  --ease-exit:     cubic-bezier(0.4, 0, 1, 1);
619  --ease-spring:   cubic-bezier(0.34, 1.56, 0.64, 1);
620}
621
622.dark {
623  --background:           var(--ospa-preto);
624  --foreground:           var(--ospa-branco);
625  --card:                 var(--cinza-01);
626  --card-foreground:      var(--ospa-branco);
627  --popover:              var(--cinza-01);
628  --popover-foreground:   var(--ospa-branco);
629  --primary:              var(--azul-04);
630  --primary-foreground:   var(--ospa-preto);
631  --secondary:            var(--cinza-01);
632  --secondary-foreground: var(--ospa-marfim);
633  --muted:                var(--cinza-01);
634  --muted-foreground:     var(--cinza-03);
635  --accent:               var(--azul-04);
636  --accent-foreground:    var(--ospa-preto);
637  --border: var(--cinza-01);
638  --input:  var(--cinza-01);
639  --ring:   var(--azul-04);
640}
641
642/* ─────────────────────────────────────────────────────────────
643   Base semantic classes — use these instead of ad-hoc sizes.
644   ───────────────────────────────────────────────────────────── */
645html, body {
646  font-family: var(--font-sans);
647  background: var(--background);
648  color: var(--foreground);
649  font-size: var(--fs-body-sm);
650  line-height: var(--lh-normal);
651  -webkit-font-smoothing: antialiased;
652}
653
654.display {
655  font-size: var(--fs-display);
656  font-weight: var(--fw-semibold);
657  line-height: var(--lh-tight);
658  letter-spacing: var(--ls-tight);
659}
660h1, .h1 { font-size: var(--fs-h1); font-weight: var(--fw-semibold); line-height: var(--lh-tight); letter-spacing: var(--ls-snug); }
661h2, .h2 { font-size: var(--fs-h2); font-weight: var(--fw-semibold); line-height: var(--lh-snug); letter-spacing: var(--ls-snug); }
662h3, .h3 { font-size: var(--fs-h3); font-weight: var(--fw-semibold); line-height: var(--lh-snug); }
663h4, .h4 { font-size: var(--fs-h4); font-weight: var(--fw-semibold); line-height: var(--lh-snug); }
664h5, .h5 { font-size: var(--fs-h5); font-weight: var(--fw-semibold); line-height: var(--lh-snug); }
665
666.body-lg { font-size: var(--fs-body-lg); line-height: var(--lh-relaxed); }
667.body    { font-size: var(--fs-body-md); line-height: var(--lh-normal); }
668.body-sm { font-size: var(--fs-body-sm); line-height: var(--lh-normal); }
669.caption { font-size: var(--fs-caption); line-height: var(--lh-normal); color: var(--muted-foreground); }
670.label   { font-size: var(--fs-label); line-height: var(--lh-normal); text-transform: uppercase; letter-spacing: var(--ls-wider); color: var(--muted-foreground); font-weight: var(--fw-semibold); }
671
672.mono    { font-family: var(--font-mono); font-size: var(--fs-mono); }
673.tabular { font-variant-numeric: tabular-nums; }
674
675.eyebrow {
676  font-size: 10px;
677  font-weight: var(--fw-semibold);
678  text-transform: uppercase;
679  letter-spacing: var(--ls-wider);
680  color: color-mix(in srgb, var(--muted-foreground) 50%, transparent);
681}
682</style>
683  <style>/* required styles */
684
685.leaflet-pane,
686.leaflet-tile,
687.leaflet-marker-icon,
688.leaflet-marker-shadow,
689.leaflet-tile-container,
690.leaflet-pane > svg,
691.leaflet-pane > canvas,
692.leaflet-zoom-box,
693.leaflet-image-layer,
694.leaflet-layer {
695	position: absolute;
696	left: 0;
697	top: 0;
698	}
699.leaflet-container {
700	overflow: hidden;
701	}
702.leaflet-tile,
703.leaflet-marker-icon,
704.leaflet-marker-shadow {
705	-webkit-user-select: none;
706	   -moz-user-select: none;
707	        user-select: none;
708	  -webkit-user-drag: none;
709	}
710/* Prevents IE11 from highlighting tiles in blue */
711.leaflet-tile::selection {
712	background: transparent;
713}
714/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
715.leaflet-safari .leaflet-tile {
716	image-rendering: -webkit-optimize-contrast;
717	}
718/* hack that prevents hw layers "stretching" when loading new tiles */
719.leaflet-safari .leaflet-tile-container {
720	width: 1600px;
721	height: 1600px;
722	-webkit-transform-origin: 0 0;
723	}
724.leaflet-marker-icon,
725.leaflet-marker-shadow {
726	display: block;
727	}
728/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
729/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
730.leaflet-container .leaflet-overlay-pane svg {
731	max-width: none !important;
732	max-height: none !important;
733	}
734.leaflet-container .leaflet-marker-pane img,
735.leaflet-container .leaflet-shadow-pane img,
736.leaflet-container .leaflet-tile-pane img,
737.leaflet-container img.leaflet-image-layer,
738.leaflet-container .leaflet-tile {
739	max-width: none !important;
740	max-height: none !important;
741	width: auto;
742	padding: 0;
743	}
744
745.leaflet-container img.leaflet-tile {
746	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
747	mix-blend-mode: plus-lighter;
748}
749
750.leaflet-container.leaflet-touch-zoom {
751	-ms-touch-action: pan-x pan-y;
752	touch-action: pan-x pan-y;
753	}
754.leaflet-container.leaflet-touch-drag {
755	-ms-touch-action: pinch-zoom;
756	/* Fallback for FF which doesn't support pinch-zoom */
757	touch-action: none;
758	touch-action: pinch-zoom;
759}
760.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
761	-ms-touch-action: none;
762	touch-action: none;
763}
764.leaflet-container {
765	-webkit-tap-highlight-color: transparent;
766}
767.leaflet-container a {
768	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
769}
770.leaflet-tile {
771	filter: inherit;
772	visibility: hidden;
773	}
774.leaflet-tile-loaded {
775	visibility: inherit;
776	}
777.leaflet-zoom-box {
778	width: 0;
779	height: 0;
780	-moz-box-sizing: border-box;
781	     box-sizing: border-box;
782	z-index: 800;
783	}
784/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
785.leaflet-overlay-pane svg {
786	-moz-user-select: none;
787	}
788
789.leaflet-pane         { z-index: 400; }
790
791.leaflet-tile-pane    { z-index: 200; }
792.leaflet-overlay-pane { z-index: 400; }
793.leaflet-shadow-pane  { z-index: 500; }
794.leaflet-marker-pane  { z-index: 600; }
795.leaflet-tooltip-pane   { z-index: 650; }
796.leaflet-popup-pane   { z-index: 700; }
797
798.leaflet-map-pane canvas { z-index: 100; }
799.leaflet-map-pane svg    { z-index: 200; }
800
801.leaflet-vml-shape {
802	width: 1px;
803	height: 1px;
804	}
805.lvml {
806	behavior: url(#default#VML);
807	display: inline-block;
808	position: absolute;
809	}
810
811
812/* control positioning */
813
814.leaflet-control {
815	position: relative;
816	z-index: 800;
817	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
818	pointer-events: auto;
819	}
820.leaflet-top,
821.leaflet-bottom {
822	position: absolute;
823	z-index: 1000;
824	pointer-events: none;
825	}
826.leaflet-top {
827	top: 0;
828	}
829.leaflet-right {
830	right: 0;
831	}
832.leaflet-bottom {
833	bottom: 0;
834	}
835.leaflet-left {
836	left: 0;
837	}
838.leaflet-control {
839	float: left;
840	clear: both;
841	}
842.leaflet-right .leaflet-control {
843	float: right;
844	}
845.leaflet-top .leaflet-control {
846	margin-top: 10px;
847	}
848.leaflet-bottom .leaflet-control {
849	margin-bottom: 10px;
850	}
851.leaflet-left .leaflet-control {
852	margin-left: 10px;
853	}
854.leaflet-right .leaflet-control {
855	margin-right: 10px;
856	}
857
858
859/* zoom and fade animations */
860
861.leaflet-fade-anim .leaflet-popup {
862	opacity: 0;
863	-webkit-transition: opacity 0.2s linear;
864	   -moz-transition: opacity 0.2s linear;
865	        transition: opacity 0.2s linear;
866	}
867.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
868	opacity: 1;
869	}
870.leaflet-zoom-animated {
871	-webkit-transform-origin: 0 0;
872	    -ms-transform-origin: 0 0;
873	        transform-origin: 0 0;
874	}
875svg.leaflet-zoom-animated {
876	will-change: transform;
877}
878
879.leaflet-zoom-anim .leaflet-zoom-animated {
880	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
881	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
882	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
883	}
884.leaflet-zoom-anim .leaflet-tile,
885.leaflet-pan-anim .leaflet-tile {
886	-webkit-transition: none;
887	   -moz-transition: none;
888	        transition: none;
889	}
890
891.leaflet-zoom-anim .leaflet-zoom-hide {
892	visibility: hidden;
893	}
894
895
896/* cursors */
897
898.leaflet-interactive {
899	cursor: pointer;
900	}
901.leaflet-grab {
902	cursor: -webkit-grab;
903	cursor:    -moz-grab;
904	cursor:         grab;
905	}
906.leaflet-crosshair,
907.leaflet-crosshair .leaflet-interactive {
908	cursor: crosshair;
909	}
910.leaflet-popup-pane,
911.leaflet-control {
912	cursor: auto;
913	}
914.leaflet-dragging .leaflet-grab,
915.leaflet-dragging .leaflet-grab .leaflet-interactive,
916.leaflet-dragging .leaflet-marker-draggable {
917	cursor: move;
918	cursor: -webkit-grabbing;
919	cursor:    -moz-grabbing;
920	cursor:         grabbing;
921	}
922
923/* marker & overlays interactivity */
924.leaflet-marker-icon,
925.leaflet-marker-shadow,
926.leaflet-image-layer,
927.leaflet-pane > svg path,
928.leaflet-tile-container {
929	pointer-events: none;
930	}
931
932.leaflet-marker-icon.leaflet-interactive,
933.leaflet-image-layer.leaflet-interactive,
934.leaflet-pane > svg path.leaflet-interactive,
935svg.leaflet-image-layer.leaflet-interactive path {
936	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
937	pointer-events: auto;
938	}
939
940/* visual tweaks */
941
942.leaflet-container {
943	background: #ddd;
944	outline-offset: 1px;
945	}
946.leaflet-container a {
947	color: #0078A8;
948	}
949.leaflet-zoom-box {
950	border: 2px dotted #38f;
951	background: rgba(255,255,255,0.5);
952	}
953
954
955/* general typography */
956.leaflet-container {
957	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
958	font-size: 12px;
959	font-size: 0.75rem;
960	line-height: 1.5;
961	}
962
963
964/* general toolbar styles */
965
966.leaflet-bar {
967	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
968	border-radius: 4px;
969	}
970.leaflet-bar a {
971	background-color: #fff;
972	border-bottom: 1px solid #ccc;
973	width: 26px;
974	height: 26px;
975	line-height: 26px;
976	display: block;
977	text-align: center;
978	text-decoration: none;
979	color: black;
980	}
981.leaflet-bar a,
982.leaflet-control-layers-toggle {
983	background-position: 50% 50%;
984	background-repeat: no-repeat;
985	display: block;
986	}
987.leaflet-bar a:hover,
988.leaflet-bar a:focus {
989	background-color: #f4f4f4;
990	}
991.leaflet-bar a:first-child {
992	border-top-left-radius: 4px;
993	border-top-right-radius: 4px;
994	}
995.leaflet-bar a:last-child {
996	border-bottom-left-radius: 4px;
997	border-bottom-right-radius: 4px;
998	border-bottom: none;
999	}
1000.leaflet-bar a.leaflet-disabled {
1001	cursor: default;
1002	background-color: #f4f4f4;
1003	color: #bbb;
1004	}
1005
1006.leaflet-touch .leaflet-bar a {
1007	width: 30px;
1008	height: 30px;
1009	line-height: 30px;
1010	}
1011.leaflet-touch .leaflet-bar a:first-child {
1012	border-top-left-radius: 2px;
1013	border-top-right-radius: 2px;
1014	}
1015.leaflet-touch .leaflet-bar a:last-child {
1016	border-bottom-left-radius: 2px;
1017	border-bottom-right-radius: 2px;
1018	}
1019
1020/* zoom control */
1021
1022.leaflet-control-zoom-in,
1023.leaflet-control-zoom-out {
1024	font: bold 18px 'Lucida Console', Monaco, monospace;
1025	text-indent: 1px;
1026	}
1027
1028.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
1029	font-size: 22px;
1030	}
1031
1032
1033/* layers control */
1034
1035.leaflet-control-layers {
1036	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
1037	background: #fff;
1038	border-radius: 5px;
1039	}
1040.leaflet-control-layers-toggle {
1041	background-image: url("/ospa-capital-home/7eccace4.png");
1042	width: 36px;
1043	height: 36px;
1044	}
1045.leaflet-retina .leaflet-control-layers-toggle {
1046	background-image: url("/ospa-capital-home/d3c5eea1.png");
1047	background-size: 26px 26px;
1048	}
1049.leaflet-touch .leaflet-control-layers-toggle {
1050	width: 44px;
1051	height: 44px;
1052	}
1053.leaflet-control-layers .leaflet-control-layers-list,
1054.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
1055	display: none;
1056	}
1057.leaflet-control-layers-expanded .leaflet-control-layers-list {
1058	display: block;
1059	position: relative;
1060	}
1061.leaflet-control-layers-expanded {
1062	padding: 6px 10px 6px 6px;
1063	color: #333;
1064	background: #fff;
1065	}
1066.leaflet-control-layers-scrollbar {
1067	overflow-y: scroll;
1068	overflow-x: hidden;
1069	padding-right: 5px;
1070	}
1071.leaflet-control-layers-selector {
1072	margin-top: 2px;
1073	position: relative;
1074	top: 1px;
1075	}
1076.leaflet-control-layers label {
1077	display: block;
1078	font-size: 13px;
1079	font-size: 1.08333em;
1080	}
1081.leaflet-control-layers-separator {
1082	height: 0;
1083	border-top: 1px solid #ddd;
1084	margin: 5px -10px 5px -6px;
1085	}
1086
1087/* Default icon URLs */
1088.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
1089	background-image: url("/ospa-capital-home/2670414c.png");
1090	}
1091
1092
1093/* attribution and scale controls */
1094
1095.leaflet-container .leaflet-control-attribution {
1096	background: #fff;
1097	background: rgba(255, 255, 255, 0.8);
1098	margin: 0;
1099	}
1100.leaflet-control-attribution,
1101.leaflet-control-scale-line {
1102	padding: 0 5px;
1103	color: #333;
1104	line-height: 1.4;
1105	}
1106.leaflet-control-attribution a {
1107	text-decoration: none;
1108	}
1109.leaflet-control-attribution a:hover,
1110.leaflet-control-attribution a:focus {
1111	text-decoration: underline;
1112	}
1113.leaflet-attribution-flag {
1114	display: inline !important;
1115	vertical-align: baseline !important;
1116	width: 1em;
1117	height: 0.6669em;
1118	}
1119.leaflet-left .leaflet-control-scale {
1120	margin-left: 5px;
1121	}
1122.leaflet-bottom .leaflet-control-scale {
1123	margin-bottom: 5px;
1124	}
1125.leaflet-control-scale-line {
1126	border: 2px solid #777;
1127	border-top: none;
1128	line-height: 1.1;
1129	padding: 2px 5px 1px;
1130	white-space: nowrap;
1131	-moz-box-sizing: border-box;
1132	     box-sizing: border-box;
1133	background: rgba(255, 255, 255, 0.8);
1134	text-shadow: 1px 1px #fff;
1135	}
1136.leaflet-control-scale-line:not(:first-child) {
1137	border-top: 2px solid #777;
1138	border-bottom: none;
1139	margin-top: -2px;
1140	}
1141.leaflet-control-scale-line:not(:first-child):not(:last-child) {
1142	border-bottom: 2px solid #777;
1143	}
1144
1145.leaflet-touch .leaflet-control-attribution,
1146.leaflet-touch .leaflet-control-layers,
1147.leaflet-touch .leaflet-bar {
1148	box-shadow: none;
1149	}
1150.leaflet-touch .leaflet-control-layers,
1151.leaflet-touch .leaflet-bar {
1152	border: 2px solid rgba(0,0,0,0.2);
1153	background-clip: padding-box;
1154	}
1155
1156
1157/* popup */
1158
1159.leaflet-popup {
1160	position: absolute;
1161	text-align: center;
1162	margin-bottom: 20px;
1163	}
1164.leaflet-popup-content-wrapper {
1165	padding: 1px;
1166	text-align: left;
1167	border-radius: 12px;
1168	}
1169.leaflet-popup-content {
1170	margin: 13px 24px 13px 20px;
1171	line-height: 1.3;
1172	font-size: 13px;
1173	font-size: 1.08333em;
1174	min-height: 1px;
1175	}
1176.leaflet-popup-content p {
1177	margin: 17px 0;
1178	margin: 1.3em 0;
1179	}
1180.leaflet-popup-tip-container {
1181	width: 40px;
1182	height: 20px;
1183	position: absolute;
1184	left: 50%;
1185	margin-top: -1px;
1186	margin-left: -20px;
1187	overflow: hidden;
1188	pointer-events: none;
1189	}
1190.leaflet-popup-tip {
1191	width: 17px;
1192	height: 17px;
1193	padding: 1px;
1194
1195	margin: -10px auto 0;
1196	pointer-events: auto;
1197
1198	-webkit-transform: rotate(45deg);
1199	   -moz-transform: rotate(45deg);
1200	    -ms-transform: rotate(45deg);
1201	        transform: rotate(45deg);
1202	}
1203.leaflet-popup-content-wrapper,
1204.leaflet-popup-tip {
1205	background: white;
1206	color: #333;
1207	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
1208	}
1209.leaflet-container a.leaflet-popup-close-button {
1210	position: absolute;
1211	top: 0;
1212	right: 0;
1213	border: none;
1214	text-align: center;
1215	width: 24px;
1216	height: 24px;
1217	font: 16px/24px Tahoma, Verdana, sans-serif;
1218	color: #757575;
1219	text-decoration: none;
1220	background: transparent;
1221	}
1222.leaflet-container a.leaflet-popup-close-button:hover,
1223.leaflet-container a.leaflet-popup-close-button:focus {
1224	color: #585858;
1225	}
1226.leaflet-popup-scrolled {
1227	overflow: auto;
1228	}
1229
1230.leaflet-oldie .leaflet-popup-content-wrapper {
1231	-ms-zoom: 1;
1232	}
1233.leaflet-oldie .leaflet-popup-tip {
1234	width: 24px;
1235	margin: 0 auto;
1236
1237	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
1238	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
1239	}
1240
1241.leaflet-oldie .leaflet-control-zoom,
1242.leaflet-oldie .leaflet-control-layers,
1243.leaflet-oldie .leaflet-popup-content-wrapper,
1244.leaflet-oldie .leaflet-popup-tip {
1245	border: 1px solid #999;
1246	}
1247
1248
1249/* div icon */
1250
1251.leaflet-div-icon {
1252	background: #fff;
1253	border: 1px solid #666;
1254	}
1255
1256
1257/* Tooltip */
1258/* Base styles for the element that has a tooltip */
1259.leaflet-tooltip {
1260	position: absolute;
1261	padding: 6px;
1262	background-color: #fff;
1263	border: 1px solid #fff;
1264	border-radius: 3px;
1265	color: #222;
1266	white-space: nowrap;
1267	-webkit-user-select: none;
1268	-moz-user-select: none;
1269	-ms-user-select: none;
1270	user-select: none;
1271	pointer-events: none;
1272	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
1273	}
1274.leaflet-tooltip.leaflet-interactive {
1275	cursor: pointer;
1276	pointer-events: auto;
1277	}
1278.leaflet-tooltip-top:before,
1279.leaflet-tooltip-bottom:before,
1280.leaflet-tooltip-left:before,
1281.leaflet-tooltip-right:before {
1282	position: absolute;
1283	pointer-events: none;
1284	border: 6px solid transparent;
1285	background: transparent;
1286	content: "";
1287	}
1288
1289/* Directions */
1290
1291.leaflet-tooltip-bottom {
1292	margin-top: 6px;
1293}
1294.leaflet-tooltip-top {
1295	margin-top: -6px;
1296}
1297.leaflet-tooltip-bottom:before,
1298.leaflet-tooltip-top:before {
1299	left: 50%;
1300	margin-left: -6px;
1301	}
1302.leaflet-tooltip-top:before {
1303	bottom: 0;
1304	margin-bottom: -12px;
1305	border-top-color: #fff;
1306	}
1307.leaflet-tooltip-bottom:before {
1308	top: 0;
1309	margin-top: -12px;
1310	margin-left: -6px;
1311	border-bottom-color: #fff;
1312	}
1313.leaflet-tooltip-left {
1314	margin-left: -6px;
1315}
1316.leaflet-tooltip-right {
1317	margin-left: 6px;
1318}
1319.leaflet-tooltip-left:before,
1320.leaflet-tooltip-right:before {
1321	top: 50%;
1322	margin-top: -6px;
1323	}
1324.leaflet-tooltip-left:before {
1325	right: 0;
1326	margin-right: -12px;
1327	border-left-color: #fff;
1328	}
1329.leaflet-tooltip-right:before {
1330	left: 0;
1331	margin-left: -12px;
1332	border-right-color: #fff;
1333	}
1334
1335/* Printing */
1336
1337@media print {
1338	/* Prevent printers from removing background-images of controls. */
1339	.leaflet-control {
1340		-webkit-print-color-adjust: exact;
1341		print-color-adjust: exact;
1342		}
1343	}
1344</style>
1345  <style>/* ───────────────────────────────────────────────
1346   ORIGINALS — OSPA Capital landing
1347   Inherits OSPA tokens from ospa.css
1348   ─────────────────────────────────────────────── */
1349
1350* { box-sizing: border-box; }
1351html { scroll-behavior: smooth; }
1352body {
1353  margin: 0;
1354  background: var(--ospa-branco);
1355  color: var(--ospa-preto);
1356  font-family: var(--font-sans);
1357  font-size: 15px;
1358  line-height: 1.55;
1359  overflow-x: hidden;
1360  cursor: none;
1361}
1362
1363a { color: inherit; text-decoration: none; }
1364button { font: inherit; cursor: none; }
1365img { display: block; max-width: 100%; }
1366
1367::selection { background: var(--ospa-preto); color: var(--ospa-branco); }
1368
1369/* ─── Custom cursor ─── */
1370.cursor-dot, .cursor-ring {
1371  position: fixed;
1372  top: 0; left: 0;
1373  pointer-events: none;
1374  z-index: 9999;
1375  mix-blend-mode: difference;
1376  will-change: transform;
1377}
1378.cursor-dot {
1379  width: 6px; height: 6px;
1380  background: #fff;
1381  border-radius: 50%;
1382  transform: translate(-50%, -50%);
1383}
1384.cursor-ring {
1385  width: 36px; height: 36px;
1386  border: 1px solid rgba(255,255,255,0.6);
1387  border-radius: 50%;
1388  transform: translate(-50%, -50%);
1389  transition: width var(--dur-base) var(--ease-standard),
1390              height var(--dur-base) var(--ease-standard),
1391              border-color var(--dur-base) var(--ease-standard);
1392}
1393.cursor-ring.is-link {
1394  width: 64px; height: 64px;
1395  border-color: rgba(255,255,255,0.9);
1396}
1397
1398@media (max-width: 768px) {
1399  body { cursor: auto; }
1400  a, button { cursor: pointer; }
1401  .cursor-dot, .cursor-ring { display: none; }
1402}
1403
1404/* ─── Layout primitives ─── */
1405.wrap {
1406  width: 100%;
1407  max-width: 1440px;
1408  margin: 0 auto;
1409  padding: 0 48px;
1410}
1411@media (max-width: 768px) {
1412  .wrap { padding: 0 24px; }
1413}
1414
1415.section {
1416  padding: 112px 0;
1417  position: relative;
1418}
1419@media (max-width: 768px) {
1420  .section { padding: 60px 0; }
1421}
1422
1423.eyebrow {
1424  font-size: 11px;
1425  font-weight: 600;
1426  letter-spacing: 0.16em;
1427  text-transform: uppercase;
1428  color: var(--cinza-02);
1429  display: inline-flex;
1430  align-items: center;
1431  gap: 12px;
1432}
1433.eyebrow::before {
1434  content: "";
1435  width: 24px;
1436  height: 1px;
1437  background: var(--cinza-03);
1438  display: inline-block;
1439}
1440
1441.section-label {
1442  font-family: var(--font-mono);
1443  font-size: 11px;
1444  letter-spacing: 0.14em;
1445  text-transform: uppercase;
1446  color: var(--cinza-02);
1447}
1448
1449/* ─── Type rhythm ─── */
1450.display-xl {
1451  font-size: clamp(48px, 8vw, 128px);
1452  font-weight: 500;
1453  line-height: 0.95;
1454  letter-spacing: -0.04em;
1455  margin: 0;
1456}
1457.display-lg {
1458  font-size: clamp(40px, 6vw, 88px);
1459  font-weight: 500;
1460  line-height: 1.0;
1461  letter-spacing: -0.035em;
1462  margin: 0;
1463}
1464.display-md {
1465  font-size: clamp(32px, 4.5vw, 56px);
1466  font-weight: 500;
1467  line-height: 1.05;
1468  letter-spacing: -0.025em;
1469  margin: 0;
1470}
1471.lede {
1472  font-size: clamp(16px, 1.4vw, 20px);
1473  line-height: 1.5;
1474  color: var(--cinza-02);
1475  font-weight: 400;
1476  max-width: 56ch;
1477  margin: 0;
1478}
1479.italic-serif {
1480  font-style: italic;
1481  font-family: 'Manrope', serif;
1482  font-weight: 400;
1483  letter-spacing: -0.02em;
1484}
1485
1486/* ─── Buttons ─── */
1487.btn {
1488  display: inline-flex;
1489  align-items: center;
1490  gap: 14px;
1491  padding: 18px 28px;
1492  border-radius: 999px;
1493  font-size: 14px;
1494  font-weight: 500;
1495  letter-spacing: -0.005em;
1496  border: 1px solid transparent;
1497  transition: all var(--dur-slow) var(--ease-standard);
1498  position: relative;
1499  overflow: hidden;
1500}
1501.btn-primary {
1502  background: var(--ospa-preto);
1503  color: var(--ospa-branco);
1504}
1505.btn-primary:hover {
1506  background: var(--ospa-preto);
1507  transform: translateY(-1px);
1508}
1509.btn-ghost {
1510  background: transparent;
1511  color: var(--ospa-preto);
1512  border-color: var(--ospa-pedra-clara);
1513}
1514.btn-ghost:hover {
1515  background: var(--ospa-preto);
1516  color: var(--ospa-branco);
1517  border-color: var(--ospa-preto);
1518}
1519.btn-arrow {
1520  width: 20px; height: 20px;
1521  display: inline-flex;
1522  align-items: center;
1523  justify-content: center;
1524  transition: transform var(--dur-slow) var(--ease-standard);
1525}
1526.btn:hover .btn-arrow { transform: translate(4px, -4px); }
1527
1528/* ─── Nav ─── */
1529.nav {
1530  position: fixed;
1531  top: 0; left: 0; right: 0;
1532  z-index: 100;
1533  padding: 24px 48px;
1534  /* Grid de 3 colunas: spacer · menu · direita. As colunas laterais são 1fr
1535     iguais, então o menu (coluna `auto`) fica no centro REAL da viewport,
1536     independente da largura do CTA+toggle à direita. (space-between deixava o
1537     menu ~90px à esquerda, porque o lado direito é bem mais largo que o spacer.) */
1538  display: grid;
1539  grid-template-columns: 1fr auto 1fr;
1540  align-items: center;
1541  color: var(--ospa-preto);
1542  pointer-events: none;
1543}
1544.nav > * { pointer-events: auto; }
1545.nav-logo {
1546  font-size: 18px;
1547  font-weight: 600;
1548  letter-spacing: -0.01em;
1549  display: flex;
1550  align-items: center;
1551  gap: 10px;
1552}
1553.nav-logo-mark {
1554  width: 18px; height: 18px;
1555  border: 1.5px solid currentColor;
1556  border-radius: 50%;
1557  position: relative;
1558}
1559.nav-logo-mark::after {
1560  content: "";
1561  position: absolute;
1562  inset: 3px;
1563  background: currentColor;
1564  border-radius: 50%;
1565}
1566.nav-logo-img {
1567  height: 28px;
1568  width: auto;
1569  display: block;
1570}
1571.nav-links {
1572  display: flex;
1573  gap: 32px;
1574  font-size: 13px;
1575  letter-spacing: 0.005em;
1576}
1577.nav-links { align-items: center; }
1578.nav-item { position: relative; display: flex; align-items: center; }
1579/* Sem mix-blend-mode nos labels: o .nav (position:fixed) cria stacking context
1580   e isola o blend dos filhos — o texto branco ficava invisível sobre as seções
1581   claras. Texto escuro sólido funciona na página inteira (a única seção escura
1582   é o footer, que nunca alcança a faixa do menu no topo da viewport). */
1583.nav-label {
1584  display: inline-flex; align-items: center; gap: 5px;
1585  color: var(--ospa-preto); opacity: 0.72;
1586  cursor: pointer; background: none; border: 0; padding: 0;
1587  font-family: inherit; font-size: 13px; letter-spacing: 0.005em;
1588  transition: opacity var(--dur-base), color var(--dur-base);
1589}
1590.nav-label:hover, .nav-item:hover .nav-label, .nav-item:focus-within .nav-label { opacity: 1; }
1591.nav-caret { font-size: 9px; opacity: 0.85; transition: transform var(--dur-base); }
1592.nav-item:hover .nav-caret, .nav-item:focus-within .nav-caret { transform: rotate(180deg); }
1593/* Painel do dropdown — tema escuro próprio */
1594.nav-dd {
1595  position: absolute; top: 100%; left: 50%;
1596  padding-top: 14px; transform: translateX(-50%) translateY(6px);
1597  opacity: 0; visibility: hidden; pointer-events: none;
1598  transition: opacity 0.11s var(--ease-standard), transform 0.11s var(--ease-standard);
1599}
1600.nav-item:hover .nav-dd, .nav-item:focus-within .nav-dd {
1601  opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0);
1602}
1603.nav-dd-inner {
1604  min-width: 282px; padding: 8px;
1605  background: rgba(15,15,15,0.92); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
1606  border: 1px solid rgba(255,255,255,0.1); border-radius: 14px;
1607  box-shadow: 0 24px 60px -18px rgba(0,0,0,0.7);
1608  display: flex; flex-direction: column; gap: 2px;
1609}
1610.nav-dd-link { display: flex; flex-direction: column; gap: 3px; padding: 11px 13px; border-radius: 10px; opacity: 1; transition: background var(--dur-base); }
1611.nav-dd-link:hover { background: rgba(255,255,255,0.07); }
1612.nav-dd-t { font-size: 13.5px; font-weight: 500; color: #fff; letter-spacing: -0.005em; }
1613.nav-dd-d { font-size: 12px; line-height: 1.35; color: rgba(255,255,255,0.52); }
1614
1615/* Grupo direito do nav: CTA + toggle PT/EN, alinhados verticalmente. É o
1616   terceiro grupo do space-between (spacer · menu · direita). */
1617.nav-right {
1618  display: flex;
1619  align-items: center;
1620  gap: 28px;
1621  justify-self: end;
1622}
1623.nav-cta {
1624  font-size: 13px;
1625  padding: 10px 18px;
1626  border: 1px solid rgba(0,0,0,0.30);
1627  border-radius: 999px;
1628  color: var(--ospa-preto);
1629  background: rgba(255,255,255,0.55);
1630  -webkit-backdrop-filter: blur(4px);
1631  backdrop-filter: blur(4px);
1632  transition: all var(--dur-base);
1633}
1634.nav-cta:hover { background: var(--ospa-preto); color: #fff; border-color: var(--ospa-preto); }
1635
1636/* Inversão sobre seções escuras — [data-nav-dark] cruzando a faixa do topo */
1637.nav--dark .nav-label { color: #fff; }
1638.nav--dark .nav-cta { color: #fff; border-color: rgba(255,255,255,0.4); background: rgba(0,0,0,0.35); }
1639.nav--dark .nav-cta:hover { background: #fff; color: #000; border-color: #fff; }
1640
1641/* Logo fixa (renderizada pelo App.jsx) */
1642.nav-logo-fixed {
1643  position: fixed;
1644  top: 24px;
1645  left: 48px;
1646  z-index: 10000;
1647  display: block;
1648  pointer-events: auto;
1649  mix-blend-mode: difference;
1650}
1651.nav-logo-fixed-img {
1652  height: 44px;
1653  width: auto;
1654  display: block;
1655  filter: invert(1);
1656}
1657
1658@media (max-width: 768px) {
1659  /* Sem o .nav-links (display:none), o grid 1fr auto 1fr jogava o .nav-right
1660     (hambúrguer) para a coluna `auto` do meio → botão centralizado. Com 2
1661     colunas (spacer · direita) o hambúrguer volta para a direita. */
1662  .nav { padding: 12px 20px; grid-template-columns: 1fr auto; }
1663  .nav-links { display: none; }
1664  /* CTA do nav e toggle de idioma da barra saem do topo — vão para o menu mobile */
1665  .nav-cta { display: none; }
1666  .nav-right .lang-toggle { display: none; }
1667  /* Logo menor e mais discreta */
1668  .nav-logo-fixed { top: 16px; left: 20px; }
1669  .nav-logo-fixed-img { height: 32px; }
1670  /* Cursor customizado não faz sentido em touch */
1671  .cursor-dot { display: none; }
1672}
1673
1674/* ─── Hambúrguer + menu mobile (drawer) ─── */
1675.nav-burger {
1676  display: none;
1677  width: 44px; height: 44px;
1678  flex-direction: column; align-items: center; justify-content: center; gap: 5px;
1679  background: none; border: 0; padding: 0; cursor: pointer;
1680}
1681.nav-burger span {
1682  display: block; width: 22px; height: 2px; border-radius: 2px;
1683  background: var(--ospa-preto);
1684}
1685.nav--dark .nav-burger span { background: #fff; }
1686
1687.nav-mobile {
1688  position: fixed; inset: 0; z-index: 10001; /* acima da logo fixa (10000) — o painel cobre tudo */
1689  opacity: 0; visibility: hidden;
1690  transition: opacity 0.22s var(--ease-standard), visibility 0s linear 0.22s;
1691}
1692.nav-mobile.is-open {
1693  opacity: 1; visibility: visible;
1694  transition: opacity 0.22s var(--ease-standard);
1695}
1696/* Painel em tela cheia (100% da largura) */
1697.nav-mobile-panel {
1698  position: absolute; inset: 0; width: 100%; height: 100%;
1699  background: rgba(15,15,15,0.985);
1700  -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
1701  padding: 18px 24px max(28px, env(safe-area-inset-bottom));
1702  display: flex; flex-direction: column;
1703  overflow-y: auto; -webkit-overflow-scrolling: touch;
1704  transform: translateY(-8px);
1705  transition: transform 0.24s var(--ease-standard);
1706  outline: none;
1707}
1708.nav-mobile.is-open .nav-mobile-panel { transform: translateY(0); }
1709/* Cabeçalho: logo à esquerda, fechar à direita */
1710.nav-mobile-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32px; }
1711.nav-mobile-logo { height: 38px; width: auto; display: block; filter: invert(1); }
1712.nav-mobile-close {
1713  width: 44px; height: 44px; border-radius: 999px; flex: 0 0 auto;
1714  display: inline-flex; align-items: center; justify-content: center;
1715  background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.14);
1716  color: #fff; font-size: 18px; cursor: pointer;
1717}
1718.nav-mobile-nav { display: flex; flex-direction: column; gap: 4px; }
1719/* Itens de topo: Plataforma · FAQ · Contato */
1720.nav-mobile-top {
1721  display: block; width: 100%; text-align: left;
1722  padding: 12px 4px; border: 0; background: none; cursor: pointer;
1723  font-family: inherit; font-size: 24px; font-weight: 600; letter-spacing: -0.02em;
1724  color: #fff; transition: opacity var(--dur-base, 100ms);
1725}
1726.nav-mobile-top:active, .nav-mobile-top:focus-visible { opacity: 0.6; }
1727/* Sub-itens da Plataforma — indentados, com guia vertical à esquerda */
1728.nav-mobile-children {
1729  display: flex; flex-direction: column; gap: 2px;
1730  margin: 2px 0 12px; padding-left: 16px;
1731  border-left: 1px solid rgba(255,255,255,0.16);
1732}
1733.nav-mobile-sub { display: flex; flex-direction: column; gap: 2px; padding: 10px 8px; border-radius: 10px; transition: background var(--dur-base, 100ms); }
1734.nav-mobile-sub:active, .nav-mobile-sub:focus-visible { background: rgba(255,255,255,0.08); }
1735.nav-mobile-sub-t { font-size: 16px; font-weight: 500; color: #fff; letter-spacing: -0.005em; }
1736.nav-mobile-sub-d { font-size: 12.5px; line-height: 1.35; color: rgba(255,255,255,0.5); }
1737.nav-mobile-foot { margin-top: auto; display: flex; flex-direction: column; gap: 20px; padding-top: 28px; }
1738.nav-mobile-cta {
1739  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
1740  padding: 16px 22px; border-radius: 999px;
1741  background: #fff; color: var(--ospa-preto); font-size: 15px; font-weight: 500;
1742}
1743.nav-mobile .lang-toggle { color: #fff; font-size: 14px; }
1744.nav-mobile .lang-toggle button { padding: 8px 6px; }
1745
1746@media (prefers-reduced-motion: reduce) {
1747  .nav-mobile, .nav-mobile-panel { transition: none; }
1748}
1749/* Hambúrguer aparece só no mobile — declarado APÓS a base p/ vencer a cascata */
1750@media (max-width: 768px) {
1751  .nav-burger { display: flex; }
1752}
1753
1754/* Touch devices: esconder cursor customizado mesmo em telas grandes (tablets) */
1755@media (hover: none) {
1756  .cursor-dot { display: none; }
1757}
1758
1759/* ─── Reveal animations ─── */
1760.reveal {
1761  opacity: 0;
1762  transform: translateY(24px);
1763  transition: opacity 400ms var(--ease-standard), transform 400ms var(--ease-standard);
1764}
1765.reveal.is-visible {
1766  opacity: 1;
1767  transform: translateY(0);
1768}
1769
1770.reveal-stagger > * {
1771  opacity: 0;
1772  transform: translateY(16px);
1773  transition: opacity 350ms var(--ease-standard), transform 350ms var(--ease-standard);
1774}
1775.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0ms; opacity: 1; transform: translateY(0); }
1776.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 40ms; opacity: 1; transform: translateY(0); }
1777.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 80ms; opacity: 1; transform: translateY(0); }
1778.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 120ms; opacity: 1; transform: translateY(0); }
1779.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 160ms; opacity: 1; transform: translateY(0); }
1780.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 200ms; opacity: 1; transform: translateY(0); }
1781.reveal-stagger.is-visible > *:nth-child(7) { transition-delay: 240ms; opacity: 1; transform: translateY(0); }
1782
1783/* ─── HERO COMMON ─── */
1784.hero {
1785  position: relative;
1786  min-height: 100vh;
1787  padding: 120px 0 80px;
1788  display: flex;
1789  align-items: center;
1790  overflow: hidden;
1791}
1792.hero-circles {
1793  position: absolute;
1794  inset: 0;
1795  z-index: 0;
1796  pointer-events: none;
1797}
1798.hero-circles svg {
1799  width: 100%; height: 100%;
1800  display: block;
1801}
1802.hero-content {
1803  position: relative;
1804  z-index: 2;
1805  width: 100%;
1806}
1807
1808.hero-meta {
1809  display: flex;
1810  gap: 32px;
1811  font-family: var(--font-mono);
1812  font-size: 11px;
1813  letter-spacing: 0.12em;
1814  text-transform: uppercase;
1815  color: var(--cinza-02);
1816  margin-bottom: 64px;
1817}
1818.hero-meta-item {
1819  display: flex;
1820  align-items: center;
1821  gap: 8px;
1822}
1823.hero-meta-dot {
1824  width: 6px; height: 6px;
1825  background: var(--ospa-preto);
1826  border-radius: 50%;
1827  animation: pulse 1.2s ease-in-out infinite;
1828}
1829@keyframes pulse {
1830  0%, 100% { opacity: 0.4; transform: scale(1); }
1831  50% { opacity: 1; transform: scale(1.2); }
1832}
1833
1834.hero-cta-row {
1835  display: flex;
1836  gap: 16px;
1837  flex-wrap: wrap;
1838  margin-top: 48px;
1839}
1840
1841/* Hero variant: centered */
1842.hero--centered .hero-inner {
1843  text-align: center;
1844  display: flex;
1845  flex-direction: column;
1846  align-items: center;
1847}
1848.hero--centered .lede {
1849  margin-left: auto;
1850  margin-right: auto;
1851}
1852.hero--centered .hero-meta {
1853  justify-content: center;
1854}
1855.hero--centered .hero-cta-row {
1856  justify-content: center;
1857}
1858
1859/* Hero variant: split */
1860.hero--split .hero-inner {
1861  display: grid;
1862  grid-template-columns: 1.1fr 1fr;
1863  gap: 80px;
1864  align-items: center;
1865}
1866.hero--split .hero-visual {
1867  position: relative;
1868  aspect-ratio: 1;
1869  width: 100%;
1870}
1871
1872/* Hero variant: full-bleed */
1873.hero--bleed .hero-inner {
1874  position: relative;
1875}
1876.hero--bleed .hero-circles svg {
1877  opacity: 0.85;
1878}
1879
1880@media (max-width: 968px) {
1881  .hero--split .hero-inner {
1882    grid-template-columns: 1fr;
1883    gap: 48px;
1884  }
1885}
1886
1887/* ─── Marquee ─── */
1888.marquee {
1889  border-top: 1px solid var(--ospa-pedra-clara);
1890  border-bottom: 1px solid var(--ospa-pedra-clara);
1891  padding: 28px 0;
1892  overflow: hidden;
1893  white-space: nowrap;
1894}
1895.marquee-track {
1896  display: inline-flex;
1897  gap: 56px;
1898  animation: marquee 25s linear infinite;
1899  padding-right: 56px;
1900}
1901.marquee-item {
1902  display: inline-flex;
1903  align-items: center;
1904  gap: 18px;
1905  font-family: var(--font-mono);
1906  font-size: 12px;
1907  letter-spacing: 0.1em;
1908  text-transform: uppercase;
1909  color: var(--cinza-02);
1910}
1911.marquee-item-dot {
1912  width: 4px; height: 4px;
1913  background: var(--ospa-preto);
1914  border-radius: 50%;
1915}
1916@keyframes marquee {
1917  to { transform: translateX(-50%); }
1918}
1919
1920/* ─── Process ─── */
1921.process {
1922  background: var(--ospa-preto);
1923  color: var(--ospa-branco);
1924  padding: 160px 0;
1925  position: relative;
1926  overflow: hidden;
1927}
1928.process .eyebrow { color: rgba(255,255,255,0.5); }
1929.process .eyebrow::before { background: rgba(255,255,255,0.3); }
1930
1931.process-header {
1932  display: grid;
1933  grid-template-columns: 1fr 1fr;
1934  gap: 80px;
1935  margin-bottom: 100px;
1936  align-items: end;
1937}
1938.process-header .lede { color: rgba(255,255,255,0.6); }
1939
1940.process-diagram {
1941  position: relative;
1942  display: grid;
1943  grid-template-columns: repeat(5, 1fr);
1944  gap: 24px;
1945  margin-bottom: 80px;
1946}
1947.process-step {
1948  position: relative;
1949  padding: 32px 0 0;
1950  border-top: 1px solid rgba(255,255,255,0.15);
1951  transition: border-color var(--dur-slow);
1952  cursor: none;
1953}
1954.process-step:hover {
1955  border-top-color: rgba(255,255,255,0.6);
1956}
1957.process-step-num {
1958  font-family: var(--font-mono);
1959  font-size: 11px;
1960  letter-spacing: 0.14em;
1961  color: rgba(255,255,255,0.4);
1962  margin-bottom: 32px;
1963}
1964.process-step-title {
1965  font-size: 24px;
1966  font-weight: 500;
1967  letter-spacing: -0.02em;
1968  line-height: 1.1;
1969  margin-bottom: 12px;
1970}
1971.process-step-desc {
1972  font-size: 13px;
1973  line-height: 1.5;
1974  color: rgba(255,255,255,0.55);
1975  margin-bottom: 24px;
1976  min-height: 80px;
1977}
1978.process-step-vertical {
1979  font-family: var(--font-mono);
1980  font-size: 10px;
1981  letter-spacing: 0.14em;
1982  text-transform: uppercase;
1983  display: inline-flex;
1984  align-items: center;
1985  gap: 8px;
1986  padding: 6px 10px;
1987  border-radius: 4px;
1988  background: rgba(255,255,255,0.06);
1989  color: rgba(255,255,255,0.8);
1990}
1991.process-step-vertical-dot {
1992  width: 6px; height: 6px;
1993  border-radius: 50%;
1994}
1995
1996.process-step.is-active {
1997  border-top-color: rgba(255,255,255,0.8);
1998}
1999.process-step.is-active .process-step-num {
2000  color: rgba(255,255,255,0.9);
2001}
2002
2003@media (max-width: 968px) {
2004  .process-header { grid-template-columns: 1fr; gap: 32px; }
2005  .process-diagram { grid-template-columns: 1fr; gap: 0; }
2006  .process-step { padding: 24px 0; border-bottom: 1px solid rgba(255,255,255,0.08); }
2007  .process-step:last-child { border-bottom: none; }
2008  .process-step-desc { min-height: 0; }
2009}
2010
2011/* Vertical labels — carrossel horizontal estendendo para a direita do .wrap */
2012.verticals-grid {
2013  border-top: 1px solid rgba(255,255,255,0.15);
2014  padding-top: 32px;
2015}
2016.verticals-label {
2017  font-family: var(--font-mono);
2018  font-size: 11px;
2019  letter-spacing: 0.14em;
2020  text-transform: uppercase;
2021  color: rgba(255,255,255,0.5);
2022  margin-bottom: 24px;
2023}
2024.verticals-list {
2025  display: flex;
2026  gap: 16px;
2027  overflow-x: auto;
2028  /* Quebra os dois lados do .wrap — vira full-bleed do viewport.
2029     Mesma técnica que o mobile já usava, agora também no desktop.
2030     Padding-left/right dá a margem visual mas os cards podem
2031     rolar PARA DENTRO dela (igual ao portfólio). */
2032  width: 100vw;
2033  position: relative;
2034  left: 50%;
2035  transform: translateX(-50%);
2036  padding-left: max(48px, calc((100vw - 1440px) / 2 + 48px));
2037  padding-right: max(48px, calc((100vw - 1440px) / 2 + 48px));
2038  padding-top: 4px;
2039  padding-bottom: 16px;
2040  scrollbar-width: none;
2041  -webkit-overflow-scrolling: touch;
2042}
2043.verticals-list::-webkit-scrollbar { display: none; }
2044.vertical-card {
2045  flex: 0 0 260px;
2046  background: rgba(255,255,255,0.03);
2047  border: 1px solid rgba(255,255,255,0.1);
2048  border-radius: 4px;
2049  transition: all var(--dur-slow);
2050  display: flex;
2051  flex-direction: column;
2052}
2053.vertical-card:hover {
2054  background: rgba(255,255,255,0.06);
2055  border-color: rgba(255,255,255,0.2);
2056  transform: translateY(-2px);
2057}
2058.vertical-card-num {
2059  font-family: var(--font-mono);
2060  font-size: 10px;
2061  letter-spacing: 0.18em;
2062  color: rgba(255,255,255,0.35);
2063}
2064.vertical-card-picto {
2065  display: block;
2066  width: 100%;
2067}
2068.vertical-card-picto image-slot {
2069  background: transparent !important;
2070}
2071.vertical-card-name {
2072  font-size: 17px;
2073  font-weight: 500;
2074  color: #F8F8F8;
2075  letter-spacing: -0.01em;
2076}
2077.vertical-card-desc {
2078  font-size: 13px;
2079  line-height: 1.55;
2080  color: rgba(255,255,255,0.55);
2081}
2082.vertical-card-tag {
2083  font-family: var(--font-mono);
2084  font-size: 10px;
2085  letter-spacing: 0.16em;
2086  text-transform: uppercase;
2087  color: rgba(255,255,255,0.45);
2088  margin-top: auto;
2089}
2090
2091/* Pictogram base */
2092.picto { display: block; }
2093.picto.is-animated g { transition: transform 0.6s var(--ease-standard); }
2094
2095/* Hero pictogram diagram */
2096.hero-pictos {
2097  display: grid;
2098  grid-template-columns: repeat(4, 1fr);
2099  gap: 0;
2100  margin-top: 80px;
2101  border-top: 1px solid var(--ospa-pedra-clara);
2102  border-bottom: 1px solid var(--ospa-pedra-clara);
2103}
2104.hero-picto-cell {
2105  position: relative;
2106  padding: 36px 24px 28px;
2107  border-right: 1px solid var(--ospa-pedra-clara);
2108  display: flex;
2109  flex-direction: column;
2110  align-items: center;
2111  text-align: center;
2112  cursor: pointer;
2113  transition: background var(--dur-slow);
2114}
2115.hero-picto-cell:last-child { border-right: none; }
2116.hero-picto-cell:hover { background: rgba(0,0,0,0.025); }
2117.hero-picto-cell:hover .picto g[stroke] { stroke: #000; }
2118.hero-picto-cell .picto { color: #191919; transition: transform var(--dur-slow) var(--ease-standard); }
2119.hero-picto-cell:hover .picto { transform: scale(1.04); }
2120.hero-picto-num {
2121  font-family: var(--font-mono);
2122  font-size: 10px;
2123  letter-spacing: 0.18em;
2124  color: rgba(25,25,25,0.4);
2125  margin-bottom: 16px;
2126}
2127.hero-picto-name {
2128  font-size: 14px;
2129  font-weight: 500;
2130  margin-top: 18px;
2131  letter-spacing: -0.005em;
2132}
2133.hero-picto-sub {
2134  font-family: var(--font-mono);
2135  font-size: 10px;
2136  letter-spacing: 0.14em;
2137  text-transform: uppercase;
2138  color: rgba(25,25,25,0.5);
2139  margin-top: 4px;
2140}
2141
2142/* Process verticals chip — replace dot with mini-pictogram */
2143.process-step-vertical-picto {
2144  width: 14px; height: 14px;
2145  color: rgba(255,255,255,0.75);
2146  display: inline-flex;
2147}
2148.process-step-vertical {
2149  padding: 4px 8px 4px 6px;
2150  background: rgba(255,255,255,0.04);
2151  border: 1px solid rgba(255,255,255,0.08);
2152  border-radius: 3px;
2153}
2154
2155@media (max-width: 968px) {
2156  .hero-pictos { grid-template-columns: 1fr 1fr; }
2157  .hero-picto-cell:nth-child(2) { border-right: none; }
2158  .hero-picto-cell:nth-child(1), .hero-picto-cell:nth-child(2) {
2159    border-bottom: 1px solid var(--ospa-pedra-clara);
2160  }
2161}
2162  border-radius: 8px;
2163  border: 1px solid rgba(255,255,255,0.06);
2164  transition: all var(--dur-slow);
2165}
2166.vertical-card:hover {
2167  background: rgba(255,255,255,0.08);
2168  border-color: rgba(255,255,255,0.15);
2169  transform: translateY(-2px);
2170}
2171.vertical-card-name {
2172  font-size: 15px;
2173  font-weight: 500;
2174  margin-bottom: 6px;
2175  display: flex;
2176  align-items: center;
2177  gap: 10px;
2178}
2179.vertical-card-dot {
2180  width: 8px; height: 8px;
2181  border-radius: 50%;
2182}
2183.vertical-card-desc {
2184  font-size: 12px;
2185  color: rgba(255,255,255,0.5);
2186  line-height: 1.5;
2187}
2188
2189@media (max-width: 968px) {
2190  /* Mantém a técnica full-bleed do desktop, mas com padding menor e cards maiores */
2191  .verticals-list {
2192    gap: 12px;
2193    padding-left: 24px;
2194    padding-right: 24px;
2195    padding-bottom: 20px;
2196  }
2197  .verticals-list .vertical-card {
2198    flex: 0 0 78vw;
2199  }
2200}
2201
2202/* ─── Benefits ─── */
2203.benefits {
2204  padding: 160px 0;
2205  background: var(--ospa-lua-nova);
2206}
2207.benefits-tabs {
2208  display: inline-flex;
2209  gap: 4px;
2210  padding: 4px;
2211  background: var(--ospa-marfim);
2212  border-radius: 999px;
2213  margin-bottom: 64px;
2214}
2215.benefits-tab {
2216  padding: 10px 20px;
2217  border-radius: 999px;
2218  font-size: 13px;
2219  font-weight: 500;
2220  background: transparent;
2221  border: none;
2222  color: var(--cinza-02);
2223  transition: all var(--dur-base);
2224}
2225.benefits-tab.is-active {
2226  background: var(--ospa-preto);
2227  color: var(--ospa-branco);
2228}
2229.benefits-grid {
2230  display: grid;
2231  grid-template-columns: repeat(3, 1fr);
2232  gap: 1px;
2233  background: var(--ospa-pedra-clara);
2234  border: 1px solid var(--ospa-pedra-clara);
2235}
2236.benefit-card {
2237  background: var(--ospa-branco);
2238  padding: 48px 36px;
2239  position: relative;
2240  transition: background var(--dur-slow);
2241  min-height: 320px;
2242  display: flex;
2243  flex-direction: column;
2244}
2245.benefit-card:hover { background: var(--ospa-lua-nova); }
2246.benefit-num {
2247  font-family: var(--font-mono);
2248  font-size: 11px;
2249  letter-spacing: 0.14em;
2250  color: var(--cinza-02);
2251  margin-bottom: 32px;
2252}
2253.benefit-icon {
2254  margin-bottom: 24px;
2255}
2256.benefit-title {
2257  font-size: 22px;
2258  font-weight: 500;
2259  letter-spacing: -0.015em;
2260  line-height: 1.2;
2261  margin-bottom: 12px;
2262}
2263.benefit-desc {
2264  font-size: 14px;
2265  color: var(--cinza-02);
2266  line-height: 1.55;
2267  margin-top: auto;
2268}
2269
2270@media (max-width: 968px) {
2271  .benefits-grid { grid-template-columns: 1fr; }
2272}
2273
2274/* ─── Benefits — mobile stack ─── */
2275.benefits-stack {
2276  position: relative;
2277  width: 100%;
2278  max-width: 360px;
2279  margin: 0 auto;
2280  height: 360px;
2281  perspective: 1000px;
2282}
2283.benefits-stack .benefit-card {
2284  position: absolute;
2285  inset: 0;
2286  background: var(--ospa-branco);
2287  border: 1px solid var(--ospa-pedra-clara);
2288  border-radius: 14px;
2289  padding: 32px 28px;
2290  min-height: 0;
2291  box-shadow: 0 10px 30px rgba(0,0,0,0.06), 0 2px 6px rgba(0,0,0,0.04);
2292  display: flex;
2293  flex-direction: column;
2294  transform-origin: center top;
2295  user-select: none;
2296  -webkit-user-select: none;
2297  touch-action: pan-y; /* permite scroll vertical da página, captura horizontal */
2298}
2299.benefits-stack .benefit-card.is-top {
2300  cursor: grab;
2301}
2302.benefits-stack .benefit-card.is-top:active {
2303  cursor: grabbing;
2304}
2305.benefits-stack .benefit-card .benefit-num {
2306  margin-bottom: 24px;
2307}
2308.benefits-stack .benefit-card .benefit-title {
2309  font-size: 20px;
2310  margin-bottom: 14px;
2311}
2312.benefits-stack .benefit-card .benefit-desc {
2313  margin-top: 0;
2314}
2315
2316.benefits-dots {
2317  display: flex;
2318  justify-content: center;
2319  gap: 6px;
2320  margin-top: 24px;
2321}
2322.benefits-dot {
2323  width: 6px;
2324  height: 6px;
2325  border-radius: 999px;
2326  background: rgba(0,0,0,0.18);
2327  border: none;
2328  padding: 0;
2329  transition: all 120ms var(--ease-standard);
2330  cursor: pointer;
2331}
2332.benefits-dot.is-active {
2333  width: 20px;
2334  background: var(--ospa-preto);
2335}
2336
2337.benefits-swipe-hint {
2338  text-align: center;
2339  margin-top: 16px;
2340  font-family: var(--font-mono);
2341  font-size: 10px;
2342  letter-spacing: 0.14em;
2343  text-transform: uppercase;
2344  color: rgba(0,0,0,0.32);
2345}
2346
2347/* ─── Differentials ─── */
2348.diffs {
2349  padding: 160px 0;
2350  position: relative; /* garante stacking context correto com portfolio z-index:2 */
2351  z-index: 1;
2352}
2353.diffs-table {
2354  border-top: 1px solid var(--ospa-pedra-clara);
2355  margin-top: 64px;
2356}
2357.diffs-row {
2358  display: grid;
2359  grid-template-columns: 80px 1fr 1.4fr 1fr;
2360  padding: 28px 0;
2361  border-bottom: 1px solid var(--ospa-pedra-clara);
2362  align-items: start;
2363  transition: background var(--dur-base);
2364}
2365.diffs-row:hover { background: var(--ospa-lua-nova); }
2366.diffs-row--head {
2367  font-family: var(--font-mono);
2368  font-size: 11px;
2369  letter-spacing: 0.14em;
2370  text-transform: uppercase;
2371  color: var(--cinza-02);
2372  padding: 16px 0;
2373}
2374.diffs-row--head:hover { background: transparent; }
2375.diff-num {
2376  font-family: var(--font-mono);
2377  font-size: 11px;
2378  letter-spacing: 0.14em;
2379  color: var(--cinza-02);
2380  padding-top: 4px;
2381}
2382.diff-title {
2383  font-size: 18px;
2384  font-weight: 500;
2385  letter-spacing: -0.015em;
2386}
2387.diff-ospa {
2388  font-size: 14px;
2389  line-height: 1.55;
2390  color: var(--ospa-preto);
2391  display: flex;
2392  align-items: start;
2393  gap: 12px;
2394}
2395.diff-ospa::before {
2396  content: "";
2397  flex: 0 0 auto;
2398  width: 16px; height: 16px;
2399  border-radius: 50%;
2400  background: var(--ospa-preto);
2401  margin-top: 2px;
2402  position: relative;
2403}
2404.diff-other {
2405  font-size: 14px;
2406  line-height: 1.55;
2407  color: var(--cinza-02);
2408  display: flex;
2409  align-items: start;
2410  gap: 12px;
2411}
2412.diff-other::before {
2413  content: "";
2414  flex: 0 0 auto;
2415  width: 16px; height: 16px;
2416  border-radius: 50%;
2417  border: 1px solid var(--ospa-pedra-clara);
2418  margin-top: 2px;
2419}
2420
2421@media (max-width: 968px) {
2422  .diffs-row { grid-template-columns: 1fr; gap: 8px; padding: 24px 0; }
2423  .diffs-row--head { display: none; }
2424}
2425
2426/* ─── Portfolio — Mapa claro ─── */
2427.portfolio-map-section {
2428  position: relative;
2429  /* Sobe 120px para cobrir a borda entre seção 4 e 5 */
2430  margin-top: -120px;
2431  z-index: 2;
2432  background: #F8F8F8; /* = --ospa-branco, mesma cor do body */
2433  color: var(--ospa-preto);
2434  overflow: hidden;
2435  height: 100vh;
2436  min-height: 720px;
2437}
2438.portfolio-map-section .eyebrow::before { background: rgba(0,0,0,0.25); }
2439
2440/* Top gradient — começa branco (cor da seção anterior) e dissolve no mapa.
2441   Os 120px de overlap ficam cobertos pelo degrade opaco. */
2442.portfolio-top-overlay {
2443  position: absolute;
2444  top: 0; left: 0; right: 0;
2445  z-index: 10;
2446  background: linear-gradient(to bottom,
2447    #F8F8F8          0px,    /* = --ospa-branco, cor exata da seção anterior */
2448    #F8F8F8          40px,   /* segura no overlap */
2449    rgba(248,248,248,0.97) 80px,
2450    rgba(244,244,242,0.92) 120px,  /* fim do overlap */
2451    rgba(240,240,238,0.72) 200px,
2452    rgba(240,240,238,0)    360px); /* dissolve no mapa */
2453  padding: 160px 0 160px;
2454  pointer-events: none;
2455}
2456
2457.portfolio-overlay-header {
2458  display: flex;
2459  justify-content: space-between;
2460  align-items: flex-end;
2461  gap: 48px;
2462}
2463
2464.portfolio-stats-row {
2465  display: flex;
2466  gap: 48px;
2467  flex-shrink: 0;
2468  padding-bottom: 6px;
2469}
2470
2471.portfolio-stat-value {
2472  font-size: clamp(28px, 3vw, 48px);
2473  font-weight: 500;
2474  letter-spacing: -0.025em;
2475  line-height: 1;
2476  margin-bottom: 6px;
2477  font-variant-numeric: tabular-nums;
2478  color: var(--ospa-preto);
2479}
2480.portfolio-stat-label {
2481  font-family: var(--font-mono);
2482  font-size: 10px;
2483  letter-spacing: 0.12em;
2484  text-transform: uppercase;
2485  color: rgba(0,0,0,0.45);
2486}
2487
2488/* Bottom gradient + card rail centralizado */
2489.portfolio-bottom-overlay {
2490  position: absolute;
2491  bottom: 0; left: 0; right: 0;
2492  z-index: 10;
2493  background: linear-gradient(to top,
2494    rgba(248,248,248,0.98) 0%,
2495    rgba(248,248,248,0.80) 40%,
2496    rgba(248,248,248,0)    70%);
2497  padding-top: 120px;
2498  pointer-events: none;
2499}
2500
2501.portfolio-cards-rail {
2502  pointer-events: auto;
2503  display: flex;
2504  gap: 12px;
2505  overflow-x: auto;
2506  /* padding-top: 16px para os cards não serem cortados no hover.
2507     padding-left/right alinha com a borda do .wrap (max-width 1440px com padding 48px). */
2508  padding-top: 16px;
2509  padding-bottom: 52px;
2510  padding-left: max(48px, calc((100vw - 1440px) / 2 + 48px));
2511  padding-right: max(48px, calc((100vw - 1440px) / 2 + 48px));
2512  scrollbar-width: none;
2513  -webkit-overflow-scrolling: touch;
2514  /* não centraliza — sempre começa pela esquerda com margem visível */
2515  justify-content: flex-start;
2516}
2517.portfolio-cards-rail::-webkit-scrollbar { display: none; }
2518
2519.portfolio-card {
2520  flex: 0 0 220px;
2521  background: rgba(255,255,255,0.82);
2522  border: 1px solid rgba(0,0,0,0.08);
2523  backdrop-filter: blur(16px);
2524  -webkit-backdrop-filter: blur(16px);
2525  border-radius: 10px;
2526  overflow: hidden;
2527  cursor: none;
2528  transition: border-color 0.125s ease, background 0.125s ease, transform 0.125s ease,
2529              box-shadow 0.125s ease;
2530  scroll-snap-align: start;
2531  pointer-events: auto;
2532}
2533.portfolio-card:hover {
2534  background: rgba(255,255,255,0.98);
2535  border-color: rgba(0,0,0,0.16);
2536  transform: translateY(-3px);
2537  box-shadow: 0 8px 24px rgba(0,0,0,0.08);
2538}
2539.portfolio-card.is-active {
2540  background: #ffffff;
2541  border-color: rgba(0,0,0,0.55);
2542  transform: translateY(-4px);
2543  box-shadow: 0 12px 32px rgba(0,0,0,0.12);
2544}
2545
2546.portfolio-card-img {
2547  width: 100%;
2548  height: 130px;
2549  background: rgba(0,0,0,0.05);
2550  overflow: hidden;
2551}
2552.portfolio-card-img.is-confidential {
2553  background: linear-gradient(135deg, #2A2A2A 0%, #161616 100%);
2554  position: relative;
2555}
2556.portfolio-card-img-placeholder {
2557  position: absolute;
2558  inset: 0;
2559  display: flex;
2560  align-items: center;
2561  justify-content: center;
2562}
2563.portfolio-card-img-placeholder::before {
2564  content: '';
2565  position: absolute;
2566  inset: 12px;
2567  border: 1px dashed rgba(255,255,255,0.18);
2568  border-radius: 4px;
2569}
2570.portfolio-card-img-placeholder span {
2571  font-family: var(--font-mono);
2572  font-size: 10px;
2573  letter-spacing: 0.18em;
2574  text-transform: uppercase;
2575  color: rgba(255,255,255,0.7);
2576  position: relative;
2577}
2578.portfolio-card-body { padding: 14px 16px 16px; }
2579.portfolio-card-stage {
2580  font-family: var(--font-mono);
2581  font-size: 10px;
2582  letter-spacing: 0.12em;
2583  text-transform: uppercase;
2584  color: rgba(0,0,0,0.45);
2585  margin-bottom: 6px;
2586  display: flex;
2587  align-items: center;
2588  gap: 6px;
2589}
2590.portfolio-card-stage-dot {
2591  width: 5px; height: 5px;
2592  border-radius: 50%;
2593  flex-shrink: 0;
2594}
2595.portfolio-card-name {
2596  font-size: 14px;
2597  font-weight: 500;
2598  letter-spacing: -0.01em;
2599  margin-bottom: 3px;
2600  line-height: 1.2;
2601  color: var(--ospa-preto);
2602}
2603.portfolio-card-city {
2604  font-size: 11px;
2605  color: rgba(0,0,0,0.4);
2606  margin-bottom: 10px;
2607}
2608.portfolio-card-vgv {
2609  font-family: var(--font-mono);
2610  font-size: 13px;
2611  font-variant-numeric: tabular-nums;
2612  font-weight: 600;
2613  color: var(--ospa-preto);
2614}
2615
2616/* ─── Portfolio map canvas — cursor ─── */
2617/* Pins são layers GL (canvas), não DOM — sem HTML markers */
2618.maplibregl-canvas-container,
2619.maplibregl-canvas { cursor: none !important; }
2620
2621/* MapLibre attribution */
2622.maplibregl-ctrl-attrib { opacity: 0.2 !important; font-size: 9px !important; }
2623.maplibregl-ctrl-logo   { display: none !important; }
2624
2625@media (max-width: 968px) {
2626  .portfolio-map-section { height: 100svh; min-height: 600px; }
2627  .portfolio-top-overlay { padding: 80px 0 100px; }
2628  .portfolio-overlay-header { flex-direction: column; gap: 20px; align-items: flex-start; }
2629  .portfolio-stats-row { gap: 28px; }
2630  .portfolio-cards-rail { padding: 16px 24px 36px 24px; }
2631}
2632
2633/* ─── Final CTA ─── */
2634.cta-final {
2635  padding: 160px 0;
2636  background: var(--ospa-branco);
2637  position: relative;
2638  overflow: hidden;
2639}
2640.cta-final-inner {
2641  display: grid;
2642  grid-template-columns: 1fr 1fr;
2643  gap: 80px;
2644  align-items: start;
2645}
2646.cta-final-text {
2647  position: relative;
2648}
2649.cta-final-form {
2650  background: var(--ospa-preto);
2651  color: var(--ospa-branco);
2652  padding: 48px;
2653  border-radius: 8px;
2654  position: relative;
2655}
2656.cta-final-form-eyebrow {
2657  font-family: var(--font-mono);
2658  font-size: 11px;
2659  letter-spacing: 0.14em;
2660  text-transform: uppercase;
2661  color: rgba(255,255,255,0.5);
2662  margin-bottom: 8px;
2663  display: flex;
2664  justify-content: space-between;
2665  align-items: center;
2666}
2667.cta-final-form-title {
2668  font-size: 28px;
2669  font-weight: 500;
2670  letter-spacing: -0.02em;
2671  line-height: 1.15;
2672  margin: 0 0 32px;
2673}
2674
2675.form-grid {
2676  display: grid;
2677  grid-template-columns: 1fr 1fr;
2678  gap: 16px;
2679}
2680.form-grid .form-field-full { grid-column: 1 / -1; }
2681
2682.form-field {
2683  position: relative;
2684  border-bottom: 1px solid rgba(255,255,255,0.2);
2685  padding-top: 16px;
2686}
2687.form-field label {
2688  position: absolute;
2689  top: 16px;
2690  left: 0;
2691  font-size: 13px;
2692  color: rgba(255,255,255,0.4);
2693  pointer-events: none;
2694  transition: all var(--dur-base);
2695}
2696.form-field input,
2697.form-field textarea,
2698.form-field select {
2699  width: 100%;
2700  background: transparent;
2701  border: none;
2702  outline: none;
2703  color: var(--ospa-branco);
2704  font-family: var(--font-sans);
2705  font-size: 14px;
2706  padding: 8px 0;
2707  resize: none;
2708}
2709.form-field select option {
2710  background: var(--ospa-preto);
2711  color: var(--ospa-branco);
2712}
2713.form-field.is-filled label,
2714.form-field input:focus + label,
2715.form-field textarea:focus + label,
2716.form-field select:focus + label {
2717  font-size: 10px;
2718  top: 0;
2719  letter-spacing: 0.1em;
2720  text-transform: uppercase;
2721  color: rgba(255,255,255,0.7);
2722}
2723.form-field:focus-within {
2724  border-bottom-color: rgba(255,255,255,0.85);
2725}
2726.form-submit {
2727  margin-top: 24px;
2728  width: 100%;
2729  padding: 18px;
2730  background: var(--ospa-branco);
2731  color: var(--ospa-preto);
2732  border: none;
2733  border-radius: 999px;
2734  font-size: 14px;
2735  font-weight: 500;
2736  display: flex;
2737  align-items: center;
2738  justify-content: center;
2739  gap: 12px;
2740  transition: all var(--dur-slow);
2741}
2742.form-submit:hover {
2743  background: #ffffff;
2744  color: var(--ospa-preto);
2745}
2746.form-fineprint {
2747  font-size: 11px;
2748  color: rgba(255,255,255,0.4);
2749  margin-top: 16px;
2750  text-align: center;
2751}
2752
2753.form-chip-label {
2754  font-family: var(--font-mono);
2755  font-size: 10px;
2756  letter-spacing: 0.14em;
2757  text-transform: uppercase;
2758  color: rgba(255,255,255,0.7);
2759  margin-bottom: 12px;
2760}
2761.form-chips {
2762  display: flex;
2763  flex-wrap: wrap;
2764  gap: 8px;
2765}
2766.form-chip {
2767  background: transparent;
2768  color: rgba(255,255,255,0.7);
2769  border: 1px solid rgba(255,255,255,0.2);
2770  border-radius: 999px;
2771  padding: 8px 16px;
2772  font-size: 13px;
2773  font-family: var(--font-sans);
2774  cursor: pointer;
2775  transition: all var(--dur-base);
2776}
2777.form-chip:hover {
2778  border-color: rgba(255,255,255,0.5);
2779  color: var(--ospa-branco);
2780}
2781.form-chip.is-on {
2782  background: var(--ospa-branco);
2783  color: var(--ospa-preto);
2784  border-color: var(--ospa-branco);
2785}
2786.form-chip-hint {
2787  font-size: 11px;
2788  color: rgba(255,255,255,0.4);
2789  margin-top: 10px;
2790  line-height: 1.5;
2791}
2792.form-checkbox {
2793  display: flex;
2794  align-items: center;
2795  gap: 10px;
2796  font-size: 13px;
2797  color: rgba(255,255,255,0.7);
2798  cursor: pointer;
2799  padding: 4px 0;
2800}
2801.form-checkbox input {
2802  appearance: none;
2803  -webkit-appearance: none;
2804  width: 16px;
2805  height: 16px;
2806  border: 1px solid rgba(255,255,255,0.3);
2807  border-radius: 3px;
2808  background: transparent;
2809  cursor: pointer;
2810  position: relative;
2811  transition: all var(--dur-base);
2812  flex-shrink: 0;
2813}
2814.form-checkbox input:checked {
2815  background: var(--ospa-branco);
2816  border-color: var(--ospa-branco);
2817}
2818.form-checkbox input:checked::after {
2819  content: '';
2820  position: absolute;
2821  left: 4px;
2822  top: 1px;
2823  width: 5px;
2824  height: 9px;
2825  border: solid var(--ospa-preto);
2826  border-width: 0 1.5px 1.5px 0;
2827  transform: rotate(45deg);
2828}
2829.form-error {
2830  margin-top: 16px;
2831  padding: 12px 14px;
2832  border: 1px solid rgba(255,120,120,0.4);
2833  border-radius: 4px;
2834  font-size: 12px;
2835  color: rgba(255,180,180,0.9);
2836  background: rgba(255,80,80,0.06);
2837}
2838.form-submit:disabled {
2839  opacity: 0.5;
2840  cursor: not-allowed;
2841}
2842
2843@media (max-width: 968px) {
2844  .cta-final-inner { grid-template-columns: 1fr; gap: 48px; }
2845  .form-grid { grid-template-columns: 1fr; }
2846  .cta-final-form { padding: 32px 24px; }
2847}
2848
2849/* ─── Incorporator note ─── */
2850.dev-note {
2851  padding: 80px 0;
2852  border-top: 1px solid var(--ospa-pedra-clara);
2853  background: var(--ospa-lua-nova);
2854}
2855.dev-note-inner {
2856  display: grid;
2857  grid-template-columns: 1fr 1fr;
2858  gap: 64px;
2859  align-items: center;
2860}
2861.dev-note-title {
2862  font-size: 28px;
2863  font-weight: 500;
2864  letter-spacing: -0.02em;
2865  line-height: 1.2;
2866  margin: 0 0 16px;
2867}
2868.dev-note-text {
2869  font-size: 15px;
2870  color: var(--cinza-02);
2871  line-height: 1.6;
2872  margin-bottom: 24px;
2873}
2874.dev-note-cta {
2875  display: inline-flex;
2876  align-items: center;
2877  gap: 12px;
2878  font-size: 14px;
2879  font-weight: 500;
2880  border-bottom: 1px solid var(--ospa-preto);
2881  padding-bottom: 4px;
2882  transition: border-color var(--dur-base);
2883}
2884.dev-note-cta:hover { border-color: var(--ospa-preto); color: var(--ospa-preto); }
2885
2886@media (max-width: 968px) {
2887  .dev-note-inner { grid-template-columns: 1fr; gap: 24px; }
2888}
2889
2890/* ─── FAQ ─── */
2891.faq {
2892  padding: 160px 0;
2893}
2894.faq-grid {
2895  display: grid;
2896  grid-template-columns: 1fr 2fr;
2897  gap: 80px;
2898  align-items: start;
2899  margin-top: 64px;
2900}
2901.faq-list {
2902  border-top: 1px solid var(--ospa-pedra-clara);
2903}
2904.faq-item {
2905  border-bottom: 1px solid var(--ospa-pedra-clara);
2906  padding: 24px 0;
2907}
2908.faq-q {
2909  display: flex;
2910  align-items: start;
2911  justify-content: space-between;
2912  gap: 24px;
2913  width: 100%;
2914  background: transparent;
2915  border: none;
2916  padding: 0;
2917  text-align: left;
2918  font-size: 18px;
2919  font-weight: 500;
2920  letter-spacing: -0.015em;
2921  line-height: 1.4;
2922  color: var(--ospa-preto);
2923}
2924.faq-icon {
2925  flex: 0 0 auto;
2926  width: 24px; height: 24px;
2927  border-radius: 50%;
2928  border: 1px solid var(--ospa-pedra-clara);
2929  display: flex;
2930  align-items: center;
2931  justify-content: center;
2932  margin-top: 2px;
2933  transition: all var(--dur-base);
2934}
2935.faq-icon::before, .faq-icon::after {
2936  content: "";
2937  position: absolute;
2938  background: var(--ospa-preto);
2939}
2940.faq-icon::before { width: 10px; height: 1px; }
2941.faq-icon::after { width: 1px; height: 10px; transition: opacity var(--dur-base); }
2942.faq-icon { position: relative; }
2943.faq-item.is-open .faq-icon {
2944  background: var(--ospa-preto);
2945}
2946.faq-item.is-open .faq-icon::before { background: #fff; }
2947.faq-item.is-open .faq-icon::after { opacity: 0; }
2948
2949.faq-a {
2950  max-height: 0;
2951  overflow: hidden;
2952  transition: max-height var(--dur-slow) var(--ease-standard);
2953  font-size: 14px;
2954  line-height: 1.6;
2955  color: var(--cinza-02);
2956}
2957.faq-item.is-open .faq-a {
2958  max-height: 240px;
2959  padding-top: 16px;
2960}
2961
2962@media (max-width: 968px) {
2963  .faq-grid { grid-template-columns: 1fr; gap: 32px; }
2964}
2965
2966/* ─── Footer sticky reveal ─── */
2967/* clip-path cria contexto de clipping que prende o filho fixed ao espaço do wrapper.
2968   Enquanto o wrapper está abaixo da viewport, o fixed fica oculto.
2969   Ao rolar até ele, o footer "sobe" de baixo — sem JS de scroll. */
2970.footer-sticky-wrap {
2971  position: relative;
2972  clip-path: polygon(0% 0, 100% 0%, 100% 100%, 0 100%);
2973}
2974.footer-sticky-fixed {
2975  position: fixed;
2976  bottom: 0;
2977  left: 0;
2978  right: 0;
2979}
2980
2981/* ─── Footer ─── */
2982.footer {
2983  background: var(--ospa-preto);
2984  color: var(--ospa-branco);
2985  padding: 80px 0 40px;
2986  border-top: 1px solid rgba(255,255,255,0.1);
2987}
2988.footer-grid {
2989  display: grid;
2990  grid-template-columns: 2fr 1fr 1fr 1fr;
2991  gap: 64px;
2992  margin-bottom: 80px;
2993}
2994.footer-brand-name {
2995  font-size: 24px;
2996  font-weight: 500;
2997  letter-spacing: -0.015em;
2998  margin-bottom: 16px;
2999}
3000.footer-brand-logo {
3001  height: 64px;
3002  width: auto;
3003  display: block;
3004  margin-bottom: 20px;
3005}
3006.footer-brand-text {
3007  font-size: 13px;
3008  color: rgba(255,255,255,0.5);
3009  line-height: 1.55;
3010  max-width: 320px;
3011}
3012.footer-col-title {
3013  font-family: var(--font-mono);
3014  font-size: 11px;
3015  letter-spacing: 0.14em;
3016  text-transform: uppercase;
3017  color: rgba(255,255,255,0.4);
3018  margin-bottom: 20px;
3019}
3020.footer-col ul { list-style: none; padding: 0; margin: 0; }
3021.footer-col li { margin-bottom: 12px; font-size: 13px; color: rgba(255,255,255,0.7); }
3022.footer-col li a:hover { color: #fff; }
3023/* Verticais como logos (em vez de texto) */
3024.footer-verticals li { margin-bottom: 18px; }
3025.footer-verticals a { display: inline-block; }
3026.footer-vertical-logo {
3027  display: block;
3028  height: auto;
3029  width: auto;
3030  max-height: 34px;
3031  max-width: 130px;
3032  opacity: 0.8;
3033  transition: opacity 0.2s;
3034}
3035.footer-vertical-logo--wide { max-height: 22px; max-width: 150px; }
3036.footer-verticals a:hover .footer-vertical-logo { opacity: 1; }
3037.footer-bottom {
3038  display: flex;
3039  justify-content: space-between;
3040  align-items: center;
3041  font-size: 11px;
3042  font-family: var(--font-mono);
3043  letter-spacing: 0.1em;
3044  text-transform: uppercase;
3045  color: rgba(255,255,255,0.4);
3046  border-top: 1px solid rgba(255,255,255,0.1);
3047  padding-top: 32px;
3048}
3049.footer-bottom-left {
3050  display: flex;
3051  align-items: center;
3052  flex-wrap: wrap;
3053  gap: 24px;
3054}
3055.footer-bottom a {
3056  color: rgba(255,255,255,0.4);
3057  transition: color 0.2s;
3058}
3059.footer-bottom a:hover { color: #fff; }
3060/* C1 · aviso regulatório — small print no rodapé */
3061.footer-disclaimer {
3062  margin-top: 24px;
3063  max-width: 80ch;
3064  font-size: 11px;
3065  line-height: 1.6;
3066  color: rgba(255,255,255,0.32);
3067  text-wrap: pretty;
3068}
3069/* C4 · identificação legal — razão social + CNPJ */
3070.footer-identification {
3071  margin-top: 16px;
3072  font-family: var(--font-mono);
3073  font-size: 11px;
3074  letter-spacing: 0.06em;
3075  line-height: 1.6;
3076  color: rgba(255,255,255,0.32);
3077}
3078@media (max-width: 968px) {
3079  /* minmax(0,1fr): 1fr puro não encolhe abaixo do min-content das colunas
3080     e estourava a largura da tela no mobile */
3081  .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; }
3082  .footer-bottom { flex-direction: column; gap: 16px; align-items: start; }
3083}
3084@media (max-width: 768px) {
3085  /* No mobile o footer vira bloco normal (sem o reveal fixo, que estourava a
3086     viewport) e bem mais compacto — antes ficava "muito grande". */
3087  .footer-sticky-wrap { height: auto !important; clip-path: none; }
3088  .footer-sticky-fixed { position: static !important; height: auto !important; }
3089  .footer { padding: 48px 0 32px; }
3090  .footer-grid { gap: 28px 20px; margin-bottom: 36px; }
3091  .footer-brand-logo { height: 44px; margin-bottom: 16px; }
3092}
3093
3094/* ─── Cookie banner (C5) ─── */
3095.cookie-banner {
3096  position: fixed;
3097  left: 24px;
3098  right: 24px;
3099  bottom: 24px;
3100  z-index: 1000;
3101  max-width: 760px;
3102  margin: 0 auto;
3103  display: flex;
3104  align-items: center;
3105  gap: 24px;
3106  padding: 18px 22px;
3107  background: var(--ospa-preto);
3108  color: var(--ospa-branco);
3109  border: 1px solid rgba(255,255,255,0.14);
3110  border-radius: 10px;
3111  box-shadow: 0 12px 40px rgba(0,0,0,0.35);
3112}
3113.cookie-banner-text {
3114  flex: 1;
3115  margin: 0;
3116  font-size: 13px;
3117  line-height: 1.5;
3118  color: rgba(255,255,255,0.72);
3119}
3120.cookie-banner-actions {
3121  display: flex;
3122  align-items: center;
3123  gap: 16px;
3124  flex-shrink: 0;
3125}
3126.cookie-banner-accept {
3127  font-size: 13px;
3128  font-weight: 500;
3129  padding: 10px 22px;
3130  border-radius: 6px;
3131  background: var(--ospa-branco);
3132  color: var(--ospa-preto);
3133  border: none;
3134  cursor: pointer;
3135  white-space: nowrap;
3136  transition: opacity 0.2s;
3137}
3138.cookie-banner-accept:hover { opacity: 0.85; }
3139@media (max-width: 640px) {
3140  .cookie-banner { flex-direction: column; align-items: stretch; gap: 16px; }
3141  .cookie-banner-actions { justify-content: space-between; }
3142  /* Alvo de toque ≥44px no mobile */
3143  .cookie-banner-accept { padding: 13px 22px; }
3144}
3145</style>
3146  
3146<script type="module" crossorigin src="/ospa-capital-home/assets/main-CVIyhDRa.js"></script>
3146
3147  <link rel="modulepreload" crossorigin href="/ospa-capital-home/assets/CookieBanner-DeNUDgLs.js">
3148  <link rel="stylesheet" crossorigin href="/ospa-capital-home/assets/CookieBanner-B2k4QVOw.css">
3149</head>
3150<body>
3151
3152  <!-- Conteúdo p/ crawlers sem JS (espelha o conteúdo renderizado pelo React) -->
3153  <noscript>
3154    <main>
3155      <h1>OSPA Capital — Da viabilidade ao crédito</h1>
3156      <p>A plataforma de viabilidade e crédito para o mercado imobiliário. Do empreendimento ao investidor com aderência ao perfil, com inteligência artificial.</p>
3157      <h2>Do empreendimento ao investidor com aderência ao perfil</h2>
3158      <ul>
3159        <li><strong>Viabilidade e Acompanhamento</strong> — Viabilidade completa em minutos. Fluxo de caixa corrigido por índices, fluxo de pagamento e indicadores prontos para decidir.</li>
3160        <li><strong>Estrutura de Capital</strong> — A operação de crédito projetada para cada empreendimento, com simulação de alavancagem na plataforma.</li>
3161        <li><strong>Relacionamento com Investidores</strong> — Identificação de investidores institucionais com aderência ao perfil. Os veículos do mercado imobiliário brasileiro, lidos e monitorados.</li>
3162      </ul>
3163      <p>Contato: <a href="mailto:[email protected]">[email protected]</a> · Porto Alegre, RS · <a href="https://ospa.com.br">ospa.com.br</a></p>
3164    </main>
3165  </noscript>
3166
3167  <div id="root"></div>
3168
3169
3170</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.