PageSourceSearch

https://www.saigonsisters.com/

html saigonsisters.com collected 2026-09-26 12:01:55 UTC 185,381 bytes, 2,307 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4  <title>Vietnamese Restaurant in West Loop Chicago: Banh Mi &amp; Pho | Saigon Sisters</title>
5  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6  <meta charset="UTF-8">
7  
8  <meta name="description" content="Family-run Vietnamese restaurant on W Lake St in Chicago&#39;s West Loop since 2009. Banh mi, pho, bao, spring rolls and catering for dine-in, takeout and delivery." />
9  <meta property="og:title" content="Saigon Sisters: Vietnamese Food in Chicago&#39;s West Loop" />
10  <meta property="og:description" content="Banh mi, pho, bao and spring rolls from sisters Mary and Theresa, cooking Vietnamese family recipes in Chicago since 2009. Dine in, take out or book catering." />
11  <meta property="og:image" content="https://res.cloudinary.com/targetable/image/upload/v1787255781/Customers/50070/Saigon%20Sisters/PICS/logo.svg" />
12  <meta property="og:type" content="website" />
13  <meta property="og:url" content="https://www.saigonsisters.com/" />
14
15  <link rel="icon" type="image/png" href="https://res.cloudinary.com/targetable/image/upload/v1787255780/Customers/50070/Saigon%20Sisters/PICS/favicon.png">
16  <link rel="canonical" href="https://www.saigonsisters.com/" />
17
18  
19
20  
21
22  <link rel="stylesheet" href="/assets/site-fa6bd954239289997bc418875168ed5ab9c9013b19cc0c43e02d72d7ae77e155.css" data-turbo-track="reload" />
23  <link rel="stylesheet" href="/assets/icons-8a8adf1b209dcf6019c445e5477d00b79192f6726b65fd7cf29cf43036ec3917.css" data-turbo-track="reload" />
24
25  
25<script type="importmap" data-turbo-track="reload">{
26  "imports": {
27    "application": "/assets/application-4a1c1d27c11faa4dbac51fff4126422169b85739cdee3e8b89ea183bc17a2c23.js",
28    "@hotwired/turbo-rails": "/assets/turbo.min-f3765a09513ca1417099ce92257ef54b9d4cf3a7addc7dcbb1d6d848d307ee8a.js",
29    "@hotwired/stimulus": "/assets/stimulus.min-dd364f16ec9504dfb72672295637a1c8838773b01c0b441bd41008124c407894.js",
30    "@hotwired/stimulus-loading": "/assets/stimulus-loading-3576ce92b149ad5d6959438c6f291e2426c86df3b874c525b30faad51b0d96b3.js",
31    "site": "/assets/site-4b047adea2bfbedbd09cb582dd17c2c15e218d15c9dc17cfa26985c983bcea78.js",
32    "local-time": "/assets/local-time-821d43d4efe5c285055b57aea1a1f04a89a1019f689de214873d5af45a3ab3d7.js",
33    "jquery": "/assets/jquery-9292661fe0d8c5ef2ef35f5ca64d541d70c87e9f6d7f2716d646591a295b7f36.js",
34    "jquery-mask-plugin": "/assets/jquery-mask-plugin-12f491759485d6e50f909cf5fb641f245011016ab91b9043c057666fe07a99c0.js",
35    "alpinejs": "/assets/alpinejs-1330ff78f6252d676b60ac1291d71df4f04e542899717f8ee4d03a79dec27045.js",
36    "swiper": "/assets/swiper-2faaef3c8e00dc01e477390250b8d1e3950bde9bcacdc205a4a0265787e5c077.js",
37    "libraries/vidbg": "/assets/libraries/vidbg-ca103f7572673d0e7e3cc8a6a59b200f7ab3da61da78a43e532949d800635fa5.js",
38    "controllers/application": "/assets/controllers/application-368d98631bccbf2349e0d4f8269afb3fe9625118341966de054759d96ea86c7e.js",
39    "controllers/hello_controller": "/assets/controllers/hello_controller-549135e8e7c683a538c3d6d517339ba470fcfb79d62f738a0a089ba41851a554.js",
40    "controllers": "/assets/controllers/index-2db729dddcc5b979110e98de4b6720f83f91a123172e87281d5a58410fc43806.js",
41    "controllers/prompt_engineering_controller": "/assets/controllers/prompt_engineering_controller-c5abfd07f3f7b741f778d3070d18fd216b100840ef6cfdce4adb7c953a59d715.js"
42  }
43}</script>
43
44<link rel="modulepreload" href="/assets/site-4b047adea2bfbedbd09cb582dd17c2c15e218d15c9dc17cfa26985c983bcea78.js">
45<link rel="modulepreload" href="/assets/jquery-9292661fe0d8c5ef2ef35f5ca64d541d70c87e9f6d7f2716d646591a295b7f36.js">
46<link rel="modulepreload" href="/assets/jquery-mask-plugin-12f491759485d6e50f909cf5fb641f245011016ab91b9043c057666fe07a99c0.js">
47<link rel="modulepreload" href="/assets/alpinejs-1330ff78f6252d676b60ac1291d71df4f04e542899717f8ee4d03a79dec27045.js">
48<link rel="modulepreload" href="/assets/swiper-2faaef3c8e00dc01e477390250b8d1e3950bde9bcacdc205a4a0265787e5c077.js">
49<script type="module">import "site"</script>
49
50
51  <link rel="preconnect" href="https://fonts.googleapis.com">
52  <link rel="preconnect" href="https://cdnjs.cloudflare.com">
53  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
54
55
56  <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,700,0..1,0&icon_names=17mp,add_card,ads_click,app_promo,attach_money,award_star,bakery_dining,bookmark_star,breakfast_dining,brightness_alert,cake,cake_add,cleaning_bucket,coffee,credit_card,date_range,directions_bus,drag_click,emoji_food_beverage,explosion,fastfood,featured_seasonal_and_gifts,fiber_new,file_map,file_map_stack,fireplace,food_bank,fork_spoon,glass_cup,home_pin,kid_star,local_bar,local_dining,local_fire_department,local_pizza,location_on,lunch_dining,mail,mark_email_unread,motorcycle,online_prediction,open_in_phone,phone_enabled,pin_drop,potted_plant,priority,quick_reorder,ramen_dining,restaurant,rice_bowl,sell,sentiment_excited,set_meal,settings_cell,shopping_bag,skillet_cooktop,smartphone,soup_kitchen,sports_football,star,star_rate,stockpot,trophy,volunteer_activism,wifi_calling_bar_1,wine_bar&display=block"
57        rel="preload" as="style">
58  <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,700,0..1,0&icon_names=17mp,add_card,ads_click,app_promo,attach_money,award_star,bakery_dining,bookmark_star,breakfast_dining,brightness_alert,cake,cake_add,cleaning_bucket,coffee,credit_card,date_range,directions_bus,drag_click,emoji_food_beverage,explosion,fastfood,featured_seasonal_and_gifts,fiber_new,file_map,file_map_stack,fireplace,food_bank,fork_spoon,glass_cup,home_pin,kid_star,local_bar,local_dining,local_fire_department,local_pizza,location_on,lunch_dining,mail,mark_email_unread,motorcycle,online_prediction,open_in_phone,phone_enabled,pin_drop,potted_plant,priority,quick_reorder,ramen_dining,restaurant,rice_bowl,sell,sentiment_excited,set_meal,settings_cell,shopping_bag,skillet_cooktop,smartphone,soup_kitchen,sports_football,star,star_rate,stockpot,trophy,volunteer_activism,wifi_calling_bar_1,wine_bar&display=block"
59      rel="stylesheet">
60
61  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/fontawesome.min.css"
62        rel="preload" as="style">
63  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/fontawesome.min.css"
64      rel="stylesheet">
65
66  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/brands.min.css"
67        rel="preload" as="style">
68  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/brands.min.css"
69      rel="stylesheet">
vendor: 75 bytes, lines 69-71
69
70    
71  <script src="https://www.google.com/recaptcha/enterprise.js?render=
716LcsffgqAAAAANLXQa19TOl4LbE2V7eS6PfaYhiT
vendor: 21 bytes, lines 71-73
71" defer></script>
72
73  
73<script>
74    if (!window.origin.includes('http://localhost')) {
75      window.heap=window.heap||[],heap.load=function(e,t){window.heap.appid=e,window.heap.config=t=t||{};var r=document.createElement("script");r.type="text/javascript",r.async=!0,r.src="https://cdn.heapanalytics.com/js/heap-"+e+".js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(r,a);for(var n=function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments,0)))}},p=["addEventProperties","addUserProperties","clearEventProperties","identify","resetIdentity","removeEventProperty","setEventProperties","track","unsetEventProperty"],o=0;o<p.length;o++)heap[p[o]]=n(p[o])};
76      heap.load((window.origin.includes('chowly.dev') ? '3177339425' : '3745098455'));
77    }
78  </script>
78
79
80    <link href="https://fonts.googleapis.com/css2?family=Roboto Slab:wght@400;700&amp;family=Roboto Slab:wght@400;700&amp;display=swap"
81          rel="preload" as="style">
82    <link href="https://fonts.googleapis.com/css2?family=Roboto Slab:wght@400;700&amp;family=Roboto Slab:wght@400;700&amp;display=swap"
83          rel="stylesheet">
84
85  <style>
86    
87    :root {
88        /* Light theme colors */
89        --bg-primary: white;
90        --bg-secondary: #F2F2F2;
91        --bg-form: white;
92        --text-primary: #212121;
93        --text-secondary: #666;
94        --text-muted: #666666;
95        --border-primary: #6b953e;
96        --border-secondary: #D7D7D7;
97        --stroke-primary: #6b953e;
98        --stroke-secondary: currentColor;
99        --active-bg-opacity: 8%;
100        --active-text: #6b953e;
101        --hover-bg-opacity: 8%;
102        --hover-text: #6b953e;
103        --link-text: #666;
104        --link-hover: black;
105        --social-bg: #666;
106        --social-text: white;
107        --placeholder-text: #D7D7D7;
108        --focus-border: #777777;
109        --button-bg: transparent;
110        --button-text: #6b953e;
111        --button-border: #6b953e;
112        --button-hover-bg: transparent;
113        --button-hover-border: #6b953e;
114        --brand-primary: #6b953e;
115        --brand-secondary: #6b953e;
116        --brand-overlay: rgba(107,149,62,0.08);
117        --brand-overlay-heavy: rgba(107,149,62,0.80);
118        --dim-overlay: rgba(0,0,0,0.4);
119    }
120    
121    body {
122        background: linear-gradient(180deg, rgba(107, 149, 62, 0.08) 0px, rgba(107, 149, 62, 0.00) 520px);
123    }
124
125    .grecaptcha-badge { visibility: hidden; }
126  </style>
127
128  <!-- ===== Saigon Sisters — elevated brand system (head_scripts) ===== -->
129<!-- 0) SEO head (additive — layout owns canonical/og-core/Restaurant JSON-LD) -->
130<meta name="twitter:card" content="summary_large_image">
131<meta name="twitter:title" content="Vietnamese Restaurant in West Loop Chicago: Banh Mi &amp; Pho">
132<meta name="twitter:description" content="Family-run Vietnamese restaurant on W Lake St in Chicago&#x27;s West Loop since 2009. Banh mi, pho, bao, spring rolls and catering for dine-in, takeout and delivery.">
133<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","name":"saigon-sisters","sameAs":["https://www.instagram.com/saigonsisters","https://www.facebook.com/225838153600","https://maps.google.com/?cid=16374601163417073777"]}]}</script>
133
134<link rel="preconnect" href="https://fonts.googleapis.com">
135<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
136<link rel="preconnect" href="https://res.cloudinary.com">
137<link href="https://fonts.googleapis.com/css2?family=Jost:wght@500;600;700&family=Montserrat:wght@400;500;600&display=swap" rel="stylesheet">
138
139<style>
140/* ---------- 1. TOKEN REMAP (recolors the whole token-driven theme) ---------- */
141:root{
142  --display-font-stack:'Jost',Montserrat,system-ui,sans-serif;
143  --body-font-stack:'Montserrat',system-ui,-apple-system,sans-serif;
144  --bg-primary:#FFFFFF;
145  --bg-secondary:#F3F7EE;
146  --bg-form:#F3F7EE;
147  --text-primary:#311541;
148  --text-secondary:#5E4F63;
149  --text-muted:#5E4F63;
150  --brand-primary:#4D7A24;
151  --brand-overlay:rgba(77,122,36,0.07);
152  --brand-overlay-heavy:rgba(77,122,36,0.82);
153  --dim-overlay:rgba(28,12,36,0.42);
154  --review-star-color:#9e6b16;
155  --button-bg:#311541; --button-text:#FFFFFF; --button-border:#311541;
156  --button-hover-bg:#5A2D6E; --button-hover-border:#5A2D6E;
157  --button-hover-text:#FFFFFF;
158  --link-text:#311541; --link-hover:#311541;
159  --border-primary:#4D7A24; --border-secondary:rgba(49,21,65,0.14);
160  --stroke-primary:#4D7A24;
161  --active-text:#311541; --hover-text:#311541;
162  --social-bg:#4D7A24; --social-text:#FFFFFF;
163  --placeholder-text:#5e4f63;
164  --focus-border:#4D7A24;
165}
166/* overflow-x:clip, never `hidden` — `hidden` makes html/body a scroll container and kills the
167   sticky nav; `clip` stops the sideways scroll without one. Blanket guard so a full-bleed band or
168   a decorative element that overhangs the viewport can't give the page a real horizontal scroll. */
169html,body{ background-color:var(--bg-primary)!important; color:var(--text-primary); overflow-x:clip; }
170
171/* ---------- 2. TYPOGRAPHY ---------- */
172html body{ font-family:'Montserrat',system-ui,-apple-system,sans-serif; font-weight:400; }
173html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{
174  font-family:'Jost',Montserrat,system-ui,sans-serif!important; font-weight:600; letter-spacing:-0.01em; line-height:1.06; }
175html body h1{ font-weight:700; }
176/* eyebrows / small caps labels read warmer in the display face */
177html body .uppercase,html body [class*="eyebrow"]{ letter-spacing:0.06em; }
178/* PROTECT glyph fonts — without these, icons render as literal text */
179.material-symbols-outlined,.material-icons{ font-family:'Material Symbols Outlined','Material Icons'!important; }
180.fa,.fas,.far,.fal,.fab,[class^="fa-"],[class*=" fa-"]{ font-family:"Font Awesome 6 Free","Font Awesome 6 Brands"!important; }
181
182/* ---------- 3. PILL CTAs (rounded buttons) ---------- */
183/* button-ness gate (#338): only pill-ify order links that already read as buttons
184   (carry a `bg-` theme class). Bare text-only order links like top_10_picks' 12px
185   "Add Item" (`text-[...]` only, no `bg-`) must NOT get the pill/lift/hover. */
186html body a[class*="rounded"], html body button[class*="rounded"],
187html body a[href="/stores"][class*="bg-"], html body a[href*="/stores"]:not(section a){
188  border-radius:999px!important;
189}
190/* primary CTAs: solid brand pills with a soft lift */
191html body a[href="/stores"][class*="bg-"]{
192  box-shadow:0 6px 0 0 rgba(49,21,65,0.16); transition:transform .15s ease, box-shadow .15s ease, background-color .15s ease;
193}
194html body a[href="/stores"][class*="bg-"]:hover{ transform:translateY(-2px); box-shadow:0 8px 0 0 rgba(49,21,65,0.22); }
195
196/* ---------- 4. BAND RHYTHM (base bg with alternating color blocks) ---------- */
197/* image_left + image_right are FLEX rows — color only, never display:block */
198#section-ONg7ndz-Mxo{ background-color:#EEF4E6!important; }
199#section-Ej3jxE4g{ background-color:#4D7A24!important; }
200#section-Ej3jxE4g, #section-Ej3jxE4g *{ color:#FFFFFF!important; }
201#section-986bFUi0{ background-color:#EEF4E6!important; }
202
203/* ---------- 4c. FULL-BLEED BANDS — color fills edge-to-edge + NO seams between sections ---------- */
204@media(min-width:1280px){ #section-lJfwt4mDElw, #section-ONg7ndz-Mxo, #section-MnhqgiEX4wo, #section-Ej3jxE4g, #section-XGH-ZS4x, #section-986bFUi0, #section-wwehgrDj, #section-BaRHvt74, #section-y4bXQdGUH94, #section-FjzSonYwoGo, #section-sybu7lb2Ock, #section-u-ZwNrjt0WY, #section-V8ShQ5PR, #section-mBRLYquT, #section-_LdfZMObePA, #section-tkbbCTBJ, #section-NWjfUO3N, #section-owbCpW54, #section-f7TN9yUCwdw, #section-hhWazBR2, #section-s894dOsW, #section-CmRX1naS, #section-5j0fEFjq, #section-iT8CbAGH, #
204section-b5eea6TD, #section-ftFycDVW, #section-Rz9fntLF{
205  width:100vw!important; max-width:100vw!important;
206  margin-left:calc(50% - 50vw)!important; margin-right:calc(50% - 50vw)!important; } }
207#section-lJfwt4mDElw, #section-ONg7ndz-Mxo, #section-MnhqgiEX4wo, #section-Ej3jxE4g, #section-XGH-ZS4x, #section-986bFUi0, #section-wwehgrDj, #section-BaRHvt74, #section-y4bXQdGUH94, #section-FjzSonYwoGo, #section-sybu7lb2Ock, #section-u-ZwNrjt0WY, #section-V8ShQ5PR, #section-mBRLYquT, #section-_LdfZMObePA, #section-tkbbCTBJ, #section-NWjfUO3N, #section-owbCpW54, #section-f7TN9yUCwdw, #section-hhWazBR2, #section-s894dOsW, #section-CmRX1naS, #section-5j0fEFjq, #section-iT8CbAGH, #section-b5eea6TD, #section-ftFycDVW, #section-Rz9fntLF{
208  padding-left:max(24px, calc(50vw - 640px))!important;
209  padding-right:max(24px, calc(50vw - 640px))!important; }
210@media(max-width:1279px){ #section-lJfwt4mDElw, #section-ONg7ndz-Mxo, #section-MnhqgiEX4wo, #section-Ej3jxE4g, #section-XGH-ZS4x, #section-986bFUi0, #section-wwehgrDj, #section-BaRHvt74, #section-y4bXQdGUH94, #section-FjzSonYwoGo, #section-sybu7lb2Ock, #section-u-ZwNrjt0WY, #section-V8ShQ5PR, #section-mBRLYquT, #section-_LdfZMObePA, #section-tkbbCTBJ, #section-NWjfUO3N, #section-owbCpW54, #section-f7TN9yUCwdw, #section-hhWazBR2, #section-s894dOsW, #section-CmRX1naS, #section-5j0fEFjq, #section-iT8CbAGH, #section-b5eea6TD, #section-ftFycDVW, #section-Rz9fntLF{ grid-column:1 / -1!important; } }
211#section-FYU2eG76, #section-lJfwt4mDElw, #section-ONg7ndz-Mxo, #section-MnhqgiEX4wo, #section-Ej3jxE4g, #section-XGH-ZS4x, #section-986bFUi0, #section-wwehgrDj, #section-BaRHvt74, #section-y4bXQdGUH94, #section-FjzSonYwoGo, #section-sybu7lb2Ock, #section-u-ZwNrjt0WY, #section-V8ShQ5PR, #section-mBRLYquT, #section-_LdfZMObePA, #section-tkbbCTBJ, #section-NWjfUO3N, #section-owbCpW54, #section-f7TN9yUCwdw, #section-hhWazBR2, #section-s894dOsW, #section-CmRX1naS, #section-5j0fEFjq, #section-iT8CbAGH, #section-b5eea6TD, #section-ftFycDVW, #section-Rz9fntLF{ margin-top:0!important; margin-bottom:0!important; }
212#section-ONg7ndz-Mxo, #section-MnhqgiEX4wo, #section-Ej3jxE4g, #section-BaRHvt74, #section-y4bXQdGUH94, #section-FjzSonYwoGo, #section-sybu7lb2Ock, #section-u-ZwNrjt0WY, #section-V8ShQ5PR, #section-_LdfZMObePA, #section-tkbbCTBJ, #section-NWjfUO3N, #section-owbCpW54, #section-hhWazBR2, #section-s894dOsW, #section-CmRX1naS, #section-iT8CbAGH, #section-b5eea6TD, #section-ftFycDVW, #section-Rz9fntLF{ padding-top:clamp(32px,4vw,64px)!important; padding-bottom:clamp(32px,4vw,64px)!important; }
213@media(min-width:1280px){ #section-ONg7ndz-Mxo figure, #section-MnhqgiEX4wo figure, #section-Ej3jxE4g figure, #section-BaRHvt74 figure, #section-y4bXQdGUH94 figure, #section-FjzSonYwoGo figure, #section-sybu7lb2Ock figure, #section-u-ZwNrjt0WY figure, #section-V8ShQ5PR figure, #section-_LdfZMObePA figure, #section-tkbbCTBJ figure, #section-NWjfUO3N figure, #section-owbCpW54 figure, #section-hhWazBR2 figure, #section-s894dOsW figure, #section-CmRX1naS figure, #section-iT8CbAGH figure, #section-b5eea6TD figure, #section-ftFycDVW figure, #section-Rz9fntLF figure{ max-width:520px!important; } }
214@media(min-width:1280px){ #section-cwIG3a0886d6{
215  padding-left:max(24px, calc(50vw - 640px))!important;
216  padding-right:max(24px, calc(50vw - 640px))!important; } }
217
218/* ---------- 4a. SITE-SCOPED FIXES (nav logo + notification are singletons the page-save drops) ---------- */
219@media(max-width:767px){ #section-dDb0AMpP a[href="/"][aria-label]{ max-height:58px!important; } #section-dDb0AMpP a[href="/"][aria-label] img{ max-height:58px!important; width:auto!important; } }
220#section-FYU2eG76{ background-color:var(--brand-primary)!important; }
221#section-FYU2eG76, #section-FYU2eG76 *{ color:#FFFFFF!important; }
222/* platform FAQ keyword links inherit the theme accent → sub-AA on light brands (#398) */
223#section-wwehgrDj a, #section-wwehgrDj a *{ color:#311541!important; text-decoration-color:#311541!important; }
224/* native IG-carousel CTA light-brand guard (#271) — id-independent, always-on */
225#section-cwIG3a0886d6 a[data-maglev-id$=".cta_button_text"], #section-cwIG3a0886d6 a[data-maglev-id$=".cta_button_text"] span, section[class*="instagram_carousel"] a[data-maglev-id$=".cta_button_text"], section[class*="instagram_carousel"] a[data-maglev-id$=".cta_button_text"] span{ color:#FFFFFF!important; }
226/* hardcoded text-white pill idiom on brand fills — contrast-gated AA repaint (resting + hover) */
227html:root body :is(a,button)[class*="text-[var(--button-text)]"],
228html:root body :is(a,button)[class*="text-[var(--button-text)]"] *,
229html:root body :is(#section-ONg7ndz-Mxo,#section-Ej3jxE4g,#section-986bFUi0,#section-lJfwt4mDElw,#section-MnhqgiEX4wo,#section-XGH-ZS4x,#section-wwehgrDj,#section-BaRHvt74,#section-y4bXQdGUH94,#section-FjzSonYwoGo,#section-sybu7lb2Ock,#section-u-ZwNrjt0WY,#section-V8ShQ5PR,#section-mBRLYquT,#section-_LdfZMObePA,#section-tkbbCTBJ,#section-NWjfUO3N,#section-owbCpW54,#section-f7TN9yUCwdw,#section-hhWazBR2,#section-s894dOsW,#section-CmRX1naS,#section-5j0fEFjq,#section-iT8CbAGH,#section-b5eea6TD,#section-ftFycDVW,#section-Rz9fntLF,#section-FYU2eG76,#section-cwIG3a0886d6,#section-dDb0AMpP,#section-M4aDtxB6egU,#section-DlCqLZcy,#section-KB7tNzVofEA,#section-cwSigffb51dfe) :is(a,button)[class*="text-[var(--button-text)]"],
230html:root body :is(#section-ONg7ndz-Mxo,#section-Ej3jxE4g,#section-986bFUi0,#section-lJfwt4mDElw,#section-MnhqgiEX4wo,#section-XGH-ZS4x,#section-wwehgrDj,#section-BaRHvt74,#section-y4bXQdGUH94,#section-FjzSonYwoGo,#section-sybu7lb2Ock,#section-u-ZwNrjt0WY,#section-V8ShQ5PR,#section-mBRLYquT,#section-_LdfZMObePA,#section-tkbbCTBJ,#section-NWjfUO3N,#section-owbCpW54,#section-f7TN9yUCwdw,#section-hhWazBR2,#section-s894dOsW,#section-CmRX1naS,#section-5j0fEFjq,#section-iT8CbAGH,#section-b5eea6TD,#section-ftFycDVW,#section-Rz9fntLF,#section-FYU2eG76,#section-cwIG3a0886d6,#section-dDb0AMpP,#section-M4aDtxB6egU,#section-DlCqLZcy,#section-KB7tNzVofEA,#section-cwSigffb51dfe) :is(a,button)[class*="text-[var(--button-text)]"] *{ color:var(--button-text)!important; }
231/* form controls: the theme paints Submit with an INLINE background that ignores --button-bg (#722) */
232input[type="submit"], button[type="submit"]{ background-color:#311541!important; color:#FFFFFF!important; border-color:#311541!important; }
233
234/* ---------- 4b. HERO refinement (hierarchy, legibility, secondary CTA) ---------- */
235#section-M4aDtxB6egU{ position:relative; }
236#section-M4aDtxB6egU::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none; background:linear-gradient(90deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 55%, rgba(28,12,36,0.6) 72%, rgba(28,12,36,0.0) 90%); }
237#section-M4aDtxB6egU > *{ position:relative; z-index:1; }
238#section-M4aDtxB6egU div[class*="bg-black"]{ background:linear-gradient(90deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 55%, rgba(28,12,36,0.6) 72%, rgba(28,12,36,0.0) 90%)!important; }
239@media(max-width:767px){
240  #section-M4aDtxB6egU::before{ background:linear-gradient(180deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 88%, rgba(28,12,36,0.432) 100%); }
241  #section-M4aDtxB6egU div[class*="bg-black"]{ background:linear-gradient(180deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 88%, rgba(28,12,36,0.432) 100%)!important; } }
242#section-M4aDtxB6egU h1, #section-M4aDtxB6egU p{ text-shadow:0 2px 16px rgba(0,0,0,.58), 0 1px 4px rgba(0,0,0,.55); }
243#section-M4aDtxB6egU a[href="/menu"]:where([class*="bg-"]){ background:#FFFFFF!important; color:#4D7A24!important; border:0!important; border-radius:999px!important; box-shadow:0 6px 0 0 rgba(0,0,0,.16); }
244#section-M4aDtxB6egU a[href="/menu"]:where([class*="bg-"]):hover{ transform:translateY(-2px); }
245#section-M4aDtxB6egU a[data-maglev-id$=".button"], #section-M4aDtxB6egU a[data-maglev-id$=".button"] span{ color:#FFFFFF!important; }
246#section-M4aDtxB6egU a[data-maglev-id$=".button"]{ box-shadow:0 0 0 1.5px rgba(255,255,255,.90), 0 6px 0 0 rgba(0,0,0,.16); }
247#section-M4aDtxB6egU a[data-maglev-id$=".button_2"]{ background:rgba(14,12,10,.82)!important; color:#FFFFFF!important; border:0!important; box-shadow:0 0 0 1.5px rgba(255,255,255,.90), 0 6px 0 0 rgba(0,0,0,.16); }
248#section-M4aDtxB6egU a[data-maglev-id$=".button_2"] span{ color:#FFFFFF!important; }
249html:root body #section-M4aDtxB6egU a[data-maglev-id$=".button_2"][class]{ color:#FFFFFF!important; }
250html:root body #section-M4aDtxB6egU a[data-maglev-id$=".button_2"] :is(span,*){ color:#FFFFFF!important; }
251#section-M4aDtxB6egU a[data-maglev-id$=".button_2"]:hover{ transform:translateY(-2px); }
252#section-DlCqLZcy{ position:relative; }
253#section-DlCqLZcy::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none; background:linear-gradient(90deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 55%, rgba(28,12,36,0.6) 72%, rgba(28,12,36,0.0) 90%); }
254#section-DlCqLZcy > *{ position:relative; z-index:1; }
255#section-DlCqLZcy div[class*="bg-black"]{ background:linear-gradient(90deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 55%, rgba(28,12,36,0.6) 72%, rgba(28,12,36,0.0) 90%)!important; }
256@media(max-width:767px){
257  #section-DlCqLZcy::before{ background:linear-gradient(180deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 88%, rgba(28,12,36,0.432) 100%); }
258  #section-DlCqLZcy div[class*="bg-black"]{ background:linear-gradient(180deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 88%, rgba(28,12,36,0.432) 100%)!important; } }
259#section-DlCqLZcy h1, #section-DlCqLZcy p{ text-shadow:0 2px 16px rgba(0,0,0,.58), 0 1px 4px rgba(0,0,0,.55); }
260#section-DlCqLZcy a[href="/menu"]:where([class*="bg-"]){ background:#FFFFFF!important; color:#4D7A24!important; border:0!important; border-radius:999px!important; box-shadow:0 6px 0 0 rgba(0,0,0,.16); }
261#section-DlCqLZcy a[href="/menu"]:where([class*="bg-"]):hover{ transform:translateY(-2px); }
262#section-DlCqLZcy a[data-maglev-id$=".button"], #section-DlCqLZcy a[data-maglev-id$=".button"] span{ color:#FFFFFF!important; }
263#section-DlCqLZcy a[data-maglev-id$=".button"]{ box-shadow:0 0 0 1.5px rgba(255,255,255,.90), 0 6px 0 0 rgba(0,0,0,.16); }
264#section-DlCqLZcy a[data-maglev-id$=".button_2"]{ background:rgba(14,12,10,.82)!important; color:#FFFFFF!important; border:0!important; box-shadow:0 0 0 1.5px rgba(255,255,255,.90), 0 6px 0 0 rgba(0,0,0,.16); }
265#section-DlCqLZcy a[data-maglev-id$=".button_2"] span{ color:#FFFFFF!important; }
266html:root body #section-DlCqLZcy a[data-maglev-id$=".button_2"][class]{ color:#FFFFFF!important; }
267html:root body #section-DlCqLZcy a[data-maglev-id$=".button_2"] :is(span,*){ color:#FFFFFF!important; }
268#section-DlCqLZcy a[data-maglev-id$=".button_2"]:hover{ transform:translateY(-2px); }
269#section-KB7tNzVofEA{ position:relative; }
270#section-KB7tNzVofEA::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none; background:linear-gradient(90deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 55%, rgba(28,12,36,0.6) 72%, rgba(28,12,36,0.0) 90%); }
271#section-KB7tNzVofEA > *{ position:relative; z-index:1; }
272#section-KB7tNzVofEA div[class*="bg-black"]{ background:linear-gradient(90deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 55%, rgba(28,12,36,0.6) 72%, rgba(28,12,36,0.0) 90%)!important; }
273@media(max-width:767px){
274  #section-KB7tNzVofEA::before{ background:linear-gradient(180deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 88%, rgba(28,12,36,0.432) 100%); }
275  #section-KB7tNzVofEA div[class*="bg-black"]{ background:linear-gradient(180deg, rgba(28,12,36,0.6) 0%, rgba(28,12,36,0.6) 88%, rgba(28,12,36,0.432) 100%)!important; } }
276#section-KB7tNzVofEA h1, #section-KB7tNzVofEA p{ text-shadow:0 2px 16px rgba(0,0,0,.58), 0 1px 4px rgba(0,0,0,.55); }
277#section-KB7tNzVofEA a[href="/menu"]:where([class*="bg-"]){ background:#FFFFFF!important; color:#4D7A24!important; border:0!important; border-radius:999px!important; box-shadow:0 6px 0 0 rgba(0,0,0,.16); }
278#section-KB7tNzVofEA a[href="/menu"]:where([class*="bg-"]):hover{ transform:translateY(-2px); }
279#section-KB7tNzVofEA a[data-maglev-id$=".button"], #section-KB7tNzVofEA a[data-maglev-id$=".button"] span{ color:#FFFFFF!important; }
280#section-KB7tNzVofEA a[data-maglev-id$=".button"]{ box-shadow:0 0 0 1.5px rgba(255,255,255,.90), 0 6px 0 0 rgba(0,0,0,.16); }
281#section-KB7tNzVofEA a[data-maglev-id$=".button_2"]{ background:rgba(14,12,10,.82)!important; color:#FFFFFF!important; border:0!important; box-shadow:0 0 0 1.5px rgba(255,255,255,.90), 0 6px 0 0 rgba(0,0,0,.16); }
282#section-KB7tNzVofEA a[data-maglev-id$=".button_2"] span{ color:#FFFFFF!important; }
283html:root body #section-KB7tNzVofEA a[data-maglev-id$=".button_2"][class]{ color:#FFFFFF!important; }
284html:root body #section-KB7tNzVofEA a[data-maglev-id$=".button_2"] :is(span,*){ color:#FFFFFF!important; }
285#section-KB7tNzVofEA a[data-maglev-id$=".button_2"]:hover{ transform:translateY(-2px); }
286
287/* ---------- 4d. CTA HOVER LABEL (#620) ---------- */
288/* the theme ships `hover:bg-` with no `hover:text-` pair — without this the label keeps its resting
289   colour while the fill swaps under it. NOT last: §6 (components + the brand's extra_css) is
290   substituted after this, so the guard cannot rely on source order and carries the specificity to
291   win outright instead (see `_cta_hover_css`). That is deliberate — an author who wants a different
292   hover label writes an equally-specific rule in `extra_css` and still wins on order. */
293html:root body :is(a,button)[class*="hover:bg-[var(--button-hover-bg)]"]:hover,
294html:root body :is(a,button)[class*="hover:bg-[var(--button-hover-bg)]"]:hover *,
295html:root body :is(#section-ONg7ndz-Mxo,#section-Ej3jxE4g,#section-986bFUi0,#section-lJfwt4mDElw,#section-MnhqgiEX4wo,#section-XGH-ZS4x,#section-wwehgrDj,#section-BaRHvt74,#section-y4bXQdGUH94,#section-FjzSonYwoGo,#section-sybu7lb2Ock,#section-u-ZwNrjt0WY,#section-V8ShQ5PR,#section-mBRLYquT,#section-_LdfZMObePA,#section-tkbbCTBJ,#section-NWjfUO3N,#section-owbCpW54,#section-f7TN9yUCwdw,#section-hhWazBR2,#section-s894dOsW,#section-CmRX1naS,#section-5j0fEFjq,#section-iT8CbAGH,#section-b5eea6TD,#section-ftFycDVW,#section-Rz9fntLF,#section-FYU2eG76,#section-cwIG3a0886d6,#section-dDb0AMpP,#section-M4aDtxB6egU,#section-DlCqLZcy,#section-KB7tNzVofEA,#section-cwSigffb51dfe) :is(a,button)[class*="hover:bg-[var(--button-hover-bg)]"]:hover,
296html:root body :is(#section-ONg7ndz-Mxo,#section-Ej3jxE4g,#section-986bFUi0,#section-lJfwt4mDElw,#section-MnhqgiEX4wo,#section-XGH-ZS4x,#section-wwehgrDj,#section-BaRHvt74,#section-y4bXQdGUH94,#section-FjzSonYwoGo,#section-sybu7lb2Ock,#section-u-ZwNrjt0WY,#section-V8ShQ5PR,#section-mBRLYquT,#section-_LdfZMObePA,#section-tkbbCTBJ,#section-NWjfUO3N,#section-owbCpW54,#section-f7TN9yUCwdw,#section-hhWazBR2,#section-s894dOsW,#section-CmRX1naS,#section-5j0fEFjq,#section-iT8CbAGH,#section-b5eea6TD,#section-ftFycDVW,#section-Rz9fntLF,#section-FYU2eG76,#section-cwIG3a0886d6,#section-dDb0AMpP,#section-M4aDtxB6egU,#section-DlCqLZcy,#section-KB7tNzVofEA,#section-cwSigffb51dfe) :is(a,button)[class*="hover:bg-[var(--button-hover-bg)]"]:hover *{ color:var(--button-hover-text)!important; }
297
298/* ---------- 5. SCROLL-REVEAL (gated for reduced-motion; JS adds .cw-reveal) ---------- */
299@media (prefers-reduced-motion:no-preference){
300  /* transition lives on the .cw-in (revealed) state, NOT the base: setting the hidden state must be
301     INSTANT. If the base carried the transition, tagging a section .cw-reveal would fade it 1→0, and
302     a near-fold section (revealed a couple frames later) reverses to 1 before ever reaching 0 — so it
303     never visibly animates. Instant-hide + transition-on-reveal makes the first content section rise
304     in like the rest. */
305  .cw-reveal{ opacity:0; transform:translateY(26px); }
306  .cw-reveal.cw-in{ opacity:1; transform:none; transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1); }
307}
308
309/* ---------- 6. SIGNATURE COMPONENTS (full-bleed bands, mascots — per chosen surprise) ---------- */
310/* signature marquee band — cwSigffb51dfe */
311/* full-bleed: the theme caps custom_html at 760/1440 inside a flex parent — force 100vw here.
312   display:block is SAFE on a custom_html section (it is NOT a native flex row). */
313#section-cwSigffb51dfe{ width:100vw!important; max-width:100vw!important; margin-left:calc(50% - 50vw)!important; margin-right:calc(50% - 50vw)!important; display:block!important; }
314/* overflow:VISIBLE, deliberately (#752). The band used to carry `overflow:hidden`, which was
315   redundant — the scrolling ticker is clipped by `.cw-sig__marquee` below, the element that
316   actually holds the overflowing track — but it silently ate any ambient hosted on this element.
317   `house_edge` draws its seam as an `::after` at `top:calc(100% - 1px)`, i.e. wholly BELOW the
318   host box, so the clip erased it: measured 0.0px of bottom-edge variation across 40 x-samples at
319   both 1440 and 390, with every `getComputedStyle(el,'::after')` property still reading correct
320   (content/background/height/mask/opacity/z-index). That combination — correct computed style,
321   zero pixels — is what makes this class of bug expensive, so keep the clip on the row that needs
322   it and leave the band itself unclipped. */
323.cw-sig{ background:#311541; color:#ffffff; overflow:visible; position:relative; width:100vw; margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw); }
324/* THE clip for the ticker: the track is `display:inline-block` and animates translateX(-50%), so
325   it runs past both edges of this row and must be cut here (never on the band — see above). */
326.cw-sig__marquee{ border-top:2px solid rgba(255,255,255,0.25); border-bottom:2px solid rgba(255,255,255,0.25); padding:11px 0; overflow:hidden; white-space:nowrap; }
327/* #894 — the belt holds exactly TWO identical tracks, so translating IT by -50% advances
328   exactly one track and the loop is seamless. The animation used to sit on .cw-sig__track,
329   where -50% resolved against ONE track's width (half a period) and the ticker lurched
330   sideways once per cycle. Each track repeats the word list 4x so the belt covers wide
331   viewports — two tracks of one repetition left up to 56% of the band empty at 1920. */
332.cw-sig__belt{ display:inline-block; will-change:transform; }
333.cw-sig__track{ display:inline-block; font-family:'Jost',Montserrat,system-ui,sans-serif; font-weight:600; font-size:clamp(18px,2.4vw,30px); letter-spacing:.05em; color:#FFFFFF; text-transform:uppercase; }
334.cw-sig__inner{ max-width:1200px; margin:0 auto; padding:clamp(40px,6vw,84px) 24px; display:flex; align-items:center; gap:clamp(24px,5vw,72px); }
335/* the mascot sits on a soft radial GLOW by default (bird_bg), never a hard opaque circle — a
336   solid disc reads as a broken white blob behind a transparent-PNG mascot (#454). No drop shadow
337   for the same reason. Override bird_bg with a solid hex for a deliberate solid-medallion look.
338   bird_ring_css is EMPTY unless the brand DECLARES a `mascot_disc` (artwork that bakes in its own
339   colored disc, e.g. a logo emblem) AND that disc would dissolve into this band (#405) — then it
340   adds a thin ring + soft shadow so the emblem reads as a medallion. A normal transparent-PNG
341   mascot declares no disc and is never rimmed, which is what keeps #454 fixed. */
342.cw-sig__bird{ width:clamp(150px,20vw,260px); height:auto; border-radius:50%; flex:0 0 auto; background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.16),rgba(255,255,255,0) 68%);  }
343.cw-sig__copy{ flex:1 1 auto; }
344.cw-sig__eyebrow{ font-family:'Jost',Montserrat,system-ui,sans-serif; font-weight:600; text-transform:uppercase; letter-spacing:.14em; font-size:14px; color:#FFFFFF; margin:0 0 10px; }
345.cw-sig__head{ font-family:'Jost',Montserrat,system-ui,sans-serif!important; font-weight:700; color:#ffffff!important; font-size:clamp(38px,5.4vw,72px); line-height:.98; margin:0 0 16px; }
346.cw-sig__sub{ font-size:clamp(16px,1.5vw,20px); line-height:1.5; max-width:36ch; color:#FFFFFF; margin:0 0 24px; }
347.cw-sig__cta{ display:inline-block; text-decoration:none; background:#ffffff; color:#311541!important; font-family:'Jost',Montserrat,system-ui,sans-serif; font-weight:600; font-size:17px; padding:14px 30px; border-radius:999px; box-shadow:0 6px 0 0 rgba(0,0,0,.18); transition:transform .15s ease, box-shadow .15s ease; }
348.cw-sig__cta:hover{ transform:translateY(-2px); box-shadow:0 9px 0 0 rgba(0,0,0,.22); }
349@media (max-width:760px){ .cw-sig__inner{ flex-direction:column; text-align:center; } .cw-sig__sub{ margin-left:auto; margin-right:auto; } }
350/* motion — marquee scroll + a gentle stamp bob — gated for reduced-motion, NEVER outside the gate */
351@media (prefers-reduced-motion:no-preference){
352  @keyframes cw-sig-scroll{ from{transform:translateX(0)} to{transform:translateX(-50%)} }
353  @keyframes cw-sig-bob{ 0%,100%{transform:translateY(0) rotate(-1deg)} 50%{transform:translateY(-7px) rotate(1deg)} }
354  .cw-sig__belt{ animation:cw-sig-scroll 104s linear infinite; }
355  .cw-sig__bird{ animation:cw-sig-bob 5.6s cubic-bezier(.45,0,.55,1) infinite; transform-origin:50% 62%; }
356}
357
358#section-cwSigffb51dfe{ margin-top:0!important; margin-bottom:0!important; padding-top:0!important; padding-bottom:0!important; }
359
360/* botanical veil — faint herb-sprig linework over #section-Ej3jxE4g */
361#section-Ej3jxE4g{ position:relative; }
362#section-Ej3jxE4g::after{
363  content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
364  opacity:0.08; background:#DCEBC8;
365  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220'%3E%3Cg fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M52 196 C58 146 70 96 96 50'/%3E%3Cpath d='M62 156 l-22 8 M70 126 l-20 4 M80 98 l-18 0 M88 72 l-16 -4 M62 156 l18 14 M70 126 l16 12 M80 98 l14 10 M88 72 l12 8'/%3E%3Cpath d='M170 30 C164 78 150 120 126 160' transform='rotate(6 148 95)'/%3E%3Cpath d='M160 70 l20 -8 M152 100 l18 -4 M142 128 l16 0 M134 152 l14 4 M160 70 l-16 -12 M152 100 l-16 -10 M142 128 l-14 -8'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 240px 240px repeat;
366  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 220'%3E%3Cg fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M52 196 C58 146 70 96 96 50'/%3E%3Cpath d='M62 156 l-22 8 M70 126 l-20 4 M80 98 l-18 0 M88 72 l-16 -4 M62 156 l18 14 M70 126 l16 12 M80 98 l14 10 M88 72 l12 8'/%3E%3Cpath d='M170 30 C164 78 150 120 126 160' transform='rotate(6 148 95)'/%3E%3Cpath d='M160 70 l20 -8 M152 100 l18 -4 M142 128 l16 0 M134 152 l14 4 M160 70 l-16 -12 M152 100 l-16 -10 M142 128 l-14 -8'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 240px 240px repeat;
367}
368#section-Ej3jxE4g > *{ position:relative; z-index:1; }
369
370
371/* animated corner mascot (peek) */
372/* a mascot that peeks in from the corner on scroll, with an order nudge.
373   NOTE: uses its OWN .cw-peek--in shown-state class so the scroll-reveal's .cw-in never toggles it. */
374.cw-peek{ position:fixed; left:20px; bottom:20px; width:74px; height:74px; border-radius:50%; z-index:55;
375  background-image:url('https://res.cloudinary.com/targetable/image/upload/f_auto,q_auto,c_fill,ar_1:1,g_
375center,r_max,w_520/Customers/saigon-sisters/site/mascot-0b064062'); background-size:cover; background-position:center; border:2px solid #4D7A24;
376  box-shadow:0 6px 18px rgba(36,31,27,.22); filter:drop-shadow(0 1px 2px rgba(36,31,27,.12));
377  transform:translateY(150%) rotate(8deg); transition:transform .5s cubic-bezier(.22,1,.36,1); cursor:pointer; }
378.cw-peek.cw-peek--in{ transform:translateY(0) rotate(0); }
379.cw-peek__tip{ position:absolute; left:88px; bottom:20px; white-space:nowrap; background:#4D7A24; color:#FFFFFF;
380  font-family:'Jost',Montserrat,system-ui,sans-serif; font-weight:600; font-size:13px; padding:6px 12px; border-radius:999px;
381  box-shadow:0 4px 12px rgba(0,0,0,.18); opacity:0; transform:translateX(-6px); transition:opacity .25s, transform .25s; pointer-events:none; }
382.cw-peek:hover .cw-peek__tip{ opacity:1; transform:translateX(0); }
383@media (prefers-reduced-motion:no-preference){
384  @keyframes cw-peek-idle{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-3px)} }   /* imperceptible idle */
385  @keyframes cw-peek-hop{ 0%,100%{transform:translateY(0) rotate(0)} 45%{transform:translateY(-13px) rotate(-6deg)} }
386  .cw-peek.cw-peek--in{ animation:cw-peek-idle 4.3s cubic-bezier(.45,0,.55,1) .8s infinite; }   /* desynced period */
387  .cw-peek.cw-peek--in:hover{ animation:cw-peek-hop .5s ease; }   /* flutter/hop reserved for hover only */
388}
389@media (prefers-reduced-motion:reduce){ .cw-peek{ transition:none; transform:translateY(0) rotate(0); } }
390/* #455 → #539: the fixed 74px corner FAB is pinned at left:20px (`_CORNER["bottom-left"]` in
391   compose.py — a FIXED inset for every brand), so its right edge sits at ~x=98px on EVERY
392   viewport. A prior fix (#455/PR#448) shrunk it to 52px/10px below 600px, which only clears
393   phones — single-column content on tablet/small-laptop widths (roughly 601–1360px, confirmed
394   by an @design collision sweep on Alinea) still starts well inside that 98px band, so the
395   badge kept overlapping body copy AND stealing taps from real CTAs (e.g. a footer link) up to
396   ~1360px. There is no shrink threshold that clears both a 390px phone and a 1024px tablet at a
397   fixed left:20px inset, so below the desktop gutter the badge is not a corner FAB at all: it
398   becomes a full-width sticky bottom bar (Liv's Juice Bar's #chowly-floating-footer is the
399   reference). A bar can't collide with a single-column body — it OWNS the bottom edge, and
400   `body{padding-bottom}` below reserves that strip so no content (footer included) ever hides
401   under it. #539 replaced the previous "hide it entirely below 1399px" trade-off, which made
402   this SPINE order-nudge invisible to most mobile/tablet traffic. Same 1399px cutoff as that
403   fix (NOT Liv's own 768px, which leaves the 601–1360px band with no persistent CTA at all).
404   The bar is always-on, not scroll-gated: it's a utility, not a reveal. */
405@media (max-width:1399px){
406  /* ONE source of truth for the bar's height — the body reservation below reads the same var. */
407  :root{ --cw-peek-bar-h:60px;
408    /* Both bottom corners are reserved on an elevated site (#421). Measured at 768px on live
409       sites: the Maglev a11y button (UserWay) is 44x44 docked 21px from the right edge — the
410       SAME geometry on two unrelated elevated customers, so it is platform-level, not per-brand;
411       a SpotHopper-style chat bubble on another site is 56x56 at 7px. Worst case the corner is
412       occupied out to 65px, so the bar pads BOTH ends by 76px and centres its content between
413       them — the label and mascot chip can never sit under a corner widget. Verified by injecting
414       this bar into those live pages: the widget still hit-tests on top of the bar
415       (elementFromPoint at its centre), so it is neither hidden nor tap-blocked — it just docks
416       on the bar's right end. */
417    --cw-peek-a11y-reserve:76px; }
418  .cw-peek{ box-sizing:border-box; overflow:hidden; left:0; right:0; bottom:0; width:auto;
419    height:calc(var(--cw-peek-bar-h) + env(safe-area-inset-bottom,0px));
420    padding:0 var(--cw-peek-a11y-reserve) env(safe-area-inset-bottom,0px);
421    display:flex; align-items:center; justify-content:center; gap:10px;
422    border:0; border-radius:0; background-image:none; background-color:#4D7A24;
423    box-shadow:0 -4px 14px rgba(36,31,27,.18); filter:none; text-decoration:none;
424    /* always-on: neutralise the scroll-in gate (.cw-peek--in) and the idle bob without touching
425       body.js.tmpl — !important because both live on higher-specificity selectors above. */
426    transform:none !important; animation:none !important; }
427  .cw-peek::before{ content:''; flex:0 0 auto; width:34px; height:34px; border-radius:50%;
428    background-image:url('https://res.cloudinary.com/targetable/image/upload/f_auto,q_auto,c_fill,ar_1:1,g_
428center,r_max,w_520/Customers/saigon-sisters/site/mascot-0b064062'); background-size:cover; background-position:center;
429    border:2px solid #FFFFFF; }   /* the mascot survives as the bar's leading chip */
430  .cw-peek__tip{ position:static; background:none; box-shadow:none; padding:0; border-radius:0;
431    font-size:16px; opacity:1; transform:none; transition:none; max-width:100%;
432    overflow:hidden; text-overflow:ellipsis; }   /* the tooltip becomes the bar's label */
433  /* Reserve the strip the bar covers. Verified 0px on live elevated sites, so nothing to preserve;
434     !important because `body` is theme-owned and our <style> can be outranked by source order. */
435  body{ padding-bottom:calc(var(--cw-peek-bar-h) + env(safe-area-inset-bottom,0px)) !important; }
436}
437
438</style>
439
440
441    
441<script src="https://cdn.userway.org/widget.js" data-account="2RTD1qUW2F" data-position="3"></script>
441
442
443  <link rel="stylesheet" href="/assets/vidbg-59cd2b661e27143a4d41f154396b1fabc6ac9c0893f4d4b1623cbf033efc0130.css" />
444
445  
445<script src="/assets/libraries/vidbg-ca103f7572673d0e7e3cc8a6a59b200f7ab3da61da78a43e532949d800635fa5.js"></script>
445
446  
446<script src="/assets/banner-component-730ab5752d6195daf2963c20c32c885c4d07215b1fbd2a76a52cd94622d82ef7.js"></script>
446
447
448  
448<script async>
449    window.chowlyApiHost = 'https://api.chowlyinc.com';
450    window.siteHost = 'https://sites.chowly.app';
451  </script>
451
452
453  
453<script type="application/ld+json">
454  {"@type":"Restaurant","name":"Saigon Sisters","address":{"@type":"PostalAddress","streetAddress":"567 W Lake St","addressLocality":"Chicago","addressRegion":"IL","postalCode":"60661","addressCountry":"US"},"telephone":"8339986885","geo":{"@type":"GeoCoordinates","latitude":41.88553719999999,"longitude":-87.6425287},"url":"https://www.saigonsisters.com#location-49193","servesCuisine":["Asian","Bao","Southeast Asian","Vietnamese","Vietnamese Street Food","Vietnamese Restaurant","Banh Mi"],"priceRange":"$$","openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":"https://schema.org/Tuesday","opens":"11:00:00","closes":"21:00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"https://schema.org/Wednesday","opens":"11:00:00","closes":"21:00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"https://schema.org/Thursday","opens":"11:00:00","closes":"21:00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"https://schema.org/Friday","opens":"11:00:00","closes":"22:00:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"https://schema.org/Saturday","opens":"12:00:00","closes":"22:00:00"}],"hasMenu":"https://www.saigonsisters.com/menu","areaServed":["Chicago","Fulton Market","Near West Side","West Loop","West Side","Chicago Loop","West Loop Gate","River West"],"@context":"https://schema.org"}
455  </script>
455
456</head>
457<body data-organization-id="50070" >
458  <a href="#main-content" class="sr-only focus:not-sr-only">Skip to main content</a>
459  <main id="main-content" role="main" data-maglev-dropzone>
460    <section class="grid grid-cols-2 gap-0 justify-center">
461      <div class="bg-[var(--brand-primary)] w-full h-[40px] flex justify-center items-center px-4 col-span-2" role="banner" id="section-FYU2eG76" data-maglev-section-id="FYU2eG76" data-maglev-section-type="site_notification_01">
462    <section class="flex items-center space-x-2 max-w-[1440px] w-full justify-center">
463        <div class="w-[30px] h-[30px] overflow-hidden">
464            <i class="text-white mds-food_bank" data-maglev-id="FYU2eG76.icon" aria-hidden="true"></i>
465        </div>
466        <span data-maglev-id="FYU2eG76.title" class="text-white text-[14px] font-normal leading-[24px] text-center line-clamp-2 overflow-hidden"><p><strong>Fresh Vietnamese Banh Mi and Bao Buns Crafted for the Heart of Chicago</strong></p></span>
467    </section>
468</div><header class="sticky top-0 z-50 bg-[var(--bg-primary)] py-[16px] xl:py-[12px] shadow-md w-full col-span-2" id="section-dDb0AMpP" data-maglev-section-id="dDb0AMpP" data-maglev-section-type="standard_nav_01">
469  <div class="flex justify-between items-center px-4 xl:px-8 mx-auto w-full xl:max-w-[1440px]">
470      <div class="flex items-center">
471          <div class="max-w-[280px] max-h-[100px] rounded-lg flex-shrink-0 mr-4 xl:mr-8">
472            <a href="/" aria-label="Saigon Sisters home">
473              <img src="https://image-cdn.chowlyinc.com/300%2Cfit/https%3A%2F%2Fres.cloudinary.com%2Ftargetable%2Fimage%2Fupload%2Fv1787255781%2FCustomers%2F50070%2FSaigon%2520Sisters%2FPICS%2Flogo.svg" alt="Saigon Sisters logo" class="max-w-[280px] max-h-[100px] w-auto h-auto object-contain rounded-lg">
474            </a>
475          </div>
476
477          <nav role="navigation" aria-label="Main navigation" class="hidden xl:block">
478            <ul class="flex">
479
480
481                  <li>
482                    <a data-maglev-id="4M4sPNH69wI.link" class="flex bg-[var(--brand-primary)]/[var(--active-bg-opacity)] text-[var(--active-text)] items-center justify-center gap-2 py-2 px-3 text-sm font-semibold rounded-md mr-3" aria-current="page" href="/"><span data-maglev-id="4M4sPNH69wI.link.text">Home</span></a>
483                  </li>
484
485                  <li>
486                    <a data-maglev-id="lBhHJRKvq6Y.link" class="flex text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] items-center justify-center gap-2 py-2 px-3 text-sm font-semibold rounded-md mr-3" aria-current="false" href="https://www.opentable.com/restref/client/?restref=62917&amp;lang=en-US&amp;corrid=cc94466e-a0ad-407e-91d2-3cc8acd3d527#"><span data-maglev-id="lBhHJRKvq6Y.link.text">Reservation</span></a>
487                  </li>
488
489                  <li>
490                    <a data-maglev-id="BZU6yimwYKM.link" class="flex text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] items-center justify-center gap-2 py-2 px-3 text-sm font-semibold rounded-md mr-3" aria-current="false" href="/menu"><span data-maglev-id="BZU6yimwYKM.link.text">Menu</span></a>
491                  </li>
492
493                  <li>
494                    <a data-maglev-id="cyJOqQu6pyg.link" class="flex text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] items-center justify-center gap-2 py-2 px-3 text-sm font-semibold rounded-md mr-3" aria-current="false" href="/cater"><span data-maglev-id="cyJOqQu6pyg.link.text">Catering</span></a>
495                  </li>
496
497                <li class="relative">
498                  <button id="more-menu-button" class="flex text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] items-center justify-center gap-2 py-2 px-3 text-sm font-semibold rounded-md mr-3">
499                    More
500                    <svg id="more-arrow" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 transition-transform duration-300" fill="none" viewBox="0 0 24 24" stroke="currentColor">
501                      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
502                    </svg>
503                  </button>
504                  <div id="more-dropdown" class="hidden fixed left-0 right-0 w-full z-50 transition-all duration-300">
505                    <div class="mx-auto max-w-7xl bg-[var(--bg-secondary)] shadow-lg p-6 rounded-lg dropdown-top-shadow">
506                      <div class="grid grid-cols-3 gap-4">
507                            <div class="w-full mb-2">
508                              <a data-maglev-id="hjvlP5QhR38.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/parties"><span data-maglev-id="hjvlP5QhR38.link.text">Private Parties</span></a>
509                            </div>
510                            <div class="w-full mb-2">
511                              <a data-maglev-id="4otSuXGSiTA.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/about-us"><span data-maglev-id="4otSuXGSiTA.link.text">About Us</span></a>
512                            </div>
513                            <div class="w-full mb-2">
514                              <a data-maglev-id="ljqYNMAeYx8.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="https://www.toasttab.com/saigon-sisters-lake-street/giftcards?utm_source=undefined&amp;utm_content=home&amp;utm_medium=toast_sites&amp;utm_term=nav&amp;utm_campaign=giftcards"><span data-maglev-id="ljqYNMAeYx8.link.text">Gift Cards</span></a>
515                            </div>
516                            <div class="w-full mb-2">
517                              <a data-maglev-id="rYmuAjraS60.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="https://www.toasttab.com/saigon-sisters-lake-street/rewardsSignup"><span data-maglev-id="rYmuAjraS60.link.text">Loyalty</span></a>
518                            </div>
519                            <div class="w-full mb-2">
520                              <a data-maglev-id="slBjmHAHTOQ.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/jobs"><span data-maglev-id="slBjmHAHTOQ.link.text">Jobs</span></a>
521                            </div>
522                            <div class="w-full mb-2">
523                              <a data-maglev-id="Wg66fHTAEFY.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/events"><span data-maglev-id="Wg66fHTAEFY.link.text">Events</span></a>
524                            </div>
525                            <div class="w-full mb-2">
526                              <a data-maglev-id="z36nn2ga4_M.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/press"><span data-maglev-id="z36nn2ga4_M.link.text">Press</span></a>
527                            </div>
528                            <div class="w-full mb-2">
529                              <a data-maglev-id="yQB-1kVYRjc.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/saigon-french-market"><span data-maglev-id="yQB-1kVYRjc.link.text">Saigon Sisters (French Market)</span></a>
530                            </div>
531                            <div class="w-full mb-2">
532                              <a data-maglev-id="YRvsvPx_sn8.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/gallery"><span data-maglev-id="YRvsvPx_sn8.link.text">Gallery</span></a>
533                            </div>
534                            <div class="w-full mb-2">
535                              <a data-maglev-id="05KyxgiwC9Q.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/recipe"><span data-maglev-id="05KyxgiwC9Q.link.text">Recipe</span></a>
536                            </div>
537                            <div class="w-full mb-2">
538                              <a data-maglev-id="uoW6jdHayZk.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] inline-block py-2 px-4 text-sm font-medium rounded-md" aria-current="false" href="/contact-us"><span data-maglev-id="uoW6jdHayZk.link.text">Contact Us</span></a>
539                            </div>
540                      </div>
541                    </div>
542                  </div>
543                </li>
544            </ul>
545          </nav>
546      </div>
547
548      <!-- Right side: Mobile toggle + Desktop buttons -->
549      <div class="flex items-center gap-2">
550          <!-- Mobile menu toggle -->
551          <div class="xl:hidden">
552              <button id="menu-toggle" class="focus:outline-none" aria-expanded="false" aria-controls="mobile-menu" aria-label="Toggle menu">
553                  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="var(--stroke-primary)">
554                      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
555                  </svg>
556              </button>
557          </div>
558
559          <!-- Desktop buttons (hidden on mobile) -->
560          <div class="hidden xl:flex items-center gap-2">
561              <!-- Primary Order Now button -->
562              <a href="/stores" class="inline-flex items-center justify-center h-12 px-8 bg-[var(--brand-primary)] text-white text-base font-semibold rounded-md hover:brightness-90">Order Now</a>
563
564              <!-- Secondary button (optional, configurable) -->
565          </div>
566      </div>
567  </div>
568
569  <div id="mobile-menu" class="hidden fixed top-0 left-0 w-full h-full bg-[var(--bg-primary)] z-50 overflow-y-auto">
570      <div class="flex justify-between items-center px-4 py-4 sticky top-0 bg-[var(--bg-primary)] z-10">
571          <div class="max-w-[280px] max-h-[100px] rounded-lg flex-shrink-0 mr-4 xl:mr-8">
572              <img src="https://image-cdn.chowlyinc.com/300%2Cfit/https%3A%2F%2Fres.cloudinary.com%2Ftargetable%2Fimage%2Fupload%2Fv1787255781%2FCustomers%2F50070%2FSaigon%2520Sisters%2FPICS%2Flogo.svg" alt="Saigon Sisters logo" class="max-w-[280px] max-h-[100px] w-auto h-auto object-contain rounded-lg">
573          </div>
574          <button id="menu-close" class="focus:outline-none" aria-label="Close menu">
575              <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="var(--stroke-primary)">
576                  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
577              </svg>
578          </button>
579      </div>
580
581      <nav role="navigation" aria-label="Mobile navigation" class="pb-32">
582        <ul class="flex flex-col items-start px-5 space-y-6 mt-8">
583
584              <li>
585                <a data-maglev-id="4M4sPNH69wI.link" class="bg-[var(--brand-primary)]/[var(--active-bg-opacity)] text-[var(--active-text)] py-2 px-4 text-sm font-semibold pl-3" aria-current="page" href="/"><span data-maglev-id="4M4sPNH69wI.link.text">Home</span></a>
586              </li>
587
588              <li>
589                <a data-maglev-id="lBhHJRKvq6Y.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="https://www.opentable.com/restref/client/?restref=62917&amp;lang=en-US&amp;corrid=cc94466e-a0ad-407e-91d2-3cc8acd3d527#"><span data-maglev-id="lBhHJRKvq6Y.link.text">Reservation</span></a>
590              </li>
591
592              <li>
593                <a data-maglev-id="BZU6yimwYKM.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/menu"><span data-maglev-id="BZU6yimwYKM.link.text">Menu</span></a>
594              </li>
595
596              <li>
597                <a data-maglev-id="cyJOqQu6pyg.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/cater"><span data-maglev-id="cyJOqQu6pyg.link.text">Catering</span></a>
598              </li>
599
600              <li>
601                <a data-maglev-id="hjvlP5QhR38.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/parties"><span data-maglev-id="hjvlP5QhR38.link.text">Private Parties</span></a>
602              </li>
603
604              <li>
605                <a data-maglev-id="4otSuXGSiTA.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/about-us"><span data-maglev-id="4otSuXGSiTA.link.text">About Us</span></a>
606              </li>
607
608              <li>
609                <a data-maglev-id="ljqYNMAeYx8.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="https://www.toasttab.com/saigon-sisters-lake-street/giftcards?utm_source=undefined&amp;utm_content=home&amp;utm_medium=toast_sites&amp;utm_term=nav&amp;utm_campaign=giftcards"><span data-maglev-id="ljqYNMAeYx8.link.text">Gift Cards</span></a>
610              </li>
611
612              <li>
613                <a data-maglev-id="rYmuAjraS60.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="https://www.toasttab.com/saigon-sisters-lake-street/rewardsSignup"><span data-maglev-id="rYmuAjraS60.link.text">Loyalty</span></a>
614              </li>
615
616              <li>
617                <a data-maglev-id="slBjmHAHTOQ.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/jobs"><span data-maglev-id="slBjmHAHTOQ.link.text">Jobs</span></a>
618              </li>
619
620              <li>
621                <a data-maglev-id="Wg66fHTAEFY.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/events"><span data-maglev-id="Wg66fHTAEFY.link.text">Events</span></a>
622              </li>
623
624              <li>
625                <a data-maglev-id="z36nn2ga4_M.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/press"><span data-maglev-id="z36nn2ga4_M.link.text">Press</span></a>
626              </li>
627
628              <li>
629                <a data-maglev-id="yQB-1kVYRjc.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/saigon-french-market"><span data-maglev-id="yQB-1kVYRjc.link.text">Saigon Sisters (French Market)</span></a>
630              </li>
631
632              <li>
633                <a data-maglev-id="YRvsvPx_sn8.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/gallery"><span data-maglev-id="YRvsvPx_sn8.link.text">Gallery</span></a>
634              </li>
635
636              <li>
637                <a data-maglev-id="05KyxgiwC9Q.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" ari
637a-current="false" href="/recipe"><span data-maglev-id="05KyxgiwC9Q.link.text">Recipe</span></a>
638              </li>
639
640              <li>
641                <a data-maglev-id="uoW6jdHayZk.link" class="text-[var(--text-muted)] hover:bg-[var(--brand-primary)]/[var(--hover-bg-opacity)] py-2 px-4 text-sm font-semibold pl-3" aria-current="false" href="/contact-us"><span data-maglev-id="uoW6jdHayZk.link.text">Contact Us</span></a>
642              </li>
643        </ul>
644      </nav>
645
646      <div class="fixed bottom-0 left-0 w-full flex items-center justify-center gap-2 py-8 px-4 bg-[var(--bg-primary)] border-[var(--border-secondary)]">
647          <!-- Primary Order Now button -->
648          <a href="/stores" class="inline-flex h-12 px-8 justify-center items-center gap-2 flex-shrink-0 rounded-[6px] bg-[var(--brand-primary)] text-white text-[15px] font-semibold leading-[150%] hover:brightness-90">Order Now</a>
649
650          <!-- Secondary button (optional, configurable) -->
651      </div>
652  </div>
653</header>
654<script>
655  const menuToggle = document.getElementById('menu-toggle');
656  const menuClose = document.getElementById('menu-close');
657  const mobileMenu = document.getElementById('mobile-menu');
658
659  menuToggle.addEventListener('click', () => {
660      mobileMenu.classList.remove('hidden');
661      mobileMenu.setAttribute('aria-hidden', 'false');
662      menuToggle.setAttribute('aria-expanded', 'true');
663  });
664
665  menuClose.addEventListener('click', () => {
666      mobileMenu.classList.add('hidden');
667      mobileMenu.setAttribute('aria-hidden', 'true');
668      menuToggle.setAttribute('aria-expanded', 'false');
669  });
670
671  document.addEventListener('DOMContentLoaded', function() {
672    // More menu dropdown functionality
673    const moreButton = document.getElementById('more-menu-button');
674    const moreDropdown = document.getElementById('more-dropdown');
675    const moreArrow = document.getElementById('more-arrow');
676
677    if (moreButton && moreDropdown && moreArrow) {
678      let isOpen = false;
679      let isHoveringButton = false;
680      let isHoveringDropdown = false;
681      let dropdownTimeout;
682
683      function showDropdown() {
684        clearTimeout(dropdownTimeout);
685        moreDropdown.classList.remove('hidden');
686        moreDropdown.style.opacity = '1';
687        moreArrow.classList.add('rotate-180');
688        isOpen = true;
689      }
690
691      function hideDropdown() {
692        moreDropdown.style.opacity = '0';
693        moreArrow.classList.remove('rotate-180');
694
695        dropdownTimeout = setTimeout(() => {
696          moreDropdown.classList.add('hidden');
697          isOpen = false;
698        }, 300);
699      }
700
701      function toggleDropdown() {
702        if (isOpen) {
703          hideDropdown();
704        } else {
705          showDropdown();
706        }
707      }
708
709      function updateDropdownVisibility() {
710        if (isHoveringButton || isHoveringDropdown) {
711          showDropdown();
712        } else {
713          hideDropdown();
714        }
715      }
716
717      moreButton.addEventListener('click', function(e) {
718        e.preventDefault();
719        toggleDropdown();
720      });
721
722      moreButton.addEventListener('mouseenter', () => {
723        isHoveringButton = true;
724        updateDropdownVisibility();
725      });
726
727      moreButton.addEventListener('mouseleave', () => {
728        isHoveringButton = false;
729        toggleDropdown();
730      });
731
732      moreDropdown.addEventListener('mouseenter', () => {
733        isHoveringDropdown = true;
734        updateDropdownVisibility();
735      });
736
737      moreDropdown.addEventListener('mouseleave', () => {
738        isHoveringDropdown = false;
739        toggleDropdown();
740      });
741
742      document.addEventListener('click', function(e) {
743        if (isOpen && !moreButton.contains(e.target) && !moreDropdown.contains(e.target)) {
744          hideDropdown();
745        }
746      });
747    }
748
749    // Locations dropdown functionality (desktop main nav)
750    const locationsContainers = document.querySelectorAll('.locations-dropdown-container');
751    locationsContainers.forEach(container => {
752      const button = container.querySelector('.locations-dropdown-button');
753      const dropdown = container.querySelector('.locations-dropdown');
754      const arrow = container.querySelector('.locations-arrow');
755
756      if (button && dropdown && arrow) {
757        let isOpen = false;
758        let hoverTimeout;
759
760        function showLocationsDropdown() {
761          clearTimeout(hoverTimeout);
762          dropdown.classList.remove('hidden');
763          arrow.classList.add('rotate-180');
764          isOpen = true;
765        }
766
767        function hideLocationsDropdown() {
768          hoverTimeout = setTimeout(() => {
769            dropdown.classList.add('hidden');
770            arrow.classList.remove('rotate-180');
771            isOpen = false;
772          }, 150);
773        }
774
775        button.addEventListener('click', (e) => {
776          e.preventDefault();
777          if (isOpen) {
778            hideLocationsDropdown();
779          } else {
780            showLocationsDropdown();
781          }
782        });
783
784        container.addEventListener('mouseenter', showLocationsDropdown);
785        container.addEventListener('mouseleave', hideLocationsDropdown);
786
787        document.addEventListener('click', (e) => {
788          if (isOpen && !container.contains(e.target)) {
789            dropdown.classList.add('hidden');
790            arrow.classList.remove('rotate-180');
791            isOpen = false;
792          }
793        });
794      }
795    });
796
797    // Locations dropdown in "More" menu
798    const locationsMoreContainers = document.querySelectorAll('.locations-more-dropdown-container');
799    locationsMoreContainers.forEach(container => {
800      const button = container.querySelector('.locations-more-button');
801      const dropdown = container.querySelector('.locations-more-dropdown');
802      const arrow = container.querySelector('.locations-more-arrow');
803
804      if (button && dropdown && arrow) {
805        let isOpen = false;
806
807        button.addEventListener('click', (e) => {
808          e.preventDefault();
809          e.stopPropagation();
810          if (isOpen) {
811            dropdown.classList.add('hidden');
812            arrow.classList.remove('rotate-180');
813            isOpen = false;
814          } else {
815            dropdown.classList.remove('hidden');
816            arrow.classList.add('rotate-180');
817            isOpen = true;
818          }
819        });
820
821        container.addEventListener('mouseenter', () => {
822          dropdown.classList.remove('hidden');
823          arrow.classList.add('rotate-180');
824          isOpen = true;
825        });
826
827        container.addEventListener('mouseleave', () => {
828          dropdown.classList.add('hidden');
829          arrow.classList.remove('rotate-180');
830          isOpen = false;
831        });
832      }
833    });
834
835    // Mobile locations toggle
836    const mobileLocationsToggles = document.querySelectorAll('.mobile-locations-toggle');
837    mobileLocationsToggles.forEach(toggle => {
838      const arrow = toggle.querySelector('.mobile-locations-arrow');
839      const list = toggle.parentElement.querySelector('.mobile-locations-list');
840
841      if (arrow && list) {
842        toggle.addEventListener('click', (e) => {
843          e.preventDefault();
844          list.classList.toggle('hidden');
845          arrow.classList.toggle('rotate-180');
846        });
847      }
848    });
849  });
850</script>
850
851
852<style>
853  .rotate-180 {
854    transform: rotate(180deg);
855    transition: transform 300ms;
856  }
857
858  #more-dropdown {
859    opacity: 0;
860    transition: opacity 300ms;
861    position: absolute;
862    top: 100%;
863    left: 50%;
864    right: 0;
865    width: 80vw;
866    margin-left: auto;
867    margin-right: auto;
868    z-index: 50;
869    transform: translateX(calc(-50% + 10vw));
870  }
871
872  .dropdown-top-shadow {
873    box-shadow: 0 -4px 6px -1px rgba(0, 0, 0, 0.1), 0 -2px 4px -1px rgba(0, 0, 0, 0.06),
874                0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
875  }
876
877  .locations-dropdown {
878    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
879  }
880
881  .locations-more-dropdown {
882    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
883  }
884</style>
885
886
887<section class="w-full  xl:px-0 col-span-2" role="banner" id="section-M4aDtxB6egU" data-maglev-section-id="M4aDtxB6egU" data-maglev-section-type="hero_cta_01">
888  <div class="vidbg-be8ba2c83b533ecb4555d2bf w-full  h-[680px] flex-shrink-0 relative mx-auto my-0 bg-cover bg-center" style="background-image: url(/maglev/assets/7378e328-cb9c-4f36-a1ea-d12df1432881-hero.avif);">
889    
890
891      <div class="absolute inset-0 bg-black/40   "></div>
892    
893    <article class="absolute inset-0 flex flex-col justify-center mx-6 xl:mx-0 xl:pl-20 xl:py-16">
894      <header class="max-w-[400px] md:max-w-[500px] xl:max-w-[650px]">
895        <h1 data-maglev-id="M4aDtxB6egU.title" class="text-white font-semibold text-[14px] md:text-[24px] xl:text-[28px] leading-tight tracking-wide">Best Vietnamese restaurant in Chicago, IL</h1>
896      </header>
897      <div class="max-w-[400px] md:max-w-[500px] xl:max-w-[650px]">
898        <p data-maglev-id="M4aDtxB6egU.description" class="text-white font-bold text-[20px] md:text-[48px] xl:text-[56px] leading-tight xl:leading-[64px]">Saigon Sisters</p>
899      </div>
900      <div class="mt-2">
901          <a data-maglev-id="M4aDtxB6egU.button" class="block md:inline-block bg-[var(--brand-primary)] text-white py-3 px-8 text-sm xl:text-base font-semibold leading-[150%] hover:brightness-90 rounded-md md:self-start" aria-label="Order Now – Best Vietnamese restaurant in Chicago, IL" href="/store/24313"><span data-maglev-id="M4aDtxB6egU.button.text">Order Now</span></a>
902          <a data-maglev-id="M4aDtxB6egU.button_2" class="block mt-2 md:mt-0 md:inline-block bg-white text-[var(--button-text)] py-3 md:ml-1 px-8 text-sm xl:text-base font-semibold leading-[150%] hover:brightness-90 rounded-md md:self-start" aria-label="Reserve a Table – Best Vietnamese restaurant in Chicago, IL" href="https://www.opentable.com/restref/client/?restref=62917&amp;lang=en-US&amp;corrid=cc94466e-a0ad-407e-91d2-3cc8acd3d527#"><span data-maglev-id="M4aDtxB6egU.button_2.text">Reserve a Table</span></a>
903      </div>
904    </article>
905
906      
906<script>
907          new vidbg('.vidbg-be8ba2c83b533ecb4555d2bf', {
908            mp4: "/maglev/assets/ebc5e1e8-7df9-4882-8856-9a700d502f3e-saigon-sisters_v2_edited-video-2_22mb.mp4"
909          });
910      </script>
910
911
912    <style>
913
914
915
916    </style>
917  </div>
918</section><section class="w-full xl:max-w-[1440px] mx-auto h-auto flex-shrink-0 relative flex flex-col items-start justify-center px-10 xl:px-20 py-10 xl:py-20 col-span-2" id="section-cwSigffb51dfe" data-maglev-section-id="cwSigffb51dfe" data-maglev-section-type="custom_html_01">
919  <section class="cw cw-sig cw-reveal">
920  <div class="cw-sig__marquee" aria-hidden="true">
921    <span class="cw-sig__belt">
922      <span class="cw-sig__track">Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  </span><span class="cw-sig__track">Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  Banh Mi  •  Pho  •  Bao  •  Fresh Spring Rolls  •  Curries  •  Stir Fries  •  Nuoc Cham  •  West Loop  •  </span>
923    </span>
924  </div>
925  <div class="cw-sig__inner">
926    <img class="cw-sig__bird" src="https://res.cloudinary.com/targetable/image/upload/f_auto,q_auto,c_fill,ar_1:1,g_center,r_max,w_520/Customers/saigon-sisters/site/mascot-0b064062" alt="Saigon Sisters leaf mark" loading="lazy" decoding="async">
927    <div class="cw-sig__copy">
928      <p class="cw-sig__eyebrow">567 W. Lake St · West Loop</p>
929      <h2 class="cw-sig__head">Family recipes, made with love
930.</h2>
931      <p class="cw-sig__sub">Banh mi on a crisp baguette, pho simmered low and slow, and plenty of fresh herbs.</p>
932      <a class="cw-sig__cta" href="/stores">Order Now</a>
933    </div>
934  </div>
935</section>
936
937</section>
938
939<section class="w-full xl:max-w-[1440px] mx-auto flex-shrink-0 relative mt-[60px] bg-[var(--brand-overlay)] py-10 xl:py-14 px-6 xl:px-20 col-span-2" aria-labelledby="top-picks-heading" id="section-lJfwt4mDElw" data-maglev-section-id="lJfwt4mDElw" data-maglev-section-type="top_10_picks_01">
940  <div class="absolute top-[-12px] left-6 xl:left-20" aria-hidden="true">
941      <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" fill="none">
942          <path d="M19.9999 30L12.9999 33C11.8888 33.4722 10.8333 33.3819 9.83325 32.7292C8.83325 32.0764 8.33325 31.1528 8.33325 29.9583V8.33333C8.33325 7.41667 8.65964 6.63194 9.31242 5.97917C9.9652 5.32639 10.7499 5 11.6666 5H28.3333C29.2499 5 30.0346 5.32639 30.6874 5.97917C31.3402 6.63194 31.6666 7.41667 31.6666 8.33333V29.9583C31.6666 31.1528 31.1666 32.0764 30.1666 32.7292C29.1666 33.3819 28.111 33.4722 26.9999 33L19.9999 30Z" fill="var(--brand-primary)"/>
943      </svg>
944  </div>
945  <header class="flex flex-col xl:flex-row justify-between items-start xl:items-center">
946    <div>
947          <h2 id="top-picks-heading" class="text-[var(--text-primary)] font-semibold text-[32px] xl:text-[48px] leading-none tracking-[-0.48px]">
948            Authentic Vietnamese Banh Mi Done Right
949          </h2>
950        <p class="text-[var(--text-secondary)] text-[14px] xl:text-[16px] font-normal leading-[24px] mt-3">
951          Fresh banh mi, bao buns, and dumplings await you.
952        </p>
953    </div>
954    <a href="/stores" class="mt-6 xl:mt-0 bg-[var(--brand-primary)] text-white py-3 px-8 text-base font-semibold leading-[150%] hover:brightness-90 rounded-md w-auto md:self-end whitespace-nowrap">
955        Order Now
956    </a>
957  </header>
958  <section class="mt-8 flex gap-x-4 overflow-x-auto">
959
960
961      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md overflow-hidden">
962          
963          <figure class="m-0">
964            <img src="/maglev/assets/8dd9fc9d-1a52-44cb-bbc9-c15be4d11edc-beef-pho.jpg" alt="Beef Pho" class="w-full h-[207px] flex-shrink-0 object-cover">
965          </figure>
966          <div class="p-4">
967                <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">
968                  Beef Pho
969                </h3>
970              <p class="text-[var(--text-secondary)] mt-2 text-[14px] leading-[18px] font-normal line-clamp-2">
971                Roast beef pho in beef broth with rice noodles and scallions, served with bean sprouts, jalapeños, lime, basil and culantro. Gluten-free.
972              </p>
973              <a href="/stores" class="text-[var(--brand-primary)] mt-4 text-[12px] font-semibold leading-[16
973px]">
974                  Add Item
975              </a>
976          </div>
977      </article>
978
979
980      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md overflow-hidden">
981          
982          <figure class="m-0">
983            <img src="/maglev/assets/dfcaee47-3739-4f80-8d51-1e55b5a5818e-pad-thai.jpg" alt="Pad Thai" class="w-full h-[207px] flex-shrink-0 object-cover">
984          </figure>
985          <div class="p-4">
986                <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">
987                  Pad Thai
988                </h3>
989              <p class="text-[var(--text-secondary)] mt-2 text-[14px] leading-[18px] font-normal line-clamp-2">
990                Rice noodles with tamarind, garlic, chive, pickled radish, bean sprouts, egg, fish sauce, chili flakes and tofu. Gluten-free.
991              </p>
992              <a href="/stores" class="text-[var(--brand-primary)] mt-4 text-[12px] font-semibold leading-[16px]">
993                  Add Item
994              </a>
995          </div>
996      </article>
997
998
999      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md overflow-hidden">
1000          
1001          <figure class="m-0">
1002            <img src="/maglev/assets/a618a76e-3fa7-41ac-b811-67964c95e87e-6c5a29c7-0d54-46a4-844d-094bacb546db.avif" alt="BBQ Jackfruit Banh Mi (Vegan)" class="w-full h-[207px] flex-shrink-0 object-cover">
1003          </figure>
1004          <div class="p-4">
1005                <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">
1006                  BBQ Jackfruit Banh Mi (Vegan)
1007                </h3>
1008              <p class="text-[var(--text-secondary)] mt-2 text-[14px] leading-[18px] font-normal line-clamp-2">
1009                Vegan BBQ sauce, shredded young jackfruit, pickled red cabbage, cucumbers, cilantro, jalapenos, pickled daikon and carrots
1010              </p>
1011              <a href="/stores" class="text-[var(--brand-primary)] mt-4 text-[12px] font-semibold leading-[16px]">
1012                  Add Item
1013              </a>
1014          </div>
1015      </article>
1016  </section>
1017</section><style>
1018  @media (min-width: 1280px) {
1019    section[aria-labelledby="top-picks-heading"] {
1020      width: 100%;
1021      max-width: 1440px;
1022    }
1023    section[aria-labelledby="top-picks-heading"] > section > article {
1024      width: calc((100% - 64px) / 5);
1025    }
1026  }
1027</style>
1028
1029<section class="flex flex-grow flex-col  xl:flex-row items-center  xl:justify-evenly gap-6 xl:gap-6 w-full xl:max-w-[1440px] mx-auto mt-10 xl:mt-20 px-4 xl:px-0 col-span-2 md:col-span-1 xl:col-span-2" id="section-ONg7ndz-Mxo" data-maglev-section-id="ONg7ndz-Mxo" data-maglev-section-type="image_left_01">
1030  <figure class="w-full xl:w-[500px] min-w-0 hidden  xl:block order-1">
1031      <img src="/maglev/assets/88fc194b-69ee-4a4e-a2ea-33a3372ada01-7756.avif" alt="A Family Table in the West Loop" data-maglev-id="ONg7ndz-Mxo.image" class="rounded-lg w-full h-auto object-cover" />
1032  </figure>
1033  <article class="w-full xl:w-[480px] min-w-0 text-left order-2">
1034      <h2 data-maglev-id="ONg7ndz-Mxo.title" class="text-[var(--text-primary)] font-semibold text-[32px] xl:text-[48px] leading-none tracking-[-0.48px]" id="section-title-73fbe32130e2">A Family Table in the West Loop</h2>
1035
1036      <figure class=" xl:hidden w-full mt-4">
1037        <img src="/maglev/assets/88fc194b-69ee-4a4e-a2ea-33a3372ada01-7756.avif" alt="A Family Table in the West Loop" data-maglev-id="ONg7ndz-Mxo.image" class="rounded-lg w-full h-auto object-cover" />
1038      </figure>
1039      
1040      <p data-maglev-id="ONg7ndz-Mxo.body" class="text-[var(--text-secondary)] text-[14px] xl:text-[16px] font-normal leading-[24px] mt-4">Saigon Sisters sits at 567 W. Lake Street in Chicago's West Loop, a neighborhood spot built by two sisters and the mother who taught them everything. Mary Nguyen Aregoni and Theresa Nguyen grew up surrounded by the flavors of Vietnam and France, and that upbringing shows in every corner of the dining room. Stop in for a full sit down meal or grab something quick to go, we're open for dine in, takeout, delivery and catering.</p>
1041
1042        <a data-maglev-id="ONg7ndz-Mxo.button" class="inline-flex h-[48px] px-8 py-4 justify-center items-center gap-2 flex-shrink-0 bg-[var(--button-bg)] text-[var(--button-text)] border border-[var(--button-border)] hover:bg-[var(--button-hover-bg)] hover:border-[var(--button-hover-border)] text-[15px] font-semibold leading-[150%] rounded-[6px] mt-7" aria-label="About Us – A Family Table in the West Loop" href="/about-us"><span data-maglev-id="ONg7ndz-Mxo.button.text">About Us</span></a>
1043  </article>
1044</section>
1045<section class="flex flex-grow flex-col  xl:flex-row items-center  xl:justify-evenly gap-6 xl:gap-6 w-full xl:max-w-[1440px] mx-auto mt-10 xl:mt-20 px-4 xl:px-0 col-span-2 md:col-span-1 xl:col-span-2" id="section-MnhqgiEX4wo" data-maglev-section-id="MnhqgiEX4wo" data-maglev-section-type="image_right_01">
1046  <article class="w-full xl:w-[480px] min-w-0 text-left order-2 xl:order-1">
1047      <h2 data-maglev-id="MnhqgiEX4wo.title" class="text-[var(--text-primary)] font-semibold text-[32px] xl:text-[48px] leading-none tracking-[-0.48px]" id="section-title-f42de8b3
1047c8ed">Vietnamese Cooking, Rooted in Family</h2>
1048
1049      <figure class=" xl:hidden w-full mt-4">
1050        <img src="/maglev/assets/4fa4b6d1-8563-45be-a86c-79385eeacf45-branzino.avif" alt="Vietnamese Cooking, Rooted in Family" data-maglev-id="MnhqgiEX4wo.image" class="rounded-lg w-full h-auto object-cover" />
1051      </figure>
1052      
1053      <p data-maglev-id="MnhqgiEX4wo.body" class="text-[var(--text-secondary)] text-[14px] xl:text-[16px] font-normal leading-[24px] mt-4">Our menu carries the same recipes that once filled a small Pho station at the Chicago French Market, now grown into banh mis, baos, curries, pho and stir fries built on fresh herbs, pickled vegetables and broths simmered low and slow. You'll taste Vietnam in the lemongrass and nuoc cham, and a little bit of France in the crisp baguette that holds a classic banh mi together. It's the kind of food that tastes like it came from someone's kitchen, because it did.</p>
1054
1055        <a data-maglev-id="MnhqgiEX4wo.button" class="inline-flex h-[48px] px-8 py-4 justify-center items-center gap-2 flex-shrink-0 bg-[var(--button-bg)] text-[var(--button-text)] border border-[var(--button-border)] hover:bg-[var(--button-hover-bg)] hover:border-[var(--button-hover-border)] text-[15px] font-semibold leading-[150%] rounded-[6px] mt-7" aria-label="Order Now – Vietnamese Cooking, Rooted in Family" href="/stores"><span data-maglev-id="MnhqgiEX4wo.button.text">Order Now</span></a>
1056  </article>
1057  <figure class="w-full xl:w-[500px] min-w-0 hidden  xl:block order-1 xl:order-2">
1058      <img src="/maglev/assets/4fa4b6d1-8563-45be-a86c-79385eeacf45-branzino.avif" alt="Vietnamese Cooking, Rooted in Family" data-maglev-id="MnhqgiEX4wo.image" class="rounded-lg w-full h-auto object-cover" />
1059  </figure>
1060</section>
1061<section class="flex flex-grow flex-col  xl:flex-row items-center  xl:justify-evenly gap-6 xl:gap-6 w-full xl:max-w-[1440px] mx-auto mt-10 xl:mt-20 px-4 xl:px-0 col-span-2 md:col-span-1 xl:col-span-2" id="section-Ej3jxE4g" data-maglev-section-id="Ej3jxE4g" data-maglev-section-type="image_left_01">
1062  <figure class="w-full xl:w-[500px] min-w-0 hidden  xl:block order-1">
1063      <img src="/maglev/assets/684603af-6389-4c86-b22e-01e4a5d22f06-img_9964.avif" alt="Order Online" data-maglev-id="Ej3jxE4g.image" class="rounded-lg w-full h-auto object-cover" />
1064  </figure>
1065  <article class="w-full xl:w-[480px] min-w-0 text-left order-2">
1066      <h2 data-maglev-id="Ej3jxE4g.title" class="text-[var(--text-primary)] font-semibold text-[32px] xl:text-[48px] leading-none tracking-[-0.48px]" id="section-title-71adfc06223d">Order Online</h2>
1067
1068      <figure class=" xl:hidden w-full mt-4">
1069        <img src="/maglev/assets/684603af-6389-4c86-b22e-01e4a5d22f06-img_9964.avif" alt="Order Online" data-maglev-id="Ej3jxE4g.image" class="rounded-lg w-full h-auto object-cover" />
1070      </figure>
1071      
1072      <p data-maglev-id="Ej3jxE4g.body" class="text-[var(--text-secondary)] text-[14px] xl:text-[16px] font-normal leading-[24px] mt-4">Craving banh mi or a bowl of pho but can't make it in tonight? Order online from 567 W. Lake Street or our French Market location at 131 N. Clinton Street and have it ready for pickup or delivered straight to your door. Sign up for our rewards program while you're at it and start earning points on every order, including 25 points just for joining.</p>
1073
1074        <a data-maglev-id="Ej3jxE4g.button" class="inline-flex h-[48px] px-8 py-4 justify-center items-center gap-2 flex-shrink-0 bg-[var(--button-bg)] text-[var(--button-text)] border border-[var(--button-border)] hover:bg-[var(--button-hover-bg)] hover:border-[var(--button-hover-border)] text-[15px] font-semibold leading-[150%] rounded-[6px] mt-7" aria-label="Order Now – Order Online" href="/stores"><span data-maglev-id="Ej3jxE4g.button.text">Order Now</span></a>
1075  </article>
1076</section>
1077
1078<section class="w-full xl:max-w-[1440px] mx-auto px-4 xl:px-0 py-10 col-span-2" aria-label="Instagram feed carousel" id="section-XGH-ZS4x" data-maglev-section-id="XGH-ZS4x" data-maglev-section-type="instagram_carousel_01">
1079  <header class="text-left mb-8">
1080    <h2 class="text-[var(--text-primary)] text-[32px] xl:text-[48px] font-semibold tracking-[-0.48px] mb-2">
1081      Follow us on Instagram
1082    </h2>
1083    <p class="text-[var(--text-secondary)] text-[16px] font-normal">
1084      @saigonsisters
1085    </p>
1086  </header>
1087
1088  <!-- Instagram Posts Carousel -->
1089  <div class="mb-8">
1090    <div class="swiper swiper-bece704f-04e3-4d27-9b97-78f3c9d279cd" role="region" aria-label="Instagram posts">
1091      <div class="swiper-wrapper">
1092          <div class="swiper-slide" style="width: 280px; height: 280px;">
1093            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1094                 role="button" 
1095                 tabindex="0"
1096                 aria-label="View Instagram post 1"
1097                 onclick="openInstagramModal('/remote_assets/f2428add-1793-443e-9042-c4b2c7dde9a5/desktop.avif', '/remote_assets/f2428add-1793-443e-9042-c4b2c7dde9a5/thumb.avif', 0)"
1098                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/f2428add-1793-443e-9042-c4b2c7dde9a5/desktop.avif', '/remote_assets/f2428add-1793-443e-9042-c4b2c7dde9a5/thumb.avif', 0); }">
1099              <img src="/remote_assets/f2428add-1793-443e-9042-c4b2c7dde9a5/thumb.avif" 
1100                   alt="Instagram post 1" 
1101                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1102                   loading="lazy"
1103                   onerror="this.parentElement.classList.add('instagram-error')">
1104              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1105                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1106                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1107                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
11070-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1108                  </svg>
1109                </div>
1110              </div>
1111              <!-- Error state overlay -->
1112              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1113                <div class="text-center text-gray-500">
1114                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1115                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1116                  </svg>
1117                  <p class="text-xs">Image unavailable</p>
1118                </div>
1119              </div>
1120            </div>
1121          </div>
1122          <div class="swiper-slide" style="width: 280px; height: 280px;">
1123            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1124                 role="button" 
1125                 tabindex="0"
1126                 aria-label="View Instagram post 2"
1127                 onclick="openInstagramModal('/remote_assets/08ffd123-74ca-43c5-8a7e-b74ca3bdb955/desktop.avif', '/remote_assets/08ffd123-74ca-43c5-8a7e-b74ca3bdb955/thumb.avif', 1)"
1128                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/08ffd123-74ca-43c5-8a7e-b74ca3bdb955/desktop.avif', '/remote_assets/08ffd123-74ca-43c5-8a7e-b74ca3bdb955/thumb.avif', 1); }">
1129              <img src="/remote_assets/08ffd123-74ca-43c5-8a7e-b74ca3bdb955/thumb.avif" 
1130                   alt="Instagram post 2" 
1131                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1132                   loading="lazy"
1133                   onerror="this.parentElement.classList.add('instagram-error')">
1134              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1135                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1136                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1137                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1138                  </svg>
1139                </div>
1140              </div>
1141              <!-- Error state overlay -->
1142              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1143                <div class="text-center text-gray-500">
1144                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1145                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1146                  </svg>
1147                  <p class="text-xs">Image unavailable</p>
1148                </div>
1149              </div>
1150            </div>
1151          </div>
1152          <div class="swiper-slide" style="width: 280px; height: 280px;">
1153            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1154                 role="button" 
1155                 tabindex="0"
1156                 aria-label="View Instagram post 3"
1157                 onclick="openInstagramModal('/remote_assets/8f184122-8102-4110-87dd-aa0482db8bcc/desktop.avif', '/remote_assets/8f184122-8102-4110-87dd-aa0482db8bcc/thumb.avif', 2)"
1158                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/8f184122-8102-4110-87dd-aa0482db8bcc/desktop.avif', '/remote_assets/8f184122-8102-4110-87dd-aa0482db8bcc/thumb.avif', 2); }">
1159              <img src="/remote_assets/8f184122-8102-4110-87dd-aa0482db8bcc/thumb.avif" 
1160                   alt="Instagram post 3" 
1161                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1162                   loading="lazy"
1163                   onerror="this.parentElement.classList.add('instagram-error')">
1164              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1165                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1166                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1167                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
11670-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1168                  </svg>
1169                </div>
1170              </div>
1171              <!-- Error state overlay -->
1172              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1173                <div class="text-center text-gray-500">
1174                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1175                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1176                  </svg>
1177                  <p class="text-xs">Image unavailable</p>
1178                </div>
1179              </div>
1180            </div>
1181          </div>
1182          <div class="swiper-slide" style="width: 280px; height: 280px;">
1183            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1184                 role="button" 
1185                 tabindex="0"
1186                 aria-label="View Instagram post 4"
1187                 onclick="openInstagramModal('/remote_assets/fdfd0574-fd9a-48d3-9197-8b9b03774d70/desktop.avif', '/remote_assets/fdfd0574-fd9a-48d3-9197-8b9b03774d70/thumb.avif', 3)"
1188                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/fdfd0574-fd9a-48d3-9197-8b9b03774d70/desktop.avif', '/remote_assets/fdfd0574-fd9a-48d3-9197-8b9b03774d70/thumb.avif', 3); }">
1189              <img src="/remote_assets/fdfd0574-fd9a-48d3-9197-8b9b03774d70/thumb.avif" 
1190                   alt="Instagram post 4" 
1191                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1192                   loading="lazy"
1193                   onerror="this.parentElement.classList.add('instagram-error')">
1194              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1195                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1196                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1197                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1198                  </svg>
1199                </div>
1200              </div>
1201              <!-- Error state overlay -->
1202              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1203                <div class="text-center text-gray-500">
1204                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1205                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1206                  </svg>
1207                  <p class="text-xs">Image unavailable</p>
1208                </div>
1209              </div>
1210            </div>
1211          </div>
1212          <div class="swiper-slide" style="width: 280px; height: 280px;">
1213            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1214                 role="button" 
1215                 tabindex="0"
1216                 aria-label="View Instagram post 5"
1217                 onclick="openInstagramModal('/remote_assets/4c1fcb71-b25b-46a1-9579-28f4f714eab8/desktop.avif', '/remote_assets/4c1fcb71-b25b-46a1-9579-28f4f714eab8/thumb.avif', 4)"
1218                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/4c1fcb71-b25b-46a1-9579-28f4f714eab8/desktop.avif', '/remote_assets/4c1fcb71-b25b-46a1-9579-28f4f714eab8/thumb.avif', 4); }">
1219              <img src="/remote_assets/4c1fcb71-b25b-46a1-9579-28f4f714eab8/thumb.avif" 
1220                   alt="Instagram post 5" 
1221                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1222                   loading="lazy"
1223                   onerror="this.parentElement.classList.add('instagram-error')">
1224              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1225                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1226                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1227                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
12270-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1228                  </svg>
1229                </div>
1230              </div>
1231              <!-- Error state overlay -->
1232              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1233                <div class="text-center text-gray-500">
1234                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1235                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1236                  </svg>
1237                  <p class="text-xs">Image unavailable</p>
1238                </div>
1239              </div>
1240            </div>
1241          </div>
1242          <div class="swiper-slide" style="width: 280px; height: 280px;">
1243            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1244                 role="button" 
1245                 tabindex="0"
1246                 aria-label="View Instagram post 6"
1247                 onclick="openInstagramModal('/remote_assets/b06baf40-00fd-4d60-9473-f81f96bc80d0/desktop.avif', '/remote_assets/b06baf40-00fd-4d60-9473-f81f96bc80d0/thumb.avif', 5)"
1248                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/b06baf40-00fd-4d60-9473-f81f96bc80d0/desktop.avif', '/remote_assets/b06baf40-00fd-4d60-9473-f81f96bc80d0/thumb.avif', 5); }">
1249              <img src="/remote_assets/b06baf40-00fd-4d60-9473-f81f96bc80d0/thumb.avif" 
1250                   alt="Instagram post 6" 
1251                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1252                   loading="lazy"
1253                   onerror="this.parentElement.classList.add('instagram-error')">
1254              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1255                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1256                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1257                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1258                  </svg>
1259                </div>
1260              </div>
1261              <!-- Error state overlay -->
1262              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1263                <div class="text-center text-gray-500">
1264                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1265                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1266                  </svg>
1267                  <p class="text-xs">Image unavailable</p>
1268                </div>
1269              </div>
1270            </div>
1271          </div>
1272          <div class="swiper-slide" style="width: 280px; height: 280px;">
1273            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1274                 role="button" 
1275                 tabindex="0"
1276                 aria-label="View Instagram post 7"
1277                 onclick="openInstagramModal('/remote_assets/6e688ac7-89a9-49a0-949a-7b5a3a41b1d9/desktop.avif', '/remote_assets/6e688ac7-89a9-49a0-949a-7b5a3a41b1d9/thumb.avif', 6)"
1278                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/6e688ac7-89a9-49a0-949a-7b5a3a41b1d9/desktop.avif', '/remote_assets/6e688ac7-89a9-49a0-949a-7b5a3a41b1d9/thumb.avif', 6); }">
1279              <img src="/remote_assets/6e688ac7-89a9-49a0-949a-7b5a3a41b1d9/thumb.avif" 
1280                   alt="Instagram post 7" 
1281                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1282                   loading="lazy"
1283                   onerror="this.parentElement.classList.add('instagram-error')">
1284              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1285                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1286                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1287                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
12870-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1288                  </svg>
1289                </div>
1290              </div>
1291              <!-- Error state overlay -->
1292              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1293                <div class="text-center text-gray-500">
1294                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1295                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1296                  </svg>
1297                  <p class="text-xs">Image unavailable</p>
1298                </div>
1299              </div>
1300            </div>
1301          </div>
1302          <div class="swiper-slide" style="width: 280px; height: 280px;">
1303            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1304                 role="button" 
1305                 tabindex="0"
1306                 aria-label="View Instagram post 8"
1307                 onclick="openInstagramModal('/remote_assets/b9cebb14-50c6-4eaa-bfea-fd4cf2376473/desktop.avif', '/remote_assets/b9cebb14-50c6-4eaa-bfea-fd4cf2376473/thumb.avif', 7)"
1308                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/b9cebb14-50c6-4eaa-bfea-fd4cf2376473/desktop.avif', '/remote_assets/b9cebb14-50c6-4eaa-bfea-fd4cf2376473/thumb.avif', 7); }">
1309              <img src="/remote_assets/b9cebb14-50c6-4eaa-bfea-fd4cf2376473/thumb.avif" 
1310                   alt="Instagram post 8" 
1311                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1312                   loading="lazy"
1313                   onerror="this.parentElement.classList.add('instagram-error')">
1314              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1315                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1316                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1317                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1318                  </svg>
1319                </div>
1320              </div>
1321              <!-- Error state overlay -->
1322              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1323                <div class="text-center text-gray-500">
1324                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1325                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1326                  </svg>
1327                  <p class="text-xs">Image unavailable</p>
1328                </div>
1329              </div>
1330            </div>
1331          </div>
1332          <div class="swiper-slide" style="width: 280px; height: 280px;">
1333            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1334                 role="button" 
1335                 tabindex="0"
1336                 aria-label="View Instagram post 9"
1337                 onclick="openInstagramModal('/remote_assets/1ee839c1-a960-4acd-9e99-c0227bc6c3d7/desktop.avif', '/remote_assets/1ee839c1-a960-4acd-9e99-c0227bc6c3d7/thumb.avif', 8)"
1338                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/1ee839c1-a960-4acd-9e99-c0227bc6c3d7/desktop.avif', '/remote_assets/1ee839c1-a960-4acd-9e99-c0227bc6c3d7/thumb.avif', 8); }">
1339              <img src="/remote_assets/1ee839c1-a960-4acd-9e99-c0227bc6c3d7/thumb.avif" 
1340                   alt="Instagram post 9" 
1341                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1342                   loading="lazy"
1343                   onerror="this.parentElement.classList.add('instagram-error')">
1344              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1345                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1346                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1347                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
13470-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1348                  </svg>
1349                </div>
1350              </div>
1351              <!-- Error state overlay -->
1352              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1353                <div class="text-center text-gray-500">
1354                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1355                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1356                  </svg>
1357                  <p class="text-xs">Image unavailable</p>
1358                </div>
1359              </div>
1360            </div>
1361          </div>
1362          <div class="swiper-slide" style="width: 280px; height: 280px;">
1363            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1364                 role="button" 
1365                 tabindex="0"
1366                 aria-label="View Instagram post 10"
1367                 onclick="openInstagramModal('/remote_assets/1748e9bd-7769-4177-8714-c6363b127761/desktop.avif', '/remote_assets/1748e9bd-7769-4177-8714-c6363b127761/thumb.avif', 9)"
1368                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/1748e9bd-7769-4177-8714-c6363b127761/desktop.avif', '/remote_assets/1748e9bd-7769-4177-8714-c6363b127761/thumb.avif', 9); }">
1369              <img src="/remote_assets/1748e9bd-7769-4177-8714-c6363b127761/thumb.avif" 
1370                   alt="Instagram post 10" 
1371                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1372                   loading="lazy"
1373                   onerror="this.parentElement.classList.add('instagram-error')">
1374              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1375                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1376                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1377                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1378                  </svg>
1379                </div>
1380              </div>
1381              <!-- Error state overlay -->
1382              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1383                <div class="text-center text-gray-500">
1384                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1385                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1386                  </svg>
1387                  <p class="text-xs">Image unavailable</p>
1388                </div>
1389              </div>
1390            </div>
1391          </div>
1392          <div class="swiper-slide" style="width: 280px; height: 280px;">
1393            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1394                 role="button" 
1395                 tabindex="0"
1396                 aria-label="View Instagram post 11"
1397                 onclick="openInstagramModal('/remote_assets/a51eca06-51e2-4b8e-9826-9b942f952bf7/desktop.avif', '/remote_assets/a51eca06-51e2-4b8e-9826-9b942f952bf7/thumb.avif', 10)"
1398                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/a51eca06-51e2-4b8e-9826-9b942f952bf7/desktop.avif', '/remote_assets/a51eca06-51e2-4b8e-9826-9b942f952bf7/thumb.avif', 10); }">
1399              <img src="/remote_assets/a51eca06-51e2-4b8e-9826-9b942f952bf7/thumb.avif" 
1400                   alt="Instagram post 11" 
1401                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1402                   loading="lazy"
1403                   onerror="this.parentElement.classList.add('instagram-error')">
1404              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1405                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1406                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1407                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
14070-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1408                  </svg>
1409                </div>
1410              </div>
1411              <!-- Error state overlay -->
1412              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1413                <div class="text-center text-gray-500">
1414                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1415                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1416                  </svg>
1417                  <p class="text-xs">Image unavailable</p>
1418                </div>
1419              </div>
1420            </div>
1421          </div>
1422          <div class="swiper-slide" style="width: 280px; height: 280px;">
1423            <div class="relative rounded-2xl overflow-hidden cursor-pointer instagram-post-slide group h-full shadow-lg" 
1424                 role="button" 
1425                 tabindex="0"
1426                 aria-label="View Instagram post 12"
1427                 onclick="openInstagramModal('/remote_assets/20cdc32e-e527-4b8e-b71d-9a5388d7cd96/desktop.avif', '/remote_assets/20cdc32e-e527-4b8e-b71d-9a5388d7cd96/thumb.avif', 11)"
1428                 onkeydown="if(event.key === 'Enter' || event.key === ' ') { event.preventDefault(); openInstagramModal('/remote_assets/20cdc32e-e527-4b8e-b71d-9a5388d7cd96/desktop.avif', '/remote_assets/20cdc32e-e527-4b8e-b71d-9a5388d7cd96/thumb.avif', 11); }">
1429              <img src="/remote_assets/20cdc32e-e527-4b8e-b71d-9a5388d7cd96/thumb.avif" 
1430                   alt="Instagram post 12" 
1431                   class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105"
1432                   loading="lazy"
1433                   onerror="this.parentElement.classList.add('instagram-error')">
1434              <div class="absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-all duration-300 flex items-center justify-center">
1435                <div class="opacity-0 group-hover:opacity-100 transition-opacity duration-300 text-white">
1436                  <svg class="w-10 h-10" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
1437                    <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1438                  </svg>
1439                </div>
1440              </div>
1441              <!-- Error state overlay -->
1442              <div class="instagram-error-overlay absolute inset-0 bg-gray-100 flex items-center justify-center hidden">
1443                <div class="text-center text-gray-500">
1444                  <svg class="w-8 h-8 mx-auto mb-2" fill="currentColor" viewBox="0 0 24 24">
1445                    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
1446                  </svg>
1447                  <p class="text-xs">Image unavailable</p>
1448                </div>
1449              </div>
1450            </div>
1451          </div>
1452      </div>
1453    </div>
1454  </div>
1455
1456  <!-- Instagram Modal -->
1457  <div id="instagram-modal-bece704f-04e3-4d27-9b97-78f3c9d279cd" 
1458       class="fixed inset-0 bg-black/95 z-50 hidden flex items-center justify-center"
1459       role="dialog"
1460       aria-modal="true"
1461       aria-labelledby="modal-title-bece704f-04e3-4d27-9b97-78f3c9d279cd">
1462    <div class="relative w-full h-full flex items-center justify-center p-2 md:p-4 lg:p-2 xl:p-3 2xl:p-4">
1463      <button class="absolute top-4 right-4 md:top-6 md:right-6 z-10 bg-black/60 text-white hover:bg-black/80 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-white rounded-full p-3 md:p-4"
1464              onclick="closeInstagramModal('bece704f-04e3-4d27-9b97-78f3c9d279cd')"
1465              aria-label="Close modal">
1466        <svg class="w-6 h-6 md:w-8 md:h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2">
1467          <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
1468        </svg>
1469      </button>
1470      
1471      <!-- Loading spinner -->
1472      <div id="modal-loading-bece704f-04e3-4d27-9b97-78f3c9d279cd" 
1473           class="absolute inset-0 flex items-center justify-center z-20">
1474        <div class="flex flex-col items-center">
1475          <!-- Instagram-style fancy loading animation -->
1476          <div class="relative">
1477            <!-- Outer rotating ring -->
1478            <div class="w-16 h-16 border-4 border-gray-600 border-t-white rounded-full animate-spin"></div>
1479            <!-- Inner pulsing dot -->
1480            <div class="absolute inset-0 flex items-center justify-center">
1481              <div class="w-3 h-3 bg-white rounded-full animate-pulse"></div>
1482            </div>
1483            <!-- Instagram camera icon -->
1484            <div class="absolute inset-0 flex items-center justify-center">
1485              <svg class="w-8 h-8 text-white opacity-80" fill="currentColor" viewBox="0 0 24 24">
1486                <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.265-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 
14860-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.40s-.644-1.44-1.439-1.40z"/>
1487              </svg>
1488            </div>
1489          </div>
1490          <!-- Loading text with typing animation -->
1491          <div class="mt-4 text-white text-sm font-medium">
1492            <span class="inline-block animate-bounce" style="animation-delay: 0ms;">L</span>
1493            <span class="inline-block animate-bounce" style="animation-delay: 100ms;">o</span>
1494            <span class="inline-block animate-bounce" style="animation-delay: 200ms;">a</span>
1495            <span class="inline-block animate-bounce" style="animation-delay: 300ms;">d</span>
1496            <span class="inline-block animate-bounce" style="animation-delay: 400ms;">i</span>
1497            <span class="inline-block animate-bounce" style="animation-delay: 500ms;">n</span>
1498            <span class="inline-block animate-bounce" style="animation-delay: 600ms;">g</span>
1499            <span class="inline-block animate-ping ml-1">...</span>
1500          </div>
1501        </div>
1502      </div>
1503      
1504      <!-- Modal image with improved sizing -->
1505      <img id="modal-image-bece704f-04e3-4d27-9b97-78f3c9d279cd" 
1506           src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB2aWV3Qm94PSIwIDAgMSAxIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InRyYW5zcGFyZW50Ci8+PC9zdmc>" 
1507           alt="Instagram post" 
1508           class="max-w-[98vw] max-h-[95vh] md:max-w-[95vw] md:max-h-[95vh] lg:max-w-[99vw] lg:max-h-[99vh] xl:max-w-[98vw] xl:max-h-[98vh] 2xl:max-w-[9
15086vw] 2xl:max-h-[96vh] w-auto h-auto object-contain rounded-lg shadow-2xl opacity-0 transition-all duration-500 ease-out z-10"
1509           onload="handleModalImageLoad('bece704f-04e3-4d27-9b97-78f3c9d279cd')">
1510    </div>
1511  </div>
1512
1513  <!-- CTA Button -->
1514    <div class="text-center">
1515      <a href="https://instagram.com/saigonsisters" 
1516         target="_blank" 
1517         rel="noopener noreferrer"
1518         class="inline-block bg-[var(--brand-primary)] text-white py-4 px-10 text-[16px] font-semibold rounded-md hover:brightness-90 transition-all duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[var(--brand-primary)] shadow-sm"
1519         aria-label="Visit our Instagram profile">
1520        Follow Us On Instagram
1521      </a>
1522    </div>
1523
1524  
1524<script type="module">
1525    // Initialize Swiper for Instagram carousel
1526    var swiperInstagrambece704f04e34d279b9778f3c9d279cd = new Swiper(".swiper-bece704f-04e3-4d27-9b97-78f3c9d279cd", {
1527      slidesPerView: 'auto',
1528      spaceBetween: 20,
1529      centeredSlides: false,
1530      loop: true,
1531      autoplay: {
1532        delay: 5000,
1533        disableOnInteraction: false,
1534        pauseOnMouseEnter: true
1535      },
1536      breakpoints: {
1537        640: {
1538          spaceBetween: 24
1539        },
1540        1024: {
1541          spaceBetween: 28
1542        }
1543      },
1544      a11y: {
1545        enabled: true,
1546        prevSlideMessage: 'Previous Instagram post',
1547        nextSlideMessage: 'Next Instagram post'
1548      },
1549      on: {
1550        touchStart: function() {
1551          this.autoplay.stop();
1552        },
1553        touchEnd: function() {
1554          this.autoplay.start();
1555        }
1556      }
1557    });
1558
1559    // Modal functions with improved image loading
1560    function openInstagramModal(imageUrl, desktopImageUrl, index) {
1561      const modal = document.getElementById('instagram-modal-bece704f-04e3-4d27-9b97-78f3c9d279cd');
1562      const modalImage = document.getElementById('modal-image-bece704f-04e3-4d27-9b97-78f3c9d279cd');
1563      const modalLoading = document.getElementById('modal-loading-bece704f-04e3-4d27-9b97-78f3c9d279cd');
1564
1565      // Show modal first
1566      modal.classList.remove('hidden');
1567      document.body.style.overflow = 'hidden';
1568      swiperInstagrambece704f04e34d279b9778f3c9d279cd.autoplay.stop();
1569      modal.focus();
1570
1571      // Reset image state and show loading
1572      modalImage.style.opacity = '0';
1573      modalImage.style.transform = 'scale(0.95)';
1574      modalLoading.style.display = 'flex';
1575
1576      // Choose image URL based on screen size - use high-quality CDN image for desktop
1577      const isDesktop = window.innerWidth >= 1024; // lg breakpoint
1578      const selectedImageUrl = isDesktop ? desktopImageUrl : imageUrl;
1579
1580      // Preload the new image
1581      const newImage = new Image();
1582      newImage.onload = function() {
1583        // Once the new image is loaded, update the modal image
1584        modalImage.src = selectedImageUrl;
1585        modalImage.alt = 'Instagram post ' + (index + 1);
1586        // The handleModalImageLoad function will handle showing the image
1587      };
1588      newImage.onerror = function() {
1589        // If high-quality image fails on desktop, fallback to original
1590        if (isDesktop && selectedImageUrl === desktopImageUrl) {
1591          console.log('Instagram: High-quality image failed, falling back to original');
1592          const fallbackImage = new Image();
1593          fallbackImage.onload = function() {
1594            modalImage.src = imageUrl;
1595            modalImage.alt = 'Instagram post ' + (index + 1);
1596            // handleModalImageLoad will be called by the onload event
1597          };
1598          fallbackImage.onerror = function() {
1599            // Both images failed - show error
1600            handleModalImageError('bece704f-04e3-4d27-9b97-78f3c9d279cd');
1601          };
1602          fallbackImage.src = imageUrl;
1603        } else {
1604          // Show error after reasonable timeout
1605          handleModalImageError('bece704f-04e3-4d27-9b97-78f3c9d279cd');
1606        }
1607      };
1608
1609      // Start loading the new image
1610      newImage.src = selectedImageUrl;
1611    }
1612
1613    function closeInstagramModal(uuid) {
1614      const modal = document.getElementById('instagram-modal-' + uuid);
1615      const modalImage = document.getElementById('modal-image-' + uuid);
1616      const modalLoading = document.getElementById('modal-loading-' + uuid);
1617
1618      modal.classList.add('hidden');
1619      document.body.style.overflow = '';
1620      swiperInstagrambece704f04e34d279b9778f3c9d279cd.autoplay.start();
1621
1622      // Reset modal state
1623      modalImage.style.opacity = '0';
1624      modalImage.style.transform = 'scale(0.95)';
1625      modalLoading.style.display = 'none';
1626    }
1627
1628    function handleModalImageLoad(uuid) {
1629      const modalImage = document.getElementById('modal-image-' + uuid);
1630      const modalLoading = document.getElementById('modal-loading-' + uuid);
1631
1632      modalLoading.style.display = 'none';
1633      modalImage.style.opacity = '1';
1634      modalImage.style.transform = 'scale(1)'; // Fancy scale entrance
1635    }
1636
1637    function handleModalImageError(uuid) {
1638      const modalLoading = document.getElementById('modal-loading-' + uuid);
1639      const modal = document.getElementById('instagram-modal-' + uuid);
1640
1641      modalLoading.innerHTML = '<div class="text-white text-center"><div class="w-8 h-8 mx-auto mb-2 text-red-400"><svg fill="currentColor" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg></div><p class="text-sm">Image failed to load</p><p class="text-xs mt-1 text-gray-400">Click X to close</p></div>';
1642    }
1643
1644    // Close modal on escape key
1645    document.addEventListener('keydown', function(event) {
1646      if (event.key === 'Escape') {
1647        closeInstagramModal('bece704f-04e3-4d27-9b97-78f3c9d279cd');
1648      }
1649    });
1650
1651    // Close modal when clicking outside the image
1652    document.getElementById('instagram-modal-bece704f-04e3-4d27-9b97-78f3c9d279cd').addEventListener('click', function(event) {
1653      if (event.target === this) {
1654        closeInstagramModal('bece704f-04e3-4d27-9b97-78f3c9d279cd');
1655      }
1656    });
1657  </script>
1657
1658
1659  <style>
1660    .instagram-error .instagram-error-overlay {
1661      display: flex !important;
1662    }
1663
1664    /* Modal loading improvements */
1665    #modal-loading-bece704f-04e3-4d27-9b97-78f3c9d279cd {
1666      display: none;
1667      backdrop-filter: blur(1px);
1668    }
1669
1670    /* Fancy loading animations */
1671    @keyframes instagram-spin {
1672      0% { transform: rotate(0deg) scale(1); }
1673      25% { transform: rotate(90deg) scale(1.05); }
1674      50% { transform: rotate(180deg) scale(1); }
1675      75% { transform: rotate(270deg) scale(1.05); }
1676      100% { transform: rotate(360deg) scale(1); }
1677    }
1678
1679    @keyframes instagram-pulse {
1680      0%, 100% { transform: scale(1); opacity: 1; }
1681      50% { transform: scale(1.2); opacity: 0.8; }
1682    }
1683
1684    @keyframes loading-shimmer {
1685      0% { opacity: 0.5; }
1686      50% { opacity: 1; }
1687      100% { opacity: 0.5; }
1688    }
1689
1690    #modal-loading-bece704f-04e3-4d27-9b97-78f3c9d279cd .w-16 {
1691      animation: instagram-spin 2s ease-in-out infinite;
1692    }
1693
1694    #modal-loading-bece704f-04e3-4d27-9b97-78f3c9d279cd .w-3 {
1695      animation: instagram-pulse 1.5s ease-in-out infinite;
1696    }
1697
1698    #modal-loading-bece704f-04e3-4d27-9b97-78f3c9d279cd svg {
1699      animation: loading-shimmer 2s ease-in-out infinite;
1700      filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.3));
1701    }
1702
1703    #modal-image-bece704f-04e3-4d27-9b97-78f3c9d279cd {
1704      image-rendering: -webkit-optimize-contrast;
1705      image-rendering: crisp-edges;
1706    }
1707
1708    /* High DPI display optimization */
1709    @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
1710      #modal-image-bece704f-04e3-4d27-9b97-78f3c9d279cd {
1711        image-rendering: auto;
1712        image-rendering: -webkit-optimize-contrast;
1713      }
1714    }
1715
1716    @media (prefers-reduced-motion: reduce) {
1717      .swiper-bece704f-04e3-4d27-9b97-78f3c9d279cd * {
1718        transition-duration: 0.01ms !important;
1719        animation-duration: 0.01ms !important;
1720      }
1721
1722      #modal-image-bece704f-04e3-4d27-9b97-78f3c9d279cd {
1723        transition: none !important;
1724        animation: none !important;
1725      }
1726    }
1727  </style>
1728</section>
1729<section class="w-full xl:max-w-[1440px] mx-auto flex-shrink-0 bg-[var(--bg-secondary)] my-20 p-6 xl:p-10 col-span-2" id="section-986bFUi0" data-maglev-section-id="986bFUi0" data-maglev-section-type="review_01">
1730  <header class="text-center">
1731        <h2 id="reviews-heading" class="text-[var(--text-primary)] text-[32px] xl:text-[48px] font-semibold tracking-[-0.48px]">
1732            Customer Reviews
1733        </h2>
1734      <p class="text-[var(--text-secondary)] text-[14px] xl:text-[16px] font-normal leading-[24px] mt-3">
1735        Check out our most recent reviews!
1736      </p>
1737  </header>
1738  <div class="mt-10 flex gap-x-4 overflow-x-auto" role="group" aria-labelledby="reviews-heading">
1739      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md p-6 h-fit">
1740        <div class="flex items-center mb-4">
1741            <img src="https://image-cdn.chowlyinc.com/75x75%2Cfit/https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FALV-UjXUTV1GuOSe9TqOS8ta9Owq5IDJg8WHW8yEA1OngSv7_m2CpDsx%3Ds128-c0x00000000-cc-rp-mo-ba2" alt="Victor Loera" class="w-10 h-10 mr-4">
1742            <div>
1743                  <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">Victor Loera</h3>
1744                <div class="flex text-yellow-500 mt-1" style="--star-rating: 5;">
1745                  <span data-star="5"></span>
1746                </div>
1747            </div>
1748        </div>
1749        <p class="review-text text-[var(--text-secondary)] text-[14px] leading-[20px]">
1750            <span class="truncated-part">First time visiting and Saigon Sisters went above and beyond anything I was expecting. It’s a small spot with a lot of class. The service was really attentive and sweet. The food was absolutely delicious! We had shrimp spring rolls with a peanut dipping sauce, the chicken and pork Pad Thai and beef fried rice… really</span>
1751            <span class="ellipsis">...</span>
1752            <span id="review-extra-0" class="extra-part section-hidden"> good! Elevated compared to other places. For dessert, we tried the Dubai Chocolate and Banana Brown Butter Cake… really well balanced! They have mocktails that are really good and my regular old fashioned was very tasty. On top of everything, the space is cozy and really nice relaxed atmosphere. Couldn’t recommend it more. I will go back soon. Places like these are a blessing. You would be blessed to visit.</span>
1753            <a href="#" class="toggle-read-more text-[var(--text-secondary)] text-[14px] leading-[20px]" role="button" aria-expanded="false" aria-controls="review-extra-0" aria-label="Read more of Victor Loera's review">Read More</a>
1754        </p>
1755      </article>
1756      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md p-6 h-fit">
1757        <div class="flex items-center mb-4">
1758            <img src="https://image-cdn.chowlyinc.com/75x75%2Cfit/https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FALV-UjWTbddzW7PPTs45Z8Ksbrlr_HcPoYbBF1T5XMOsi4VavtbUZKyQ%3Ds128-c0x00000000-cc-rp-mo-ba3" alt="Kayla Davis" class="w-10 h-10 mr-4">
1759            <div>
1760                  <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">Kayla Davis</h3>
1761                <div class="flex text-yellow-500 mt-1" style="--star-rating: 5;">
1762                  <span data-star="5"></span>
1763                </div>
1764            </div>
1765        </div>
1766        <p class="review-text text-[var(--text-secondary)] text-[14px] leading-[20px]">
1767            <span>Food and service were EXCELLENT! My party was absolutely in love with their banh bao, fried rice, and spicy noodles. The pork spring rolls were excellent as well! The owner is very kind and goes around talking to all the guests. I will be returning!</span>
1768        </p>
1769      </article>
1770      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md p-6 h-fit">
1771        <div class="flex items-center mb-4">
1772            <img src="https://image-cdn.chowlyinc.com/75x75%2Cfit/https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FACg8ocI3M5cjk9IvhdBcE_lyhEtxstE_IPNqjhv_xrmgABAP8J8yQQ%3Ds128-c0x00000000-cc-rp-mo-ba3" alt="Brandi Flowers" class="w-10 h-10 mr-4">
1773            <div>
1774                  <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">Brandi Flowers</h3>
1775                <div class="flex text-yellow-500 mt-1" style="--star-rating: 5;">
1776                  <span data-star="5"></span>
1777                </div>
1778            </div>
1779        </div>
1780        <p class="review-text text-[var(--text-secondary)] text-[14px] leading-[20px]">
1781            <span class="truncated-part">After researching the best Asian restaurants in the city, I decided to celebrate my mother-in-law&#39;s birthday at Saigon Sisters, and it exceeded every expectation.
1782
1783Dan greeted us warmly as soon as we arrived. I had called ahead because my Uber was running late, and he was incredibly accommodating, making us feel</span>
1784            <span class="ellipsis">...</span>
1785            <span id="review-extra-2" class="extra-part section-hidden"> welcomed from the moment we walked in.
1786
1787We started with the chicken steamed dumplings, pork and shrimp fresh spring rolls, and vegetable spring rolls. The spring rolls were unbelievably fresh and absolutely delicious. We also ordered the duck bao, which was filled with tender, moist duck, crisp cucumbers, and a perfectly balanced plum sauce.
1788
1789My daughter ordered the Bo Luc Lac, and it was bursting with flavor. The steak was incredibly tender and juicy, and the accompanying salad was one of the freshest we&#39;ve ever had, topped with an amazingly flavorful dressing.
1790
1791My mother-in-law thoroughly enjoyed the stir-fried vegetables, which were cooked perfectly and packed with fresh flavor.
1792
1793To finish our meal, we shared the Dubai chocolate cake and the banana brown butter cake. Both desserts were outstanding and the perfect ending to a fantastic dining experience.
1794
1795A special thank you to Harley, our server, who provided impeccable service throughout the evening. She was attentive, friendly, and helped make my mother-in-law&#39;s birthday celebration truly memorable.
1796
1797From the warm hospitality to the exceptional food and outstanding service, Saigon Sister delivered a five-star experience. We can&#39;t wait to return!</span>
1798            <a href="#" class="toggle-read-more text-[var(--text-secondary)] text-[14px] leading-[20px]" role="button" aria-expanded="false" aria-controls="review-extra-2" aria-label="Read more of Brandi Flowers's review">Read More</a>
1799        </p>
1800      </article>
1801      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md p-6 h-fit">
1802        <div class="flex items-center mb-4">
1803            <img src="https://image-cdn.chowlyinc.com/75x75%2Cfit/https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FALV-UjWGkTxEfxVUmyQnX_UNgDr8YPZC-M4gCd9iqxRunyAZW7TA7MjV%3Ds128-c0x00000000-cc-rp-mo" alt="Regine Joy Ganut" class="w-10 h-10 mr-4">
1804            <div>
1805                  <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">Regine Joy Ganut</h3>
1806                <div class="flex text-yellow-500 mt-1" style="--star-rating: 5;">
1807                  <span data-star="5"></span>
1808                </div>
1809            </div>
1810        </div>
1811        <p class="review-text text-[var(--text-secondary)] text-[14px] leading-[20px]">
1812            <span class="truncated-part">The food was great! Me and my friends went for a dinner and we enjoyed every bite! It was fresh and made to perfection and I am not even exaggerating. The price was great for the quality you’ll get. The service was immaculate! Their attention to detail was exceptional. We were lucky to meet the owner and he was very</span>
1813            <span class="ellipsis">...</span>
1814            <span id="review-extra-3" class="extra-part section-hidden"> warm and welcoming. Definitely coming back for more!</span>
1815            <a href="#" class="toggle-read-more text-[var(--text-secondary)] text-[14px] leading-[20px]" role="button" aria-expanded="false" aria-controls="review-extra-3" aria-label="Read more of Regine Joy Ganut's review">Read More</a>
1816        </p>
1817      </article>
1818      <article class="w-[248px] flex-shrink-0 rounded-lg bg-[var(--bg-primary)] shadow-md p-6 h-fit">
1819        <div class="flex items-center mb-4">
1820            <img src="https://image-cdn.chowlyinc.com/75x75%2Cfit/https%3A%2F%2Flh3.googleusercontent.com%2Fa-%2FALV-UjUs_JWD7oKJFfiaBSw51Hj3r5hxbsBvep3NRt7dEAjonmRTwowMow%3Ds128-c0x00000000-cc-rp-mo-ba5" alt="Dimitry Kopets" class="w-10 h-10 mr-4">
1821            <div>
1822                  <h3 class="text-[var(--text-primary)] font-semibold text-[16px] leading-[24px]">Dimitry Kopets</h3>
1823                <div class="flex text-yellow-500 mt-1" style="--star-rating: 5;">
1824                  <span data-star="5"></span>
1825                </div>
1826            </div>
1827        </div>
1828        <p class="review-text text-[var(--text-secondary)] text-[14px] leading-[20px]">
1829            <span>​Was pleasantly surprised by Saigon Sisters! Went in not knowing what to expect, but the food blew me away. The octopus was full of flavor, and the dumplings and short rib pho were delicious. If you appreciate great Vietnamese food with some adventurous dishes on the menu, definitely give this place a try!</span>
1830        </p>
1831      </article>
1832  </div>
1833
1834  
1834<script type="module">
1835    $(document).ready(function(){
1836      $('.toggle-read-more').on('click', function(e){
1837        e.preventDefault();
1838        const $link = $(this);
1839        const $reviewText = $link.closest('.review-text');
1840        const $extraPart = $reviewText.find('.extra-part');
1841        const $ellipsis = $reviewText.find('.ellipsis');
1842        const reviewerName = $link.closest('article').find('h3').text() || 'this reviewer';
1843        const isExpanded = $link.attr('aria-expanded') === 'true';
1844
1845        if (isExpanded) {
1846          $extraPart.slideUp(300);
1847          $ellipsis.slideDown(300);
1848          $link.text('Read More');
1849          $link.attr('aria-expanded', 'false');
1850          $link.attr('aria-label', `Read more of ${reviewerName}'s review`);
1851        } else {
1852          $ellipsis.slideUp(300);
1853          $extraPart.slideDown(300);
1854          $link.text('Read Less');
1855          $link.attr('aria-expanded', 'true');
1856          $link.attr('aria-label', `Read less of ${reviewerName}'s review`);
1857        }
1858      });
1859    });
1860  </script>
1860
1861
1862  <style>
1863    .toggle-read-more {
1864      font-size: 14px;
1865      line-height: 20px;
1866      text-decoration-line: underline;
1867      text-decoration-style: solid;
1868      text-underline-offset: auto;
1869      text-underline-position: from-font;
1870    }
1871    .review-card {
1872      transition: height 0.3s ease;
1873    }
1874    .review-text {
1875      overflow: hidden;
1876      position: relative;
1877    }
1878    .section-hidden {
1879      display: none;
1880    }
1881  </style>
1882</section>
1883
1884<section class="w-full xl:max-w-[1150px] mx-auto px-4 xl:px-0 py-12 col-span-2" id="section-wwehgrDj" data-maglev-section-id="wwehgrDj" data-maglev-section-type="faq_block_01">
1885  <!-- Section Title -->
1886  <h2 data-maglev-id="wwehgrDj.title" class="text-3xl xl:text-4xl font-bold text-[var(--text-primary)] text-center mb-8">Frequently Asked Questions</h2>
1887
1888    <!-- FAQ Items Container -->
1889    <div class="faq-container bg-[var(--background-primary)] ">
1890      <!-- Manual FAQ Blocks -->
1891          <details open class="faq-item border-b border-gray-200 dark:border-gray-700 last:border-b-0">
1892            <summary class="faq-header py-4 flex justify-between items-center">
1893              <h3 class="text-base font-medium text-[var(--text-primary)] pr-4">What dishes are you best known for?</h3>
1894              <svg class="faq-chevron w-4 h-4 text-[var(--text-secondary)] transform transition-transform duration-200 flex-shrink-0"
1895                   fill="none" stroke="currentColor" viewBox="0 0 24 24">
1896                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
1897              </svg>
1898            </summary>
1899            <div class="faq-answer pb-4">
1900              <div class="text-sm text-[var(--text-secondary)] leading-relaxed pr-8"><p>Guests come back for our <a href="/menu/banh-mi-sandwiches">banh mi sandwiches</a> on crackly French baguettes and a steaming bowl of <a href="/menu/beef-pho">beef pho</a>. Soft steamed <a href="/menu/bao-buns">bao buns</a> and fresh <a href="/menu/pork-and-shrimp-fresh-spring-rolls">pork and shrimp spring rolls</a> round out the table, and spice lovers order the lemongrass-scented <a href="/menu/bun-bo-hue">bun bo hue</a>.</p></div>
1901            </div>
1902          </details>
1903          <details open class="faq-item border-b border-gray-200 dark:border-gray-700 last:border-b-0">
1904            <summary class="faq-header py-4 flex justify-between items-center">
1905              <h3 class="text-base font-medium text-[var(--text-primary)] pr-4">What type of cuisine do you serve?</h3>
1906              <svg class="faq-chevron w-4 h-4 text-[var(--text-secondary)] transform transition-transform duration-200 flex-shrink-0"
1907                   fill="none" stroke="currentColor" viewBox="0 0 24 24">
1908                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
1909              </svg>
1910            </summary>
1911            <div class="faq-answer pb-4">
1912              <div class="text-sm text-[var(--text-secondary)] leading-relaxed pr-8"><p>We cook <a href="/menu/vietnamese">Vietnamese</a> food from our family's recipes, from the <a href="/menu/vietnamese-street-food">Vietnamese street food</a> Mama Suu served at the French Market to signature plates like bo luc lac. The menu also draws on <a href="/menu/southeast-asian">Southeast Asian</a> favorites such as laksa and green curry, alongside wider <a href="/menu/asian">Asian</a> noodle and rice dishes.</p></div>
1913            </div>
1914          </details>
1915          <details open class="faq-item border-b border-gray-200 dark:border-gray-700 last:border-b-0">
1916            <summary class="faq-header py-4 flex justify-between items-center">
1917              <h3 class="text-base font-medium text-[var(--text-primary)] pr-4">What services do you offer?</h3>
1918              <svg class="faq-chevron w-4 h-4 text-[var(--text-secondary)] transform transition-transform duration-200 flex-shrink-0"
1919                   fill="none" stroke="currentColor" viewBox="0 0 24 24">
1920                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
1921              </svg>
1922            </summary>
1923            <div class="faq-answer pb-4">
1924              <div class="text-sm text-[var(--text-secondary)] leading-relaxed pr-8"><p>Join us for <a href="/menu/lunch">lunch</a>
1924 or dinner in the dining room, grab <a href="/menu/takeout">takeout</a>, or order <a href="/menu/delivery">delivery</a> across the West Loop. For offices and events we offer Vietnamese <a href="/menu/catering">catering</a>, and our room hosts <a href="/menu/private-parties">private parties</a> and group dinners.</p></div>
1925            </div>
1926          </details>
1927          <details open class="faq-item border-b border-gray-200 dark:border-gray-700 last:border-b-0">
1928            <summary class="faq-header py-4 flex justify-between items-center">
1929              <h3 class="text-base font-medium text-[var(--text-primary)] pr-4">What areas do you serve?</h3>
1930              <svg class="faq-chevron w-4 h-4 text-[var(--text-secondary)] transform transition-transform duration-200 flex-shrink-0"
1931                   fill="none" stroke="currentColor" viewBox="0 0 24 24">
1932                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
1933              </svg>
1934            </summary>
1935            <div class="faq-answer pb-4">
1936              <div class="text-sm text-[var(--text-secondary)] leading-relaxed pr-8"><p>Our restaurant sits at 567 W Lake St in <a href="/location/chicago">Chicago</a>, in the heart of the <a href="/location/west-loop">West Loop</a>. We serve neighbors and office crowds from <a href="/location/fulton-market">Fulton Market</a>, the <a href="/location/near-west-side">Near West Side</a> and the <a href="/location/chicago-loop">Chicago Loop</a>, a short walk from Ogilvie and Union Station.</p></div>
1937            </div>
1938          </details>
1939    </div>
1940
1941    <!-- SEO Structured Data -->
1942    
1942<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What dishes are you best known for?","acceptedAnswer":{"@type":"Answer","text":"Guests come back for our banh mi sandwiches on crackly French baguettes and a steaming bowl of beef pho. Soft steamed bao buns and fresh pork and shrimp spring rolls round out the table, and spice lovers order the lemongrass-scented bun bo hue."}},{"@type":"Question","name":"What type of cuisine do you serve?","acceptedAnswer":{"@type":"Answer","text":"We cook Vietnamese food from our family's recipes, from the Vietnamese street food Mama Suu served at the French Market to signature plates like bo luc lac. The menu also draws on Southeast Asian favorites such as laksa and green curry, alongside wider Asian noodle and rice dishes."}},{"@type":"Question","name":"What services do you offer?","acceptedAnswer":{"@type":"Answer","text":"Join us for lunch or dinner in the dining room, grab takeout, or order delivery across the West Loop. For offices and events we offer Vietnamese catering, and our room hosts private parties and group dinners."}},{"@type":"Question","name":"What areas do you serve?","acceptedA
1942nswer":{"@type":"Answer","text":"Our restaurant sits at 567 W Lake St in Chicago, in the heart of the West Loop. We serve neighbors and office crowds from Fulton Market, the Near West Side and the Chicago Loop, a short walk from Ogilvie and Union Station."}}]}</script>
1942
1943
1944</section><section class="w-full xl:max-w-[1440px] mx-auto h-auto flex-shrink-0 relative flex flex-col items-start justify-center px-10 xl:px-20 py-10 xl:py-20 col-span-2" id="section-BaRHvt74" data-maglev-section-id="BaRHvt74" data-maglev-section-type="custom_html_01">
1945  <div class="pf-embed-wrapper">
1946  <div data-paperform-id="saigon-awards"></div>
1947</div>
1948
1949<style>
1950  .pf-embed-wrapper {
1951    width: 100%;
1952    max-width: full;
1953    margin: 0 auto;
1954    border-radius: 0.5rem;
1955    overflow: hidden;
1956  }
1957
1958  @media (max-width: 768px) {
1959    .pf-embed-wrapper {
1960      border-radius: 0;
1961      max-width: 100%;
1962    }
1963  }
1964</style>
1965
1966<script>
1967  (function() {
1968    if (document.querySelector('script[src*="paperform"]')) return;
1969
1970    var script = document.createElement('script');
1971    script.src = 'https://paperform.co/__embed.min.js';
1972    script.defer = true;
1973    document.body.appendChild(script);
1974  })();
1975</script>
1975
1976</section><section class="w-full flex justify-center py-10 col-span-2" data-location_id="section-1d68fb44-0394-44a0-a709-6461fa196d6b" aria-label="Locations information" id="section-HtNlkwFf" data-maglev-section-id="HtNlkwFf" data-maglev-section-type="locations_01">
1977
1978  
1979
1980    <section class="w-full xl:max-w-[1440px] h-auto flex-shrink-0 bg-[var(--bg-secondary)] p-8">
1981<header class="w-full flex flex-col items-center px-4 xl:px-0">
1982    <h2 data-maglev-id="HtNlkwFf.title" class="text-[var(--text-primary)] text-center text-[32px] xl:text-[48px] font-semibold leading-[normal] tracking-[-0.48px]" id="locations-heading-1d68fb44-0394-44a0-a709-6461fa196d6b"><strong>Visit Saigon Sisters</strong></h2>
1983  <p data-maglev-id="HtNlkwFf.subtitle" class="text-[var(--text-secondary)] text-center text-[16px] font-normal leading-[24px] mt-2">Come experience authentic Vietnamese flavors in the heart of Chicago</p>
1984</header>
1985
1986<!-- Persistent navigation that appears in the layout but stays visible -->
1987  <div class="mt-10 w-full flex flex-col xl:flex-row items-start justify-center">
1988    <div class="w-full xl:w-[657px] bg-[var(--bg-primary)] rounded-lg shadow-lg p-8 flex-shrink-0 min-h-[418px] flex flex-col justify-between">
1989      <div>
1990        <!-- Dynamic title that updates -->
1991          <h3 class="text-[#212121] text-[24px] font-semibold leading-[30px] tracking-[-0.192px]" id="current-location-title-1d68fb44-0394-44a0-a709-6461fa196d6b">
1992            Saigon Sisters - Chicago Lake St
1993          </h3>
1994        
1995        <!-- Navigation below title -->
1996        <nav class="mt-4 flex flex-wrap md:flex-nowrap justify-start md:justify-start gap-1 sm:gap-2 md:overflow-x-auto" aria-label="Location navigation" id="location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b">
1997
1998            <div class="nav-item flex min-w-0 md:min-w-[120px] px-2 sm:px-3 py-2 justify-center items-center rounded-md w-auto md:flex-shrink-0" data-nav-index="0">
1999              <a data-maglev-id="bcJ-F2tSCNA.name" href="#" data-switch_location="1d68fb44-0394-44a0-a709-6461fa196d6b-0" class="text-[14px] leading-[140%] md:whitespace-nowrap text-center" aria-current="false">Saigon Sisters - Chicago Lake St</a>
2000            </div>
2001
2002            <div class="nav-item flex min-w-0 md:min-w-[120px] px-2 sm:px-3 py-2 justify-center items-center rounded-md w-auto md:flex-shrink-0" data-nav-index="1">
2003              <a data-maglev-id="__5IhZFzBb0.name" href="#" data-switch_location="1d68fb44-0394-44a0-a709-6461fa196d6b-1" class="text-[14px] leading-[140%] md:whitespace-nowrap text-center" aria-current="false">Saigon Sisters French Market</a>
2004            </div>
2005        </nav>
2006        
2007        <!-- Dynamic content area -->
2008        <div id="dynamic-content-1d68fb44-0394-44a0-a709-6461fa196d6b">
2009          <!-- Content will be loaded here -->
2010        </div>
2011      </div>
2012    </div>
2013    
2014    <!-- Dynamic map area -->
2015    <figure class="w-full xl:w-[359px] h-[418px] mt-4 xl:mt-0 rounded-lg flex-shrink-0 overflow-hidden" id="dynamic-map-1d68fb44-0394-44a0-a709-6461fa196d6b">
2016      <!-- Map will be loaded here -->
2017    </figure>
2018  </div>
2019
2020<!-- Hidden location data for JavaScript -->
2021  <div class="hidden" data-location-data="1d68fb44-0394-44a0-a709-6461fa196d6b-0" data-location-name="Saigon Sisters - Chicago Lake St">
2022    <div class="location-content">
2023      <address class="mt-6 flex items-center space-x-3 not-italic">
2024        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
2025          <path d="M9.99992 17.7712C9.80547 17.7712 9.61103 17.7364 9.41658 17.667C9.22214 17.5975 9.04853 17.4934 8.89575 17.3545C7.99297 16.5212 7.19436 15.7087 6.49992 14.917C5.80547 14.1253 5.22561 13.358 4.76034 12.6149C4.29506 11.8719 3.94089 11.1566 3.69784 10.4691C3.45478 9.78158 3.33325 9.12533 3.33325 8.50033C3.33325 6.41699 4.00339 4.75727 5.34367 3.52116C6.68395 2.28505 8.23603 1.66699 9.99992 1.66699C11.7638 1.66699 13.3159 2.28505 14.6562 3.52116C15.9964 4.75727 16.6666 6.41699 16.6666 8.50033C16.6666 9.12533 16.5451 9.78158 16.302 10.4691C16.0589 11.1566 15.7048 11.8719 15.2395 12.6149C14.7742 13.358 14.1944 14.1253 13.4999 14.917C12.8055 15.7087 12.0069 16.5212 11.1041 17.3545C10.9513 17.4934 10.7777 17.5975 10.5833 17.667C10.3888 17.7364 10.1944 17.7712 9.99992 17.7712ZM9.99992 10.0003C10.4583 10.0003 10.8506 9.83713 11.177 9.51074C11.5034 9.18435 11.6666 8.79199 11.6666 8.33366C11.6666 7.87533 11.5034 7.48296 11.177 7.15658C10.8506 6.83019 10.4583 6.66699 9.99992 6.66699C9.54158 6.66699 9.14922 6.83019 8.82283 7.15658C8.49645 7.48296 8.33325 7.87533 8.33325 8.33366C8.33325 8.79199 8.49645 9.18435 8.82283 9.51074C9.14922 9.83713 9.54158 10.0003 9.99992 10.0003Z" fill="#666666"></path>
2026        </svg>
2027        <a data-maglev-id="bcJ-F2tSCNA.address" href="https://www.google.com/maps/search/?api=1&amp;
2027query=567%20W%20Lake%20St%2C%20Chicago%2C%20IL%2C%2060661%2C%20US" target="_blank" class="text-[var(--text-primary)] text-[14px] font-normal leading-[20px]">567 W Lake St, Chicago, IL, 60661, US</a>
2028      </address>
2029
2030        <div class="mt-6 flex items-center space-x-3">
2031          <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
2032            <path d="M16.625 17.5C14.8889 17.5 13.1736 17.1215 11.4792 16.3646C9.78472 15.6076 8.24306 14.5347 6.85417 13.1458C5.46528 11.7569 4.39236 10.2153 3.63542 8.52083C2.87847 6.82639 2.5 5.11111 2.5 3.375C2.5 3.125 2.58333 2.91667 2.75 2.75C2.91667 2.58333 3.125 2.5 3.375 2.5H6.75C6.94444 2.5 7.11806 2.56597 7.27083 2.69792C7.42361 2.82986 7.51389 2.98611 7.54167 3.16667L8.08333 6.08333C8.11111 6.30556 8.10417 6.49306 8.0625 6.64583C8.02083 6.79861 7.94444 6.93056 7.83333 7.04167L5.8125 9.08333C6.09028 9.59722 6.42014 10.0938 6.80208 10.5729C7.18403 11.0521 7.60417 11.5139 8.0625 11.9583C8.49306 12.3889 8.94444 12.7882 9.41667 13.1562C9.88889 13.5243 10.3889 13.8611 10.9167 14.1667L12.875 12.2083C13 12.0833 13.1632 11.9896 13.3646 11.9271C13.566 11.8646 13.7639 11.8472 13.9583 11.875L16.8333 12.4583C17.0278 12.5139 17.1875 12.6146 17.3125 12.7604C17.4375 12.9062 17.5 13.0694 17.5 13.25V16.625C17.5 16.875 17.4167 17.0833 17.25 17.25C17.0833 17.4167 16.875 17.5 16.625 17.5Z" fill="#666666"></path>
2033          </svg>
2034          <a data-maglev-id="bcJ-F2tSCNA.phone" href="tel:3124960090" class="text-[var(--text-primary)] text-[14px] font-normal leading-[20px]">312-496-0090</a>
2035        </div>
2036
2037      <div class="mt-6 flex flex-col space-y-2 xl:flex-row xl:space-x-3 justify-between">
2038        <div class="flex flex-wrap space-x-3">
2039          <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
2040            <path d="M10.8334 9.66699V6.66699C10.8334 6.43088 10.7536 6.23296 10.5938 6.07324C10.4341 5.91352 10.2362 5.83366 10.0001 5.83366C9.76397 5.83366 9.56605 5.91352 9.40633 6.07324C9.24661 6.23296 9.16675 6.43088 9.16675 6.66699V9.97949C9.16675 10.0906 9.18758 10.1982 9.22925 10.3024C9.27091 10.4066 9.33341 10.5003 9.41675 10.5837L12.1667 13.3337C12.3195 13.4864 12.514 13.5628 12.7501 13.5628C12.9862 13.5628 13.1806 13.4864 13.3334 13.3337C13.4862 13.1809 13.5626 12.9864 13.5626 12.7503C13.5626 12.5142 13.4862 12.3198 13.3334 12.167L10.8334 9.66699ZM10.0001 18.3337C8.8473 18.3337 7.76397 18.1149 6.75008 17.6774C5.73619 17.2399 4.85425 16.6462 4.10425 15.8962C3.35425 15.1462 2.7605 14.2642 2.323 13.2503C1.8855 12.2364 1.66675 11.1531 1.66675 10.0003C1.66675 8.84755 1.8855 7.76421 2.323 6.75033C2.7605 5.73644 3.35425 4.85449 4.10425 4.10449C4.85425 3.35449 5.73619 2.76074 6.75008 2.32324C7.76397 1.88574 8.8473 1.66699 10.0001 1.66699C11.1529 1.66699 12.2362 1.88574 13.2501 2.32324C14.264 2.76074 15.1459 3.35449 15.8959 4.10449C16.6459 4.85449 17.2397 5.73644 17.6772 6.75033C18.1147 7.76421 18.3334 8.84755 18.3334 10.0003C18.3334 11.1531 18.1147 12.2364 17.6772 13.2503C17.2397 14.2642 16.6459 15.1462 15.8959 15.8962C15.1459 16.6462 14.264 17.2399 13.2501 17.6774C12.2362 18.1149 11.1529 18.3337 10.0001 18.3337Z" fill="#666666"></path>
2041          </svg>
2042          <div>
2043            <div data-maglev-id="bcJ-F2tSCNA.hours" class="mt-0 space-y-2 text-[var(--text-primary)]"><strong>Sunday:</strong> Closed<br><strong>Monday:</strong> Closed<br><strong>Tuesday:</strong> 11:00 AM - 9:00 PM<br><strong>Wednesday:</strong> 11:00 AM - 9:00 PM<br><strong>Thursday:</strong> 11:00 AM - 9:00 PM<br><strong>Friday:</strong> 11:00 AM - 10:00 PM<br><strong>Saturday: </strong>12:00 PM - 10:00 PM</div>
2044          </div>
2045        </div>
2046        <div class="flex flex-col justify-end items-center xl:items-end">
2047          <a href="/stores" class="mt-6 md:mt-0 inline-flex h-[48px] w-full md:w-auto px-8 py-4 justify-center items-center gap-2 rounded-[6px] border border-[#6b953e] text-[#6b953e] hover:brightness-90 text-[15px] font-semibold leading-[150%]">Start an order</a>
2048        </div>
2049      </div>
2050    </div>
2051    
2052    <div class="location-map">
2053        <a href="https://www.google.com/maps/search/?api=1&amp;
2053query=567%20W%20Lake%20St%2C%20Chicago%2C%20IL%2C%2060661%2C%20US" target="_blank" rel="noopener noreferrer" aria-label="Open Saigon Sisters - Chicago Lake St - 567 W Lake St, Chicago, IL, 60661, US in Google Maps" class="block w-full h-full">
2054  <img src="/maps/567%20W%20Lake%20St%2C%20Chicago%2C%20IL%2C%2060661%2C%20US/359/418.png" alt="Map of Saigon Sisters - Chicago Lake St - 567 W Lake St, Chicago, IL, 60661, US" loading="lazy" width="359" height="418" class="w-full h-full object-cover">
2055</a>
2056
2057    </div>
2058  </div>
2059  <div class="hidden" data-location-data="1d68fb44-0394-44a0-a709-6461fa196d6b-1" data-location-name="Saigon Sisters French Market">
2060    <div class="location-content">
2061      <address class="mt-6 flex items-center space-x-3 not-italic">
2062        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
2063          <path d="M9.99992 17.7712C9.80547 17.7712 9.61103 17.7364 9.41658 17.667C9.22214 17.5975 9.04853 17.4934 8.89575 17.3545C7.99297 16.5212 7.19436 15.7087 6.49992 14.917C5.80547 14.1253 5.22561 13.358 4.76034 12.6149C4.29506 11.8719 3.94089 11.1566 3.69784 10.4691C3.45478 9.78158 3.33325 9.12533 3.33325 8.50033C3.33325 6.41699 4.00339 4.75727 5.34367 3.52116C6.68395 2.28505 8.23603 1.66699 9.99992 1.66699C11.7638 1.66699 13.3159 2.28505 14.6562 3.52116C15.9964 4.75727 16.6666 6.41699 16.6666 8.50033C16.6666 9.12533 16.5451 9.78158 16.302 10.4691C16.0589 11.1566 15.7048 11.8719 15.2395 12.6149C14.7742 13.358 14.1944 14.1253 13.4999 14.917C12.8055 15.7087 12.0069 16.5212 11.1041 17.3545C10.9513 17.4934 10.7777 17.5975 10.5833 17.667C10.3888 17.7364 10.1944 17.7712 9.99992 17.7712ZM9.99992 10.0003C10.4583 10.0003 10.8506 9.83713 11.177 9.51074C11.5034 9.18435 11.6666 8.79199 11.6666 8.33366C11.6666 7.87533 11.5034 7.48296 11.177 7.15658C10.8506 6.83019 10.4583 6.66699 9.99992 6.66699C9.54158 6.66699 9.14922 6.83019 8.82283 7.15658C8.49645 7.48296 8.33325 7.87533 8.33325 8.33366C8.33325 8.79199 8.49645 9.18435 8.82283 9.51074C9.14922 9.83713 9.54158 10.0003 9.99992 10.0003Z" fill="#666666"></path>
2064        </svg>
2065        <a data-maglev-id="__5IhZFzBb0.address" href="https://www.google.com/maps/search/?api=1&amp;query=131%20N.%20Clinton%20St%20Chicago%2C%20IL%2C%2060661%2C%20US" target="_blank" class="text-[var(--text-primary)] text-[14px] font-normal leading-[20px]">131 N. Clinton St Chicago, IL, 60661, US</a>
2066      </address>
2067
2068        <div class="mt-6 flex items-center space-x-3">
2069          <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
2070            <path d="M16.625 17.5C14.8889 17.5 13.1736 17.1215 11.4792 16.3646C9.78472 15.6076 8.24306 14.5347 6.85417 13.1458C5.46528 11.7569 4.39236 10.2153 3.63542 8.52083C2.87847 6.82639 2.5 5.11111 2.5 3.375C2.5 3.125 2.58333 2.91667 2.75 2.75C2.91667 2.58333 3.125 2.5 3.375 2.5H6.75C6.94444 2.5 7.11806 2.56597 7.27083 2.69792C7.42361 2.82986 7.51389 2.98611 7.54167 3.16667L8.08333 6.08333C8.11111 6.30556 8.10417 6.49306 8.0625 6.64583C8.02083 6.79861 7.94444 6.93056 7.83333 7.04167L5.8125 9.08333C6.09028 9.59722 6.42014 10.0938 6.80208 10.5729C7.18403 11.0521 7.60417 11.5139 8.0625 11.9583C8.49306 12.3889 8.94444 12.7882 9.41667 13.1562C9.88889 13.5243 10.3889 13.8611 10.9167 14.1667L12.875 12.2083C13 12.0833 13.1632 11.9896 13.3646 11.9271C13.566 11.8646 13.7639 11.8472 13.9583 11.875L16.8333 12.4583C17.0278 12.5139 17.1875 12.6146 17.3125 12.7604C17.4375 12.9062 17.5 13.0694 17.5 13.25V16.625C17.5 16.875 17.4167 17.0833 17.25 17.25C17.0833 17.4167 16.875 17.5 16.625 17.5Z" fill="#666666"></path>
2071          </svg>
2072          <a data-maglev-id="__5IhZFzBb0.phone" href="tel:3124960094" class="text-[var(--text-primary)] text-[14px] font-normal leading-[20px]">(312) 496-0094</a>
2073        </div>
2074
2075      <div class="mt-6 flex flex-col space-y-2 xl:flex-row xl:space-x-3 justify-between">
2076        <div class="flex flex-wrap space-x-3">
2077          <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
2078            <path d="M10.8334 9.66699V6.66699C10.8334 6.43088 10.7536 6.23296 10.5938 6.07324C10.4341 5.91352 10.2362 5.83366 10.0001 5.83366C9.76397 5.83366 9.56605 5.91352 9.40633 6.07324C9.24661 6.23296 9.16675 6.43088 9.16675 6.66699V9.97949C9.16675 10.0906 9.18758 10.1982 9.22925 10.3024C9.27091 10.4066 9.33341 10.5003 9.41675 10.5837L12.1667 13.3337C12.3195 13.4864 12.514 13.5628 12.7501 13.5628C12.9862 13.5628 13.1806 13.4864 13.3334 13.3337C13.4862 13.1809 13.5626 12.9864 13.5626 12.7503C13.5626 12.5142 13.4862 12.3198 13.3334 12.167L10.8334 9.66699ZM10.0001 18.3337C8.8473 18.3337 7.76397 18.1149 6.75008 17.6774C5.73619 17.2399 4.85425 16.6462 4.10425 15.8962C3.35425 15.1462 2.7605 14.2642 2.323 13.2503C1.8855 12.2364 1.66675 11.1531 1.66675 10.0003C1.66675 8.84755 1.8855 7.76421 2.323 6.75033C2.7605 5.73644 3.35425 4.85449 4.10425 4.10449C4.85425 3.35449 5.73619 2.76074 6.75008 2.32324C7.76397 1.88574 8.8473 1.66699 10.0001 1.66699C11.1529 1.66699 12.2362 1.88574 13.2501 2.32324C14.264 2.76074 15.1459 3.35449 15.8959 4.10449C16.6459 4.85449 17.2397 5.73644 17.6772 6.75033C18.1147 7.76421 18.3334 8.84755 18.3334 10.0003C18.3334 11.1531 18.1147 12.2364 17.6772 13.2503C17.2397 14.2642 16.6459 15.1462 15.8959 15.8962C15.1459 16.6462 14.264 17.2399 13.2501 17.6774C12.2362 18.1149 11.1529 18.3337 10.0001 18.3337Z" fill="#666666"></path>
2079          </svg>
2080          <div>
2081            <div data-maglev-id="__5IhZFzBb0.hours" class="mt-0 space-y-2 text-[var(--text-primary)]"><strong>Monday: </strong>10am - 5pm<br><strong>Tuesday: </strong>10am - 5pm<br><strong>Wednesday: </strong>10am - 5pm<br><strong>Thursday: </strong>10am - 5pm<br><strong>Friday: </strong>10am - 5pm<br><strong>Saturday: </strong>10am - 4pm<br><strong>Sunday: </strong>Closed</div>
2082          </div>
2083        </div>
2084        <div class="flex flex-col justify-end items-center xl:items-end">
2085          <a href="/saigon-french-market" class="mt-6 md:mt-0 inline-flex h-[48px] w-full md:w-auto px-8 py-4 justify-center items-center gap-2 rounded-[6px] border border-[#6b953e] text-[#6b953e] hover:brightness-90 text-[15px] font-semibold leading-[150%]">Start an order</a>
2086        </div>
2087      </div>
2088    </div>
2089    
2090    <div class="location-map">
2091        <a href="https://www.google.com/maps/search/?api=1&amp;
2091query=131%20N.%20Clinton%20St%20Chicago%2C%20IL%2C%2060661%2C%20US" target="_blank" rel="noopener noreferrer" aria-label="Open Saigon Sisters French Market - 131 N. Clinton St Chicago, IL, 60661, US in Google Maps" class="block w-full h-full">
2092  <img src="/maps/131%20N.%20Clinton%20St%20Chicago%2C%20IL%2C%2060661%2C%20US/359/418.png" alt="Map of Saigon Sisters French Market - 131 N. Clinton St Chicago, IL, 60661, US" loading="lazy" width="359" height="418" class="w-full h-full object-cover">
2093</a>
2094
2095    </div>
2096  </div>
2097
2098<!-- Fallback for single location -->
2099</section>
2100
2101<script type="module">
2102$(document).ready(function() {
2103    const firstLocationData = $('[data-location-data="1d68fb44-0394-44a0-a709-6461fa196d6b-0"]');
2104    $('#dynamic-content-1d68fb44-0394-44a0-a709-6461fa196d6b').html(firstLocationData.find('.location-content').html());
2105    $('#dynamic-map-1d68fb44-0394-44a0-a709-6461fa196d6b').html(firstLocationData.find('.location-map').html());
2106    $('#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b .nav-item[data-nav-index="0"]').addClass('active');
2107});
2108
2109$(document).on('click', '#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b [data-switch_location]', function(e) {
2110  e.preventDefault();
2111  
2112  const locationData = $('[data-location-data="' + $(this).data('switch_location') + '"]');
2113  $('#current-location-title-1d68fb44-0394-44a0-a709-6461fa196d6b').text(locationData.data('location-name'));
2114  $('#dynamic-content-1d68fb44-0394-44a0-a709-6461fa196d6b').html(locationData.find('.location-content').html());
2115  $('#dynamic-map-1d68fb44-0394-44a0-a709-6461fa196d6b').html(locationData.find('.location-map').html());
2116  
2117  $('#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b .nav-item').removeClass('active');
2118  $(this).parent('.nav-item').addClass('active');
2119});
2120</script>
2120
2121
2122<style>
2123/* Default navigation item styles */
2124#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b .nav-item {
2125  background-color: var(--bg-primary);
2126}
2127
2128#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b .nav-item a {
2129  color: var(--text-primary);
2130}
2131
2132/* Active navigation item styles */
2133#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b .nav-item.active {
2134    background-color: rgba(107, 149, 62, 0.08) !important;
2135}
2136
2137#location-nav-1d68fb44-0394-44a0-a709-6461fa196d6b .nav-item.active a {
2138    color: #6b953e !important;
2139  font-weight: 600 !important;
2140}
2141</style>
2142
2143</section><footer class="w-full mx-auto bg-[var(--bg-primary)] py-8 col-span-2" role="contentinfo" itemscope="itemscope" itemtype="https://schema.org/WPFooter" id="section-C803vDZW" data-maglev-section-id="C803vDZW" data-maglev-section-type="standard_footer_01">
2144  <div class="w-full px-4 xl:px-0 xl:w-[1200px] mx-auto flex flex-col space-y-3 xl:space-y-6">
2145
2146      <div class="w-full grid grid-cols-1 xl:grid-cols-3 gap-4 xl:gap-4 mb-2 xl:mb-4">
2147          <nav class="col-span-1 flex flex-wrap justify-center xl:justify-start order-2 xl:order-1 xl:pl-0" aria-label="Footer navigation">
2148              <a data-maglev-id="wNYEwpJSKgg.link" class="mx-3 xl:mx-0 xl:mr-6 mb-2 text-[var(--link-text)] hover:text-[var(--link-hover)] text-sm" href="/events"><span data-maglev-id="wNYEwpJSKgg.link.text">Events</span></a>
2149              <a data-maglev-id="9991Ty9mefY.link" class="mx-3 xl:mx-0 xl:mr-6 mb-2 text-[var(--link-text)] hover:text-[var(--link-hover)] text-sm" href="/parties"><span data-maglev-id="9991Ty9mefY.link.text">Parties</span></a>
2150              <a data-maglev-id="LBvD253_0Ic.link" class="mx-3 xl:mx-0 xl:mr-6 mb-2 text-[var(--link-text)] hover:text-[var(--link-hover)] text-sm" href="/press"><span data-maglev-id="LBvD253_0Ic.link.text">Press</span></a>
2151              <a data-maglev-id="bth_WuoX_Hg.link" class="mx-3 xl:mx-0 xl:mr-6 mb-2 text-[var(--link-text)] hover:text-[var(--link-hover)] text-sm" href="/contact-us"><span data-maglev-id="bth_WuoX_Hg.link.text">Contact Us</span></a>
2152          </nav>
2153
2154          <nav class="col-span-1 flex justify-center space-x-6 xl:space-x-8 order-1 xl:order-2" aria-label="Social media links">
2155              <a data-maglev-id="fB5DvN0LLxU.link" target="_blank" class="w-[32px] h-[32px] bg-[var(--social-bg)] rounded-lg text-[var(--social-text)] text-center" aria-label="fa-brands fa-facebook-f" href="https://www.instagram.com/saigonsisters">
2156                <i class="text-[24px] pt-[4px] fa-brands fa-facebook-f" data-maglev-id="fB5DvN0LLxU.icon"></i>
2157</a>              <a data-maglev-id="6QlyiM7rKfk.link" target="_blank" class="w-[32px] h-[32px] bg-[var(--social-bg)] rounded-lg text-[var(--social-text)] text-center" aria-label="fa-brands fa-instagram" href="https://www.instagram.com/saigonsisters">
2158                <i class="text-[24px] pt-[4px] fa-brands fa-instagram" data-maglev-id="6QlyiM7rKfk.icon"></i>
2159</a>          </nav>
2160
2161        <div class="col-span-1 hidden xl:block order-3"></div>
2162      </div>
2163
2164    <div class="w-full flex flex-col xl:flex-row justify-between items-center text-[var(--text-secondary)] text-sm font-normal leading-[142.857%] space-y-3 xl:space-y-0 mt-2 xl:mt-6">
2165      <nav class="flex flex-wrap justify-center xl:justify-start flex-grow space-x-4 xl:space-x-6 xl:pl-0" aria-label="Legal links">
2166        <a href="https://koala-configurations.s3.amazonaws.com/public/assets/Chowly-Terms-and-Conditions-b3cca027-acb6-42db-9d1f-11080e29b1e1.pdf" target="_blank" rel="noopener" class="mb-2">Terms of Use</a>
2167        <a href="https://koala-configurations.s3.us-east-1.amazonaws.com/public/assets/Chowly-Privacy-Policy-202f4118-faeb-4593-8574-57dc447ae203.pdf" target="_blank" rel="noopener" class="mb-2">Privacy Policy</a>
2168      </nav>
2169        
2170      <p class="relative text-center xl:flex-grow xl:left-[-200px]" itemscope itemtype="https://schema.org/Organization">
2171        <span>Saigon Sisters</span>™ <span itemprop="copyrightYear">2026</span> All Rights Reserved
2172      </p>
2173      <p class="text-center xl:text-right">Made by <a href="https://www.chowly.com" class="font-bold" rel="noopener">Chowly</a></p>
2174    </div>
2175  </div>
2176</footer>
2177    </section>
2178  </main>
2179  <!-- ===== Saigon Sisters — scroll reveal (body_scripts) ===== -->
2180<script>
2181(function(){
2182  // Signal that this reveal script mounted, so a host's belt-and-suspenders "force-reveal if JS
2183  // didn't load" fallback can NO-OP when scroll-reveal is actually running (otherwise that fallback
2184  // reveals every section on a timer, defeating the on-scroll animation). Set before the
2185  // reduced-motion return so it's true whenever body_scripts executed at all.
2186  window.cwRevealMounted = true;
2187  if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
2188  // tag content sections for reveal — skip notification, nav, hero, footer (by id/role, NOT ordinal)
2189  var SKIP = {'section-FYU2eG76':1,'section-dDb0AMpP':1,'section-M4aDtxB6egU':1,'section-C803vDZW':1};
2190  function tag(){
2191    document.querySelectorAll('[id^="section-"]').forEach(function(el){
2192      if (!SKIP[el.id]) el.classList.add('cw-reveal');
2193    });
2194  }
2195  function reveal(){
2196    var vh = window.innerHeight || document.documentElement.clientHeight;
2197    document.querySelectorAll('.cw-reveal').forEach(function(el){
2198      if (el.classList.contains('cw-in')) return;
2199      // scroll-position check (NOT IntersectionObserver — survives fast-scroll / jump-links / restored scroll)
2200      if (el.getBoundingClientRect().top < vh * 0.88) el.classList.add('cw-in');
2201    });
2202  }
2203  function armReveal(){
2204    window.addEventListener('scroll', reveal, {passive:true});
2205    window.addEventListener('resize', reveal, {passive:true});
2206    // Defer the first reveal one paint so the opacity:0 state renders before .cw-in is added — a
2207    // section at the fold then animates in instead of snapping visible.
2208    if (window.requestAnimationFrame)
2209      requestAnimationFrame(function(){ requestAnimationFrame(reveal); });
2210    else reveal();
2211  }
2212  // Tag sections hidden SYNCHRONOUSLY now, before first paint. This inline script sits at the end of
2213  // <body>, so every content section above it is already parsed — hiding them here means a near-fold
2214  // section can't flash visible-then-hidden (tagging at DOMContentLoaded can paint once first, then
2215  // hide → a blink). No-JS never runs this and reduced-motion returned above, so content is only ever
2216  // hidden with JS + motion on; .cw-in (added post-paint) animates it in. Re-tag at DCL is a
2217  // belt-and-suspenders no-op catch for any section parsed after this script.
2218  tag();
2219  if (document.readyState === 'loading')
2220    document.addEventListener('DOMContentLoaded', function(){ tag(); armReveal(); });
2221  else armReveal();
2222})();
2223</script>
vendor: 2 bytes, line 2223
2223
2224<script>
2225/* shared motion utility (#177) — the ONE IntersectionObserver helper every library element
2226   rides: cwOnView(selector, class[, once=true]). Reduced-motion contract: callers gate their
2227   ANIMATION in CSS via prefers-reduced-motion; the class-add itself always runs so the
2228   finished state is the no-motion state (content never hidden without JS or motion). */
2229(function(){
2230  window.cwOnView = window.cwOnView || function (sel, cls, once) {
2231    var els = document.querySelectorAll(sel);
2232    if (!els.length) return;
2233    if (!('IntersectionObserver' in window)) {
2234      els.forEach(function (el) { el.classList.add(cls); });
2235      return;
2236    }
2237    var io = new IntersectionObserver(function (entries) {
2238      entries.forEach(function (e) {
2239        if (e.isIntersecting) {
2240          e.target.classList.add(cls);
2241          if (once !== false) io.unobserve(e.target);
2242        }
2243      });
2244    }, {threshold: 0.15});
2245    els.forEach(function (el) { io.observe(el); });
2246  };
2247})();
2248</script>
vendor: 2 bytes, line 2248
2248
2249<script>
2250/* shared editor-preview re-mount utility (#536) — the ONE MutationObserver every DOM-injecting
2251   element rides: cwRemount(mountFn). The Maglev editor's live preview re-renders a section's DOM
2252   AFTER body scripts run, so any JS-injected children are wiped (the published static site never
2253   does this). cwRemount runs mountFn once now, then re-runs it whenever a burst of body mutations
2254   settles. Per-node idempotency stays the CALLER's job — its own mount function must no-op on a
2255   node it already mounted (e.g. a `host.dataset.cwXx` guard); a guard key shared across components
2256   would let two of them clobber each other's mounted-state tracking. One observer serves every
2257   caller, so the second DOM-injecting element costs nothing beyond its callback. */
2258(function(){
2259  if (window.cwRemount) return;
2260  var mounts = [], timer = null, watching = false;
2261  function remountAll() {
2262    timer = null;   // cleared BEFORE the callbacks, so a throwing caller can't wedge the debounce
2263    mounts.forEac
2263h(function (fn) {
2264      // one caller must never starve its siblings: surface the error asynchronously (it still
2265      // reaches the console with its stack) and carry on down the list
2266      try { fn(); } catch (err) { setTimeout(function () { throw err; }, 0); }
2267    });
2268  }
2269  window.cwRemount = function (mountFn) {
2270    mountFn();          // mount now — on the published static site this is the only pass needed
2271    mounts.push(mountFn);
2272    if (watching || !window.MutationObserver) return;
2273    watching = true;
2274    new MutationObserver(function () {
2275      if (timer) return;        // debounce the burst — one re-mount pass per 120ms of churn
2276      timer = setTimeout(remountAll, 120);
2277    }).observe(document.body, {childList: true, subtree: true});
2278  };
2279})();
2280</script>
2280
2281<!-- ===== corner mascot (peek) ===== -->
2282<script>
2283(function(){
2284  function init(){
2285    if (document.querySelector('.cw-peek')) return;
2286    var a = document.createElement('a');
2287    a.className = 'cw-peek';
2288    a.href = '/stores';
2289    a.setAttribute('aria-label', 'Order Saigon Sisters online for pickup or delivery');
2290    a.innerHTML = '<span class="cw-peek__tip">Order Online</span>';
2291    document.body.appendChild(a);
2292    function onScroll(){
2293      var vh = window.innerHeight || document.documentElement.clientHeight;
2294      if (window.scrollY > vh * 0.75) a.classList.add('cw-peek--in');
2295      else a.classList.remove('cw-peek--in');
2296    }
2297    window.addEventListener('scroll', onScroll, {passive:true});
2298    onScroll();
2299  }
2300  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);
2301  else init();
2302})();
2303</script>
2303
2304
2305
2306</body>
2307</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.