PageSourceSearch

https://savitri.in/blogs/light-of-supreme

html savitri.in collected 2026-10-02 06:44:15 UTC 61,263 bytes, 965 lines download raw bytes

1<!DOCTYPE html>
2<html>
3<head>
4    <meta charset="utf-8" />
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title> - Savitri</title>
7    <!-- Site theme (Light / Sepia / Dark): applied before render to avoid a flash -->
8    
8<script>
9    (function () { try { var t = localStorage.getItem('savSiteTheme'); if (t && t !== 'light') document.documentElement.className += ' theme-' + t; } catch (e) {} })();
10    function savUpdateThemeIcon(t) { var i = document.getElementById('savThemeIcon'); if (i) i.className = 'fa ' + (t === 'dark' ? 'fa-moon-o' : t === 'sepia' ? 'fa-adjust' : 'fa-sun-o'); }
11    function savCycleTheme() {
12        var order = ['light', 'sepia', 'dark'];
13        var cur = (document.documentElement.className.match(/theme-(sepia|dark)/) || [])[1] || 'light';
14        var next = order[(order.indexOf(cur) + 1) % 3];
15        var d = document.documentElement;
16        d.classList.remove('theme-sepia', 'theme-dark');
17        if (next !== 'light') d.classList.add('theme-' + next);
18        try { localStorage.setItem('savSiteTheme', next); } catch (e) {}
19        savUpdateThemeIcon(next);
20    }
21    document.addEventListener('DOMContentLoaded', function () { var t = 'light'; try { t = localStorage.getItem('savSiteTheme') || 'light'; } catch (e) {} savUpdateThemeIcon(t); });
22    </script>
22
23    <link href="/Content/css?v=Htuaxk8hyvGm4L1nGh7Pg9YMgRj5gtIGCAPQ9YRZ1TA1" rel="stylesheet"/>
24
25    
25<script src="/bundles/modernizr?v=inCVuEFe6J4Q07A0AcRsbJic_UE5MwpRMNGcOtk94TE1"></script>
25
26
27    <link href="/Content/photoswipe.css" rel="stylesheet" />
28    <meta name="apple-itunes-app" content="app-id=1143882659">
29    <meta name="google-play-app" content="app-id=in.savitri">
30    <link href="/Content/smart-app-banner.css" rel="stylesheet" media="screen" type="text/css" />
31    <link rel="apple-touch-icon" href="/images/touch-icon-iphone.png">
32    <link rel="android-touch-icon" href="/images/touch-icon-iphone.png" />
33    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
34    <link href="/Content/bootstrap-notifications.min.css" rel="stylesheet" />
35    <link type="text/css" rel="stylesheet" href="//fast.fonts.net/cssapi/8b9becaf-4f33-4214-83ca-084c4a14579f.css" />
36    <link href="/images/favicon-d0505c1971f5329c8f0042ab4b617089.png" rel="shortcut icon" type="image/vnd.microsoft.icon" />
37    <link rel="apple-touch-icon" href="/images/touch-icon-iphone.png">
38    <link rel="apple-touch-icon" sizes="76x76" href="/images/touch-icon-ipad.png">
39    <link rel="apple-touch-icon" sizes="120x120" href="/images/touch-icon-iphone-retina.png">
40    <link rel="apple-touch-icon" sizes="152x152" href="/images/touch-icon-ipad-retina.png">
41    <meta name="apple-mobile-web-app-capable" content="yes">
42    <meta name="mobile-web-app-capable" content="yes">
43    <meta name="apple-mobile-web-app-title" content="Savitri">
44
45    <!-- Tailwind CDN must load first so the tailwind global exists, then config -->
46    
46<script src="https://cdn.tailwindcss.com"></script>
46
47    
47<script>
48    tailwind.config = {
49      theme: {
50        extend: {
51          colors: {
52            sav: {
53              bg:           '#f5efdc',
54              text:         '#3f2a18',
55              gold:         '#d19b3d',
56              'gold-dark':  '#b8841e',
57              cream:        '#fffff0',
58              parchment:    '#f8f2e4',
59              border:       '#e0d5bc',
60              muted:        '#9b928b',
61              dark:         '#2c2c2d',
62              'dark-brand': '#1a1f24'
63            }
64          },
65          fontFamily: {
66            serif: ['Georgia','Palatino','"Times New Roman"','serif']
67          }
68        }
69      }
70    }
71    </script>
71
72
73    <!-- Savitri Design System — plain CSS, no @apply (CDN limitation) -->
74    <style>
75    /* ── Theme system (Light / Sepia / Dark) ──────────────────────────────
76       Light = default (no class). Sepia/Dark are additive overrides on <html>,
77       so the default experience is byte-for-byte unchanged. */
78    :root{
79        --sav-bg:#f5efdc; --sav-surface:#fffff0; --sav-surface-2:#f8f2e4; --sav-surface-3:#fffdf5;
80        --sav-text:#3f2a18; --sav-text-soft:#5a4e44; --sav-muted:#9b928b;
81        --sav-border:#e0d5bc; --sav-border-2:#e7dcc4; --sav-navbar:#f8f2e4; --sav-gold:#d19b3d;
82    }
83    html.theme-sepia{
84        --sav-bg:#e9dcc1; --sav-surface:#f3ead4; --sav-surface-2:#e6d8bc; --sav-surface-3:#f5eddb;
85        --sav-text:#43331f; --sav-text-soft:#5c4a36; --sav-muted:#8a7b61;
86        --sav-border:#d8c49e; --sav-border-2:#e1d2b1; --sav-navbar:#e6d8bc;
87    }
88    html.theme-dark{
89        --sav-bg:#15120e; --sav-surface:#221d17; --sav-surface-2:#2b251d; --sav-surface-3:#221d17;
90        --sav-text:#ece0cb; --sav-text-soft:#c9bca8; --sav-muted:#9b8f7e;
91        --sav-border:#393127; --sav-border-2:#393127; --sav-navbar:#1b1813;
92    }
93    /* — chrome & shared containers follow the variables (sepia/dark only) — */
94    html.theme-sepia body, html.theme-dark body{ background:var(--sav-bg)!important; color:var(--sav-text); }
95    html.theme-sepia #savNav, html.theme-dark #savNav{ background:var(--sav-navbar)!important; border-bottom-color:var(--sav-border)!important; }
96    html.theme-sepia .sav-card, html.theme-sepia .sav-card-white, html.theme-dark .sav-card, html.theme-dark .sav-card-white{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; }
97    html.theme-sepia .sav-card-parchment, html.theme-dark .sav-card-parchment{ background:var(--sav-surface-2)!important; border-color:var(--sav-border)!important; }
98    html.theme-sepia .sav-input, html.theme-dark .sav-input{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; color:var(--sav-text)!important; }
99    html.theme-sepia .sav-dropdown-menu, html.theme-sepia #savMobileMenu, html.theme-dark .sav-dropdown-menu, html.theme-dark #savMobileMenu{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; }
100    html.theme-sepia .sav-dropdown-toggle, html.theme-sepia .sav-dropdown-item, html.theme-sepia .sav-nav-link, html.theme-dark .sav-dropdown-toggle, html.theme-dark .sav-dropdown-item, html.theme-dark .sav-nav-link{ color:var(--sav-text)!important; }
101    html.theme-dark .sav-dropdown-toggle:hover, html.theme-dark .sav-dropdown-item:hover, html.theme-dark .sav-nav-link:hover, html.theme-dark .sav-notif-item:hover{ background:var(--sav-surface-2)!important; }
102    /* mobile menu links (.sav-mobile-link / .sav-mobile-sub) — own classes, not caught above */
103    html.theme-sepia .sav-mobile-link, html.theme-dark .sav-mobile-link{ color:var(--sav-text)!important; }
104    html.theme-sepia .sav-mobile-link:hover, html.theme-dark .sav-mobile-link:hover{ background:var(--sav-surface-2)!important; }
105    html.theme-sepia .sav-mobile-sub, html.theme-dark .sav-mobile-sub{ border-left-color:var(--sav-border)!important; }
106    html.theme-sepia .sav-mobile-sub a, html.theme-dark .sav-mobile-sub a{ color:var(--sav-muted)!important; }
107    html.theme-sepia .sav-mobile-sub a:hover, html.theme-dark .sav-mobile-sub a:hover{ color:var(--sav-text)!important; background:var(--sav-surface-2)!important; }
108    /* Bootstrap dropdown items (edition / translations menus): bg darkens below, but the link text stays #3f2a18 → invisible */
109    html.theme-sepia .dropdown-menu > li > a, html.theme-dark .dropdown-menu > li > a,
110    html.theme-sepia .dropdown-menu label, html.theme-dark .dropdown-menu label{ color:var(--sav-text)!important; }
111    html.theme-sepia #DataCustom, html.theme-sepia #recentPosts, html.theme-sepia #Databooks, html.theme-dark #DataCustom, html.theme-dark #recentPosts, html.theme-dark #Databooks{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; color:var(--sav-text)!important; }
112    /* Books page headings: #BookName + per-author <h2> hardcode #3f2a18 (CSS rule, not inline → needs explicit override) */
113    html.theme-sepia #BookName, html.theme-dark #BookName,
114    html.theme-sepia .books-author-section h2, html.theme-dark .books-author-section h2{ color:var(--sav-text)!important; }
115    html.theme-sepia #AuthorName, html.theme-dark #AuthorName{ color:var(--sav-muted)!important; }
116    html.theme-sepia .books-author-section + .books-author-section, html.theme-dark .books-author-section + .books-author-section{ border-top-color:var(--sav-border)!important; }
117    /* — re-map the common hardcoded INLINE colors so existing page markup follows the theme — */
118    html.theme-sepia [style*="color:#3f2a18"], html.theme-dark [style*="color:#3f2a18"],
119    html.theme-sepia [style*="color: #3f2a18"], html.theme-dark [style*="color: #3f2a18"],
120    html.theme-sepia [style*="color:#2f2012"], html.theme-dark [style*="color:#2f2012"],
121    html.theme-sepia [style*="color:#3a2817"], html.theme-dark [style*="color:#3a2817"]{ color:var(--sav-text)!important; }
122    html.theme-sepia [style*="color:#9b928b"], html.theme-dark [style*="color:#9b928b"],
123    html.theme-sepia [style*="color: #9b928b"], html.theme-dark [style*="color: #9b928b"],
124    html.theme-sepia [style*="color:#5a4e44"], html.theme-dark [style*="color:#5a4e44"]{ color:var(--sav-muted)!important; }
125    html.theme-sepia [style*="background:#fffff0"], html.theme-dark [style*="background:#fffff0"],
126    html.theme-sepia [style*="background:#fffdf5"], html.theme-dark [style*="background:#fffdf5"]{ background-color:var(--sav-surface)!important; }
127    html.theme-sepia [style*="background:#f8f2e4"], html.theme-dark [style*="background:#f8f2e4"]{ background-color:var(--sav-surface-2)!important; }
128    /* — reading card / verses follow the site theme (the Aa panel can still override locally) — */
129    html.theme-sepia #BindBook .ContentInner, html.theme-dark #BindBook .ContentInner{ background:var(--sav-surface-3)!important; border-color:var(--sav-border)!important; }
130    html.theme-sepia #BindBook .lbloriginal, html.theme-dark #BindBook .lbloriginal,
131    html.theme-sepia #BindBook .sectionColor, html.theme-dark #BindBook .sectionColor{ color:var(--sav-text)!important; }
132    html.theme-sepia #BindBook .sectionColor, html.theme-dark #BindBook .sectionColor{ border-bottom-color:var(--sav-border)!important; }
133    html.theme-dark #BindBook .Oline:hover{ background:rgba(245,239,220,.05)!important; }
134    html.theme-dark #BindBook .innerSpan img, html.theme-dark #BindBook .play-pron{ filter:invert(.82); }
135    /* — search/blog snippets, list items, rules, blog article internals — */
136    html.theme-sepia .snippet, html.theme-dark .snippet{ border-bottom-color:var(--sav-border)!important; }
137    html.theme-sepia .sav-list-item, html.theme-dark .sav-list-item{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; color:var(--sav-text)!important; }
138    html.theme-dark .hr-light, html.theme-dark hr, html.theme-dark .post-content{ border-color:var(--sav-border)!important; }
139    html.theme-dark #DataCustom blockquote, html.theme-sepia #DataCustom blockquote{ background:var(--sav-surface-2)!important; color:var(--sav-text-soft)!important; }
140    html.theme-dark #DataCustom th, html.theme-sepia #DataCustom th{ background:var(--sav-surface-2)!important; color:var(--sav-text)!important; border-color:var(--sav-border)!important; }
141    html.theme-dark #DataCustom td, html.theme-sepia #DataCustom td{ border-color:var(--sav-border)!important; }
142    html.theme-dark #DataCustom tr:nth-child(even){ background:var(--sav-surface-2)!important; }
143    /* — content TEXT colours set by CSS rules (feed titles, headings, recent-posts, meta) — */
144    html.theme-sepia #DataCustom h1, html.theme-sepia #DataCustom h2, html.theme-sepia #DataCustom h3, html.theme-sepia #DataCustom h4,
145    html.theme-dark #DataCustom h1, html.theme-dark #DataCustom h2, html.theme-dark #DataCustom h3, html.theme-dark #DataCustom h4,
146    html.theme-sepia .snippet h3 a, html.theme-dark .snippet h3 a,
147    html.theme-sepia #recentPosts h4, html.theme-dark #recentPosts h4,
148    html.theme-sepia #recentPosts strong a, html.theme-dark #recentPosts strong a,
149    html.theme-sepia #BindBook, html.theme-dark #BindBook{ color:var(--sav-text)!important; }
150    html.theme-sepia #recentPosts p, html.theme-dark #recentPosts p,
151    html.theme-sepia .byUser, html.theme-dark .byUser,
152    html.theme-sepia .postseries, html.theme-sepia .postseries a, html.theme-dark .postseries, html.theme-dark .postseries a,
153    html.theme-sepia .count-comments, html.theme-dark .count-comments,
154    html.theme-sepia .UpdatedText, html.theme-dark .UpdatedText{ color:var(--sav-muted)!important; }
155    html.theme-sepia .content, html.theme-dark .content,
156    html.theme-sepia .post-content, html.theme-dark .post-content,
157    html.theme-sepia #content-Post label, html.theme-dark #content-Post label{ color:var(--sav-text)!important; }
158    /* — design-system components: labels, outline/default buttons, tabs, nav arrows, form-control — */
159    html.theme-sepia .sav-label, html.theme-dark .sav-label,
160    html.theme-sepia .sav-page-header h1, html.theme-dark .sav-page-header h1,
161    html.theme-sepia .sav-btn-outline, html.theme-dark .sav-btn-outline,
162    html.theme-sepia .btn-default, html.theme-dark .btn-default,
163    html.theme-sepia .sav-navigate, html.theme-dark .sav-navigate,
164    html.theme-sepia .sav-tab:hover, html.theme-dark .sav-tab:hover,
165    html.theme-sepia .sav-tab.active, html.theme-dark .sav-tab.active,
166    html.theme-sepia .nav-tabs > li > a:hover, html.theme-dark .nav-tabs > li > a:hover,
167    html.theme-sepia .nav-tabs > li.active > a, html.theme-dark .nav-tabs > li.active > a{ color:var(--sav-text)!important; }
168    html.theme-sepia .sav-btn-outline:hover, html.theme-dark .sav-btn-outline:hover,
169    html.theme-sepia .btn-default:hover, html.theme-dark .btn-default:hover{ background:var(--sav-surface-2)!important; border-color:var(--sav-gold)!important; }
170    html.theme-sepia .nav-tabs > li.active > a, html.theme-dark .nav-tabs > li.active > a{ background:var(--sav-surface-2)!important; }
171    html.theme-sepia .sav-navigate, html.theme-dark .sav-navigate{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; }
172    html.theme-sepia .form-control, html.theme-dark .form-control{ background:var(--sav-surface)!important; color:var(--sav-text)!important; border-color:var(--sav-border)!important; }
173    /* — light CARD/MENU/MODAL backgrounds set by CSS rules → themed surface — */
174    html.theme-sepia #content-Post, html.theme-dark #content-Post,
175    html.theme-sepia .list-group li, html.theme-dark .list-group li,
176    html.theme-sepia .dropdown-menu, html.theme-dark .dropdown-menu,
177    html.theme-sepia .bootstrap-datetimepicker-widget.dropdown-menu, html.theme-dark .bootstrap-datetimepicker-widget.dropdown-menu,
178    html.theme-sepia .sav-thumb, html.theme-dark .sav-thumb,
179    html.theme-sepia .modal-content, html.theme-dark .modal-content{ background:var(--sav-surface)!important; border-color:var(--sav-border)!important; color:var(--sav-text)!important; }
180    html.theme-sepia .progress, html.theme-dark .progress,
181    html.theme-sepia .input-group-addon, html.theme-dark .input-group-addon{ background:var(--sav-surface-2)!important; border-color:var(--sav-border)!important; color:var(--sav-text)!important; }
182    html.theme-sepia .dropdown-menu > li > a:hover, html.theme-dark .dropdown-menu > li > a:hover,
183    html.theme-sepia .dropdown-menu label:hover, html.theme-dark .dropdown-menu label:hover,
184    html.theme-sepia .close:hover, html.theme-dark .close:hover{ background:var(--sav-surface-2)!important; }
185    html.theme-sepia .modal-title, html.theme-dark .modal-title,
186    html.theme-sepia .modal-body, html.theme-dark .modal-body,
187    html.theme-sepia .modal-body b, html.theme-dark .modal-body b,
188    html.theme-sepia .close, html.theme-dark .close,
189    html.theme-sepia #content-Post label, html.theme-dark #content-Post label{ color:var(--sav-text)!important; }
190    /* — broadened INLINE-background remap: #fff* prefix + "background: " space variant — */
191    html.theme-sepia [style*="background:#fff"], html.theme-dark [style*="background:#fff"],
192    html.theme-sepia [style*="background: #fff"], html.theme-dark [style*="background: #fff"],
193    html.theme-sepia [style*="background-color:#fff"], html.theme-dark [style*="background-color:#fff"],
194    html.theme-sepia [style*="background-color: #fff"], html.theme-dark [style*="background-color: #fff"],
195    html.theme-sepia [style*="background:#faf4e6"], html.theme-dark [style*="background:#faf4e6"],
196    html.theme-sepia [style*="background:#f7eed8"], html.theme-dark [style*="background:#f7eed8"],
197    html.theme-sepia [style*="background: #f7eed8"], html.theme-dark [style*="background: #f7eed8"],
198    html.theme-sepia [style*="background:#fbf6e7"], html.theme-dark [style*="background:#fbf6e7"],
199    html.theme-sepia [style*="background: #fbf6e7"], html.theme-dark [style*="background: #fbf6e7"]{ background-color:var(--sav-surface)!important; }
200    html.theme-sepia [style*="background: #f8f2e4"], html.theme-dark [style*="background: #f8f2e4"],
201    html.theme-sepia [style*="background:#f0e8d8"], html.theme-dark [style*="background:#f0e8d8"],
202    html.theme-sepia [style*="background:#f4ecd8"], html.theme-dark [style*="background:#f4ecd8"],
203    html.theme-sepia [style*="background:#efe6d2"], html.theme-dark [style*="background:#efe6d2"]{ background-color:var(--sav-surface-2)!important; }
204
205    /* ── Buttons ── */
206    .sav-btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1.25rem;font-size:.875rem;font-weight:500;border-radius:.5rem;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;white-space:nowrap;line-height:1.4;}
207    .sav-btn:hover{text-decoration:none;}
208    /* color is !important so buttons keep their text colour inside content areas
209       (e.g. #DataCustom a { color:teal } would otherwise win by id-specificity) */
210    .sav-btn-primary{background:#3f2a18;color:#f5efdc!important;border-color:#3f2a18;}
211    .sav-btn-primary:hover{background:#2a1c10;color:#f5efdc!important;}
212    .sav-btn-gold{background:#d9a23f;color:#3f2a18!important;border-color:#cf942f;font-weight:600;}
213    .sav-btn-gold:hover{background:#c98f2c;color:#3f2a18!important;border-color:#b8841e;}
214    .sav-btn-teal{background:#0d9488;color:#fff!important;border-color:#0d9488;}
215    .sav-btn-teal:hover{background:#0f766e;color:#fff!important;}
216    .sav-btn-danger{background:#b3261e;color:#fff!important;border-color:#b3261e;}
217    .sav-btn-danger:hover{background:#8f1d17;color:#fff!important;}
218    .sav-btn-outline{background:transparent;color:#3f2a18!important;border-color:#e0d5bc;}
219    .sav-btn-outline:hover{background:#f8f2e4;border-color:#d19b3d;}
220    .sav-btn-sm{padding:.375rem .875rem;font-size:.8125rem;}
221    .sav-btn-xs{padding:.25rem .625rem;font-size:.75rem;border-radius:.375rem;}
222    .sav-btn-lg{padding:.75rem 1.75rem;font-size:1rem;}
223
224    /* ── Cards ── */
225    .sav-card{background:#fffff0;border:1px solid #e0d5bc;border-radius:.75rem;padding:1.5rem;box-shadow:0 2px 8px rgba(63,42,24,.06);}
226    .sav-card-white{background:#fff;border:1px solid #e0d5bc;border-radius:.75rem;padding:1.5rem;box-shadow:0 2px 8px rgba(63,42,24,.06);}
227    .sav-card-parchment{background:#f8f2e4;border:1px solid #e0d5bc;border-radius:.75rem;padding:1.5rem;}
228
229    /* ── Form inputs ── */
230    .sav-input{display:block;width:100%;padding:.5rem .875rem;font-size:.875rem;color:#3f2a18;background:#fff;border:1px solid #e0d5bc;border-radius:.5rem;max-width:none!important;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;}
231    .sav-input:focus{outline:none;border-color:#0d9488;box-shadow:0 0 0 3px rgba(13,148,136,.12);}
232    .sav-input.sav-input-error,.CodeMirror.sav-input-error{border-color:#b91c1c!important;box-shadow:0 0 0 3px rgba(185,28,28,.14)!important;}
233    .sav-label{display:block;font-size:.875rem;font-weight:500;color:#3f2a18;margin-bottom:.375rem;}
234    .sav-form-group{margin-bottom:1.25rem;}
235    .sav-form-hint{font-size:.75rem;color:#9b928b;margin-top:.25rem;}
236    .sav-field-error{display:block;margin-top:.35rem;font-size:.78rem;font-weight:600;color:#b91c1c;}
237
238    /* ── Page header ── */
239    .sav-page-header{border-bottom:1px solid #e0d5bc;padding-bottom:1.25rem;margin-bottom:2rem;text-align:center;}
240    .sav-page-header h1{font-size:1.875rem;font-weight:700;color:#3f2a18;margin:0 0 .375rem;}
241    .sav-page-header h2,.sav-page-header p{font-size:.9375rem;color:#9b928b;font-weight:400;margin:0;}
242    .sav-section-divider{width:3rem;height:2px;background:#d19b3d;margin:.875rem auto;border-radius:1px;}
243
244    /* ── Tabs ── */
245    .sav-tabs{display:flex;border-bottom:1px solid #e0d5bc;
245gap:0;margin-bottom:1.5rem;}
246    .sav-tab{padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;color:#9b928b;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;text-decoration:none;background:none;border-top:none;border-left:none;border-right:none;margin-bottom:-1px;}
247    .sav-tab:hover{color:#3f2a18;}
248    .sav-tab.active,.sav-tab:focus{color:#3f2a18;border-bottom-color:#d19b3d;font-weight:600;outline:none;}
249
250    /* ── Pills ── */
251    .sav-pill{display:inline-flex;align-items:center;padding:.375rem 1rem;font-size:.8125rem;font-weight:500;border-radius:999px;border:1px solid #e0d5bc;color:#9b928b;cursor:pointer;transition:all .15s;text-decoration:none;background:none;}
252    .sav-pill:hover,.sav-pill.active{background:#3f2a18;color:#f5efdc;border-color:#3f2a18;text-decoration:none;}
253
254    /* ── Alerts ── */
255    .sav-alert{padding:.75rem 1rem;border-radius:.5rem;font-size:.875rem;margin-bottom:1rem;}
256    .sav-alert-info{background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;}
257    .sav-alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d;}
258    .sav-alert-warning{background:#fffbeb;border:1px solid #fde68a;color:#92400e;}
259    .sav-alert-error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;}
260    #snackbar{max-width:calc(100vw - 2rem);margin-left:0!important;transform:translateX(-50%);box-shadow:0 10px 28px rgba(63,42,24,.28);opacity:0;pointer-events:none;transition:opacity .18s ease,bottom .18s ease;}
261    #snackbar.show{visibility:visible!important;opacity:1;bottom:30px!important;}
262
263    /* ── Navigate arrows ── */
264    .sav-navigate{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1.25rem;border:1px solid #e0d5bc;border-radius:999px;color:rgba(63,42,24,.7);font-size:.875rem;font-weight:500;transition:all .2s;text-decoration:none;margin:.25rem;background:#fff;}
265    .sav-navigate:hover{background:#3f2a18;color:#f5efdc;border-color:#3f2a18;}
266
267    /* ── Snippets (search/blog results) ── */
268    .sav-snippet{border-bottom:1px dashed #e0d5bc;padding-bottom:1.25rem;margin-bottom:1.25rem;}
269    .sav-snippet:last-child{border-bottom:none;}
270    .sav-snippet-title{font-size:1rem;font-weight:600;color:#0d9488;text-decoration:none;}
271    .sav-snippet-title:hover{color:#0f766e;text-decoration:underline;}
272    .sav-snippet-meta{font-size:.8125rem;color:#9b928b;margin-top:.25rem;}
273
274    /* ── Prose / reading ── */
275    .sav-prose{font-family:Georgia,Palatino,"Times New Roman",serif;font-size:1.0625rem;line-height:2;color:#3f2a18;}
276    .sav-prose p{margin-bottom:1rem;}
277
278    /* ── Navbar ── */
279    #savNav{position:fixed;top:0;left:0;right:0;height:64px;background:#f8f2e4;border-bottom:1px solid #e0d5bc;box-shadow:0 2px 12px rgba(63,42,24,.08);z-index:1030;display:flex;align-items:center;padding:0 1rem;gap:.5rem;}
280    .sav-nav-link{padding:.375rem .625rem;font-size:.875rem;font-weight:500;color:#3f2a18;text-decoration:none;border-radius:.375rem;transition:background .15s,color .15s;white-space:nowrap;}
281    .sav-nav-link:hover{background:#f0e8d8;color:#3f2a18;text-decoration:none;}
282
283    /* ── Navbar dropdown ── */
284    .sav-dropdown{position:relative;display:inline-flex;align-items:center;height:64px;}
285    .sav-dropdown-toggle{display:inline-flex;align-items:center;gap:.3rem;padding:.375rem .625rem;font-size:.875rem;font-weight:500;color:#3f2a18;text-decoration:none;border:none;background:none;cursor:pointer;border-radius:.375rem;transition:background .15s;white-space:nowrap;}
286    .sav-dropdown-toggle:hover{background:#f0e8d8;}
287    .sav-dropdown-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;
287min-width:200px;background:#fff;border:1px solid #e0d5bc;border-radius:.625rem;box-shadow:0 8px 24px rgba(63,42,24,.12);z-index:1050;padding:.25rem 0;}
288    .sav-dropdown.open .sav-dropdown-menu{display:block;}
289    .sav-dropdown-item{display:flex;align-items:center;gap:.5rem;padding:.5625rem 1rem;font-size:.875rem;color:#3f2a18;text-decoration:none;transition:background .1s;white-space:nowrap;border:none;background:none;cursor:pointer;width:100%;text-align:left;}
290    .sav-dropdown-item:hover{background:#f8f2e4;color:#3f2a18;text-decoration:none;}
291    .sav-dropdown-divider{height:1px;background:#f0e8d8;margin:.25rem 0;}
292    .sav-dropdown-header{padding:.375rem 1rem .25rem;font-size:.6875rem;font-weight:600;color:#9b928b;text-transform:uppercase;letter-spacing:.05em;}
293    /* ── Notifications dropdown ── */
294    #notifDropdown{left:auto;right:0;width:min(420px,calc(100vw - 1.5rem));min-width:0;max-height:min(520px,calc(100vh - 5.5rem));padding:0;border-radius:.875rem;background:#fffdf6;border-color:#e0d5bc;overflow:hidden;box-shadow:0 18px 44px -28px rgba(63,42,24,.55);}
295    #notifDropdown .sav-dropdown-header{background:#fffdf6;padding:.95rem 1.05rem .75rem;border-bottom:1px solid #ece2cd;font-size:.72rem;letter-spacing:.14em;font-weight:800;color:#8b8177;}
296    #BindNotification{list-style:none;margin:0;padding:.35rem;max-height:min(440px,calc(100vh - 10rem));overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d19b3d #f3ead8;}
297    #BindNotification::-webkit-scrollbar{width:6px;}
298    #BindNotification::-webkit-scrollbar-track{background:#f3ead8;border-radius:999px;}
299    #BindNotification::-webkit-scrollbar-thumb{background:#d19b3d;border-radius:999px;}
300    #BindNotification li.sav-notif,#BindNotification li.sav-notif-empty{border-bottom:0;}
301    .sav-notif{margin:0;}
302    .sav-notif + .sav-notif{margin-top:.2rem;}
303    .sav-notif-item{display:flex;gap:.75rem;
303align-items:flex-start;padding:.78rem .8rem;border:1px solid transparent;border-radius:.65rem;color:#3f2a18;text-decoration:none;transition:background .12s,border-color .12s;}
304    .sav-notif-item:hover{background:#f8f2e4;border-color:#e7dcc4;text-decoration:none;}
305    .sav-notif-badge{flex-shrink:0;min-width:54px;margin-top:.12rem;font-size:.64rem;font-weight:800;text-align:center;text-transform:uppercase;letter-spacing:.06em;padding:.18rem .5rem;border-radius:999px;line-height:1.6;background:#ede6d8;color:#7c5f35;}
306    .sav-notif-post{background:#dff1ee;color:#08756c;}
307    .sav-notif-page{background:#f6ebcf;color:#996413;}
308    .sav-notif-text{display:flex;flex-direction:column;gap:.25rem;min-width:0;}
309    .sav-notif-title{font-size:.92rem;font-weight:700;color:#2f1f13;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
310    .sav-notif-meta{font-size:.78rem;color:#8b8177;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
311    .sav-notif-empty{padding:2rem 1rem;text-align:center;color:#8b8177;font-size:.9rem;}
312    html.theme-dark #notifDropdown{background:#211d18;border-color:#3a3228;box-shadow:0 20px 46px -20px rgba(0,0,0,.75);}
313    html.theme-dark #notifDropdown .sav-dropdown-header{background:#211d18;border-color:#3a3228;color:#c9bca8;}
314    html.theme-dark #BindNotification{scrollbar-color:#d19b3d #211d18;}
315    html.theme-dark #BindNotification::-webkit-scrollbar-track{background:#211d18;}
316    html.theme-dark .sav-notif-item{color:#f3ead6;}
317    html.theme-dark .sav-notif-item:hover{background:#2d261e;border-color:#4a4234;}
318    html.theme-dark .sav-notif-title{color:#f3ead6;}
319    html.theme-dark .sav-notif-meta{color:#b9aa95;}
320
321    /* ── Mobile menu ── */
322    #savMobileMenu{display:none;position:fixed;top:64px;left:0;right:0;background:#f8f2e4;border-bottom:1px solid #e0d5bc;z-index:1029;padding:.75rem 1rem;max-height:calc(100vh - 64px);overflow-y:auto;}
323    #savMobileMenu.open{display:block;}
324    .sav-mobile-link{display:flex;align-items:center;padding:.625rem .75rem;font-size:.9375rem;font-weight:500;color:#3f2a18;text-decoration:none;border-radius:.375rem;border:none;background:none;cursor:pointer;width:100%;text-align:left;}
325    .sav-mobile-link:hover{background:#f0e8d8;}
326    .sav-mobile-sub{padding-left:1.25rem;border-left:2px solid #e0d5bc;margin:.25rem 0 .25rem .5rem;}
327    .sav-mobile-sub a{display:block;padding:.375rem .5rem;font-size:.875rem;color:#9b928b;text-decoration:none;border-radius:.25rem;}
328    .sav-mobile-sub a:hover{color:#3f2a18;background:#f0e8d8;}
329
330    /* ── Back-to-top ── */
331    .back-to-top{cursor:pointer;position:fixed;bottom:20px;right:20px;display:none;width:40px;height:40px;border-radius:50%;background:#3f2a18;color:#f5efdc;border:none;box-shadow:0 4px 12px rgba(63,42,24,.3);font-size:1rem;transition:background .2s;}
332    .back-to-top:hover{background:#d19b3d;}
333
334    /* ── Scrollbar for sidebars ── */
335    .sav-scrollbar{scrollbar-width:thin;scrollbar-color:#d19b3d #2c2c2d;}
336    .sav-scrollbar::-webkit-scrollbar{width:4px;}
337    .sav-scrollbar::-webkit-scrollbar-track{background:#2c2c2d;}
338    .sav-scrollbar::-webkit-scrollbar-thumb{background:#d19b3d;border-radius:2px;}
339
340    /* ── Mobile responsive visibility ── */
341    @media(max-width:767px){
342      #savNavLinks{display:none!important;}
343      #savSearchInline{display:none!important;}
344      #savMobileToggle{display:inline-flex!important;}
345      .sav-page-header h1{font-size:1.375rem;}
346      #notifDropdown{position:fixed;top:70px;left:.75rem;right:.75rem;width:auto;max-height:calc(100vh - 5.5rem);}
347      #BindNotification{max-height:calc(100vh - 10rem);}
348    }
349    @media(min-width:768px){
350      #savMobileToggle{display:none!important;}
351      #savMobileMenu{display:none!important;}
352    }
353    </style>
354</head>
355<body class="bg-sav-bg text-sav-text" style="padding-top:64px;">
356    <input name="__RequestVerificationToken" type="hidden" value="3C2zunT4UraNyWWWY-9H43Qe34FJLf0cdhUhJkiP9X9BALprfHWEX_QNj74goyJZsMQCD6_SmvW7YBK1-G_EhzXZaL2UimM5eBcHxcCnois1" />
357
358    <!-- ═══════════════════ TOP NAVBAR ═══════════════════ -->
359    <nav id="savNav" class="top-nav" role="banner">
360
361        <!-- Brand -->
362        <a href="/" style="color:#3f2a18;font-weight:700;font-size:1.125rem;text-decoration:none;display:flex;align-items:center;gap:.375rem;flex-shrink:0;margin-right:.75rem;">
363            <span style="color:#d19b3d;font-size:1.3rem;line-height:1;">&#10022;</span>Savitri
364        </a>
365
366        <!-- Desktop nav links -->
367        <div id="savNavLinks" style="display:flex;align-items:center;flex:1;height:64px;gap:.1rem;">
368
369            <a href="/" class="sav-nav-link">Home</a>
370
371            <!-- Journals dropdown -->
372            <div class="sav-dropdown">
373                <button class="sav-dropdown-toggle" onclick="savToggleDrop(this)">
374                    Journals <i class="fa fa-caret-down" style="font-size:.75rem;"></i>
375                </button>
376                <div class="sav-dropdown-menu" style="min-width:220px;">
377    <a href="/blogs/light-of-supreme" class="sav-dropdown-item">The Light of the Supreme</a>
378    <a href="/blogs/savitri-cultural" class="sav-dropdown-item">Savitri Cultural</a>
379    <a href="/blogs/parasya-jyotih" class="sav-dropdown-item">परस्य ज्योतिः</a>
380    <a href="/blogs/bhawani-bharati" class="sav-dropdown-item">Bhawani Bharati</a>
381    <a href="/blogs/narad-remembers" class="sav-dropdown-item">Narad Remembers</a>
382
383                </div>
384            </div>
385
386            <a href="/library" class="sav-nav-link">Library</a>
387            <a href="/books" class="sav-nav-link">Books</a>
388
389            <!-- Media dropdown -->
390            <div class="sav-dropdown">
391                <button class="sav-dropdown-toggle" onclick="savToggleDrop(this)">
392                    Media <i class="fa fa-caret-down" style="font-size:.75rem;"></i>
393                </button>
394                <div class="sav-dropdown-menu">
395                    <a href="/mos" class="sav-dropdown-item"><i class="fa fa-picture-o fa-fw"></i> Meditations on Savitri</a>
396                    <a href="/presentations" class="sav-dropdown-item"><i class="fa fa-film fa-fw"></i> Presentations</a>
397                    <a href="/themes" class="sav-dropdown-item"><i class="fa fa-picture-o fa-fw"></i> Themes</a>
398                    <a href="/audio" class="sav-dropdown-item"><i class="fa fa-headphones fa-fw"></i> Audio</a>
399                    <div class="sav-dropdown-divider"></div>
400                    <a href="/about" class="sav-dropdown-item"><i class="fa fa-info-circle fa-fw"></i> About</a>
401                </div>
402            </div>
403
404            <!-- Analysis dropdown -->
405            <div class="sav-dropdown">
406                <button class="sav-dropdown-toggle" onclick="savToggleDrop(this)">
407                    Analysis <i class="fa fa-caret-down" style="font-size:.75rem;"></i>
408                </button>
409                <div class="sav-dropdown-menu">
410                    <a href="/count" class="sav-dropdown-item"><i class="fa fa-bar-chart fa-fw"></i> Counts</a>
411                    <a href="/lineinfo" class="sav-dropdown-item"><i class="fa fa-list-ol fa-fw"></i> Line Info</a>
412                </div>
413            </div>
414
415            <!-- Notifications -->
416            <div class="sav-dropdown">
417                <button class="sav-dropdown-toggle" style="padding:.375rem .75rem;" onclick="savToggleDrop(this); GetNotifications();">
418                    <i class="fa fa-bell faa-ring animated" style="font-size:1rem;"></i>
419                </button>
420                <div class="sav-dropdown-menu" id="notifDropdown">
421                    <div class="sav-dropdown-header">Notifications</div>
422                    <ul id="BindNotification"></ul>
423                </div>
424            </div>
425
426        </div>
427
428        <!-- Inline search (desktop) -->
429        <div id="savSearchInline" style="display:flex;align-items:center;gap:.375rem;margin:0 .5rem;">
430            <input type="text" id="SearchBoxNav" placeholder="Search&#8230;" class="sav-input" style="width:155px;padding:.375rem .75rem;font-size:.8125rem;" />
431            <a href="#" onclick="event.preventDefault();SearchGoNav();" style="color:#9b928b;padding:.375rem .5rem;font-size:.9rem;text-decoration:none;display:inline-flex;align-items:center;" aria-label="Search">
432                <i class="fa fa-search"></i>
433            </a>
434        </div>
435
436        <!-- Theme toggle: Light → Sepia → Dark -->
437        <button type="button" id="savThemeToggle" class="sav-dropdown-toggle" style="padding:.375rem .6rem;flex-shrink:0;" title="Switch theme (Light / Sepia / Dark)" aria-label="Switch theme" onclick="savCycleTheme(
437)">
438            <i class="fa fa-sun-o" id="savThemeIcon" style="font-size:1rem;"></i>
439        </button>
440
441        <!-- Sidebar toggle: shown only on pages that expose a reading sidebar / TOC -->
442        <button type="button" id="savSidebarToggle" class="sav-dropdown-toggle" style="display:none;padding:.375rem .6rem;flex-shrink:0;" title="Hide sidebar" aria-label="Toggle sidebar" aria-pressed="true" onclick="savToggleSidebar()">
443            <i class="fa fa-columns" id="savSidebarToggleIcon" style="font-size:1rem;"></i>
444        </button>
445
446        <!-- Account / login -->
447        <div style="display:flex;align-items:center;gap:.25rem;flex-shrink:0;">
448                <a href="/login" class="sav-btn sav-btn-outline sav-btn-sm"><i class="fa fa-sign-in" style="margin-right:.3rem;"></i> Log In</a>
449
450            <!-- Mobile hamburger (hidden on desktop via CSS) -->
451            <button id="savMobileToggle" onclick="savToggleMobile();" aria-label="Open menu"
452                style="display:none;align-items:center;justify-content:center;flex-direction:column;gap:4px;width:36px;height:36px;border:1px solid #e0d5bc;border-radius:.375rem;background:transparent;cursor:pointer;padding:7px;margin-left:.25rem;">
453                <span style="display:block;width:18px;height:2px;background:#3f2a18;border-radius:1px;"></span>
454                <span style="display:block;width:18px;height:2px;background:#3f2a18;border-radius:1px;"></span>
455                <span style="display:block;width:18px;height:2px;background:#3f2a18;border-radius:1px;"></span>
456            </button>
457        </div>
458    </nav>
459
460    <!-- ═══════════════════ MOBILE MENU ═══════════════════ -->
461    <div id="savMobileMenu">
462        <div style="display:flex;gap:.5rem;margin-bottom:.75rem;">
463            <input type="text" id="SearchBoxNavMobile" placeholder="Search&#8230;" class="sav-input" style="flex:1;" />
464            <button class="sav-btn sav-btn-outline sav-btn-sm" onclick="document.getElementById('SearchBoxNav').value=d
464ocument.getElementById('SearchBoxNavMobile').value;SearchGoNav();">
465                <i class="fa fa-search"></i>
466            </button>
467        </div>
468        <a href="/" class="sav-mobile-link"><i class="fa fa-home fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Home</a>
469        <a href="/library" class="sav-mobile-link"><i class="fa fa-book fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Library</a>
470        <a href="/books" class="sav-mobile-link"><i class="fa fa-bookmark fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Books</a>
471        <button class="sav-mobile-link" onclick="this.nextElementSibling.style.display=this.nextElementSibling.style.display==='none'?'block':'none'">
472            <i class="fa fa-newspaper-o fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Journals
473        </button>
474        <div class="sav-mobile-sub" style="display:none;">
475    <a href="/blogs/light-of-supreme" class="sav-dropdown-item">The Light of the Supreme</a>
476    <a href="/blogs/savitri-cultural" class="sav-dropdown-item">Savitri Cultural</a>
477    <a href="/blogs/parasya-jyotih" class="sav-dropdown-item">परस्य ज्योतिः</a>
478    <a href="/blogs/bhawani-bharati" class="sav-dropdown-item">Bhawani Bharati</a>
479    <a href="/blogs/narad-remembers" class="sav-dropdown-item">Narad Remembers</a>
480
481        </div>
482        <button class="sav-mobile-link" onclick="this.nextElementSibling.style.display=this.nextElementSibling.style.display==='none'?'block':'none'">
483            <i class="fa fa-film fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Media
484        </button>
485        <div class="sav-mobile-sub" style="display:none;">
486            <a href="/mos">Meditations on Savitri</a>
487            <a href="/presentations">Presentations</a>
488            <a href="/themes">Themes</a>
489            <a href="/audio">Audio</a>
490            <a href="/about">About</a>
491        </div>
492        <a href="/count" class="sav-mobile-link"><i class="fa fa-bar-chart fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Counts</a>
493            <a href="/login" class="sav-mobile-link"><i class="fa fa-sign-in fa-fw" style="margin-right:.5rem;color:#9b928b;"></i> Log In / Register</a>
494    </div>
495
496    <!-- ═══════════════════ PAGE BODY ═══════════════════ -->
497    <div class="container body-content" style="padding-top:1rem;">
498        
499
500<!-- Sidebar — Bootstrap navbar classes removed, id kept for JS -->
501<nav role="navigation" id="TocShowHide" style="display:none;">
502    <div class="nav-side-menu sav-scrollbar">
503        <div class="brand">Table of Content</div>
504        <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
505        <div class="menu-list">
506            <ul id="menu-content" class="menu-content" aria-expanded="true">
507                <li class="text-center" id="PlaceHolderLoad" aria-expanded="true" data-pid="1">
508                    <a href="#">Load More <span class="DataCount"></span></a>
509                </li>
510            </ul>
511        </div>
512    </div>
513</nav>
514
515<div id="bindData" class="sav-feed-wrap">
516    <div class="divafter" style="text-align:center;padding:2.5rem 0 1.5rem;">
517        <h1 id="jtype" style="font-family:Georgia,Palatino,'Times New Roman',serif;font-size:2rem;font-weight:700;color:#3f2a18;margin:0 0 .5rem;line-height:1.25;"></h1>
518        <h5 id="rssfeeder" style="color:#9b928b;font-size:.95rem;font-style:italic;margin:.25rem 0 0;font-weight:400;"></h5>
519        <p style="margin-top:.75rem;">
520            <a href="" id="ShowToc" style="color:#d19b3d;font-family:'Crimson Text',Georgia,serif;">Show table of Content</a>
521        </p>
522        <div style="width:3rem;height:2px;background:#d19b3d;margin:.75rem auto 0;border-radius:1px;"></div>
523    </div>
524</div>
525
526<div class="sav-feed-wrap" style="display:flex;gap:2rem;flex-wrap:wrap;align-items:flex-start;">
527    <div style="flex:1;min-width:0;" id="DataCustom">
528        <div id="placeHolder">
529            <p id="placeholderparar" style="display:none;">
530                <span><a href="#" class="sav-btn sav-btn-outline sav-btn-sm" id="loadData">Load More</a></span>
531            </p>
532        </div>
533    </div>
534    <div style="font-size:.9rem;" id="recentPosts"></div>
535</div>
536
537
538
539        <!-- WhatsApp -->
540        <div style="position:fixed;left:0;bottom:0;z-index:100;">
541            <a href="https://api.whatsapp.com/send?phone=919310081872&text=Savitri%20--help" target="_blank" style="display:block;">
542                <img src="https://vmltdata.s3-us-west-2.amazonaws.com/whatsapp.png" style="max-height:60px;">
543            </a>
544        </div>
545
546        <!-- Back to top -->
547        <button id="back-to-top" class="back-to-top" title="Back to top" aria-label="Back to top">
548            <i class="fa fa-chevron-up"></i>
549        </button>
550
551        <hr style="margin-top:2rem;border-color:#e0d5bc;" />
552        <footer style="text-align:center;padding:1rem 0 1.5rem;font-size:.875rem;color:#9b928b;">
553            <span>&copy; 2026 Savitri</span>
554            &nbsp;&mdash;&nbsp;
555            <a href="/privacy-policy" target="_blank" style="color:#0d9488;">Privacy Policy</a>
556        </footer>
557    </div>
558
559    <!-- ═══════════════════ SCRIPTS ═══════════════════ -->
560    
560<script src="/bundles/jquery?v=geHET3tT1HOb31uCwxJK1kl3ddcbtQpIPvT1bp-OXiI1"></script>
560
561
562    
562<script src="/bundles/bootstrap?v=uC2-l4zY_lrcdhknLbcp1BQ3QdMCQd8SRkJ3yCEfzps1"></script>
562
563
564    
564<script defer src="https://cdn.jsdelivr.net/simplemde/latest/simplemde.min.js"></script>
564
565    
565<script src="/Scripts/jquery.firstVisitPopup.min.js"></script>
565
566    
566<script src='/bundles/custom?v=qFo7I6HQ8_QX9gelfxvOTr5EzD0g98QKQJL36Asch1k1' defer></script>
566
567
568    
569    
569<script type="text/javascript">
570        $(document).ready(function () {
571            RegexMatch('.content');
572            $("#placeholderparar").hide();
573            var pathArray = window.location.pathname.split("/");
574            var pn = 1;
575            if (pathArray[1] !== "" && pathArray[2] !== "") {
576                getSlugsDetails(pathArray[2], pn);
577            }
578            $("#loadData").click(function (event) {
579                event.preventDefault();
580                pn++;
581                getSlugsDetails(pathArray[2], pn);
582            });
583            $(window).scroll(function () {
584                if ($(window).scrollTop() >= ($(document).height() * 0.8) - $(window).height()) {
585                    $("#placeholderparar").show();
586                }
587            });
588        });
589    </script>
589
590
591    
591<script type="text/javascript" src="//fast.fonts.net/jsapi/8b9becaf-4f33-4214-83ca-084c4a14579f.js"></script>
591
592
593    <!-- Bootstrap modal kept for JS compatibility (custom.js uses Bootstrap modal API) -->
594    <div class="modal fade sav-reader-modal" id="showData" role="dialog" aria-labelledby="showDataTitle" data-backdrop="static" data-keyboard="false">
595        <div class="modal-dialog modal-lg sav-reader-dialog">
596            <div class="modal-content sav-reader-content">
597                <div class="modal-header sav-reader-header">
598                    <h2 class="modal-title sav-reader-title" id="showDataTitle"></h2>
599                    <button type="button" class="close sav-reader-close" data-dismiss="modal" aria-label="Close" title="Close">
600                        <span aria-hidden="true">&times;</span>
601                    </button>
602                </div>
603                <div class="modal-body sav-reader-body"></div>
604                <div class="modal-footer sav-reader-footer">
605                    <div class="sav-reader-nav">
606                        <span class="navigators">
607                            <a href="" class="previous sav-reader-nav-btn" data-next="" aria-label="Previous" title="Previous">
608                                <i class="fa fa-chevron-left" aria-hidden="true"></i>
609                            </a>
610                        </span>
611                        <span class="navigators">
612                            <a href="" data-next="" class="next sav-reader-nav-btn" aria-label="Next" title="Next">
613                                <i class="fa fa-chevron-right" aria-hidden="true"></i>
614                            </a>
615                        </span>
616                    </div>
617                    <button type="button" class="sav-btn sav-btn-outline sav-reader-close-btn" data-dismiss="modal">Close</button>
618                </div>
619            </div>
620        </div>
621    </div>
622
623    <div class="modalLoader"></div>
624    <div id="snackbar" style="visibility:hidden;min-width:250px;margin-left:-125px;background:#3f2a18;color:#f5efdc;text-align:center;border-radius:.5rem;padding:.875rem 1.25rem;position:fixed;z-index:9999;left:50%;bottom:30px;font-size:.875rem;"></div>
625
626    
626<script>
627    // ── Minimal Bootstrap-compatible modal shim (installs only if Bootstrap's modal JS is absent) ──
628    (function ($) {
629        if (!$ || !$.fn || $.fn.modal) return;     // real Bootstrap modal present → leave it alone
630        var openCount = 0;
631        function opt(el, name, dflt) {
632            var v = el.getAttribute('data-' + name);
633            if (v === null) return dflt;
634            if (v === 'false') return false;
635            if (v === 'true') return true;
636            return v;
637        }
638        function show($m) {
639            var el = $m[0];
640            if (!el || el.classList.contains('in')) return;
641            $m.trigger('show.bs.modal');
642            var backdrop = opt(el, 'backdrop', true);
643            if (backdrop !== false) {
644                var bd = document.createElement('div');
645                bd.className = 'modal-backdrop fade';
646                document.body.appendChild(bd);
647                el._savBd = bd;
648                void bd.offsetWidth;
649                bd.classList.add('in');
650                if (backdrop !== 'static') {
651                    bd.addEventListener('click', function () { hide($m); });
652                }
653            }
654            document.body.classList.add('modal-open');
655            el.style.display = 'block';
656            el.removeAttribute('aria-hidden');
657            el.setAttribute('aria-modal', 'true');
658            void el.offsetWidth;                   // reflow so .fade transition runs
659            el.classList.add('in');
660            openCount++;
661            $m.trigger('shown.bs.modal');
662        }
663        function hide($m) {
664            var el = $m[0];
665            if (!el || !el.classList.contains('in')) return;
666            $m.trigger('hide.bs.modal');
667            el.classList.remove('in');
668            var bd = el._savBd;
669            if (bd) bd.classList.remove('in');
670            function done() {
671                el.style.display = 'none';
672                el.setAttribute('aria-hidden', 'true');
673                el.removeAttribute('aria-modal');
674                if (bd && bd.parentNode) bd.parentNode.removeChild(bd);
675                el._savBd = null;
676                openCount = Math.max(0, openCount - 1);
677                if (openCount === 0) document.body.classList.remove('modal-open');
678                $m.trigger('hidden.bs.modal');
679            }
680            if (el.classList.contains('fade')) setTimeout(done, 300); else done();
681        }
682        $.fn.modal = function (arg) {
683            return this.each(function () {
684                var $m = $(this);
685                if (arg === 'hide') hide($m);
686                else if (arg === 'toggle') this.classList.contains('in') ? hide($m) : show($m);
687                else show($m);                     // undefined / object / 'show'
688            });
689        };
690        $(document).on('click', '[data-dismiss="modal"]', function (e) {
691            e.preventDefault();
692            var $m = $(this).closest('.modal');
693            if ($m.length) hide($m);
694        });
695        $(document).on('keydown', function (e) {
696            if (e.keyCode !== 27) return;
697            var $open = $('.modal.in').last();
698            if ($open.length && opt($open[0], 'keyboard', true) !== false) hide($open);
699        });
700    })(window.jQuery);
701
702    // ── Minimal Bootstrap-compatible tab shim (installs only if Bootstrap's tab JS is absent) ──
703    (function ($) {
704        if (!$ || !$.fn || $.fn.tab) return;       // real Bootstrap tab present → leave it alone
705        $(document).on('click', '[data-toggle="tab"]', function (e) {
706            e.preventDefault();
707            var sel = this.getAttribute('href') || this.getAttribute('data-target');
708            var pane = sel ? document.querySelector(sel) : null;
709            var li = this.closest('li');
710            var nav = this.closest('.nav');
711            if (nav) nav.querySelectorAll('li').forEach(function (l) { l.classList.remove('active'); });
712            if (li) li.classList.add('active');
713            if (pane && pane.parentNode) {
714                pane.parentNode.querySelectorAll('.tab-pane').forEach(function (p) { p.classList.remove('active', 'in'); });
715                pane.classList.add('active', 'in');
716            }
717        });
718    })(window.jQuery);
719
720    // Navbar dropdown toggle
721    function savToggleDrop(btn) {
722        var parent = btn.closest('.sav-dropdown');
723        var wasOpen = parent.classList.contains('open');
724        document.querySelectorAll('.sav-dropdown.open').forEach(function(d) { d.classList.remove('open'); });
725        if (!wasOpen) { parent.classList.add('open'); }
726    }
727    document.addEventListener('click', function(e) {
728        if (!e.target.closest('.sav-dropdown')) {
729            document.querySelectorAll('.sav-dropdown.open').forEach(function(d) { d.classList.remove('open'); });
730        }
731    });
732
733    // Mobile menu toggle
734    function savToggleMobile() {
735        document.getElementById('savMobileMenu').classList.toggle('open');
736    }
737
738    function savGetSidebarNav() {
739        return document.querySelector('nav.generalData') || document.getElementById('TocShowHide');
740    }
741
742    function savSidebarIsVisible(nav) {
743        if (!nav) return false;
744        return window.getComputedStyle(nav).display !== 'none' && !nav.classList.contains('sav-sidebar-hidden');
745    }
746
747    function savSidebarNextFrame(callback) {
748        if (window.requestAnimationFrame) {
749            window.requestAnimationFrame(function() {
750                window.requestAnimationFrame(callback);
751            });
752        } else {
753            window.setTimeout(callback, 0);
754        }
755    }
756
757    function savSidebarTransitionMs() {
758        if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
759            return 0;
760        }
761        return 540;
762    }
763
764    function savClearSidebarTimer(nav) {
765        if (nav && nav.__savSidebarTimer) {
766            window.clearTimeout(nav.__savSidebarTimer);
767            nav.__savSidebarTimer = null;
768        }
769    }
770
771    function savClearSidebarContentTimer() {
772        if (document.body.__savSidebarContentTimer) {
773            window.clearTimeout(document.body.__savSidebarContentTimer);
774            document.body.__savSidebarContentTimer = null;
775        }
776        document.body.classList.remove('sidebar-content-prep');
777        document.body.classList.remove('sidebar-content-animating');
778        document.body.style.removeProperty('--sav-sidebar-content-shift');
779    }
780
781    function savCanAnimateSidebarContent(content) {
782        if (!content || !document.body.classList.contains('sidebar-transition-ready')) return false;
783        if (window.innerWidth <= 860) return false;
784        if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) return false;
785        return true;
786    }
787
788    function savApplySidebarBodyOffset(visible) {
789        if (visible) {
790            document.body.classList.add('has-sidebar');
791            document.body.classList.add('sidebar-active');
792        } else {
793            document.body.classList.remove('has-sidebar');
794            document.body.classList.remove('sidebar-active');
795        }
796    }
797
798    function savAnimateSidebarContent(content, applyLayoutChange) {
799        if (!savCanAnimateSidebarContent(content)) {
800            applyLayoutChange();
801            return;
802        }
803
804        savClearSidebarContentTimer();
805        var startLeft = content.getBoundingClientRect().left;
806        applyLayoutChange();
807        var endLeft = content.getBoundingClientRect().left;
808        var shift = startLeft - endLeft;
809        if (Math.abs(shift) < 1) return;
810
811        document.body.style.setProperty('--sav-sidebar-content-shift', shift + 'px');
812        document.body.classList.add('sidebar-content-prep');
813        content.getBoundingClientRect();
814        document.body.classList.remove('sidebar-content-prep');
815        document.body.classList.add('sidebar-content-animating');
816
817        savSidebarNextFrame(function() {
818            document.body.style.setProperty('--sav-sidebar-content-shift', '0px');
819            document.body.__savSidebarContentTimer = window.setTimeout(function() {
820                savClearSidebarContentTimer();
821            }, savSidebarTransitionMs());
822        });
823    }
824
825    function savShowSidebar(nav) {
826        if (!nav) return;
827        savClearSidebarTimer(nav);
828        if (window.getComputedStyle(nav).display === 'none') {
829            nav.classList.add('sav-sidebar-hidden');
830            nav.style.display = 'block';
831        }
832        nav.classList.add('sav-sidebar-animating');
833        nav.getBoundingClientRect();
834        savSidebarNextFrame(function() {
835            nav.classList.remove('sav-sidebar-hidden');
836            nav.__savSidebarTimer = window.setTimeout(function() {
837                nav.classList.remove('sav-sidebar-animating');
838                nav.__savSidebarTimer = null;
839            }, savSidebarTransitionMs());
840        });
841    }
842
843    function savHideSidebar(nav, collapseAfter) {
844        if (!nav) return;
845        savClearSidebarTimer(nav);
846        if (window.getComputedStyle(nav).display === 'none') {
847            nav.classList.add('sav-sidebar-hidden');
848            return;
849        }
850        nav.classList.add('sav-sidebar-animating');
851        nav.classList.add('sav-sidebar-hidden');
852        nav.__savSidebarTimer = window.setTimeout(function() {
853            if (collapseAfter && nav.classList.contains('sav-sidebar-hidden')) {
854                nav.style.display = 'none';
855            }
856            nav.classList.remove('sav-sidebar-animating');
857            nav.__savSidebarTimer = null;
858        }, savSidebarTransitionMs());
859    }
860
861    function savUpdateSidebarToggle(visible) {
862        var btn = document.getElementById('savSidebarToggle');
863        if (!btn) return;
864        var nav = savGetSidebarNav();
865        if (!nav) {
866            btn.style.display = 'none';
867            return;
868        }
869        var isVisible = typeof visible === 'boolean' ? visible : savSidebarIsVisible(nav);
870        if (isVisible) btn.setAttribute('data-sidebar-available', '1');
871        if (!isVisible && btn.getAttribute('data-sidebar-available') !== '1') {
872            btn.style.display = 'none';
873            return;
874        }
875        btn.style.display = 'inline-flex';
876        btn.setAttribute('aria-pressed', isVisible ? 'true' : 'false');
877        btn.title = isVisible ? 'Hide sidebar' : 'Show sidebar';
878        btn.setAttribute('aria-label', isVisible ? 'Hide sidebar' : 'Show sidebar');
879    }
880
881    function savToggleSidebar() {
882        var nav = savGetSidebarNav();
883        if (!nav) return;
884        var shouldShow = !savSidebarIsVisible(nav);
885        savSetSidebarOffset(shouldShow, nav);
886    }
887
888    // Sidebar body class — used by Site.css to offset content
889    function savSetSidebarOffset(visible, nav, collapseAfter) {
890        nav = nav || savGetSidebarNav();
891        if (visible) { savShowSidebar(nav); }
892        else { savHideSidebar(nav, collapseAfter); }
893
894        var content = document.querySelector('.container.body-content');
895        savAnimateSidebarContent(content, function() {
896            savApplySidebarBodyOffset(visible);
897        });
898        savUpdateSidebarToggle(visible);
899    }
900    // Set offset immediately if sidebar nav exists and is visible on this page
901    (function() {
902        var nav = savGetSidebarNav();
903        if (nav && savSidebarIsVisible(nav)) { savSetSidebarOffset(true); }
904        else { savUpdateSidebarToggle(false); }
905        var enableSidebarTransitions = function() {
906            document.body.classList.add('sidebar-transition-ready');
907        };
908        if (window.requestAnimationFrame) { window.requestAnimationFrame(enableSidebarTransitions); }
909        else { window.setTimeout(enableSidebarTransitions, 0); }
910    })();
911    // Patch jQuery show/hide on sidebars so the body offset and toggle stay in sync
912    $(document).ready(function() {
913        var orig_show = $.fn.show, orig_hide = $.fn.hide, orig_fadeIn = $.fn.fadeIn, orig_fadeOut = $.fn.fadeOut;
914        function isSidebarSet(set) {
915            return set.is && set.is('nav.generalData, #TocShowHide');
916        }
917        function applySidebarVisibility(set, visible, collapseAfter) {
918            set.each(function() {
919                savSetSidebarOffset(visible, this, collapseAfter);
920            });
921            return set;
922        }
923        $.fn.show = function() {
924            if (isSidebarSet(this)) { return applySidebarVisibility(this, true, false); }
925            var result = orig_show.apply(this, arguments);
926            return result;
927        };
928        $.fn.hide = function() {
929            if (isSidebarSet(this)) { return applySidebarVisibility(this, false, true); }
930            var result = orig_hide.apply(this, arguments);
931            return result;
932        };
933        $.fn.fadeIn = function() {
934            if (isSidebarSet(this)) { return applySidebarVisibility(this, true, false); }
935            return orig_fadeIn.apply(this, arguments);
936        };
937        $.fn.fadeOut = function() {
938            if (isSidebarSet(this)) { return applySidebarVisibility(this, false, true); }
939            return orig_fadeOut.apply(this, arguments);
940        };
941        savUpdateSidebarToggle();
942    });
943
944    // Back-to-top
945    $(window).on('scroll', function() {
946        if ($(this).scrollTop() > 50) { $('#back-to-top').fadeIn(); }
947        else { $('#back-to-top').fadeOut(); }
948    });
949    $('#back-to-top').on('click', function(e) {
950        e.preventDefault();
951        $('body,html').animate({ scrollTop: 0 }, 800);
952    });
953    </script>
953
954
955    <!-- Google Analytics -->
vendor: 69 bytes, lines 955-956
955
956    <script async src="https://www.googletagmanager.com/gtag/js?id=
956UA-40735254-1
vendor: 17 bytes, lines 956-957
956"></script>
957    
957<script>
958    
vendor: 142 bytes, lines 958-961
958window.dataLayer = window.dataLayer || [];
959    function gtag(){dataLayer.push(arguments);}
960    gtag('js', new Date());
961    gtag('config', '
961UA-40735254-1
vendor: 9 bytes, lines 961-962
961');
962    
962</script>
vendor: 2 bytes, line 962
962
963<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"6bdb57013c2747328ffed5b42b370dba","r":1,"spa":2}' crossorigin="anonymous"></script>
963
964</body>
965</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.