PageSourceSearch

https://www.leiflist.com/pages/about.html

html leiflist.com collected 2026-10-02 01:34:08 UTC 24,876 bytes, 326 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4  <meta charset="utf-8" />
5  <title>About — Leif List</title>
6  <meta name="description" content="Leif List rates brands on their impact on the planet and on people. Who runs it and why it exists." />
7  <link rel="canonical" href="https://www.leiflist.com/about" />
8  <meta name="robots" content="index, follow, max-image-preview:large" />
9  <meta property="og:type" content="website" />
10  <meta property="og:site_name" content="Leif List" />
11  <meta property="og:title" content="About — Leif List" />
12  <meta property="og:description" content="Leif List rates brands on their impact on the planet and on people. Who runs it and why it exists." />
13  <meta property="og:url" content="https://www.leiflist.com/about" />
14  <meta property="og:image" content="https://www.leiflist.com/assets/leiflist-vertical-navy.png" />
15  <meta name="twitter:card" content="summary_large_image" />
16  <meta name="twitter:title" content="About — Leif List" />
17  <meta name="twitter:description" content="Leif List rates brands on their impact on the planet and on people. Who runs it and why it exists." />
18  <meta name="twitter:image" content="https://www.leiflist.com/assets/leiflist-vertical-navy.png" />
19  <meta name="viewport" content="width=device-width, initial-scale=1" />
20  <!-- Site-wide theme switch — MUST be first + blocking (sets .ed-theme on <html> pre-paint) -->
21  
21<script src="/utils/theme-boot.js"></script>
21
22  <!-- Type: Fraunces (display) + Inter (body/UI), both self-hosted in fonts.css.
23       Preloading the two latin faces keeps headings and body copy from
24       flashing through the fallback on a cold load. -->
25  <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/fraunces-latin.woff2" crossorigin />
26  <link rel="preload" as="font" type="font/woff2" href="/assets/fonts/inter-latin.woff2" crossorigin />
27  <link rel="stylesheet" href="/styles/fonts.css" />
28  <link rel="stylesheet" href="/pages/pages.css" />
29  <link rel="stylesheet" href="/styles/header-search.css" />
30  <link rel="stylesheet" href="/styles/footer.css" />
31  <link rel="stylesheet" href="/styles/mobile-header.css" />
32  <!-- Editorial/Navy theme — shared tokens+cards, shared chrome, then content-page surfaces. MUST load last. -->
33  <link rel="stylesheet" href="/styles/theme.css" />
34  <link rel="stylesheet" href="/styles/theme-chrome.css" />
35  <link rel="stylesheet" href="/pages/theme-pages.css" />
36</head>
37<body>
38  <header class="brand-header ed-header">
39    <!-- Left cluster: wordmark + primary nav (editorial theme) -->
40    <div class="ed-header-left">
41      <span class="brand-lockup">
42        <img id="brandLogo" alt="Leif List" class="brand-logo" />
43        <a class="beta-tag" href="/pages/about.html" title="Leif List is in beta — with plenty more on the way.">beta</a>
44      </span>
45      <nav class="ed-nav" aria-label="Primary">
46        <a class="ed-nav-link" href="/">Shop</a>
47        <a class="ed-nav-link" href="/pages/methodology.html">Methodology</a>
48        <a class="ed-nav-link" href="/guides/">Guides</a>
49        <a class="ed-nav-link" href="/pages/about.html">About</a>
50        <a class="ed-nav-link" href="/pages/how-scoring-works.html">How Scoring Works</a>
51      </nav>
52    </div>
53
54    <!-- Search bar (redirects to homepage) -->
55    <div class="header-search" id="headerSearch">
56      <svg class="header-search-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
57      <input id="searchInput" class="header-search-input" type="text" placeholder="Search products or values" aria-label="Search products" autocomplete="off" />
58      <button class="header-search-clear" id="headerSearchClear" aria-label="Clear search">&times;</button>
59      <button class="header-search-submit" id="headerSearchSubmit" aria-label="Search">
60        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
61      </button>
62      <button class="header-search-cancel" id="headerSearchCancel">CANCEL</button>
63      <div class="search-suggestions" id="searchSuggestions">
64        <div class="suggestions-heading">TOP SUGGESTIONS</div>
65        <div class="suggestions-list" id="suggestionsList"></div>
66      </div>
67    </div>
68
69    <div class="brand-actions ed-actions">
70      <!-- Editorial theme: feedback icon + avatar dropdown. Legacy theme: the
71           original text buttons render instead. -->
72      <a class="ed-icon-btn btn-feedback" href="/pages/feedback.html" title="Send feedback" aria-label="Send feedback"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg></a>
73
74      <!-- Avatar menu — Sign in / User profile / Sign out -->
75      <div class="ed-avatar-wrap">
76        <button class="ed-avatar" id="edAvatarBtn" aria-haspopup="true" aria-expanded="false" aria-label="Account menu">
77          <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
78        </button>
79        <div class="ed-avatar-menu" id="edAvatarMenu" role="menu" aria-hidden="true">
80          <a class="ed-menu-item" id="signInBtn" role="menuitem">Sign in</a>
81          <a class="ed-menu-item" id="userProfileBtn" role="menuitem"><span class="btn-label-full">User profile</span><span class="btn-label-short">Profile</span></a>
82          <button class="ed-menu-item" id="signOutBtn" role="menuitem" style="display:none;">Sign out</button>
83        </div>
84      </div>
85      <!-- Mobile overflow menu — below 880px the primary nav, the feedback icon
86           and the avatar all collapse in here, same as every other page. Nav rows
87           mirror .ed-nav above; the auth rows are driven by pages.auth.js. -->
88      <div class="mobile-menu-wrap">
89        <button class="btn btn-secondary mobile-menu-btn" id="mobileMenuBtn" aria-label="More options">
90          <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
91        </button>
92        <div class="mobile-menu-dropdown" id="mobileMenuDropdown">
93          <a class="mobile-menu-item" href="/values/values.html">
94            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 0 1-8 0"/></svg>
95            Shop
96          </a>
97          <a class="mobile-menu-item" href="/pages/methodology.html">
98            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
99            Methodology
100          </a>
101          <a class="mobile-menu-item" href="/pages/about.html">
102            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>
103            About
104          </a>
105          <a class="mobile-menu-item" href="/guides/">
106            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
107            Guides
108          </a>
109          <a class="mobile-menu-item" href="/pages/how-scoring-works.html">
110            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>
111            How Scoring Works
112          </a>
113          <a class="mobile-menu-item mobile-menu-divider" href="/pages/feedback.html">
114            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
115            Feedback
116          </a>
117          <a class="mobile-menu-item" id="mobileMenuProfile">
118            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
119            User profile
120          </a>
121          <a class="mobile-menu-item mobile-menu-auth" id="mobileMenuSignIn">
122            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg>
123            Sign in
124          </a>
125          <div class="mobile-menu-item mobile-menu-auth" id="mobileMenuSignOut" style="display:none;">
126            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg>
127            Sign out
128          </div>
129        </div>
130      </div>
131    </div>
132  </header>
133
134  <!-- Overlay for expanded search -->
135  <div class="search-overlay" id="searchOverlay"></div>
136
137  <!-- ===== Hero (navy band, full-bleed) — same treatment as the homepage hero ===== -->
138  <section class="about-hero">
139    <div class="about-hero-inner">
140      <p class="about-eyebrow">About Leif List</p>
141      <h1 class="about-hero-title">Welcome to Leif List!</h1>
142      <p class="about-hero-sub">My name is Logan Fisher, and I&rsquo;m the founder, president, CEO and every other role you could think of for Leif List.</p>
143    </div>
144  </section>
145
146  <main class="about-main">
147    <div class="page-content page-content--flow">
148      <div class="content-card about-why">
149        <div class="about-why-body">
150          <p class="about-eyebrow about-eyebrow--ink">The story</p>
151          <h2>Why this exists</h2>
152          <p>I grew up in Portland, Oregon, and was lucky enough to see firsthand that nature and modern life <em>can</em> coexist. I spent countless days at the river, on trips to the coast, hiking in Forest Park and exploring the mountains nearby. That appreciation for the outdoors only deepened when I moved to Montana for college.</p>
153          <p>The outdoors became a core part of who I am. And as I got older and learned how fragile our planet&rsquo;
153s ecosystems are, I grew increasingly frustrated with the way we&rsquo;ve set up business. The incentives to cut costs, take shortcuts and maximize revenue make doing business the wrong way far too appealing for companies to ignore. Excessive pollution, exploitation of workers, harmful materials and much more have become commonplace &mdash; so commonplace that supporting those companies with your dollars is nearly unavoidable. Between how widespread these practices are and how much greenwashing covers for them, finding the companies doing things right is much harder than it needs to be.</p>
154          <p>In 2025 I got tired of feeling helpless about it, quit my job, and started Leif List. The vision was simple: put the power to &ldquo;vote with your wallet&rdquo; back in shoppers&rsquo; hands. I wanted to give people instant information on a company&rsquo;s practices and values, so they can make quick, well-informed decisions about where their money goes and support the businesses that share their values.</p>
155          <p>I was raised believing it&rsquo;s part of the social contract to be stewards not just of the environment, but of one another. Most of us do that in our own lives. As a society, I think we&rsquo;ve lost sight of it. My hope is that, in some small way, giving people the power to reward companies doing things the right way creates an incentive for the whole industry to shift.</p>
156          <blockquote class="about-callout">
157            <p>When you look up a brand here, the answer shouldn&rsquo;t be a press release, an ad, or a feeling. It should be what the record shows &mdash; including when the record shows nothing. That&rsquo;s the test I hold the site to, and the one you should hold me to.</p>
158          </blockquote>
159        </div>
160        <!-- TODO(logan): save a photo of yourself to extension/assets/logan.jpg (roughly
161             square, 480px+ on the short side) and replace the placeholder <div> below with:
162             <img src="/assets/logan.jpg" alt="Logan Fisher" class="about-photo-img" />
163             Keep it at this size. It is deliberately not a full-width hero. -->
164        <figure class="about-photo">
165          <div class="about-photo-img about-photo-placeholder" role="img" aria-label="Photo placeholder">Photo</div>
166          <figcaption>Logan Fisher, founder</figcaption>
167        </figure>
168      </div>
169    </div>
170
171    <!-- ===== Pale-blue band: the name ===== -->
172    <section class="about-band about-band--tint">
173      <div class="about-band-inner about-name">
174        <div class="about-name-text">
175          <p class="about-eyebrow about-eyebrow--ink">Portland, Oregon</p>
176          <h2>Where the name comes from</h2>
177          <p>Leif List is named after the Leif Erikson trailhead in Forest Park, in Portland. I&rsquo;ve spent countless hours running that trail with my track teammates in high school and college, and it&rsquo;s one of the places that shaped my appreciation for the outdoors. I hope Leif List grows far beyond me, but it&rsquo;s a deeply personal project, and I wanted the name to reflect that.</p>
178        </div>
179        <div class="about-pop-card about-name-card">
180          <span class="about-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m8 3 4 8 5-5 5 15H2L8 3z"/></svg></span>
181          <span class="about-card-body">
182            <strong class="about-card-title">Leif Erikson Trailhead</strong>
183            <span class="about-card-text">Forest Park &middot; Portland, Oregon</span>
184          </span>
185        </div>
186      </div>
187    </section>
188
189    <!-- ===== What Leif List is — offset-block cards, as on the homepage ===== -->
190    <section class="about-band">
191      <div class="about-band-inner">
192        <p class="about-eyebrow about-eyebrow--ink">The product</p>
193        <h2>What Leif List actually is</h2>
194        <p class="about-band-lead">Leif List is a discovery site. Search or browse products and see how the company behind each one really operates.</p>
195        <div class="about-card-grid">
196          <div class="about-pop-card">
197            <span class="about-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M11 20A7 7 0 0 1 9.8 6.9C15.5 4.9 17 3.5 19 2c1 2 2 4.5 1 8-1 3.5-3.1 5-5 6"/><path d="M10.7 10.5c2 2.5 2.3 5.5 2.3 9.5"/></svg></span>
198            <span class="about-card-body">
199              <strong class="about-card-title">Rated on planet and people</strong>
200              <span class="about-card-text">Grocery, home, personal care, apparel and more &mdash; every product carries a rating of the company behind it on two things: its impact on the planet, and how it treats people.</span>
201            </span>
202          </div>
203          <div class="about-pop-card">
204            <span class="about-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 21h18"/><path d="M5 21V7l7-4 7 4v14"/><path d="M9 21v-6h6v6"/></svg></span>
205            <span class="about-card-body">
206              <strong class="about-card-title">Rated by who really makes it</strong>
207              <span class="about-card-text">Ratings apply to companies, not individual items. A product&rsquo;s rating belongs to the company genuinely responsible for how it&rsquo;s made &mdash; sometimes a parent company rather than the friendlier-sounding label on the box.</span>
208            </span>
209          </div>
210        </div>
211        <p class="about-links"><a href="/pages/methodology.html">How we trace ownership &rarr;</a><a href="/pages/how-scoring-works.html">What each rating means &rarr;</a></p>
212      </div>
213    </section>
214
215    <!-- ===== Pale-blue band: coming soon ===== -->
216    <section class="about-band about-band--tint">
217      <div class="about-band-inner">
218        <p class="about-eyebrow about-eyebrow--ink">What&rsquo;s next</p>
219        <h2>Coming soon to Leif List</h2>
220        <div class="about-card-grid about-card-grid--3">
221          <a class="about-pop-card about-pop-card--link" href="/shop-local/portland/">
222            <span class="about-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg></span>
223            <span class="about-card-body">
224              <span class="about-status">Coming soon</span>
225              <strong class="about-card-title">Shop Local</strong>
226              <span class="about-card-text">A dedicated tab for independent brands headquartered right here in Portland, starting with a group of founding partners.</span>
227            </span>
228          </a>
229          <div class="about-pop-card">
230            <span class="about-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="6" y="2" width="12" height="20" rx="2.5"/><line x1="11" y1="18" x2="13" y2="18"/></svg></span>
231            <span class="about-card-body">
232              <span class="about-status">Coming soon</span>
233              <strong class="about-card-title">Leif List for iPhone</strong>
234              <span class="about-card-text">Already on Google Play for Android &mdash; the iOS app is on its way to the App Store.</span>
235            </span>
236          </div>
237          <div class="about-pop-card">
238            <span class="about-card-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="2" y="4" width="20" height="16" rx="2"/><line x1="2" y1="9" x2="22" y2="9"/><line x1="6" y1="6.5" x2="6.01" y2="6.5"/><line x1="9" y1="6.5" x2="9.01" y2="6.5"/></svg></span>
239            <span class="about-card-body">
240              <span class="about-status">In development</span>
241              <strong class="about-card-title">Browser extension</strong>
242              <span class="about-card-text">Leif List ratings right on the product pages you&rsquo;re already shopping. We&rsquo;re giving it some extra polish before it comes back.</span>
243            </span>
244          </div>
245        </div>
246        <p class="about-more">&hellip;and much more.</p>
247      </div>
248    </section>
249
250    <!-- ===== Navy band: getting in touch ===== -->
251    <section class="about-band about-band--navy">
252      <div class="about-band-inner about-contact">
253        <div>
254          <p class="about-eyebrow">Getting in touch</p>
255          <h2>Think a rating is off?</h2>
256          <p>Tell me and I&rsquo;ll look into it &mdash; corrections from readers are one of the best signals I get. For press, partnerships or a correction with documents attached, email me directly. I answer these myself.</p>
257          <!-- TODO(logan): add any public profile you want listed alongside the email. -->
258        </div>
259        <div class="about-contact-cta">
260          <a class="about-btn about-btn-primary" href="/pages/feedback.html">Send feedback</a>
261          <a class="about-btn about-btn-ghost" href="mailto:[email protected]">[email protected]</a>
262        </div>
263      </div>
264    </section>
265  </main>
266
267  <footer class="site-footer ed-footer">
268    <div class="footer-inner ed-footer-inner">
269      <div class="footer-brand ed-footer-brand">
270        <img src="/assets/leif-lockup-white.svg" alt="Leif List" class="footer-logo" />
271        <p class="footer-tagline">Your companion for guilt-free, headache-free shopping</p>
272      </div>
273      <div class="footer-columns ed-footer-columns">
274        <div class="footer-col">
275          <h4 class="footer-col-title">About</h4>
276          <ul class="footer-links">
277            <li><a href="/pages/about.html">About</a></li>
278            <li><a href="/pages/methodology.html">Methodology</a></li>
279            <li><a href="/guides/">Guides</a></li>
280            <li><a href="/pages/how-scoring-works.html">How Scoring Works</a></li>
281            <li><a href="/shop-local/portland/">Shop Local <span class="footer-link-note">(in development)</span></a></li>
282          </ul>
283        </div>
284        <div class="footer-col">
285          <h4 class="footer-col-title">Support</h4>
286          <ul class="footer-links">
287            <li><a href="/pages/faq.html">FAQ</a></li>
288            <li><a href="/pages/contact.html">Contact</a></li>
289            <li><a href="/pages/feedback.html">Report Feedback</a></li>
290          </ul>
291        </div>
292        <div class="footer-col">
293          <h4 class="footer-col-title">Legal</h4>
294          <ul class="footer-links">
295            <li><a href="/pages/privacy.html">Privacy Policy</a></li>
296            <li><a href="/pages/terms.html">Terms of Service</a></li>
297          </ul>
298        </div>
299      </div>
300    </div>
301    <div class="footer-bottom ed-footer-bottom">
302      <p class="affiliate-disclosure">Affiliate disclosure: Leif List earns commissions through Amazon Associates and partner brands' affiliate networks (such as Awin) on qualifying purchases. Product information, prices, and availability are sourced from third-party data providers and may not reflect real-time values. Affiliate relationships do n
302ot influence brand evaluations, sustainability scores, or Partner-tier ratings.</p>
303      <div class="ed-footer-bottom-row">
304        <p class="ed-copyright"><a href="/pages/privacy.html">Privacy</a> &middot; <a href="/pages/terms.html">Terms</a></p>
305        <!-- Social icons are visual placeholders — real accounts not set up yet. -->
306        <div class="ed-footer-socials" aria-label="Social links">
307          <a class="ed-social" href="#" aria-label="Instagram"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>
308          <a class="ed-social" href="#" aria-label="X"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4l16 16M20 4L4 20"/></svg></a>
309          <a class="ed-social" href="#" aria-label="TikTok"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
309<path d="M9 12a4 4 0 1 0 4 4V4a5 5 0 0 0 5 5"/></svg></a>
310        </div>
311      </div>
312    </div>
313  </footer>
314
315  
315<script src="/utils/platform.js"></script>
315
316  
316<script defer src="/utils/search-placeholder.js"></script>
316
317  
317<script src="/vendor/firebase-app-compat.js"></script>
317
318  
318<script src="/vendor/firebase-auth-compat.js"></script>
318
319  
319<script src="/pages/pages.auth.js"></script>
319
320  
320<script src="/utils/header-search.js"></script>
320
321  
321<script src="/utils/mobile-menu.js"></script>
321
322  <!-- Editorial/Navy theme header enhancer (inert unless .ed-theme is active) -->
323  
323<script defer src="/utils/theme-header.js"></script>
323
324  
324<script defer src="/utils/scroll-reveal.js"></script>
324
325</body>
326</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.