PageSourceSearch

https://pod.servicespace.org/about

html servicespace.org collected 2026-10-02 04:56:34 UTC 61,722 bytes, 1,177 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    
7    <!-- Title: Use HTML_TITLE from generateMetaTags if set, else build dynamically -->
8    <title>About Us | ServiceSpace Pods</title>
9    
10    <!-- Meta Tags: Use META from generateMetaTags if set, else use inline defaults -->
11        <meta name='title' content='About Us' />
12<meta name='description' content='Learn about ServiceSpace Pods - intimate, peer-led learning circles that weave together contemplation, practice, and connection for transformative change.' />
13<meta name='keywords' content='about servicespace pods, peer learning, community, transformation' />
14<meta property='og:image' content='https://pod.servicespace.org/pics/logos/ssp_pod_og.png' />
15<meta property='og:description' content='A unique -- hands, head and heart -- peer-learning environment for change-makers.' />
16<meta property='og:title' content='About Us' />
17<meta property='og:url' content='https://pod.servicespace.org' />
18<meta property='og:type' content='website' />
19<meta property='twitter:card' content='summary_large_image' />
20<meta property='twitter:title' content='About Us' />
21<meta property='twitter:description' content='ServiceSpace Pods offer a unique peer learning environment for everyday heroes and change-makers to create social change while leading with inner transformation.' />
22<meta property='twitter:image' content='https://www.karunavirus.org/pics/lotos_775x440.jpg' />
23
24        
25    <!-- Base URL - Set per site -->
26        <base href="https://pod.servicespace.org/">
27    <!-- jQuery -->
28    
28<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
28
29        
30    <!-- Favicons -->
31    <link rel="shortcut icon" href="https://www.servicespace.org/favicon.ico">
32    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="images/ico/apple-touch-icon-144-precomposed.png">
33    
34    <!-- Google Fonts -->
35    <link rel="preconnect" href="https://fonts.googleapis.com">
36    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
37    <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=DM+Sans:opsz,[email protected],400;9..40,500;9..40,600&display=swap" rel="stylesheet">
38    
39    <!-- Bootstrap Icons -->
40    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
41    
42    <!-- Swiper CSS (for carousels) -->
43    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
44    
45    <!-- ============================================
46         GLOBAL STYLES - Header/Footer (all sites)
47         ============================================ -->
48    <link rel="stylesheet" href="https://pod.servicespace.org/assets/css/welcome/global_styles.css?v=2how">
49    
50    <!-- ============================================
51         PAGE STYLES - Site-specific
52         ============================================ -->
53        <!-- Pod Platform Unified Styles -->
54    <link rel="stylesheet" href="https://pod.servicespace.org/assets/css/welcome/uni_variables.css?v=2how">
55    <link rel="stylesheet" href="https://pod.servicespace.org/assets/css/welcome/uni_base.css?v=2how">
56    <link rel="stylesheet" href="https://pod.servicespace.org/assets/css/welcome/uni_components.css?v=2how">
57    <link rel="stylesheet" href="https://pod.servicespace.org/assets/css/welcome/pod_responsive.css?v=2how">
58    <link rel="stylesheet" href="https://pod.servicespace.org/assets/css/welcome/pod_form.css?v=2how">
59        
60        
61        
62        </head>
63<body class="">
64
65            <!-- ============================================
66         GLOBAL HEADER
67         ============================================ -->
68    <header class="ss-header">
69        <div class="ss-header-container">
70            
71            <!-- Logo Area -->
72            <div class="ss-logo-area">
73                <a href="https://www.servicespace.org/" class="ss-logo">
74                    <img src="https://www.servicespace.org/images/index2026/logo_sm2.png" alt="ServiceSpace">
75                </a>
76                                <a href="https://pod.servicespace.org/welcome" class="ss-logo-suffix">Pods</a>
77                            </div>
78            
79            <!-- Desktop Navigation -->
80            <nav class="ss-nav">
81                
82                <!-- Ecosystem Dropdown -->
83                <div class="ss-nav-item">
84                    <button class="ss-nav-link">
85                        Ecosystem <i class="bi bi-chevron-down"></i>
86                    </button>
87                    <div class="ss-dropdown ss-dropdown-wide">
88                        <a href="https://www.servicespace.org/projects" class="ss-dropdown-item">
89                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-teal) 0%, var(--ss-teal-deep) 100%);">
90                                <i class="bi bi-flower1"></i>
91                            </div>
92                            <div class="ss-dropdown-content">
93                                <div class="ss-dropdown-title">Explore All Projects</div>
94                                <div class="ss-dropdown-desc">Our family of projects</div>
95                            </div>
96                        </a>
97                        
98                        <div class="ss-dropdown-divider"></div>
99                        
100                        <a href="https://www.dailygood.org" class="ss-dropdown-item" target="_blank">
101                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-gold) 0%, #e8b84a 100%);">
102                                <i class="bi bi-sun"></i>
103                            </div>
104                            <div class="ss-dropdown-content">
105                                <div class="ss-dropdown-title">DailyGood</div>
106                                <div class="ss-dropdown-desc">News that inspires</div>
107                            </div>
108                        </a>
109                        
110                        <a href="https://www.karmakitchen.org" class="ss-dropdown-item" target="_blank">
111                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-coral) 0%, #e07a65 100%);">
112                                <i class="bi bi-heart"></i>
113                            </div>
114                            <div class="ss-dropdown-content">
115                                <div class="ss-dropdown-title">Karma Kitchen</div>
116                                <div class="ss-dropdown-desc">Pay-it-forward restaurants</div>
117                            </div>
118                        </a>
119                        
120                        <a href="https://www.awakin.org" class="ss-dropdown-item" target="_blank">
121                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-sage) 0%, #7fb578 100%);">
122                                <i class="bi bi-circle"></i>
123                            </div>
124                            <div class="ss-dropdown-content">
125                                <div class="ss-dropdown-title">Awakin Circles</div>
126                                <div class="ss-dropdown-desc">Weekly meditation gatherings</div>
127                            </div>
128                        </a>
129                        
130                        <div class="ss-dropdown-footer">
131                            <a href="https://www.servicespace.org/projects">View all 20+ initiatives →</a>
132                        </div>
133                    </div>
134                </div>
135                
136                <!-- Pods Dropdown -->
137                <div class="ss-nav-item">
138                    <button class="ss-nav-link active">
139                        Pods <i class="bi bi-chevron-down"></i>
140                    </button>
141                    <div class="ss-dropdown">
142                        <a href="https://pod.servicespace.org/welcome" class="ss-dropdown-item">
143                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-teal) 0%, var(--ss-teal-light) 100%);">
144                                <i class="bi bi-brightness-high"></i>
145                            </div>
146                            <div class="ss-dropdown-content">
147                                <div class="ss-dropdown-title">What Are Pods?</div>
148                                <div class="ss-dropdown-desc">An introduction to learning pods</div>
149                            </div>
150                        </a>
151                        
152                        <div class="ss-dropdown-divider"></div>
153                        
154                        <a href="https://pod.servicespace.org/apply" class="ss-dropdown-item">
155                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-gold) 0%, #e8b84a 100%);">
156                                <i class="bi bi-search"></i>
157                            </div>
158                            <div class="ss-dropdown-content">
159                                <div class="ss-dropdown-title">Join a Pod</div>
160                                <div class="ss-dropdown-desc">Find your next journey</div>
161                            </div>
162                        </a>
163                        
164                        <a href="https://pod.servicespace.org/about" class="ss-dropdown-item">
165                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-sage) 0%, #7fb578 100%);">
166                                <i class="bi bi-book"></i>
167                            </div>
168                            <div class="ss-dropdown-content">
169                                <div class="ss-dropdown-title">Our Approach</div>
170                                <div class="ss-dropdown-desc">How transformative learning works</div>
171                            </div>
172                        </a>
173                        
174                        <a href="https://pod.servicespace.org/host" class="ss-dropdown-item">
175                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-coral) 0%, #e07a65 100%);">
176                                <i class="bi bi-person-plus"></i>
177                            </div>
178                            <div class="ss-dropdown-content">
179                                <div class="ss-dropdown-title">Host a Pod</div>
180                                <div class="ss-dropdown-desc">Create space for others</div>
181                            </div>
182                        </a>
183                    </div>
184                </div>
185                
186                <!-- About Dropdown -->
187                <div class="ss-nav-item">
188                    <button class="ss-nav-link">
189                        About <i class="bi bi-chevron-down"></i>
190                    </button>
191                    <div class="ss-dropdown">
192                        <a href="https://www.servicespace.org/about" class="ss-dropdown-item">
193                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-teal) 0%, var(--ss-teal-deep) 100%);">
194                                <i class="bi bi-book"></i>
195                            </div>
196                            <div class="ss-dropdown-content">
197                                <div class="ss-dropdown-title">About Us</div>
198                                <div class="ss-dropdown-desc">Our values, story &amp; people</div>
199                            </div>
200                        </a>
201                        
202                        <a href="https://www.servicespace.org/vision" class="ss-dropdown-item">
203                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-gold) 0%, #e8b84a 100%);">
204                                <i class="bi bi-eye"></i>
205                            </div>
206                            <div class="ss-dropdown-content">
207                                <div class="ss-dropdown-title">Our Vision</div>
208                                <div class="ss-dropdown-desc">Change yourself, change the world</div>
209                            </div>
210                        </a>
211                        
212                        <a href="https://www.servicespace.org/join" class="ss-dropdown-item">
213                            <div class="ss-dropdown-icon" style="background: linear-gradient(135deg, var(--ss-sage) 0%, #7fb578 100%);">
214                                <i class="bi bi-people"></i>
215                            </div>
216                            <div class="ss-dropdown-content">
217                                <div class="ss-dropdown-title">Get Involved</div>
218                                <div class="ss-dropdown-desc">Join the movement</div>
219                            </div>
220                        </a>
221                        
222                        <div class="ss-dropdown-divider"></div>
223                        
224                        <a href="https://pod.servicespace.org/contact" class="ss-dropdown-item">
225                            <div class="ss-dropdown-icon" style="background: var(--ss-cream); color: var(--ss-teal);">
226                                <i class="bi bi-envelope"></i>
227                            </div>
228                            <div class="ss-dropdown-content">
229                                <div class="ss-dropdown-title">Contact Us</div>
230                                <div class="ss-dropdown-desc">Reach our team</div>
231                            </div>
232                        </a>
233                    </div>
234                </div>
235                
236            </nav>
237            
238            <!-- Auth Buttons -->
239            <div class="ss-auth">
240                                    <!-- Logged Out State -->
241                    <a href="https://pod.servicespace.org/login" class="ss-btn ss-btn-outline">
242                        Sign In
243                    </a>
244                    <a href="https://pod.servicespace.org/join" class="ss-btn ss-btn-primary">
245                        Join <i class="bi bi-arrow-right"></i>
246                    </a>
247                            </div>
248            
249            <!-- Mobile Toggle -->
250            <button class="ss-mobile-toggle" aria-label="Toggle menu">
251                <span class="ss-hamburger"></span>
252            </button>
253            
254        </div>
255    </header>
256    
257    <!-- Mobile Menu -->
258    <div class="ss-mobile-menu">
259        
260        <div class="ss-mobile-nav-item">
261            <button class="ss-mobile-nav-link">
262                Ecosystem <i class="bi bi-chevron-down"></i>
263            </button>
264            <div class="ss-mobile-subnav">
265                <a href="https://www.servicespace.org/projects">Explore All Projects</a>
266                <a href="https://www.dailygood.org">DailyGood</a>
267                <a href="https://www.karmakitchen.org">Karma Kitchen</a>
268                <a href="https://www.awakin.org">Awakin Circles</a>
269                <a href="https://www.kindspring.org">KindSpring</a>
270            </div>
271        </div>
272        
273        <div class="ss-mobile-nav-item">
274            <button class="ss-mobile-nav-link">
275                Pods <i class="bi bi-chevron-down"></i>
276            </button>
277            <div class="ss-mobile-subnav">
278                <a href="https://pod.servicespace.org/welcome">What Are Pods?</a>
279                <a href="https://pod.servicespace.org/apply">Join a Pod</a>
280                <a href="https://pod.servicespace.org/about">Our Approach</a>
281                <a href="https://pod.servicespace.org/host">Host a Pod</a>
282            </div>
283        </div>
284        
285        <div class="ss-mobile-nav-item">
286            <button class="ss-mobile-nav-link">
287                About <i class="bi bi-chevron-down"></i>
288            </button>
289            <div class="ss-mobile-subnav">
290                <a href="https://www.servicespace.org/about">Who We Are</a>
291                <a href="https://www.servicespace.org/vision">Our Vision</a>
292                <a href="https://www.servicespace.org/join">Get Involved</a>
293                <a href="https://pod.servicespace.org/contact">Contact Us</a>
294            </div>
295        </div>
296        
297        <div class="ss-mobile-auth">
298                            <a href="https://pod.servicespace.org/login" class="ss-btn ss-btn-outline">Sign In</a>
299                <a href="https://pod.servicespace.org/join" class="ss-btn ss-btn-primary">Join Now</a>
300                    </div>
301        
302    </div>
303    
304    
304<script>
305    document.addEventListener('DOMContentLoaded', function() {
306        const header = document.querySelector('.ss-header');
307        const mobileToggle = document.querySelector('.ss-mobile-toggle');
308        const mobileMenu = document.querySelector('.ss-mobile-menu');
309        
310        // Header scroll effect
311        if (header) {
312            window.addEventListener('scroll', function() {
313                if (window.scrollY > 50) {
314                    header.classList.add('scrolled');
315                } else {
316                    header.classList.remove('scrolled');
317                }
318            });
319        }
320        
321        // Mobile toggle
322        if (mobileToggle && mobileMenu) {
323            mobileToggle.addEventListener('click', function() {
324                this.classList.toggle('active');
325                mobileMenu.classList.toggle('open');
326                document.body.style.overflow = mobileMenu.classList.contains('open') ? 'hidden' : '';
327            });
328        }
329        
330        document.querySelectorAll('.ss-mobile-nav-item').forEach(item => {
331            item.querySelector('.ss-mobile-nav-link').addEventListener('click', function() {
332                document.querySelectorAll('.ss-mobile-nav-item').forEach(other => {
333                    if (other !== item) other.classList.remove('open');
334                });
335                item.classList.toggle('open');
336            });
337        });
338        
339        document.querySelectorAll('.ss-mobile-subnav a').forEach(link => {
340            link.addEventListener('click', function() {
341                mobileToggle.classList.remove('active');
342                mobileMenu.classList.remove('open');
343                document.body.style.overflow = '';
344            });
345        });
346    });
347    </script>
347
348    
349    <main>
350
351
352    <!-- Page-specific styles -->
353    <link rel="stylesheet" href="assets/css/welcome/about_uni.css?2how">
354
355    <!-- ============================================
356         HERO - Lead with the Question
357         ============================================ -->
358    <section class="about-hero">
359        <div class="container">
360            <p class="hero-welcome">Welcome to Pods</p>
361            <h1>How can we lead with love?</h1>
362            <p class="hero-subtext">
363                How can our hearts lead our head and hands? This is the question that brings us together—teachers and students, speakers and listeners, renowned personalities and everyday heroes. Not to find the answer, but to live inside the inquiry.
364            </p>
365        </div>
366    </section>
367
368    <!-- ============================================
369         THE INVITATION - Not a Course, a Container
370         ============================================ -->
371    <section class="invitation-section">
372        <div class="container">
373            <div class="invitation-content">
374                <h2>This isn't a course.</h2>
375                <p class="invitation-lead">It's a container for something to emerge.</p>
376                
377                <div class="invitation-text">
378                    <p>We truly don't know what we'll turn out to be. And we don't want to know. As coders would often quip, <em>that's not a bug—it's a feature.</em></p>
379                    
380                    <p>If you're looking for "takeaways," Google is going to be far more efficient than a 21-day pod. Here, what we're actually doing is building <strong>context</strong>—the quality of presence, the depth of trust, the authenticity of relationship. These create the conditions where transformation happens.</p>
381                    
382                    <p>You'll be in a circle with others from around the world. A CEO and a parent sit as equals. A student and an elder share from the heart. Everyone brings wisdom. Everyone learns.</p>
383                </div>
384                
385                <a href="#rhythm" class="scroll-hint">
386                    <span>The Rhythm</span>
387                    <i class="bi bi-chevron-down"></i>
388                </a>
389            </div>
390        </div>
391    </section>
392
393    <!-- ============================================
394         THE RHYTHM - Head, Hands, Heart Interwoven Daily
395         ============================================ -->
396    <section class="rhythm-section" id="rhythm">
397        <div class="container">
398            <header class="section-header">
399                <h2>A Gentle Rhythm</h2>
400                <p>Each day, head, hands, and heart weave together—not as separate moments, but as a living practice.</p>
401            </header>
402            
403            <div class="rhythm-flow">
404                <div class="rhythm-moment">
405                    <div class="rhythm-when">Each Morning</div>
406                    <div class="rhythm-card rhythm-card-gold">
407                        <img src="https://pod.servicespace.org/pics/2025site/head_icon.png" alt="" class="rhythm-icon">
408                        <span class="rhythm-label">HEAD</span>
409                        <h3>A prompt arrives</h3>
410                        <p>An invitation to pause and notice something you might otherwise miss.</p>
411                        <div class="rhythm-example">
412                            <em>"What gift have you received that you've never acknowledged?"</em>
413                        </div>
414                    </div>
415                </div>
416                
417                <div class="rhythm-connector">
418                    <svg viewBox="0 0 40 80" preserveAspectRatio="none">
419                        <path d="M20,0 Q30,40 20,80" stroke="currentColor" stroke-width="2" fill="none" stroke-dasharray="4,4"/>
420                    </svg>
421                </div>
422                
423                <div class="rhythm-moment">
424                    <div class="rhythm-when">Throughout the Day</div>
425                    <div class="rhythm-card rhythm-card-sage">
426                        <img src="https://pod.servicespace.org/pics/2025site/hand_icon.png" alt="" class="rhythm-icon">
427                        <span class="rhythm-label">HANDS</span>
428                        <h3>A small experiment</h3>
429                        <p>Not grand gestures—just presence. Wisdom without action remains philosophy.</p>
430                        <div class="rhythm-example">
431                            <em>"Listen to someone today without planning your response."</em>
432                        </div>
433                    </div>
434                </div>
435                
436                <div class="rhythm-connector">
437                    <svg viewBox="0 0 40 80" preserveAspectRatio="none">
438                        <path d="M20,0 Q10,40 20,80" stroke="currentColor" stroke-width="2" fill="none" stroke-dasharray="4,4"/>
439                    </svg>
440                </div>
441                
442                <div class="rhythm-moment">
443                    <div class="rhythm-when">Every Day + Weekly</div>
444                    <div class="rhythm-card rhythm-card-coral">
445                        <img src="https://pod.servicespace.org/pics/2025site/heart_icon.png" alt="" class="rhythm-icon">
446                        <span class="rhythm-label">HEART</span>
447                        <h3>We connect</h3>
448                        <p>Daily, through reflections and interactions with your circle. Weekly, through a live gathering where presence deepens.</p>
449                        <div class="rhythm-example">
450                            <em>"In being seen and heard, I discover who I truly am."</em>
451                        </div>
452                    </div>
453                </div>
454            </div>
455            
456            <p class="rhythm-note">Heart isn't confined to a single moment—it's woven through the entire experience. Every prompt carries it, every reflection shares it, every interaction deepens it. <strong>When all three work together, something shifts.</strong></p>
457        </div>
458    </section>
459
460    <!-- ============================================
461         THE FIELD - Many Hearts, One Container
462         ============================================ -->
463    <section class="field-section">
464        <div class="container">
465            <div class="field-intro">
466                <h2>Held by Many Hearts</h2>
467                <p>Here's something you might not notice: a typical 21-day pod involves <strong>2,600+ volunteer hours</strong>. Not because we have to. Because that's the design.</p>
468            </div>
469            
470            <div class="field-content">
471                <div class="field-philosophy">
472                    <p>Most of that work isn't flashy. You won't even see it. It's subtle—not a thump, but a gentle nudge.</p>
473                    
474                    <p>People notice the 100th snowflake that creates an avalanche. But our volunteers are doing the work of the un-noteworthy 35th or 81st snowflake, because they see the power of the ripple effect in a deeply connected web.</p>
475                    
476                    <p>When dozens of people pour their time, attention, and care into creating something, their heart energy merges into hundreds of micro-interactions—in turn building into a vortex that ripples into transformative emergence.</p>
477                    
478                    <p class="field-highlight">This is what we call <em>multiple forms of wealth</em>: time capital, community capital, attention capital. The same carbon atoms arranged differently create graphite or diamond. The same content, held by many hearts instead of few, creates profoundly unique possibilities.</p>
479                    
480                    <a href="https://nipun.servicespace.org/wealth" target="_blank" class="field-link">
481                        <i class="bi bi-play-circle"></i> Watch: Multiple Forms of Wealth
482                    </a>
483                </div>
484                
485                <div class="field-breakdown">
486                    <h4>Where the Energy Goes</h4>
487                    <p class="energy-note">Example from a 21-Day Inner Friendliness Pod—each pod's distribution varies based on theme, participants, and volunteer capacity.</p>
488                    <div class="energy-list">
489                        <div class="energy-row">
490                            <span class="energy-hours">~500 hrs</span>
491                            <span class="energy-what">Community weaving—reading every post, adding hearts and comments</span>
492                        </div>
493                        <div class="energy-row">
494                            <span class="energy-hours">~300 hrs</span>
495                            <span class="energy-what">Weekly calls—planning, guest speakers, follow-up</span>
496                        </div>
497                        <div class="energy-row">
498                            <span class="energy-hours">~250 hrs</span>
499                            <span class="energy-what">Curriculum—21 authors creating each prompt</span>
500                        </div>
501                        <div class="energy-row">
502                            <span class="energy-hours">~250 hrs</span>
503                            <span class="energy-what">Graphics—300+ quote cards, collages, surprises</span>
504                        </div>
505                        <div class="energy-row energy-row-more">
506                            <span class="energy-hours">+1,300</span>
507                            <span class="energy-what">Orientation, tech support, pod rooms, and more...</span>
508                        </div>
509                    </div>
510                </div>
511            </div>
512        </div>
513    </section>
514
515    <!-- ============================================
516         THE APPROACH - Light Touch Principles
517         ============================================ -->
518    <section class="approach-section">
519        <div class="container">
520            <header class="section-header section-header-light">
521                <h2>How We Hold Space</h2>
522            </header>
523            
524            <div class="approach-items">
525                <div class="approach-item">
526                    <div class="approach-icon"><i class="bi bi-infinity"></i></div>
527                    <div class="approach-text">
528                        <h4>Many to Many</h4>
529                        <p>No teachers, no students—only peers. Everyone brings wisdom, everyone learns.</p>
530                    </div>
531                    <a href="https://nipun.servicespace.org/gandhi30" target="_blank" class="approach-link"><i class="bi bi-arrow-right"></i></a>
532                </div>
533                
534                <div class="approach-item">
535                    <div class="approach-icon"><i class="bi bi-heart"></i></div>
536                    <div class="approach-text">
537                        <h4>Context Over Content</h4>
538                        <p>Relationships matter more than curriculum. The container creates the magic.</p>
539                    </div>
540                    <a href="https://www.laddership.org/?op=recap" target="_blank" class="approach-link"><i class="bi bi-arrow-right"></i></a>
541                </div>
542                
543                <div class="approach-item">
544                    <div class="approach-icon"><i class="bi bi-flower2"></i></div>
545                    <div class="approach-text">
546                        <h4>Trust Emergence</h4>
547                        <p>We don't predetermine outcomes. What needs to unfold, unfolds.</p>
548                    </div>
549                    <a href="https://www.dailygood.org/story/1300/let-s-make-virtue-viral-nipun-mehta/" target="_blank" class="approach-link"><i class="bi bi-arrow-right"></i></a>
550                </div>
551                
552                <div class="approach-item">
553                    <div class="approach-icon"><i class="bi bi-ladder"></i></div>
554                    <div class="approach-text">
555                        <h4>Laddership</h4>
556                        <p>Leading from below—holding the ladder for others to climb.</p>
557                    </div>
558                    <a href="https://www.servicespace.org/blog/view.php?id=20049" target="_blank" class="approach-link"><i class="bi bi-arrow-right"></i></a>
559                </div>
560            </div>
561        </div>
562    </section>
563
564    <!-- ============================================
565         THE STORY - Brief Origin
566         ============================================ -->
567    <section class="story-section">
568        <div class="container">
569            <div class="story-content">
570                <div class="story-text">
571                    <h2>A 25-Year Experiment</h2>
572                    <p>
572In 1999, a group of friends in Silicon Valley asked a simple question: <em>What would happen if we organized around generosity instead of scarcity?</em></p>
573                    <p>That question became <a href="https://www.servicespace.org/?pg=about" target="_blank">ServiceSpace</a>—an ecosystem of projects touching millions, all volunteer-run, with no advertising or fundraising. <a href="https://www.dailygood.org" target="_blank">DailyGood</a>. <a href="https://www.karmakitchen.org" target="_blank">Karma Kitchen</a>. <a href="https://www.awakin.org" target="_blank">Awakin Circles</a>. And now, Pods.</p>
574                    <p>Pods emerged in 2020 as a way to deepen this work—to create containers where inner transformation and outer service become inseparable. What started as a pandemic experiment has blossomed into a platform serving thousands across 80+ countries.</p>
575                </div>
576                <div class="story-image">
577                    <img src="pics/servicespace/story.jpg" alt="ServiceSpace community" onerror="this.src='https://awakin.ai/gather/austria_circle.jpg'">
578                </div>
579            </div>
580        </div>
581    </section>
582
583    <!-- ============================================
584         FEATURED TESTIMONIAL - Michael's Poem
585         ============================================ -->
586    <section class="featured-testimonial-section">
587        <div class="container">
588            <div class="featured-testimonial">
589                <div class="featured-testimonial-video">
590                    <button class="video-play-btn" onclick="openPoemModal()" aria-label="Play video">
591                        <img src="https://i.vimeocdn.com/video/2036411505-d46ae4375f0ffc3bd03252101de5bea35de7004bdd1e0d570ed0b4900df3c598-d_640x360" alt="Michael's poem video thumbnail" class="video-thumbnail">
592                        <div class="play-overlay">
593                            <i class="bi bi-play-circle-fill"></i>
594                            <span class="video-duration">2:57</span>
595                        </div>
596                    </button>
597                </div>
598                <div class="featured-testimonial-content">
599                    <span class="testimonial-badge">Podmate Reflection</span>
600                    <h3>The Ingredients for Becoming Rich</h3>
601                    <div class="poem-excerpt">
602                        <p><em>You start by mixing the life experiences of hundreds of participants.<br>
603                        Make sure they're diverse—that's what makes it beautiful and real.</em></p>
604                        <p><em>Then you go deeper. To the essence.</em></p>
605                        <p><em>How? You ask them questions. And you give them the space to show themselves. To be seen—truly seen—by the others.</em></p>
606                    </div>
607                    <button class="btn btn-outline-teal btn-sm" onclick="openPoemModal()">
608                        <i class="bi bi-play-fill"></i> Watch Michael's Full Poem
609                    </button>
610                    <p class="testimonial-attribution">
611                        <strong>Michael</strong> · Podmate
612                    </p>
613                </div>
614            </div>
615        </div>
616    </section>
617
618    <!-- ============================================
619         RIPPLES - More Transformation Stories
620         ============================================ -->
621    <section class="ripples-section">
622        <div class="container">
623            <header class="section-header">
624                <h2>What Emerges</h2>
625                <p>We never know what will happen. That's the point.</p>
626            </header>
627            
628            <div class="ripples-grid">
629                <div class="ripple-card">
630                    <p>"Through daily prompts, I discovered a calling to serve elders in my neighborhood. What started as visits became a community care network with twelve volunteers."</p>
631                    <footer><strong>Priya</strong> · Teacher</footer>
632                </div>
633                
634                <div class="ripple-card">
635                    <p>"I joined feeling isolated in my activism. The pod reminded me that sustainable change comes from inner resilience. Now I organize differently—starting with connection, not strategy."</p>
636                    <footer><strong>Marcus</strong> · Community Organizer</footer>
637                </div>
638                
639                <div class="ripple-card">
640                    <p>"The pod helped me see that my small acts of kindness at work were actually leadership. I started a gratitude practice with my team that's now spreading to other departments."</p>
641                    <footer><strong>Sarah</strong> · Project Manager</footer>
642                </div>
643            </div>
644            
645            <div class="section-cta">
646                <a href="my/projects" class="btn btn-secondary">
647                    See Podmate Projects (362) <i class="bi bi-arrow-right"></i>
648                </a>
649            </div>
650        </div>
651    </section>
652
653    <!-- ============================================
654         FAQ SECTION
655         ============================================ -->
656    <section class="section-padding faq-section" id="faq">
657        <div class="container">
658            <div class="faq-container">
659                <header class="section-header">
660                    <h2>Frequently Asked Questions</h2>
661                    <p>Everything you need to know about joining a pod</p>
662                </header>
663                
664                <div class="faq-list" id="faq-accordion">
665                    <details class="faq-item" open>
666                        <summary>
667                            <span class="faq-question">What's the daily rhythm?</span>
668                            <span class="faq-icon"></span>
669                        </summary>
670                        <div class="faq-answer">
671                            <p>Morning brings a reflective prompt—something to sit with over tea. Throughout the day, a small experiment invites you to practice what you're learning. Heart is woven through it all—in your daily reflections, in reading and responding to others, and in the weekly video call where your circle gathers to witness and be witnessed.</p>
672                            <p>Most participants spend 1–2 hours daily on reading and reflection, plus a 90-minute video call each week. The rest unfolds naturally through your day.</p>
673                        </div>
674                    </details>
675                    
676                    <details class="faq-item">
677                        <summary>
678                            <span class="faq-question">Are pods really free?</span>
679                            <span class="faq-icon"></span>
680                        </summary>
681                        <div class="faq-answer">
682                            <p>Yes! All pods operate in the spirit of service — no fees, just trust and generosity. Every pod is offered freely, accessible to anyone regardless of financial means.</p>
683                        </div>
684                    </details>
685                    
686                    <details class="faq-item">
687                        <summary>
688                            <span class="faq-question">Who facilitates?</span>
689                            <span class="faq-icon"></span>
690                        </summary>
691                        <div class="faq-answer">
692                            <p>Volunteer hosts create the container; participants co-create the experience. There are no teachers and students—only peers learning together.</p>
693                        </div>
694                    </details>
695                    
696                    <details class="faq-item">
697                        <summary>
698                            <span class="faq-question">How much time commitment?</span>
699                            <span class="faq-icon"></span>
700                        </summary>
701                        <div class="faq-answer">
702                            <p>1–3 weeks depending on the pod. Daily: 1–2 hours of study and reflection. Weekly: 90-minute video call. Plus whatever time you choose for personal experiments.</p>
703                        </div>
704                    </details>
705                    
706                    <details class="faq-item">
707                        <summary>
708                            <span class="faq-question">Do I need any prerequisites or experience?</span>
709                            <span class="faq-icon"></span>
710                        </summary>
711                        <div class="faq-answer">
712                            <p>No prerequisites needed! Pods welcome people from all backgrounds and experience levels. All you need is curiosity, openness, and a commitment to show up authentically for yourself and your fellow participants.</p>
713                        </div>
714                    </details>
715                    
716                    <details class="faq-item">
717                        <summary>
718                            <span class="faq-question">Can I volunteer to help run a pod?</span>
719                            <span class="faq-icon"></span>
720                        </summary>
721                        <div class="faq-answer">
722                            <p>Absolutely! Every pod is held together by dedicated volunteers who facilitate circles, support participants, and nurture the circle of gifts.</p>
723                            <p>We've found that volunteers are most effective when they've first participated in a pod or attended a ServiceSpace retreat. This foundation gives volunteers a feel for ServiceSpace values and appreciation for the pod experience.</p>
724                            <a href="host" class="faq-link">Learn about hosting opportunities →</a>
725                        </div>
726                    </details>
727                </div>
728            </div>
729        </div>
730    </section>
731
732    <!-- ============================================
733         CTA - Simple Invitation
734         ============================================ -->
735    <section class="cta-section">
736        <div class="container">
737            <div class="cta-content">
738                <h2>Ready to step in?</h2>
739                <p>
739We don't know what will emerge. But we know we'll be held.</p>
740                
741                <div class="cta-actions">
742                    <a href="apply" class="btn btn-primary btn-lg">
743                        <i class="bi bi-arrow-right-circle"></i> Join a Pod
744                    </a>
745                </div>
746                
747                <p class="cta-secondary">
748                    Want to hold space for others? <a href="host">Learn about hosting</a>
749                </p>
750            </div>
751        </div>
752    </section>
753
754    <!-- ============================================
755         POEM VIDEO MODAL
756         ============================================ -->
757    <div id="poemModal" class="video-modal" onclick="closePoemModal(event)">
758        <div class="modal-content" onclick="event.stopPropagation()">
759            <button class="modal-close" onclick="closePoemModal()" aria-label="Close modal">
760                <i class="bi bi-x-lg"></i>
761            </button>
762            <div class="modal-video-container">
763                <iframe id="poemVideo" src="" frameborder="0" allow="autoplay; fullscreen; picture-in-picture" allowfullscreen></iframe>
764            </div>
765            <div class="modal-poem-text">
766                <h4>The Ingredients for Becoming Rich</h4>
767                <div class="poem-full-text">
768                    <p>You start by mixing the life experiences of hundreds of participants.<br>
769                    Make sure they're diverse—that's what makes it beautiful and real: men and women, young and old, from all over the world. Christians, Hindus, street workers, billionaires—it doesn't matter.</p>
770                    
771                    <p>Then you go deeper.<br>
772                    To the essence.</p>
773                    
774                    <p>How?<br>
775                    You ask them questions.<br>
776                    And you give them the space to show themselves.<br>
777                    To be seen—truly seen—by the others.<br>
778                    Not just the shiny surface, but what's inside. Deep inside.</p>
779                    
780                    <p>And then you—yes, you behind that camera—you do the same.<br>
781                    Every morning, for 21 days, questions will pop up on your screen.<br>
782                    Answer them.<br>
783                    Look deep into your life.<br>
784                    Meet your past again.</p>
785                    
786                    <p>And—this is the key—<strong>Share it.</strong></p>
787                    
788                    <p>Read.<br>
789                    Reflect.<br>
790                    Write.<br>
791                    Comment.<br>
792                    And share—with all your vulnerability, with all the tears that might come and wash something clean inside you.</p>
793                    
794                    <p>Share your dreams.<br>
795                    Share your nightmares.</p>
796                    
797                    <p>Don't try to impress anyone.<br>
798                    Don't turn it into a show.<br>
799                    Just be honest with yourself.<br>
800                    And you'll be amazed how simple, and yet how powerful, that can be.</p>
801                    
802                    <p>And as you begin to gather the fruits—gifts that often come from someone unaware of how deeply their words can touch others—you will learn.<br>
803                    You will be inspired.</p>
804                    
805                    <p>You will become bolder.<br>
806                    You will start to see life differently.<br>
807                    You will collect pieces of a greater truth—a truth you may have sensed, but never fully seen.</p>
808                    
809                    <p>By the end of these three weeks, you'll feel close to each other—like friends, companions, maybe even soulmates.</p>
810                    
811                    <p>And you'll be rich.<br>
812                    So rich that you won't be able to keep it just for yourself.</p>
813                    
814                    <p>You'll want to share it.<br>
815                    You will share it.</p>
816                    
817                    <p>
817But that's another story.<br>
818                    A new story.<br>
819                    <strong>Your</strong> new story.<br>
820                    And it's waiting out there… to be lived!</p>
821                </div>
822                <p class="poem-attribution">— Michael, Podmate</p>
823            </div>
824        </div>
825    </div>
826
827    
827<script>
828    function openPoemModal() {
829        const modal = document.getElementById('poemModal');
830        const iframe = document.getElementById('poemVideo');
831        modal.classList.add('active');
832        document.body.style.overflow = 'hidden';
833        // Load video with autoplay
834        iframe.src = 'https://player.vimeo.com/video/1101035128?h=3f0b19297b&autoplay=1';
835    }
836    
837    function closePoemModal(event) {
838        if (event && event.target !== event.currentTarget) return;
839        const modal = document.getElementById('poemModal');
840        const iframe = document.getElementById('poemVideo');
841        modal.classList.remove('active');
842        document.body.style.overflow = '';
843        // Stop video
844        iframe.src = '';
845    }
846    
847    // Close on escape key
848    document.addEventListener('keydown', function(e) {
849        if (e.key === 'Escape') {
850            closePoemModal();
851        }
852    });
853    
854    // FAQ Accordion - close others when one opens
855    document.addEventListener('DOMContentLoaded', function() {
856        const faqAccordion = document.getElementById('faq-accordion');
857        if (faqAccordion) {
858            const faqItems = faqAccordion.querySelectorAll('.faq-item');
859            
860            faqItems.forEach(item => {
861                item.addEventListener('toggle', function() {
862                    if (this.open) {
863                        faqItems.forEach(otherItem => {
864                            if (otherItem !== this && otherItem.open) {
865                                otherItem.open = false;
866                            }
867                        });
868                    }
869                });
870            });
871        }
872        
873        // Handle FAQ hash navigation
874        if (window.location.hash === '#faq') {
875            const faqSection = document.getElementById('faq');
876            if (faqSection) {
877                setTimeout(() => {
878                    faqSection.scrollIntoView({ behavior: 'smooth', block: 'start' });
879                }, 100);
880            }
881        }
882    });
883    </script>
883
884
885    </main>
886
887            <!-- ============================================
888         GLOBAL FOOTER
889         ============================================ -->
890    <footer class="ss-footer">
891        <div class="ss-footer-container">
892            
893            <div class="ss-footer-main">
894                
895                <!-- Brand Column -->
896                <div class="ss-footer-brand">
897                    <a href="https://www.servicespace.org" class="ss-footer-logo">
898                        <img src="https://www.servicespace.org/images/index2026/logo_sm_light.png" alt="ServiceSpace">
899                    </a>
900                    <p class="ss-footer-tagline">
901                        Small acts that change the world.<br>
902                        Volunteer-run since 1999.
903                    </p>
904                    <div class="ss-footer-social">
905                        <a href="https://www.facebook.com/servicespace" target="_blank" aria-label="Facebook">
906                            <i class="bi bi-facebook"></i>
907                        </a>
908                        <a href="https://twitter.com/servicespace" target="_blank" aria-label="Twitter">
909                            <i class="bi bi-twitter-x"></i>
910                        </a>
911                        <a href="https://www.instagram.com/servicespace" target="_blank" aria-label="Instagram">
912                            <i class="bi bi-instagram"></i>
913                        </a>
914                        <a href="https://www.youtube.com/charityfocus" target="_blank" aria-label="YouTube">
915                            <i class="bi bi-youtube"></i>
916                        </a>
917                    </div>
918                </div>
919                
920                <!-- Projects Column (was Ecosystem) -->
921                <div class="ss-footer-column">
922                    <h4>Projects</h4>
923                    <ul>
924                        <li><a href="https://www.servicespace.org/projects">All Projects</a></li>
925                        <li><a href="https://www.dailygood.org" target="_blank">DailyGood</a></li>
926                        <li><a href="https://www.karmakitchen.org" target="_blank">Karma Kitchen</a></li>
927                        <li><a href="https://www.awakin.org" target="_blank">Awakin Circles</a></li>
928                        <li><a href="https://www.kindspring.org" target="_blank">KindSpring</a></li>
929                    </ul>
930                </div>
931                
932                <!-- Pods Column -->
933                <div class="ss-footer-column">
934                    <h4>Pods</h4>
935                    <ul>
936                        <li><a href="https://pod.servicespace.org/">What Are Pods?</a></li>
937                        <li><a href="https://pod.servicespace.org/apply">Join a Pod</a></li>
938                        <li><a href="https://pod.servicespace.org/about">Our Approach</a></li>
939                        <li><a href="https://pod.servicespace.org/host">Host a Pod</a></li>
940                        <li><a href="https://pod.servicespace.org/faq">FAQ</a></li>
941                    </ul>
942                </div>
943                
944                <!-- About Column -->
945                <div class="ss-footer-column">
946                    <h4>About</h4>
947                    <ul>
948                        <li><a href="https://www.servicespace.org/about">About Us</a></li>
949                        <li><a href="https://www.servicespace.org/join">Get Involved</a></li>
950                        <li><a href="https://www.servicespace.org/donate">Donate</a></li>
951                        <li><a href="https://pod.servicespace.org/contact">Contact Us</a></li>
952                        <li><a href="https://pod.servicespace.org/privacy">Privacy</a>, <a href="https://pod.servicespace.org/terms">Terms</a></li>
953                    </ul>
954                </div>
955                
956            </div>
957            
958            <div class="ss-footer-bottom">
959                <p class="ss-footer-copyright">
960                    <a href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank" rel="license" class="cc-license">
961                        <span class="cc-icons">
962                            <i class="bi bi-cc-circle"></i>
963                            <i class="bi bi-person-circle"></i>
964                        </span>
965                        <span>CC BY-NC-ND 4.0</span>
966                    </a>
967                </p>
968                <p class="ss-footer-gift">
969                    <i class="bi bi-gift"></i> 
970                    100% volunteer-run. No ads. No fundraising. Just love.
971                </p>
972            </div>
973            
974        </div>
975    </footer>
976        
977    <!-- Swiper JS (for carousels) -->
978    
978<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
978
979    
980    <!-- ============================================
981         SCRIPTS
982         ============================================ -->
983        
984    
985    
986    <!-- Google Analytics -->
987    
987<script>
vendor: 368 bytes, lines 987-992
987
988        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
989        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
990        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
991        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
992        ga('create', '
992UA-472633-14
vendor: 48 bytes, lines 992-994
992', 'auto');
993        ga('send', 'pageview');
994    
994</script>
994
995    
996
997    
997<script>
998(function() {
999    'use strict';
1000    console.log('SSO: Script starting');
1001
1002    // Skip SSO on dev/coder environments — no production Pod to check against
1003    if (window.location.hostname.endsWith('.coder.dev.servicespace.org')) {
1004        console.log('SSO: Dev environment detected, skipping SSO check');
1005        return;
1006    }
1007
1008    // 2026-09-10: Skip on Pod itself. Pod is the SSO primary -- there is no
1009    // other site whose cookie could log a Pod guest in. Running this here
1010    // (pod's welcome/tpl/footer_global.tpl includes it) sent cold-session
1011    // visitors through check.php with return=pod.servicespace.org, which
1012    // check.php rejected with a blank "Invalid return URL domain" page.
1013    if (window.location.hostname === 'pod.servicespace.org') {
1014        console.log('SSO: On Pod (primary), skipping SSO check');
1015        return;
1016    }
1017    
1018    // Cooldown periods (in milliseconds)
1019    var QUICK_COOLDOWN = 10000;          // 10 seconds - between any checks (per-tab)
1020    var NOT_LOGGED_IN_TTL = 1800000;     // 30 minutes - how long to remember "not logged in"
1021    var VISIBILITY_MIN_AGE = 300000;     // 5 minutes - min age before tab-switch triggers recheck
1022    
1023    // When user returns to this tab after being away a while, clear the
1024    // "not logged in" cache so we re-check SSO status. This handles the
1025    // case where user logs in on another tab/site then returns here.
1026    document.addEventListener('visibilitychange', function() {
1027        if (document.visibilityState === 'visible') {
1028            var checkedAt = parseInt(localStorage.getItem('sso_not_logged_in_at') || '0');
1029            if (checkedAt && (Date.now() - checkedAt >= VISIBILITY_MIN_AGE)) {
1030                console.log('SSO: Tab visible after 5+ min, clearing cache for fresh check');
1031                localStorage.removeItem('sso_not_logged_in_at');
1032                sessionStorage.removeItem('sso_last_attempt');
1033            }
1034        }
1035    });
1036    
1037    // Check if user just logged out - skip SSO check to prevent re-login loop
1038    if (document.cookie.indexOf('sso_logout=') !== -1) {
1039        console.log('SSO: Recent logout detected, skipping check');
1040        // Clear the cookie now that we've respected it
1041        document.cookie = 'sso_logout=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
1042        // Also cache that we're not logged in (prevents check on next tab)
1043        localStorage.setItem('sso_not_logged_in_at', Date.now().toString());
1044        return;
1045    }
1046    
1047    var urlParams = new URLSearchParams(window.location.search);
1048    var ssoToken = urlParams.get('sso_token');
1049    
1050    // Handle returning from redirect-based flow with sso_token
1051    if (ssoToken) {
1052        console.log('SSO: Has sso_token from redirect flow, completing login');
1053        sessionStorage.setItem('sso_last_attempt', Date.now().toString());
1054        // Clear the "not logged in" cache since we're about to log in
1055        localStorage.removeItem('sso_not_logged_in_at');
1056        
1057        // Clean the URL by removing sso_token parameter
1058        var cleanUrl = window.location.href.split('?')[0];
1059        var params = new URLSearchParams(window.location.search);
1060        params.delete('sso_token');
1061        params.delete('sso_checked');
1062        var remainingParams = params.toString();
1063        if (remainingParams) {
1064            cleanUrl += '?' + remainingParams;
1065        }
1066        
1067        // Redirect to local login endpoint with the token
1068        window.location.href = '/sso/login.php?token=' + 
1069            encodeURIComponent(ssoToken) + 
1070            '&return=' + encodeURIComponent(cleanUrl);
1071        return;
1072    }
1073    
1074    // If sso_checked flag is present, Pod confirmed we're not logged in there
1075    if (urlParams.get('sso_checked')) {
1076        console.log('SSO: sso_checked param present, user not logged in on Pod');
1077        // Store in localStorage so ALL tabs know we're not logged in
1078        localStorage.setItem('sso_not_logged_in_at', Date.now().toString());
1079        sessionStorage.setItem('sso_last_attempt', Date.now().toString());
1080        // Clean sso_checked from URL so it doesn't appear in shared/copied links
1081        var params = new URLSearchParams(window.location.search);
1082        params.delete('sso_checked');
1083        var clean = params.toString();
1084        var cleanUrl = window.location.pathname + (clean ? '?' + clean : '') + window.location.hash;
1085        history.replaceState(null, '', cleanUrl);
1086        return;
1087    }
1088    
1089    // Check localStorage cache: are we already confirmed "not logged in"?
1090    var notLoggedInAt = parseInt(localStorage.getItem('sso_not_logged_in_at') || '0');
1091    if (notLoggedInAt && (Date.now() - notLoggedInAt < NOT_LOGGED_IN_TTL)) {
1092        console.log('SSO: Cached not-logged-in (' + Math.round((NOT_LOGGED_IN_TTL - (Date.now() - notLoggedInAt))/60000) + ' min remaining), skipping');
1093        return;
1094    }
1095    
1096    // Quick cooldown: Don't check too frequently within same tab (10 seconds)
1097    var lastAttempt = parseInt(sessionStorage.getItem('sso_last_attempt') || '0');
1098    if (Date.now() - lastAttempt < QUICK_COOLDOWN) {
1099        console.log('SSO: Within quick cooldown, skipping check');
1100        return;
1101    }
1102    
1103    // Prevent concurrent checks
1104    if (window.ssoChecking) {
1105        console.log('SSO: Already checking, skipping');
1106        return;
1107    }
1108    window.ssoChecking = true;
1109    
1110    // Helper function to do redirect-based SSO check
1111    function doRedirectCheck() {
1112        console.log('SSO: Using redirect approach');
1113        sessionStorage.setItem('sso_last_attempt', Date.now().toString());
1114        var returnUrl = encodeURIComponent(window.location.href);
1115        window.location.href = 'https://pod.servicespace.org/sso/check.php?return=' + returnUrl;
1116    }
1117    
1118    // Check if we already tried fetch and it failed (use redirect instead)
1119    var fetchFailed = sessionStorage.getItem('sso_fetch_failed');
1120    if (fetchFailed) {
1121        console.log('SSO: Fetch previously failed, using redirect approach');
1122        sessionStorage.removeItem('sso_fetch_failed');
1123        doRedirectCheck();
1124        return;
1125    }
1126    
1127    console.log('SSO: Starting fetch to Pod status endpoint');
1128    
1129    // Try fetch approach first (works when third-party cookies allowed)
1130    fetch('https://pod.servicespace.org/sso/status.php', {
1131        method: 'GET',
1132        credentials: 'include',
1133        mode: 'cors',
1134        cache: 'no-store'
1135    })
1136    .then(function(response) {
1137        console.log('SSO: Got response', response.status);
1138        if (!response.ok) throw new Error('Network error: ' + response.status);
1139        return response.json();
1140    })
1141    .then(function(data) {
1142        console.log('SSO: Parsed data', data);
1143        sessionStorage.setItem('sso_last_attempt', Date.now().toString());
1144        
1145        if (data.logged_in && data.token) {
1146            console.log('SSO: User logged in on Pod, redirecting to local login');
1147            // Clear cached "not logged in" since user IS logged in
1148            localStorage.removeItem('sso_not_logged_in_at');
1149            window.location.href = '/sso/login.php?token=' + 
1150                encodeURIComponent(data.token) + 
1151                '&return=' + encodeURIComponent(window.location.href);
1152        } else if (!data.logged_in && data.cookie_present === false) {
1153            // Third-party cookies are blocked!
1154            // Pod didn't receive any cookies, so it can't know if user is logged in
1155            // Try redirect fallback which uses first-party Pod cookie
1156            console.log('SSO: Cookies blocked (third-party), trying redirect fallback');
1157            doRedirectCheck();
1158        } else {
1159            console.log('SSO: Not logged in on Pod (confirmed with cookies present)');
1160            // User genuinely not logged in on Pod - cache in localStorage
1161            localStorage.setItem('sso_not_logged_in_at', Date.now().toString());
1162            window.ssoChecking = false;
1163        }
1164    })
1165    .catch(function(error) {
1166        console.log('SSO: Fetch failed:', error.message);
1167        // Mark that fetch failed so we use redirect
1168        sessionStorage.setItem('sso_fetch_failed', '1');
1169        sessionStorage.setItem('sso_last_attempt', Date.now().toString());
1170        doRedirectCheck();
1171    });
1172})();
1173</script>
1173
1174
1175</body>
1176</html>
1177

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.