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.