PageSourceSearch

https://drjuliagarcia.com/meet-julia/

html drjuliagarcia.com collected 2026-10-10 02:15:15 UTC 51,143 bytes, 1,139 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en-US">
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1">
6<link rel="icon" type="image/png" href="../assets/img/drj-icon.png">
7<link rel="apple-touch-icon" href="../assets/img/drj-icon.png">
8<meta name="google-site-verification" content="YjBjJh27-89CMj2XkJ46z15u_yjMvEV9PpyouMEMnEk">
9<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
10
11<title>Meet Dr. Julia Garcia — Psychologist, Author & Keynote Speaker</title>
12<meta name="description" content="Dr. Julia Garcia is a psychologist, HarperCollins author, TEDx speaker, and spoken word artist who has spent 20+ years facilitating transformation in schools, boardrooms, creative conferences, and stages worldwide.">
13<link rel="canonical" href="https://www.drjuliagarcia.com/meet-julia/">
14
15<meta property="og:type" content="profile">
16<meta property="og:title" content="Meet Dr. Julia Garcia — Psychologist, Keynote Speaker & Author">
17<meta property="og:description" content="From party girl to PhD — the story behind the practice. Dr. Julia Garcia is a psychologist, HarperCollins author, TEDx speaker, and spoken word artist.">
18<meta property="og:url" content="https://www.drjuliagarcia.com/meet-julia/">
19<meta property="og:site_name" content="Dr. Julia Garcia">
20<meta property="og:image" content="https://www.drjuliagarcia.com/assets/img/og/og-meet-julia.jpg">
21<meta property="og:image:width" content="1200">
22<meta property="og:image:height" content="630">
23<meta name="twitter:card" content="summary_large_image">
24
25<script type="application/ld+json">
26{
27  "@context": "https://schema.org",
28  "@type": "Person",
29  "name": "Dr. Julia Garcia",
30  "alternateName": "Dr. J",
31  "url": "https://www.drjuliagarcia.com",
32  "image": "https://www.drjuliagarcia.com/assets/img/julia-headshot-stage.webp",
33  "jobTitle": "Psychologist, Keynote Speaker & Author",
34  "description": "Dr. Julia Garcia is a Doctor of Psychology, HarperCollins author, TEDx speaker, spoken-word poet, and keynote speaker whose work has reached 1M+ people across 50+ countries. Creator of the Five Habits of Hope methodology.",
35  "knowsAbout": ["Psychology", "Keynote Speaking", "Hope Science", "Organizational Culture", "Mental Health", "AI and Human Behavior"],
36  "sameAs": [
37    "https://www.instagram.com/drjuliagarcia/",
38    "https://www.youtube.com/@DrJuliaGarcia",
39    "https://www.linkedin.com/in/drjuliagarcia/",
40    "https://www.amazon.com/Habits-Hope-Stories-Strategies-Help/dp/1400250854",
41    "https://topyouthspeakers.com/speakers-topics/julia-garcia"
42  ]
43}
44</script>
44
45
46<link rel="preconnect" href="https://fonts.googleapis.com">
47<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
48<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500&family=Inter:wght@300;400;500;600&family=Bebas+Neue&display=swap" rel="stylesheet">
49
50<script>if(localStorage.getItem('theme')==='dark')document.documentElement.classList.add('dark-mode');</script>
vendor: 1 bytes, line 50
50
51<script src="https://cdn.tailwindcss.com"></script>
vendor: 1 bytes, line 51
51
52<script>
53tailwind.config = {
54  theme: {
55    extend: {
56      colors: {
57        accent: '#C6A75E',
58        'accent-bright': '#C6A75E',
59        cream: '#F4F1EA',
60        deep: '#0A1A2F',
61        night: '#0A1A2F',
62        ink: 'rgb(var(--c-ink) / <alpha-value>)',
63        paper: 'rgb(var(--c-paper) / <alpha-value>)',
64        'paper-dark': 'rgb(var(--c-paper-dark) / <alpha-value>)',
65        stone: 'rgb(var(--c-stone) / <alpha-value>)',
66        rule: 'rgb(var(--c-rule) / <alpha-value>)',
67      },
68      fontFamily: {
69        serif: ['"Cormorant Garamond"','Georgia','serif'],
70        sans: ['Inter','system-ui','sans-serif'],
71        display: ['"Bebas Neue"','sans-serif'],
72        marker: ['"AtomicMarker"','cursive'],
73      },
74    },
75  },
76};
77</script>
77
78
79<style>
80@font-face {
81  font-family: 'ImogenAgnes';
82  src: url('../assets/fonts/ImogenAgnes.ttf') format('truetype');
83  font-weight: normal;
84  font-style: normal;
85  font-display: swap;
86}
87@font-face {
88  font-family: 'AtomicMarker';
89  src: url('../assets/fonts/site-fonts/AtomicMarker.otf') format('opentype');
90  font-weight: normal;
91  font-style: normal;
92  font-display: swap;
93}
94
95:root {
96  --c-ink: 15 15 15;
97  --c-paper: 244 241 234;
98  --c-paper-dark: 231 225 214;
99  --c-stone: 138 134 128;
100  --c-rule: 212 208 204;
101}
102.fill-paper-dark { fill: rgb(var(--c-paper-dark)); }
103
104/* ── Nav ── */
105#site-header { transition:background-color .3s,box-shadow .3s; }
106#site-header.header-scrolled { background-color:rgba(10,26,47,.95); backdrop-filter:blur(12px); box-shadow:0 1px 0 rgba(255,255,255,.06); }
107.nav-logo,.nav-hamburger { color:rgba(255,253,247,.8); transition:color .3s; }
108.nav-logo { font-family: 'ImogenAgnes', cursive; font-size: 24pt; letter-spacing: 0.02em; }
109.nav-link { color:rgba(255,253,247,.8); transition:color .3s; font-size: 13px; text-transform: uppercase; letter-spacing: 0.15em; font-family: 'Inter', system-ui, sans-serif; font-weight: 500; }
110.nav-link:hover { color:#C6A75E; }
111#site-header.header-scrolled .nav-logo { color:#FFFDF7; }
112#site-header.header-scrolled .nav-link { color:rgba(255,253,247,.6); }
113#site-header.header-scrolled .nav-link:hover { color:#C6A75E; }
114#nav-menu { transform:translateX(100%); transition:transform .3s cubic-bezier(.4,0,.2,1); }
115#nav-menu.nav-open { transform:translateX(0); }
116
117.formkit-submit { background: #C6A75E !important; color: #0A1A2F !important; }
118
119/* ── Editorial section ── */
120.editorial-section {
121  background: #F4F1EA;
122  position: relative;
123  overflow: hidden;
124}
125
126/* ── Splash word animations ── */
127.splash-word {
128  font-family: 'AtomicMarker', cursive;
129  opacity: 0;
130  position: absolute;
131  white-space: nowrap;
132  filter: blur(8px);
133  transform: scale(0.3) rotate(var(--rot, 0deg));
134}
135
136.splash-word.visible {
137  animation:
138    splashIn 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards,
139    floatDrift var(--float-dur, 4s) ease-in-out var(--float-start, 1.5s) infinite,
140    glowPulse 3s ease-in-out var(--float-start, 1.5s) infinite;
141  animation-delay: var(--delay, 0s), var(--float-start, 1.5s), var(--float-start, 1.5s);
142}
143
144@keyframes splashIn {
145  0% {
146    opacity: 0;
147    filter: blur(8px);
148    transform: scale(0.3) rotate(var(--rot, 0deg));
149  }
150  50% {
151    opacity: 1;
152    filter: blur(0);
153    transform: scale(1.15) rotate(var(--rot, 0deg));
154  }
155  100% {
156    opacity: 1;
157    filter: blur(0);
158    transform: scale(1) rotate(var(--rot, 0deg));
159  }
160}
161
162/* Continuous floating drift after landing */
163@keyframes floatDrift {
164  0%, 100% {
165    transform: scale(1) rotate(var(--rot, 0deg)) translate(0, 0);
166  }
167  25% {
168    transform: scale(1.03) rotate(var(--rot, 0deg)) translate(4px, -6px);
169  }
170  50% {
171    transform: scale(0.98) rotate(var(--rot, 0deg)) translate(-3px, 4px);
172  }
173  75% {
174    transform: scale(1.02) rotate(var(--rot, 0deg)) translate(5px, 2px);
175  }
176}
177
178/* Persistent glow pulse */
179@keyframes glowPulse {
180  0%, 100% {
181    text-shadow:
182      0 0 20px rgba(198,167,94,0.5),
183      0 0 40px rgba(198,167,94,0.25),
184      0 0 80px rgba(198,167,94,0.1);
185  }
186  50% {
187    text-shadow:
188      0 0 35px rgba(198,167,94,0.8),
189      0 0 70px rgba(198,167,94,0.45),
190      0 0 120px rgba(198,167,94,0.25);
191  }
192}
193
194/* ── Bio text reveal ── */
195.bio-line {
196  opacity: 0;
197  transform: translateY(20px);
198}
199.bio-line.visible {
200  animation: bioReveal 0.7s ease-out forwards;
201  animation-delay: var(--delay, 0s);
202}
203@keyframes bioReveal {
204  to {
205    opacity: 1;
206    transform: translateY(0);
207  }
208}
209
210/* ── Photo reveal ── */
211.photo-reveal {
212  opacity: 0;
213  transform: translateY(30px);
214}
215.photo-reveal.visible {
216  animation: photoUp 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
217}
218@keyframes photoUp {
219  to {
220    opacity: 1;
221    transform: translateY(0);
222  }
223}
224
225/* Responsive: stack on mobile */
226@media (max-width: 1023px) {
227  .editorial-grid {
228    grid-template-columns: 1fr !important;
229    gap: 2rem !important;
230    padding: 2rem 1.5rem !important;
231  }
232  .editorial-grid .bio-col {
233    order: 2;
234    text-align: center;
235  }
236  .editorial-grid .photo-col {
237    order: 1;
238    max-width: 400px;
239    margin: 0 auto;
240  }
241  .editorial-grid .splash-col {
242    order: 3;
243    position: relative;
244    height: 200px;
245  }
246  .splash-word {
247    position: absolute !important;
248  }
249  .now-grid {
250    grid-template-columns: 1fr !important;
251  }
252  .now-mosaic {
253    grid-template-columns: 1fr 1fr !important;
254  }
255  .now-mosaic > div { margin-top: 0 !important; }
256}
257
258/* Slow rock on mosaic images */
259.now-mosaic img {
260  transition: transform 0.6s ease;
261}
262.now-mosaic > div:nth-child(1) img { animation: slowRock1 6s ease-in-out infinite; }
263.now-mosaic > div:nth-child(2) img { animation: slowRock2 7s ease-in-out infinite; }
264.now-mosaic > div:nth-child(3) img { animation: slowRock3 5.5s ease-in-out infinite; }
265.now-mosaic > div:nth-child(4) img { animation: slowRock4 6.5s ease-in-out infinite; }
266
267@keyframes slowRock1 {
268  0%, 100% { transform: rotate(0deg) translateY(0); }
269  50% { transform: rotate(1.2deg) translateY(-4px); }
270}
271@keyframes slowRock2 {
272  0%, 100% { transform: rotate(0deg) translateY(0); }
273  50% { transform: rotate(-1deg) translateY(5px); }
274}
275@keyframes slowRock3 {
276  0%, 100% { transform: rotate(0deg) translateY(0); }
277  50% { transform: rotate(0.8deg) translateY(-6px); }
278}
279@keyframes slowRock4 {
280  0%, 100% { transform: rotate(0deg) translateY(0); }
281  50% { transform: rotate(-1.3deg) translateY(3px); }
282}
283
284@media (max-width: 1023px) {
285  .anchor-grid {
286    grid-template-columns: 1fr !important;
287  }
288  .identity-grid {
289    grid-template-columns: 1fr !important;
290    text-align: center !important;
291  }
292  .identity-grid > div { text-align: center !important; }
293}
294</style>
vendor: 59 bytes, lines 294-296
294
295
296<script src="https://www.googletagmanager.com/gtag/js?id=
296GT-TWDKGDLB
vendor: 18 bytes, line 296
296" async></script>
297<script>
vendor: 118 bytes, line 297
297window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
297GT-TWDKGDLB
vendor: 3 bytes, line 297
297');
297</script>
297
298</head>
299
300<body style="background:#0a0a0a;color:#FFFDF7;" class="font-sans antialiased">
301
302<!-- ════════════════════════════════
303     HEADER / NAV
304     ════════════════════════════════ -->
305<header id="site-header" class="fixed top-0 left-0 right-0 z-50">
306  <div class="max-w-7xl mx-auto px-6 py-5 flex items-center justify-between">
307    <a href="../index.html" class="nav-logo leading-none flex flex-col">
308      <span>Dr. Julia Garcia</span>
309      <span style="font-family:'Inter',system-ui,sans-serif; font-size:7px; text-transform:uppercase; letter-spacing:0.3em; color:rgba(255,253,247,0.5); margin-top:2px;">Speaker &nbsp;&nbsp; Psychologist &nbsp;&nbsp; Writer</span>
310    </a>
311
312    <!-- Desktop nav -->
313    <nav class="hidden lg:flex items-center gap-8" aria-label="Primary">
314      <a href="../meet-julia/" class="nav-link">Meet Dr. J</a>
315      <a href="../speaking/" class="nav-link">Speaking</a>
316      <a href="../habitsofhope/" class="nav-link">The Book</a>
317      <a href="../podcast/" class="nav-link">Podcast</a>
318      <a href="../contact/" class="nav-link">Contact</a>
319    </nav>
320
321    <!-- Mobile hamburger -->
322    <button id="nav-toggle" class="lg:hidden nav-hamburger" aria-label="Open menu" aria-expanded="false">
323      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="w-7 h-7">
324        <line x1="3" y1="7" x2="21" y2="7"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="17" x2="21" y2="17"/>
325      </svg>
326    </button>
327  </div>
328
329  <!-- Mobile overlay -->
330  <div id="nav-overlay" class="hidden fixed inset-0 bg-night/40 backdrop-blur-sm lg:hidden z-40"></div>
331
332  <!-- Mobile slide-in menu -->
333  <nav id="nav-menu" class="fixed top-0 right-0 bottom-0 w-72 bg-cream shadow-2xl z-50 lg:hidden" aria-label="Mobile">
334    <button id="nav-close" class="absolute top-5 right-5 text-stone hover:text-ink transition-colors" aria-label="Close menu">
335      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="w-6 h-6">
336        <line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/>
337      </svg>
338    </button>
339    <div class="flex flex-col gap-6 pt-20 px-8">
340      <a href="../meet-julia/" class="text-lg font-serif text-ink hover:text-accent transition-colors">Meet Dr. J</a>
341      <a href="../speaking/" class="text-lg font-serif text-ink hover:text-accent transition-colors">Speaking</a>
342      <a href="../habitsofhope/" class="text-lg font-serif text-ink hover:text-accent transition-colors">The Book</a>
343      <a href="../podcast/" class="text-lg font-serif text-ink hover:text-accent transition-colors">Podcast</a>
344      <a href="../contact/" class="text-lg font-serif text-ink hover:text-accent transition-colors">Contact</a>
345    </div>
346  </nav>
347</header>
348
349
350<!-- ════════════════════════════════
351     HERO
352     ════════════════════════════════ -->
353<section id="hero" class="relative flex items-center justify-center overflow-hidden pt-[100px] pb-[180px] md:pb-[250px]" style="min-height:75vh">
354  <!-- Video background -->
355  <video autoplay muted loop playsinline class="absolute inset-0 w-full h-full object-cover">
356    <source src="../assets/video/meet-dr-julia-garcia.mp4" type="video/mp4">
357  </video>
358  <!-- Dark gradient overlay -->
359  <div class="absolute inset-0 bg-gradient-to-b from-night/50 via-night/30 to-night/70"></div>
360  <!-- Layered wave shape divider into section below -->
361  <div class="absolute bottom-0 left-0 w-full z-20 pointer-events-none" aria-hidden="true">
362    <svg viewBox="0 0 1440 150" preserveAspectRatio="none" class="block w-full h-[100px] md:h-[140px] absolute bottom-0">
363      <path d="M0,150 L0,40 Q300,-15 650,35 Q900,70 1150,20 Q1320,-10 1440,30 L1440,150 Z" fill="#F4F1EA"/>
364    </svg>
365    <svg viewBox="0 0 1440 150" preserveAspectRatio="none" class="block w-full h-[80px] md:h-[110px] absolute bottom-0">
366      <path d="M0,150 L0,55 Q280,5 600,50 Q850,85 1100,35 Q1300,0 1440,45 L1440,150 Z" fill="#F4F1EA"/>
367    </svg>
368    <svg viewBox="0 0 1440 150" preserveAspectRatio="none" class="block w-full h-[60px] md:h-[80px] relative">
369      <path d="M0,150 L0,80 Q360,20 720,70 Q1080,120 1440,40 L1440,150 Z" fill="#F4F1EA"/>
370    </svg>
371  </div>
372  <!-- Content -->
373  <div class="relative z-10 text-center px-6 max-w-5xl">
374    <h1 class="text-white leading-[1.1] text-center">
375      <span class="block font-display uppercase text-[clamp(2.5rem,7vw,5.5rem)] tracking-[0.08em] mb-2">MEET</span>
376      <span class="block" style="font-family:'ImogenAgnes',cursive; font-size:clamp(2.5rem,7vw,5.5rem);">Dr. Julia Garcia</span>
377    </h1>
378  </div>
379</section>
380
381
382<!-- ════════════════════════════════
383     EDITORIAL BIO SECTION
384     ════════════════════════════════ -->
385<section class="editorial-section">
386  <div class="editorial-grid max-w-[1400px] mx-auto" style="display:grid; grid-template-columns:1fr 1fr 1fr; gap:0; padding:2rem 3rem 3rem; align-items:start;">
387
388    <!-- LEFT: Bio text -->
389    <div class="bio-col pr-8 lg:pr-12" style="padding-top:2rem;">
390      <h2 class="bio-line font-serif text-[#0A1A2F] leading-[1.15] mb-8" style="font-size:clamp(2rem,3.5vw,3.2rem); font-weight:500; --delay:0.1s;">
391        Hi. I&rsquo;m Dr.&nbsp;Julia Garcia.
392      </h2>
393      <p class="bio-line font-serif text-[#0A1A2F] text-[1.35rem] leading-relaxed mb-6" style="font-weight:400; --delay:0.3s;">
394        Most people call me Dr.&nbsp;J.
395      </p>
396      <p class="bio-line font-serif text-[#0A1A2F] text-[1.35rem] leading-relaxed mb-6" style="font-weight:400; --delay:0.5s;">
397        I have been doing this since I was a teenager.
398      </p>
399      <p class="bio-line font-sans text-[#2B2F33] text-[0.95rem] leading-[1.85] mb-0" style="font-weight:300; --delay:0.7s;">
400        &ldquo;This&rdquo; has looked like a lot of different things over the years. Driving around in a car with an oil leak to hand out printed flyers and burned DVD&rsquo;s of my programming to different schools. Prevention programs in high schools where the school to guidance counselor ratio was hundreds to one. A youth movement that somehow reached a quarter million people before I had language for what we were building. An award-winning technology platform for teen girls and their mental health. A crisis helpline I built from scratch during a pandemic, training people who had never done anything like it to respond to real crises on a live line, deployed across 62 countries.
401      </p>
402    </div>
403
404    <!-- CENTER: Dramatic portrait -->
405    <div class="photo-col flex justify-center photo-reveal" style="position:relative;">
406      <video autoplay muted loop playsinline
407        class="w-full max-w-[480px] rounded-xl"
408        style="box-shadow: 0 0 30px 8px rgba(198,167,94,0.35), 0 0 60px 20px rgba(198,167,94,0.15), 0 0 100px 40px rgba(198,167,94,0.08);">
409        <source src="../assets/video/dr-julia-garcia-artist-spoken-word-bw.mp4" type="video/mp4">
410      </video>
411    </div>
412
413    <!-- RIGHT: Splash identity words -->
414    <div class="splash-col relative" style="min-height:500px;" id="splash-container">
415      <span class="splash-word text-[3.5rem] md:text-[4.5rem] text-[#C6A75E]"
416            style="--rot:-8deg; --delay:0.6s; --float-start:1.4s; --float-dur:5s; top:8%; left:10%;">
417        ARTIST
418      </span>
419      <span class="splash-word text-[3rem] md:text-[4rem] text-[#0A1A2F]"
420            style="--rot:5deg; --delay:0.9s; --float-start:1.7s; --float-dur:6s; top:30%; left:5%;">
421        ACADEMIC
422      </span>
423      <span class="splash-word text-[4rem] md:text-[5rem] text-[#C6A75E]"
424            style="--rot:-3deg; --delay:1.2s; --float-start:2.0s; --float-dur:4.5s; top:52%; left:15%;">
425        POET
426      </span>
427      <span class="splash-word text-[3rem] md:text-[3.8rem] text-[#0A1A2F]"
428            style="--rot:7deg; --delay:1.5s; --float-start:2.3s; --float-dur:5.5s; top:74%; left:0%;">
429        PSYCHOLOGIST
430      </span>
431    </div>
432
433  </div>
434</section>
435
436
437<!-- ════════════════════════════════
438     NEWS ANCHOR VIDEO
439     ════════════════════════════════ -->
440<section style="background:#F4F1EA; padding:2rem 0 3rem;">
441  <div class="max-w-[1400px] mx-auto px-6 anchor-grid" style="display:grid; grid-template-columns:1fr 1fr 1fr; gap:2.5rem; align-items:start;">
442
443    <!-- Left: aspiring singer (staggered up) -->
444    <div style="padding-top:2rem;">
445      <h2 class="font-display text-[clamp(1.2rem,2vw,1.8rem)] text-[#0A1A2F] tracking-wide mb-4" style="font-weight:700;">
446        ME AS AN ASPIRING SINGER. ALSO MY PARENTS' WEDDING.
447      </h2>
448      <img
449        src="../assets/img/dr-julia-garcia-aspiring-singer-childhood.jpg"
450        alt="Young Dr. Julia Garcia as an aspiring singer"
451        class="w-full object-cover"
452        style="aspect-ratio:3/4; object-position:center; box-shadow: 0 0 30px 8px rgba(198,167,94,0.35), 0 0 60px 20px rgba(198,167,94,0.15);"
453      >
454    </div>
455
456    <!-- Center: news anchor video (staggered down) -->
457    <div style="padding-top:6rem;">
458      <h2 class="font-display text-[clamp(1.2rem,2vw,1.8rem)] text-[#0A1A2F] tracking-wide mb-4" style="font-weight:700;">
459        AND THIS WAS ME AS A YOUNG NEWS ANCHOR.
460      </h2>
461      <div style="box-shadow: 0 0 30px 8px rgba(198,167,94,0.25), 0 0 60px 20px rgba(198,167,94,0.1);">
462        <video autoplay muted loop playsinline class="w-full block" style="aspect-ratio:16/9; background:#000;">
463          <source src="../assets/video/dr-julia-garcia-news-anchor.mp4" type="video/mp4">
464        </video>
465      </div>
466    </div>
467
468    <!-- Right: field reporter photo (staggered further down) -->
469    <div style="padding-top:12rem;">
470      <h2 class="font-display text-[clamp(1.2rem,2vw,1.8rem)] text-[#0A1A2F] tracking-wide mb-4" style="font-weight:700;">
471        THIS WAS ME AS AN INTERN FIELD REPORTER
472      </h2>
473      <img
474        src="../assets/img/dr-julia-garcia-field-reporter-bw.png"
475        alt="Dr. Julia Garcia as a college field reporter"
476        class="w-full object-cover"
477        style="aspect-ratio:4/3; object-position:center;"
478      >
479    </div>
480
481  </div>
482</section>
483
484
485<!-- ════════════════════════════════
486     JOURNEY SECTION — Base Design scroll reveal
487     ════════════════════════════════ -->
488<section id="journey-section" style="background:#0A1A2F; padding:4rem 0 5rem;">
489  <div class="max-w-4xl mx-auto px-6">
490    <h2 class="font-display tracking-wide mb-16 text-center journey-line" style="font-size:clamp(2rem,5vw,3.5rem); font-weight:700; color:rgba(198,167,94,0.15); transition:color 0.6s cubic-bezier(0.25,0.1,0.25,1);">
491      MY JOURNEY HAS TAKEN A LOT OF TURNS.
492    </h2>
493    <div id="journey-text" class="space-y-0">
494      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">In between it all: I was a scholar college athlete. </span>
495      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">I spent five years in prevention and Title IX work. </span>
496      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">I dropped out of graduate school three times and went back three times. </span>
497      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">I earned a PhD in Psychology, was the first woman in my bloodline to do so. </span>
498      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">I built a racial equity platform in four days during civil unrest. </span>
499      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">I helped make history and performed at the first-ever TEDx at a women&rsquo;s correctional facility. </span>
500      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">I&rsquo;ve worked inside school gyms with no sound systems and in corporate settings with companies like Salesforce, Toyota, Verizon Go Wireless, and Typeform, </span>
501      <span class="journey-line font-serif text-[clamp(1.2rem,2.5vw,1.75rem)] leading-[1.9]" style="color:rgba(244,241,234,0.12);">who made a documentary about the work and brought me on as their summit keynote.</span>
502    </div>
503  </div>
504</section>
505
506<style>
507.journey-line {
508  display: inline;
509  transition: color 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);
510}
511.journey-line.lit {
512  color: rgba(244,241,234,0.95) !important;
513}
514h2.journey-line.lit {
515  color: #C6A75E !important;
516}
517</style>
518
519
520<!-- ════════════════════════════════
521     THE WORK NOW — editorial mosaic
522     ════════════════════════════════ -->
523<section style="background:#F4F1EA; padding:0; overflow:hidden;">
524  <!-- Giant display heading -->
525  <div class="max-w-[1400px] mx-auto px-6 pt-10 pb-4">
526    <h2 class="font-display leading-[0.9] text-[#0A1A2F]" style="font-size:clamp(4rem,12vw,11rem); letter-spacing:-0.02em;">
527      Now.
528    </h2>
529  </div>
530
531  <!-- Row 1: main photo + text -->
532  <div class="now-grid max-w-[1400px] mx-auto px-6" style="display:grid; grid-template-columns:1fr 1fr; gap:3rem; align-items:start;">
533    <!-- Left: laughing BW portrait -->
534    <div>
535      <img
536        src="../assets/img/dr-julia-garcia-laughing-bw.jpg"
537        alt="Dr. Julia Garcia"
538        class="w-full block object-cover"
539        style="aspect-ratio:3/4; object-position:center top;"
540      >
541    </div>
542    <!-- Right: text -->
543    <div style="padding-top:2rem;">
544      <p class="font-serif text-[#0A1A2F] text-[clamp(1.3rem,2.5vw,1.8rem)] leading-[1.7]" style="font-weight:400;">
545        I deliver keynotes around the country. I recently released the book, <em>The Five Habits of Hope</em>, published by HarperCollins. I am currently building an AI tool called MiniCh
545ats that does not answer for you but challenges you to answer for yourself. I speak at healthcare conferences, technology summits, association events, government agencies, and universities across the country.
546      </p>
547      <p class="font-serif text-[#0A1A2F] text-[clamp(1.3rem,2.5vw,1.8rem)] leading-[1.7] mt-8" style="font-weight:400;">
548        The framework I teach was not developed in isolation or in a lab. It was built while being in the room with the people where hope was hardest to find, and it was built by someone who had to find it for herself first.
549      </p>
550      <p class="font-serif text-[#0A1A2F] text-[clamp(1.3rem,2.5vw,1.8rem)] leading-[1.7] mt-6" style="font-weight:400;">
551        I do not do perfection. I deliver passion. Every time.
552      </p>
553      <p class="font-serif text-[#0A1A2F] text-[clamp(1.3rem,2.5vw,1.8rem)] leading-[1.7] mt-6" style="font-weight:400;">
554        No self-help could have saved a story like mine. But a practice could. And did. And does. Every day.
555      </p>
556    </div>
557  </div>
558
559  <!-- Row 2: editorial photo mosaic — 4 photos staggered -->
560  <div class="max-w-[1400px] mx-auto px-6 pt-8 pb-10 now-mosaic" style="display:grid; grid-template-columns:1fr 1.2fr 0.8fr 1fr; gap:1.5rem; align-items:end;">
561    <!-- White outfit walking — tall, shifted up -->
562    <div style="margin-top:-6rem;">
563      <img
564        src="../assets/img/dr-julia-garcia-white-outfit-walking.jpg"
565        alt="Dr. Julia Garcia"
566        class="w-full object-cover"
567        style="aspect-ratio:2/3; object-position:center top;"
568      >
569    </div>
570    <!-- Backstage mirror — square, flush -->
571    <div>
572      <img
573        src="../assets/img/dr-julia-garcia-candid-moment.jpg"
574        alt="Dr. Julia Garcia backstage"
575        class="w-full object-cover"
576        style="aspect-ratio:4/5; object-position:center;"
577      >
578    </div>
579    <!-- Writing in journal — tall, shifted up -->
580    <div style="margin-top:-4rem;">
581      <img
582        src="../assets/img/dr-julia-garcia-writing-journal-bw.jpg"
583        alt="Dr. Julia Garcia writing"
584        class="w-full object-cover"
585        style="aspect-ratio:2/3; object-position:center top;"
586      >
587    </div>
588    <!-- Dark portrait arms crossed — shorter, flush -->
589    <div>
590      <img
591        src="../assets/img/dr-julia-garcia-dark-portrait-arms.png"
592        alt="Dr. Julia Garcia portrait"
593        class="w-full object-cover"
594        style="aspect-ratio:3/4; object-position:center top;"
595      >
596    </div>
597  </div>
598</section>
599
600
601<!-- ════════════════════════════════
602     IDENTITY — text | photo | text
603     ════════════════════════════════ -->
604<section style="background:#0A1A2F; padding:3rem 0; overflow:hidden;">
605  <div class="max-w-[1400px] mx-auto px-6 identity-grid" style="display:grid; grid-template-columns:1fr auto 1fr; gap:3rem; align-items:center;">
606
607    <!-- Left text -->
608    <div class="text-right">
609      <p class="font-serif text-[#F4F1EA] leading-[1.2]" style="font-size:clamp(1.8rem,3.5vw,3.2rem); font-weight:500;">
610        I am a poet.
611      </p>
612      <p class="font-serif text-[#F4F1EA] leading-[1.2] mt-3" style="font-size:clamp(1.8rem,3.5vw,3.2rem); font-weight:500;">
613        I am a psychologist.
614      </p>
615    </div>
616
617    <!-- Center photo with glow -->
618    <div class="flex justify-center">
619      <img
620        src="../assets/img/dr-julia-garcia-on-set-rooftop.jpg"
621        alt="Dr. Julia Garcia on set"
622        class="w-[340px] md:w-[420px] object-cover"
623        style="aspect-ratio:3/4; object-position:center; box-shadow: 0 0 30px 8px rgba(198,167,94,0.35), 0 0 60px 20px rgba(198,167,94,0.15), 0 0 100px 40px rgba(198,167,94,0.08);"
624      >
625    </div>
626
627    <!-- Right text -->
628    <div class="text-left">
629      <p class="font-serif text-[#F4F1EA] leading-[1.2]" style="font-size:clamp(1.8rem,3.5vw,3.2rem); font-weight:500;">
630        I am a biracial<br>Mexican-American woman<br>and mother.
631      </p>
632      <p class="font-serif text-[#F4F1EA] leading-[1.2] mt-3" style="font-size:clamp(1.8rem,3.5vw,3.2rem); font-weight:500;">
633        I am a builder.
634      </p>
635    </div>
636
637  </div>
638</section>
639
640
641<!-- ════════════════════════════════
642     THE STORIES THAT INSPIRE ME
643     ════════════════════════════════ -->
644<section id="stories-section" style="background:#F4F1EA; padding:5rem 0 1rem; overflow:hidden;">
645  <!-- Animated title -->
646  <h2 class="stories-title font-display text-[#0A1A2F] text-center tracking-wide"
647      style="font-size:clamp(2rem,5.5vw,4.2rem); line-height:1.05; margin-bottom:4rem; padding:0 1.5rem; position:relative; z-index:10;">
648    THE STORIES THAT INSPIRE ME<br>TO KEEP BUILDING
649  </h2>
650  <p class="stories-title font-serif italic text-[#0A1A2F] text-center" style="font-size:clamp(1.4rem,3vw,2.2rem); font-weight:400; margin-top:-2rem; margin-bottom:2.5rem; position:relative; z-index:10;">
651    <span id="stories-counter">0</span> stories collected and counting
652  </p>
653
654
655  <!-- 3D cascading card gallery — full width -->
656  <div class="stories-gallery" style="perspective:1800px; position:relative; min-height:300px; width:100%; margin-top:1rem;">
657    <div class="stories-fan" style="position:absolute; inset:0; transform-style:preserve-3d; transform:rotateX(5deg) rotateY(-18deg);">
658      <img src="../assets/img/notecards/notecard-anxiety-1.jpg"   alt="Handwritten notecard" class="fan-card" data-i="0">
659      <img src="../assets/img/notecards/notecard-anxiety-2.jpg"   alt="Handwritten notecard" class="fan-card" data-i="1">
660      <img src="../assets/img/notecards/notecard-burden-1.jpg"    alt="Handwritten notecard" class="fan-card" data-i="2">
661      <img src="../assets/img/notecards/notecard-burden-2.jpg"    alt="Handwritten notecard" class="fan-card" data-i="3">
662      <img src="../assets/img/notecards/notecard-doubt-1.jpg"     alt="Handwritten notecard" class="fan-card" data-i="4">
663      <img src="../assets/img/notecards/notecard-doubt-2.jpg"     alt="Handwritten notecard" class="fan-card" data-i="5">
664      <img src="../assets/img/notecards/notecard-fear-1.jpg"      alt="Handwritten notecard" class="fan-card" data-i="6">
665      <img src="../assets/img/notecards/notecard-notenough-1.jpg" alt="Handwritten notecard" class="fan-card" data-i="7">
666      <img src="../assets/img/notecards/notecard-pressure-1.jpg"  alt="Handwritten notecard" class="fan-card" data-i="8">
667    </div>
668  </div>
669
670  <!-- Lightbox overlay for viewing individual notecards -->
671  <div id="notecard-lightbox" class="notecard-lightbox">
672    <button id="notecard-close" class="notecard-close" aria-label="Close">&times;</button>
673    <button id="notecard-prev" class="notecard-nav notecard-prev" aria-label="Previous">&lsaquo;</button>
674    <button id="notecard-next" class="notecard-nav notecard-next" aria-label="Next">&rsaquo;</button>
675    <img id="notecard-lightbox-img" src="" alt="Handwritten notecard">
676  </div>
677</section>
678
679<style>
680/* ── Cascade card base ── */
681.fan-card {
682  position: absolute;
683  width: 260px;
684  height: auto;
685  max-height: 340px;
686  object-fit: cover;
687  border-radius: 4px;
688  box-shadow: 0 12px 40px rgba(0,0,0,0.3), 0 2px 10px rgba(0,0,0,0.12);
689  transform-origin: center center;
690  opacity: 0;
691  top: 50%;
692  margin-top: -120px;
693  /* start stacked in center */
694  left: 50%;
695  margin-left: -130px;
696  transform: rotateY(-25deg) translateZ(0);
697  transition: transform 1.1s cubic-bezier(0.16, 1, 0.3, 1),
698              opacity 0.7s ease,
699              left 1.1s cubic-bezier(0.16, 1, 0.3, 1);
700}
701
702/* ── Spread horizontally across full width, angled in Y ── */
703/* Each card is positioned via left % so they span edge to edge */
704.stories-fan.fanned .fan-card[data-i="0"] { opacity:1; left:1%;   margin-left:0; transform: rotateY(-25deg) translateZ(-40px); }
705.stories-fan.fanned .fan-card[data-i="1"] { opacity:1; left:9%;   margin-left:0; transform: rotateY(-25deg) translateZ(0px); }
706.stories-fan.fanned .fan-card[data-i="2"] { opacity:1; left:18%;  margin-left:0; transform: rotateY(-25deg) translateZ(40px); }
707.stories-fan.fanned .fan-card[data-i="3"] { opacity:1; left:27%;  margin-left:0; transform: rotateY(-25deg) translateZ(80px); }
708.stories-fan.fanned .fan-card[data-i="4"] { opacity:1; left:38%;  margin-left:0; transform: rotateY(-25deg) translateZ(120px); }
709.stories-fan.fanned .fan-card[data-i="5"] { opacity:1; left:49%;  margin-left:0; transform: rotateY(-25deg) translateZ(160px); }
710.stories-fan.fanned .fan-card[data-i="6"] { opacity:1; left:59%;  margin-left:0; transform: rotateY(-25deg) translateZ(200px); }
711.stories-fan.fanned .fan-card[data-i="7"] { opacity:1; left:69%;  margin-left:0; transform: rotateY(-25deg) translateZ(240px); }
712.stories-fan.fanned .fan-card[data-i="8"] { opacity:1; left:78%;  margin-left:0; transform: rotateY(-25deg) translateZ(280px); }
713
714/* stagger reveal left to right */
715.fan-card[data-i="0"] { transition-delay: 0s; }
716.fan-card[data-i="1"] { transition-delay: 0.06s; }
717.fan-card[data-i="2"] { transition-delay: 0.12s; }
718.fan-card[data-i="3"] { transition-delay: 0.18s; }
719.fan-card[data-i="4"] { transition-delay: 0.24s; }
720.fan-card[data-i="5"] { transition-delay: 0.30s; }
721.fan-card[data-i="6"] { transition-delay: 0.36s; }
722.fan-card[data-i="7"] { transition-delay: 0.42s; }
723.fan-card[data-i="8"] { transition-delay: 0.48s; }
724
725/* z-index: right cards in front */
726.fan-card[data-i="0"] { z-index:1; }
727.fan-card[data-i="1"] { z-index:2; }
728.fan-card[data-i="2"] { z-index:3; }
729.fan-card[data-i="3"] { z-index:4; }
730.fan-card[data-i="4"] { z-index:5; }
731.fan-card[data-i="5"] { z-index:6; }
732.fan-card[data-i="6"] { z-index:7; }
733.fan-card[data-i="7"] { z-index:8; }
734.fan-card[data-i="8"] { z-index:9; }
735
736/* ── Card hover: lift & flatten to invite click ── */
737.fan-card {
738  cursor: pointer;
739}
740.stories-fan.fanned .fan-card:hover {
741  transform: rotateY(-8deg) translateZ(320px) scale(1.08) !important;
742  box-shadow: 0 20px 60px rgba(0,0,0,0.35), 0 4px 16px rgba(0,0,0,0.2);
743  z-index: 20 !important;
744}
745
746/* ── Lightbox ── */
747.notecard-lightbox {
748  position: fixed;
749  inset: 0;
750  z-index: 9999;
751  background: rgba(10,26,47,0.88);
752  display: flex;
753  align-items: center;
754  justify-content: center;
755  opacity: 0;
756  pointer-events: none;
757  transition: opacity 0.4s ease;
758  backdrop-filter: blur(8px);
759  -webkit-backdrop-filter: blur(8px);
760}
761.notecard-lightbox.open {
762  opacity: 1;
763  pointer-events: auto;
764}
765.notecard-lightbox img {
766  max-width: 85vw;
767  max-height: 80vh;
768  border-radius: 6px;
769  box-shadow: 0 20px 80px rgba(0,0,0,0.5);
770  transform: scale(0.85);
771  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
772}
773.notecard-lightbox.open img {
774  transform: scale(1);
775}
776.notecard-close {
777  position: absolute;
778  top: 1.5rem;
779  right: 2rem;
780  background: none;
781  border: none;
782  color: #F4F1EA;
783  font-size: 2.5rem;
784  cursor: pointer;
785  opacity: 0.7;
786  transition: opacity 0.2s;
787  line-height: 1;
788}
789.notecard-close:hover { opacity: 1; }
790.notecard-nav {
791  position: absolute;
792  top: 50%;
793  transform: translateY(-50%);
794  background: none;
795  border: none;
796  color: #F4F1EA;
797  font-size: 3.5rem;
798  cursor: pointer;
799  opacity: 0.6;
800  transition: opacity 0.2s;
801  line-height: 1;
802  padding: 0.5rem;
803}
804.notecard-nav:hover { opacity: 1; }
805.notecard-prev { left: 1.5rem; }
806.notecard-next { right: 1.5rem; }
807
808/* ── Title animation ── */
809.stories-title {
810  opacity: 0;
811  transform: translateY(50px);
812  transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
813              transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
814}
815.stories-title.visible {
816  opacity: 1;
817  transform: translateY(0);
818}
819
820/* ── Mobile ── */
821@media (max-width: 768px) {
822  .stories-gallery { min-height: 360px; }
823  .stories-fan { transform: rotateX(4deg) rotateY(-14deg); }
824  .fan-card {
825    width: 140px;
826    max-height: 190px;
827    margin-top: -95px;
828    margin-left: -70px;
829  }
830  .stories-fan.fanned .fan-card[data-i="0"] { left:0%;  margin-left:0; transform: rotateY(-20deg) translateZ(-20px); }
831  .stories-fan.fanned .fan-card[data-i="1"] { left:8%;  margin-left:0; transform: rotateY(-20deg) translateZ(0px); }
832  .stories-fan.fanned .fan-card[data-i="2"] { left:16%; margin-left:0; transform: rotateY(-20deg) translateZ(20px); }
833  .stories-fan.fanned .fan-card[data-i="3"] { left:24%; margin-left:0; transform: rotateY(-20deg) translateZ(40px); }
834  .stories-fan.fanned .fan-card[data-i="4"] { left:34%; margin-left:0; transform: rotateY(-20deg) translateZ(60px); }
835  .stories-fan.fanned .fan-card[data-i="5"] { left:44%; margin-left:0; transform: rotateY(-20deg) translateZ(80px); }
836  .stories-fan.fanned .fan-card[data-i="6"] { left:54%; margin-left:0; transform: rotateY(-20deg) translateZ(100px); }
837  .stories-fan.fanned .fan-card[data-i="7"] { left:64%; margin-left:0; transform: rotateY(-20deg) translateZ(120px); }
838  .stories-fan.fanned .fan-card[data-i="8"] { left:74%; margin-left:0; transform: rotateY(-20deg) translateZ(140px); }
839}
840</style>
841
842<script>
843(function() {
844  const section = document.getElementById('stories-section');
845  if (!section) return;
846  const title = section.querySelector('.stories-title');
847  const fan   = section.querySelector('.stories-fan');
848  let triggered = false;
849
850  function check() {
851    if (triggered) return;
852    const rect = section.getBoundingClientRect();
853    if (rect.top < window.innerHeight * 0.8) {
854      triggered = true;
855      section.querySelectorAll('.stories-title').forEach(function(el) { el.classList.add('visible'); });
856      // animate counter
857      var counter = document.getElementById('stories-counter');
858      var target = 250000;
859      var duration = 2000;
860      var start = performance.now();
861      function tick(now) {
862        var elapsed = now - start;
863        var progress = Math.min(elapsed / duration, 1);
864        var ease = 1 - Math.pow(1 - progress, 3);
865        counter.textContent = Math.floor(ease * target).toLocaleString();
866        if (progress < 1) requestAnimationFrame(tick);
867      }
868      setTimeout(function() { requestAnimationFrame(tick); }, 600);
869      setTimeout(() => fan.classList.add('fanned'), 400);
870    }
871  }
872  window.addEventListener('scroll', check, { passive: true });
873  check();
874
875  // ── Lightbox logic ──
876  const cards = section.querySelectorAll('.fan-card');
877  const lightbox = document.getElementById('notecard-lightbox');
878  const lbImg    = document.getElementById('notecard-lightbox-img');
879  const btnClose = document.getElementById('notecard-close');
880  const btnPrev  = document.getElementById('notecard-prev');
881  const btnNext  = document.getElementById('notecard-next');
882  let currentIdx = 0;
883
884  function openCard(i) {
885    currentIdx = i;
886    lbImg.src = cards[i].src;
887    lightbox.classList.add('open');
888    document.body.style.overflow = 'hidden';
889  }
890  function closeCard() {
891    lightbox.classList.remove('open');
892    document.body.style.overflow = '';
893  }
894  function prevCard() {
895    currentIdx = (currentIdx - 1 + cards.length) % cards.length;
896    lbImg.src = cards[currentIdx].src;
897  }
898  function nextCard() {
899    currentIdx = (currentIdx + 1) % cards.length;
900    lbImg.src = cards[currentIdx].src;
901  }
902
903  cards.forEach(function(card, i) {
904    card.addEventListener('click', function() { openCard(i); });
905  });
906  btnClose.addEventListener('click', closeCard);
907  btnPrev.addEventListener('click', prevCard);
908  btnNext.addEventListener('click', nextCard);
909  lightbox.addEventListener('click', function(e) {
910    if (e.target === lightbox) closeCard();
911  });
912  document.addEventListener('keydown', function(e) {
913    if (!lightbox.classList.contains('open')) return;
914    if (e.key === 'Escape') closeCard();
915    if (e.key === 'ArrowLeft') prevCard();
916    if (e.key === 'ArrowRight') nextCard();
917  });
918})();
919</script>
919
920
921
922<!-- ════════════════════════════════
923     I LOVE BUILDING
924     ════════════════════════════════ -->
925<section id="build-section" style="background:#F4F1EA; padding:6rem 0; overflow:hidden;">
926  <div class="max-w-5xl mx-auto px-6 text-center">
927    <p class="build-line font-serif italic text-[#0A1A2F] leading-[1.3] mb-8" style="font-size:clamp(1.8rem,3.5vw,2.8rem); font-weight:400;">
928      I love building.
929    </p>
930    <h2 class="build-line font-display text-[#0A1A2F] leading-[0.92] mb-8" style="font-size:clamp(2.8rem,7vw,6rem); letter-spacing:-0.01em; font-weight:700;">
931      WHETHER IT&rsquo;S COMMUNITY,<br>TECHNOLOGY OR A STRONG<br>CUP OF ESPRESSO,
932    </h2>
933    <p class="build-line font-serif italic text-[#0A1A2F] leading-[1.3] mb-10" style="font-size:clamp(1.8rem,4vw,3.2rem); font-weight:400;">
934      I am built to <span class="font-display uppercase not-italic tracking-wide" style="font-weight:700; font-size:1.2em;">BUILD</span>
935    </p>
936    <a href="../contact/" class="build-line inline-block bg-[#C6A75E] text-[#0A1A2F] px-10 py-4 font-sans font-semibold text-sm uppercase tracking-[0.2em] hover:bg-[#b0943f] transition-colors">
937      Let&rsquo;s Build Together &rarr;
938    </a>
939  </div>
940</section>
941
942<style>
943/* Vercel Ship-style: lines slide up + fade in on scroll */
944.build-line {
945  opacity: 0;
946  transform: translateY(40px);
947  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
948              transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
949}
950.build-line.build-visible {
951  opacity: 1;
952  transform: translateY(0);
953}
954</style>
955
956<script>
957(function() {
958  const section = document.getElementById('build-section');
959  if (!section) return;
960  const lines = section.querySelectorAll('.build-line');
961  let triggered = false;
962  function check() {
963    if (triggered) return;
964    const rect = section.getBoundingClientRect();
965    if (rect.top < window.innerHeight * 0.75) {
966      triggered = true;
967      lines.forEach((el, i) => {
968        setTimeout(() => el.classList.add('build-visible'), i * 200);
969      });
970    }
971  }
972  window.addEventListener('scroll', check, { passive: true });
973  check();
974})();
975</script>
975
976
977
978<!-- ════════════════════════════════
979     SPEAKING REEL — full width
980     ════════════════════════════════ -->
981<section class="relative overflow-hidden" style="min-height:60vh;">
982  <!-- Video background -->
983  <video autoplay muted loop playsinline class="absolute inset-0 w-full h-full object-cover">
984    <source src="../assets/video/dr-julia-garcia-female-keynote-ai-speaker-health.mp4" type="video/mp4">
985  </video>
986  <!-- Dark overlay -->
987  <div class="absolute inset-0 bg-night/60"></div>
988  <!-- Content -->
989  <div class="relative z-10 flex flex-col items-center justify-center text-center py-20 md:py-28">
990    <h2 class="font-display text-white text-center tracking-wide" style="font-size:clamp(2.5rem,7vw,5.5rem); line-height:1; margin-bottom:2rem;">
991      LET&rsquo;S BUILD TOGETHER
992    </h2>
993    <a href="../contact/" class="inline-block font-sans text-white font-semibold uppercase tracking-[0.15em] text-sm px-10 py-4 transition-all hover:scale-105" style="background:#C6A75E; letter-spacing:0.15em;">
994      Get in Touch
995    </a>
996  </div>
997</section>
998
999
1000<!-- ════════════════════════════════
1001     FOOTER
1002     ════════════════════════════════ -->
1003<footer class="relative overflow-hidden" style="background: #0A1A2F url('../assets/img/footer-bg.jpg') center center / cover no-repeat;">
1004  <!-- Curve crops the top of the image, arcing upward -->
1005  <div class="relative z-10" style="margin-top: -1px;" aria-hidden="true">
1006    <svg viewBox="0 0 1200 120" preserveAspectRatio="none" class="w-full h-[80px] md:h-[100px]" style="display: block;">
1007      <path d="M0,0 L1200,0 L1200,120 Q600,20 0,120 Z" fill="rgb(var(--c-paper))"/>
1008    </svg>
1009  </div>
1010  <!-- Dark overlay for readability -->
1011  <div class="absolute inset-0 bg-deep/70"></div>
1012
1013  <div class="relative z-10">
1014    <!-- Name lockup -->
1015    <div class="text-center pt-32 md:pt-40 pb-6">
1016      <span class="font-marker text-6xl md:text-7xl lg:text-8xl text-cream/80">Dr. Julia Garcia</span>
1017    </div>
1018
1019    <div class="max-w-6xl mx-auto px-6 py-16">
1020    <div class="grid grid-cols-1 md:grid-cols-3 gap-12">
1021      <!-- Navigation -->
1022      <div>
1023        <h4 class="text-[13px] uppercase tracking-[0.15em] text-cream font-sans font-medium mb-5">Navigation</h4>
1024        <ul class="space-y-3">
1025          <li><a href="../meet-julia/" class="text-sm text-cream/60 hover:text-accent transition-colors font-sans">Meet Dr. J</a></li>
1026          <li><a href="../speaking/" class="text-sm text-cream/60 hover:text-accent transition-colors font-sans">Speaking</a></li>
1027          <li class="pl-3"><a href="../speaking/" class="text-xs text-cream/40 hover:text-accent transition-colors font-sans">Educators &amp; Staff</a></li>
1028          <li class="pl-3"><a href="../speaking-college-university/" class="text-xs text-cream/40 hover:text-accent transition-colors font-sans">College &amp; University</a></li>
1029          <li class="pl-3"><a href="../speaking-student/" class="text-xs text-cream/40 hover:text-accent transition-colors font-sans">Grade 6-12 Students</a></li>
1030          <li><a href="../habitsofhope/" class="text-sm text-cream/60 hover:text-accent transition-colors font-sans">The Book</a></li>
1031          <li><a href="../podcast/" class="text-sm text-cream/60 hover:text-accent transition-colors font-sans">Podcast</a></li>
1032          <li><a href="../contact/" class="text-sm text-cream/60 hover:text-accent transition-colors font-sans">Contact</a></li>
1033        </ul>
1034      </div>
1035      <!-- Social -->
1036      <div>
1037        <h4 class="text-[13px] uppercase tracking-[0.15em] text-cream font-sans font-medium mb-5">Social</h4>
1038        <ul class="space-y-3">
1039          <li><a href="https://www.instagram.com/drjuliagarcia/" target="_blank" rel="noopener" class="inline-flex items-center gap-2 text-sm text-cream/60 hover:text-accent transition-colors font-sans">Instagram</a></li>
1040          <li><a href="https://www.linkedin.com/in/juliagarcianyc" target="_blank" rel="noopener" class="inline-flex items-center gap-2 text-sm text-cream/60 hover:text-accent transition-colors font-sans">LinkedIn</a></li>
1041        </ul>
1042      </div>
1043      <!-- Subscribe -->
1044      <div>
1045        <h4 class="text-[13px] uppercase tracking-[0.15em] text-cream font-sans font-medium mb-5">Stay Connected</h4>
1046        
1046<script async data-uid="406ffea2cb" src="https://sincerely-drj.kit.com/406ffea2cb/index.js"></script>
1046
1047      </div>
1048    </div>
1049
1050      <!-- Bottom bar -->
1051      <div class="mt-14 pt-6 border-t border-cream/10 flex flex-col md:flex-row justify-between items-center gap-4">
1052        <span class="text-sm text-cream/40 font-sans">&copy; Dr Julia Garcia | Represented by <a href="https://topyouthspeakers.com/speakers-topics/julia-garcia" target="_blank" rel="noopener" class="text-accent-bright hover:text-accent transition-colors">TYS Speakers</a></span>
1053      </div>
1054    </div>
1055  </div>
1056</footer>
1057
1058
1059<!-- ── Scripts ── -->
1060<script>
1061// Header scroll effect
1062const header = document.getElementById('site-header');
1063window.addEventListener('scroll', () => {
1064  header.classList.toggle('header-scrolled', window.scrollY > 60);
1065});
1066
1067// Mobile nav
1068const toggle = document.getElementById('nav-toggle');
1069const menu = document.getElementById('nav-menu');
1070const overlay = document.getElementById('nav-overlay');
1071const close = document.getElementById('nav-close');
1072function openNav(){ menu.classList.add('nav-open'); overlay.classList.remove('hidden'); document.body.style.overflow='hidden'; }
1073function closeNav(){ menu.classList.remove('nav-open'); overlay.classList.add('hidden'); document.body.style.overflow=''; }
1074toggle.addEventListener('click', openNav);
1075close.addEventListener('click', closeNav);
1076overlay.addEventListener('click', closeNav);
1077
1078// Scroll-triggered animations
1079const observer = new IntersectionObserver((entries) => {
1080  entries.forEach(entry => {
1081    if (entry.isIntersecting) {
1082      // Bio lines
1083      entry.target.querySelectorAll('.bio-line').forEach(el => el.classList.add('visible'));
1084      // Photo
1085      if (entry.target.classList.contains('photo-reveal')) entry.target.classList.add('visible');
1086      // Splash words — splash in, then continuous float + glow via CSS
1087      entry.target.querySelectorAll('.splash-word').forEach(el => {
1088        el.classList.add('visible');
1089      });
1090      observer.unobserve(entry.target);
1091    }
1092  });
1093}, { threshold: 0.2 });
1094
1095// Observe the editorial section
1096document.querySelectorAll('.bio-col, .photo-reveal, .splash-col').forEach(el => {
1097  observer.observe(el);
1098});
1099
1100// ── Journey scroll-reveal (Base Design style) ──
1101(function() {
1102  const lines = document.querySelectorAll('#journey-text .journey-line');
1103  const section = document.getElementById('journey-section');
1104  if (!section || !lines.length) return;
1105
1106  function updateJourney() {
1107    const rect = section.getBoundingClientRect();
1108    const vh = window.innerHeight;
1109    // Progress: 0 when section top hits viewport bottom, 1 when section bottom hits viewport top
1110    const totalScroll = rect.height + vh;
1111    const scrolled = vh - rect.top;
1112    const progress = Math.max(0, Math.min(1, scrolled / totalScroll));
1113
1114    // Map progress to line reveals — each line lights up progressively
1115    const step = 1 / (lines.length + 2); // +2 gives breathing room
1116    lines.forEach((line, i) => {
1117      const threshold = step * (i + 1);
1118      if (progress >= threshold) {
1119        line.classList.add('lit');
1120      } else {
1121        line.classList.remove('lit');
1122      }
1123    });
1124
1125    // Also light up the heading
1126    const heading = section.querySelector('h2.journey-line');
1127    if (heading) {
1128      if (progress >= step * 0.3) heading.classList.add('lit');
1129      else heading.classList.remove('lit');
1130    }
1131  }
1132
1133  window.addEventListener('scroll', updateJourney, { passive: true });
1134  updateJourney();
1135})();
1136</script>
vendor: 1 bytes, line 1136
1136
1137<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"81b48577ad3441e69b7c0e4ad2679678","r":1,"spa":2}' crossorigin="anonymous"></script>
1137
1138</body>
1139</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.