PageSourceSearch

https://a-alberto-lugo.base44.app/Contact

html a-alberto-lugo.base44.app collected 2026-10-03 03:11:00 UTC 7,982 bytes, 172 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/marketing-site-assets/branded/favicon-branded-v2.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   Contact | Alberto Lugo Architect
10  </title>
11  
11<script crossorigin="" src="/assets/index-D1IkNnBf.js" type="module">
12  </script>
12
13  <link crossorigin="" href="/assets/index-CdDrOT8l.css" rel="stylesheet"/>
14  
14<script type="module">
15   let lastPath = "";
16function getPageNameFromPath(path) {
17  const segments = path.split("/").filter(Boolean);
18  return segments[0] || null;
19}
20function trackPageView() {
21  const path = window.location.pathname;
22  if (path === lastPath) return;
23  lastPath = path;
24  const pageName = getPageNameFromPath(path) || "home";
25  const appId = "68c1aeaf9c9df5551466541f";
26  const serverUrl = "https://base44.app" || "";
27  if (!appId) return;
28  fetch(`${serverUrl}/app-logs/${appId}/log-user-in-app/${pageName}`, {
29    method: "POST",
30  }).catch(() => {});
31}
32const originalPushState = history.pushState.bind(history);
33history.pushState = function (...args) {
34  originalPushState(...args);
35  trackPageView();
36};
37const originalReplaceState = history.replaceState.bind(history);
38history.replaceState = function (...args) {
39  originalReplaceState(...args);
40  trackPageView();
41};
42window.addEventListener("popstate", trackPageView);
43trackPageView();
44  </script>
44
45  <meta content="A professional website showcasing the architectural expertise, sustainable design philosophy, and philanthropic contributions of A. Alberto Lugo." name="description"/>
46  <meta content="Contact | Alberto Lugo Architect" property="og:title"/>
47  <meta content="A professional website showcasing the architectural expertise, sustainable design philosophy, and philanthropic contributions of A. Alberto Lugo." property="og:description"/>
48  <meta content="https://a-alberto-lugo.base44.app/Contact" property="og:url"/>
49  <meta content="website" property="og:type"/>
50  <meta content="Alberto Lugo Architect" property="og:site_name"/>
51  <meta content="Contact | Alberto Lugo Architect" name="twitter:title"/>
52  <meta content="A professional website showcasing the architectural expertise, sustainable design philosophy, and philanthropic contributions of A. Alberto Lugo." name="twitter:description"/>
53  <meta content="summary_large_image" name="twitter:card"/>
54  <meta content="https://a-alberto-lugo.base44.app/Contact" name="twitter:url"/>
55  <meta content="https://media.base44.com/images/public/marketing-site-assets/branded/favicon-branded-v2.png/v1/fill/w_1200,h_630/favicon-branded-v2.png" property="og:image"/>
56  <meta content="https://media.base44.com/images/public/marketing-site-assets/branded/favicon-branded-v2.png/v1/fill/w_1200,h_630/favicon-branded-v2.png" name="twitter:image"/>
57  
57<script>
58   (function () {
59  var titles = {"/homepage": "Alberto Lugo Architect"};
60  // PascalCase boundaries -> "-", mirroring _PASCAL_BOUNDARY_RE without lookbehind
61  // (old Safari fails to PARSE a lookbehind, taking the whole script down).
62  var dashed = function (s) {
63    return s.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2");
64  };
65  var decode = function (s) {
66    // A %2F inside ONE segment must not become a structural separator: /blog/foo%2Fbar is a
67    // dynamic slug, and letting it split would match a static /blog/foo/bar and write ITS title.
68    try { var d = decodeURIComponent(s); return d.indexOf("/") < 0 ? d : s; } catch (e) { return s; }
69  };
70  var segments = function (path) { return path.split("/").filter(Boolean).map(decode); };
71  var norm = function (path) {
72    var parts = segments(path).map(function (s) { return dashed(s).toLowerCase(); });
73    return parts.length ? "/" + parts.join("/") : "/";
74  };
75  var lastPath = location.pathname, written = document.title, on = true;
76  var sync = function () {
77    // Path only: a hash/query change is the same page, and the SDK strips its own auth
78    // params with replaceState -- neither must clobber a server-rendered title in place.
79    if (!on || location.pathname === lastPath) return;
80    lastPath = location.pathname;
81    if (document.title !== written) { on = false; return; }
82    // Write ONLY a title the map proves. An unmapped path is a dynamic route (/blog/:slug) the
83    // map cannot carry, and writing a placeholder there is destructive, not merely vague: the
84    // prerender worker runs no setUserAgent, so its capture browser reads as human and executes
85    // this script, and coordinator.js's settle wait explicitly tolerates a full navigation --
86    // a redirect landing on an unmapped path would bake the placeholder into the stored
87    // snapshot. Leaving the title alone degrades to today's behavior instead.
88    // Exact lookup only. A dash-stripped retry here would let a genuinely different /set-up
89    // claim /setup: the map carries a dash-free key only where a PascalCase boundary put the
90    // dashes there, and the client cannot tell the two apart. The map emits every reachable
91    // shape per segment instead (_client_url_variants).
92    var title = titles[norm(location.pathname)];
93    if (title === undefined) return;
94    document.title = title;
95    // Re-read: the setter stores verbatim but the getter strips and collapses whitespace, so
96    // keeping the assigned string would make the next sync() read our own write as the app's.
97    written = document.title;
98  };
99  var wrap = function (fn) {
100    // The history entry is already pushed by the time sync() runs, so a throw here would
101    // surface inside the host app's router and break navigation. This is injected into apps
102    // we cannot test, so it swallows rather than trusting the trace.
103    return function () {
104      var r = fn.apply(this, arguments);
105      try { sync(); } catch (e) {}
106      return r;
107    };
108  };
109  history.pushState = wrap(history.pushState);
110  history.replaceState = wrap(history.replaceState);
111  window.addEventListener("popstate", sync);
112})();
113  </script>
113
114  <meta content="yes" name="mobile-web-app-capable"/>
115  <meta content="black" name="apple-mobile-web-app-status-bar-style"/>
116  <meta content="Alberto Lugo Architect" name="apple-mobile-web-app-title"/>
117  <link href="https://a-alberto-lugo.base44.app/Contact" rel="canonical"/>
118  
118<script data-seo-source="builder" type="application/ld+json">
119   {"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://a-alberto-lugo.base44.app/"}, {"@type": "ListItem", "position": 2, "name": "Contact", "item": "https://a-alberto-lugo.base44.app/Contact"}]}
120  </script>
120
121  
121<script async="true" data-app-id="68c1aeaf9c9df5551466541f" data-platform-url="https://app.base44.com" src="/static/js/badge.js">
122  </script>
122
123 </head>
124 <body>
125  <div id="root">
126   <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;">
127    <main>
128     <header>
129      <h1>
130       Contact | Alberto Lugo Architect
131      </h1>
132      <p>
133       A professional website showcasing the architectural expertise, sustainable design philosophy, and philanthropic contributions of A. Alberto Lugo.
134      </p>
135     </header>
136     <nav aria-label="Pages">
137      <h2>
138       Pages
139      </h2>
140      <ul>
141       <li>
142        <a href="/Homepage">
143         Homepage
144        </a>
145       </li>
146       <li>
147        <a href="/About">
148         About
149        </a>
150       </li>
151       <li>
152        <a href="/Projects">
153         Projects
154        </a>
155       </li>
156       <li>
157        <a href="/Philanthropy">
158         Philanthropy
159        </a>
160       </li>
161       <li>
162        <a href="/Awards">
163         Awards
164        </a>
165       </li>
166      </ul>
167     </nav>
168    </main>
169   </div>
170  </div>
171 </body>
172</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.