PageSourceSearch

https://inabravo.com/portfolio

html inabravo.com collected 2026-10-04 08:07:19 UTC 9,441 bytes, 196 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3 <head>
4  <meta charset="utf-8"/>
5  <link href="https://media.base44.com/images/public/6a12368b6290c0485dac145c/06c994b69_Logov2InaBravo.png" rel="icon" type="image/svg+xml"/>
6  <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
7  <link href="/manifest.json" rel="manifest"/>
8  <title>
9   Portfolio | Ina Bravo
10  </title>
11  <meta content="Portfolio on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a." name="description"/>
12  <meta content="Ina Bravo" name="author"/>
13  <!-- Open Graph / Social Sharing -->
14  <meta content="website" property="og:type"/>
15  <meta content="Portfolio | Ina Bravo" property="og:title"/>
16  <meta content="Portfolio on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a." property="og:description"/>
17  <meta content="https://media.base44.com/images/public/6a12368b6290c0485dac145c/cac6c747f_Logov2InaBravo.png/v1/fill/w_1200,h_630/cac6c747f_Logov2InaBravo.png" property="og:image"/>
18  <meta content="1024" property="og:image:width"/>
19  <meta content="819" property="og:image:height"/>
20  <meta content="Ina Bravo in conversation about brand-artist relations" property="og:image:alt"/>
21  <meta content="Ina Bravo" property="article:author"/>
22  <meta content="2026-06" property="article:published_time"/>
23  <meta content="Industry Insight" property="article:section"/>
24  <meta content="https://inabravo.com/portfolio" property="og:url"/>
25  <!-- Twitter Card -->
26  <meta content="summary_large_image" name="twitter:card"/>
27  <meta content="Portfolio | Ina Bravo" name="twitter:title"/>
28  <meta content="Portfolio on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a." name="twitter:description"/>
29  <meta content="https://media.base44.com/images/public/6a12368b6290c0485dac145c/cac6c747f_Logov2InaBravo.png/v1/fill/w_1200,h_630/cac6c747f_Logov2InaBravo.png" name="twitter:image"/>
30  
30<script crossorigin="" src="/assets/index-CKwNm78i.js" type="module">
31  </script>
31
32  <link crossorigin="" href="/assets/index-BAOGyvKn.css" rel="stylesheet"/>
33  
33<script type="module">
34   if (window.self === window.top) {
35  let lastPath = "";
36  function getPageNameFromPath(path) {
37    const segments = path.split("/").filter(Boolean);
38    return segments[0] || null;
39  }
40  function trackPageView() {
41    const path = window.location.pathname;
42    if (path === lastPath) return;
43    lastPath = path;
44    const pageName = getPageNameFromPath(path) || "home";
45    const appId = "6a12368b6290c0485dac145c";
46    if (!appId) return;
47    fetch(`/api/app-logs/${appId}/log-user-in-app/${pageName}`, {
48      method: "POST",
49    }).catch(() => {});
50  }
51  const originalPushState = history.pushState.bind(history);
52  history.pushState = function (...args) {
53    originalPushState(...args);
54    trackPageView();
55  };
56  const originalReplaceState = history.replaceState.bind(history);
57  history.replaceState = function (...args) {
58    originalReplaceState(...args);
59    trackPageView();
60  };
61  window.addEventListener("popstate", trackPageView);
62  trackPageView();
63}
64  </script>
64
65  <meta content="Ina Bravo" property="og:site_name"/>
66  <meta content="https://inabravo.com/portfolio" name="twitter:url"/>
67  
67<script>
68   (function () {
69  var titles = {"/": "Ina Bravo", "/partners": "Partners | Ina Bravo", "/services": "Services | Ina Bravo", "/speaking": "Speaking | Ina Bravo", "/portfolio": "Portfolio | Ina Bravo", "/artist-relations": "Article | Ina Bravo", "/home": "Ina Bravo"};
70  // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind
71  // (old Safari fails to PARSE a lookbehind, taking the whole script down).
72  var dashed = function (s) {
73    return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2");
74  };
75  var decode = function (s) {
76    // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a
77    // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title.
78    try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; }
79  };
80  var segments = function (path) { return path.split("/").filter(Boolean).map(decode); };
81  var norm = function (path) {
82    var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); });
83    return parts.length ? "/" + parts.join("/") : "/";
84  };
85  var lastPath = location.pathname, written = document.title, on = true;
86  var sync = function () {
87    // Path only: a hash/query change is the same page, and the SDK strips its own auth
88    // params with replaceState -- neither must clobber a server-rendered title in place.
89    if (!on || location.pathname === lastPath) return;
90    lastPath = location.pathname;
91    if (document.title !== written) { on = false; return; }
92    // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the
93    // map cannot carry, and writing a placeholder there is destructive, not merely vague: the
94    // prerender worker runs no setUserAgent, so its capture browser reads as human and executes
95    // this script, and coordinator.js's settle wait explicitly tolerates a full navigation --
96    // a redirect landing on an unmapped path would bake the placeholder into the stored
97    // snapshot. Leaving the title alone degrades to today's behavior instead.
98    // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up
99    // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the
100    // dashes there, and the client cannot tell the two apart. The map emits every reachable
101    // shape per segment instead (_client_url_variants).
102    var title = titles[norm(location.pathname)];
103    if (title === undefined) return;
104    document.title = title;
105    // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so
106    // keeping the assigned string would make the next sync() read our own write as the app's.
107    written = document.title;
108  };
109  var wrap = function (fn) {
110    // The history entry is already pushed by the time sync() runs, so a throw here would
111    // surface inside the host app's router and break navigation. This is injected into apps
112    // we cannot test, so it swallows rather than trusting the trace.
113    return function () {
114      var r = fn.apply(this, arguments);
115      try { sync(); } catch (e) {}
116      return r;
117    };
118  };
119  history.pushState = wrap(history.pushState);
120  history.replaceState = wrap(history.replaceState);
121  window.addEventListener("popstate", sync);
122})();
123  </script>
123
124  <meta content="yes" name="mobile-web-app-capable"/>
125  <meta content="black" name="apple-mobile-web-app-status-bar-style"/>
126  <meta content="Ina Bravo" name="apple-mobile-web-app-title"/>
127  <link href="https://inabravo.com/portfolio" rel="canonical"/>
128  
128<script data-seo-source="builder" type="application/ld+json">
129   {"name": "Ina Bravo", "@context": "https://schema.org", "@type": "WebSite", "url": "https://inabravo.com"}
130  </script>
130
131  
131<script data-seo-source="builder" type="application/ld+json">
132   {"name": "Ina Bravo", "logo": "https://media.base44.com/images/public/6a12368b6290c0485dac145c/7cdf2e534_logo.png", "@context": "https://schema.org", "@type": "Organization", "url": "https://inabravo.com"}
133  </script>
133
134  
134<script data-seo-source="builder" type="application/ld+json">
135   {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://inabravo.com/"}, {"@type": "ListItem", "position": 2, "name": "Portfolio | Ina Bravo", "item": "https://inabravo.com/portfolio"}]}
136  </script>
136
137 </head>
138 <body>
139  <div id="root">
140   <div data-seo-source="builder" id="seo-snapshot" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;">
141    <main>
142     <header>
143      <h1>
144       Portfolio | Ina Bravo
145      </h1>
146      <p>
147       Portfolio on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a.
148      </p>
149     </header>
150     <nav aria-label="Pages">
151      <h2>
152       Pages
153      </h2>
154      <ul>
155       <li>
156        <a href="/">
157         Home
158        </a>
159       </li>
160       <li>
161        <a href="/partners">
162         Partners
163        </a>
164        — Partners on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a.
165       </li>
166       <li>
167        <a href="/services">
168         Services
169        </a>
170        — Services on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a.
171       </li>
172       <li>
173        <a href="/speaking">
174         Speaking
175        </a>
176        — Speaking on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a.
177       </li>
178       <li>
179        <a href="/portfolio">
180         Portfolio
181        </a>
182        — Portfolio on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a.
183       </li>
184       <li>
185        <a href="/artist-relations">
186         Article
187        </a>
188        — Article on Ina Bravo. A sophisticated digital space for creative portfolios, professional showcases, a.
189       </li>
190      </ul>
191     </nav>
192    </main>
193   </div>
194  </div>
195 </body>
196</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.