@runwell/shopify-toolkit 0.17.4 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/runwell-shopify +14 -2
- package/lib/list.js +133 -0
- package/lib/qa-bundles.js +117 -0
- package/lib/qa.js +147 -13
- package/modules/INDEX.md +65 -23
- package/modules/_shared/css-tokens/assets/runwell-tokens.css +24 -4
- package/modules/_shared/css-tokens/module.json +2 -2
- package/modules/_shared/css-typography/assets/runwell-typography.css +14 -6
- package/modules/_shared/css-typography/module.json +2 -2
- package/modules/bundle-builder/README.md +6 -1
- package/modules/bundle-builder/module.json +5 -1
- package/modules/care-coaching-medvi/README.md +46 -0
- package/modules/care-coaching-medvi/assets/runwell-care-coaching-medvi.css +241 -0
- package/modules/care-coaching-medvi/module.json +80 -0
- package/modules/care-coaching-medvi/sections/runwell-care-coaching-medvi.liquid +274 -0
- package/modules/care-coaching-medvi/snippets/runwell-care-coaching-medvi-circular-text.liquid +25 -0
- package/modules/cart-cross-sell/snippets/runwell-cart-xsell.liquid +16 -0
- package/modules/collection-block-medvi/README.md +50 -0
- package/modules/collection-block-medvi/assets/runwell-collection-block-medvi.css +242 -0
- package/modules/collection-block-medvi/module.json +83 -0
- package/modules/collection-block-medvi/sections/runwell-collection-block-medvi.liquid +355 -0
- package/modules/product-trio-medvi/README.md +35 -0
- package/modules/product-trio-medvi/assets/runwell-product-trio-medvi.css +119 -0
- package/modules/product-trio-medvi/module.json +48 -0
- package/modules/product-trio-medvi/sections/runwell-product-trio-medvi.liquid +188 -0
- package/modules/runwell-bundle-system/README.md +35 -0
- package/modules/runwell-bundle-system/admin-metafields.json +46 -0
- package/modules/runwell-bundle-system/assets/runwell-bundle-system.css +861 -0
- package/modules/runwell-bundle-system/assets/runwell-bundle-system.js +287 -0
- package/modules/runwell-bundle-system/module.json +126 -0
- package/modules/runwell-bundle-system/qa/mobile-checklist.md +105 -0
- package/modules/runwell-bundle-system/sections/runwell-bundle-cart-xsell.liquid +59 -0
- package/modules/runwell-bundle-system/sections/runwell-bundle-collection.liquid +121 -0
- package/modules/runwell-bundle-system/sections/runwell-bundle-home-stacks.liquid +77 -0
- package/modules/runwell-bundle-system/sections/runwell-bundle-pdp-banner.liquid +50 -0
- package/modules/runwell-bundle-system/sections/runwell-bundle-pdp-pairs-with.liquid +72 -0
- package/modules/runwell-bundle-system/sections/runwell-bundle-pdp.liquid +105 -0
- package/modules/runwell-bundle-system/settings.json +25 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-card.liquid +70 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-cross-supplier.liquid +18 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-data.liquid +67 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-fomo.liquid +32 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-free-gift.liquid +34 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-multi-product.liquid +86 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-pricing.liquid +30 -0
- package/modules/runwell-bundle-system/snippets/runwell-bundle-quantity-tiers.liquid +73 -0
- package/modules/testimonials-medvi/README.md +44 -0
- package/modules/testimonials-medvi/assets/runwell-testimonials-medvi.css +239 -0
- package/modules/testimonials-medvi/module.json +68 -0
- package/modules/testimonials-medvi/sections/runwell-testimonials-medvi.liquid +355 -0
- package/package.json +2 -2
package/modules/INDEX.md
CHANGED
|
@@ -3,46 +3,51 @@
|
|
|
3
3
|
Auto-generated by `scripts/generate-index.mjs`. Do not edit by hand.
|
|
4
4
|
Skills (shopify-storefront, shopify-cro, shopify-cli-ops, shopify-admin-browser) grep this file before writing custom Liquid.
|
|
5
5
|
|
|
6
|
-
Total modules:
|
|
6
|
+
Total modules: 39.
|
|
7
7
|
|
|
8
8
|
## By category
|
|
9
9
|
|
|
10
|
-
- **
|
|
10
|
+
- **branding**: care-coaching-medvi, product-trio-medvi
|
|
11
|
+
- **catalog**: bundle-builder, quantity-breaks, runwell-bundle-system, subscriptions
|
|
11
12
|
- **conversion**: cart-cross-sell, cart-freeship-progress, cart-usps, exit-intent, gift-with-purchase, post-purchase-upsell, quick-view, risk-reversal, shipping-bar, sticky-atc
|
|
12
13
|
- **customer**: loyalty-tiers, wishlist
|
|
13
14
|
- **pdp**: comparison-table, delivery-estimate, inventory-urgency, pdp-ingredients, pdp-journal-link, pdp-trust-checks, recently-viewed
|
|
14
|
-
- **social-proof**: press-bar, product-badges, reviews, scrolling-ticker, social-proof-banner, stats-bar, testimonials, trust-badges
|
|
15
|
-
- **storefront**: editorial-block, editorial-hero, faq, how-it-works
|
|
15
|
+
- **social-proof**: press-bar, product-badges, reviews, scrolling-ticker, social-proof-banner, stats-bar, testimonials, testimonials-medvi, trust-badges
|
|
16
|
+
- **storefront**: collection-block-medvi, editorial-block, editorial-hero, faq, how-it-works
|
|
16
17
|
|
|
17
18
|
## Modules
|
|
18
19
|
|
|
19
20
|
| Name | Category | Replaces | Files | Config keys | Variants | Admin steps |
|
|
20
21
|
|---|---|---|---|---|---|---|
|
|
21
|
-
| `bundle-builder` | catalog |
|
|
22
|
+
| `bundle-builder` | catalog | (native build) | sections:1 assets:1 | heading, sale_prefix, show_rating, rating_score, rating_count, show_trust_badges, trust_1, trust_2, trust_3, fomo_mode, fomo_cycle_days, fomo_stock_count | (none) | (none) |
|
|
23
|
+
| `care-coaching-medvi` | branding | (native build) | sections:1 snippets:1 assets:1 | section_eyebrow, headline_pre, headline_post, headline_accent_color, block_heading, circular_text, circular_text_position, footer_link_label, layout, bg_band | (none) | (none) |
|
|
22
24
|
| `cart-cross-sell` | conversion | Rebuy / OneClickUpsell pre-purchase upsell | snippets:1 | eyebrow, cta_label | (none) | (none) |
|
|
23
25
|
| `cart-freeship-progress` | conversion | Bold Free Shipping Manager and similar app features | snippets:1 | threshold_cents, away_text, unlocked_message | (none) | (none) |
|
|
24
26
|
| `cart-usps` | conversion | (native build) | snippets:1 | icon, usp_1, usp_2, usp_3 | (none) | (none) |
|
|
27
|
+
| `collection-block-medvi` | storefront | (native build) | sections:1 assets:1 | eyebrow, headline_pre, headline_post, headline_accent_color, show_product_card, product_card_bg, benefits_heading, subhead, cta_label, layout, bg_band | (none) | (none) |
|
|
25
28
|
| `comparison-table` | pdp | app-driven comparison widgets | | eyebrow, heading, lede, background_color, text_color | feature-columns, feature-rows | (none) |
|
|
26
29
|
| `delivery-estimate` | pdp | (native build) | snippets:1 | (none) | (none) | (none) |
|
|
27
|
-
| `editorial-block` | storefront | (native build) | sections:1 | eyebrow, heading, lede, background_color, text_color | (none) | (none) |
|
|
30
|
+
| `editorial-block` | storefront | (native build) | sections:1 assets:1 | eyebrow, heading, lede, background_color, text_color | (none) | (none) |
|
|
28
31
|
| `editorial-hero` | storefront | Dawn's image-banner / video-banner | | eyebrow, heading, subheading | video-bg, hero-with-card | (none) |
|
|
29
|
-
| `exit-intent` | conversion | Privy / Justuno display layer | sections:1 assets:
|
|
30
|
-
| `faq` | storefront | (native build) | sections:1 | eyebrow, heading, background_color, text_color | (none) | (none) |
|
|
32
|
+
| `exit-intent` | conversion | Privy / Justuno display layer | sections:1 assets:2 | eyebrow, heading, lede | (none) | (none) |
|
|
33
|
+
| `faq` | storefront | (native build) | sections:1 assets:1 | eyebrow, heading, background_color, text_color | (none) | (none) |
|
|
31
34
|
| `gift-with-purchase` | conversion | (native build) | snippets:1 assets:1 | threshold_cents, gift_handle, unlocked_message, locked_message_suffix | (none) | create-gift-product + create-gift-discount |
|
|
32
|
-
| `how-it-works` | storefront | (native build) | sections:1 | eyebrow, heading, lede, image, asset_filename, background_color, text_color, cta_label, cta_link | (none) | (none) |
|
|
35
|
+
| `how-it-works` | storefront | (native build) | sections:1 assets:1 | eyebrow, heading, lede, image, asset_filename, background_color, text_color, cta_label, cta_link | (none) | (none) |
|
|
33
36
|
| `inventory-urgency` | pdp | (native build) | snippets:1 | (none) | (none) | (none) |
|
|
34
|
-
| `loyalty-tiers` | customer | (native build) | sections:1 | tier_0_name, tier_1_name, tier_1_threshold, tier_1_perk_pct, tier_2_name, tier_2_threshold, tier_2_perk_pct | (none) | create-tier-tags-and-flows + create-tier-discounts + add-tier-card-to-account |
|
|
37
|
+
| `loyalty-tiers` | customer | (native build) | sections:1 assets:1 | tier_0_name, tier_1_name, tier_1_threshold, tier_1_perk_pct, tier_2_name, tier_2_threshold, tier_2_perk_pct | (none) | create-tier-tags-and-flows + create-tier-discounts + add-tier-card-to-account |
|
|
35
38
|
| `pdp-ingredients` | pdp | (native build) | sections:1 | eyebrow, heading, lede, background_color, text_color | (none) | (none) |
|
|
36
39
|
| `pdp-journal-link` | pdp | (native build) | sections:1 | eyebrow, article, background_color, text_color, fallback_title, fallback_body, fallback_link_label, fallback_link_url | (none) | (none) |
|
|
37
40
|
| `pdp-trust-checks` | pdp | (native build) | sections:1 | eyebrow, heading, lede, background_color, text_color, link_label, link_url | (none) | (none) |
|
|
38
41
|
| `post-purchase-upsell` | conversion | Reconvert / OneClickUpsell / AfterSell display layer | assets:2 | discount_code, discount_label, max_items, heading, eyebrow, lede, cross_category_logic | (none) | create-discount + paste-bootstrap |
|
|
39
42
|
| `press-bar` | social-proof | (native build) | sections:1 | eyebrow, background_color, text_color | (none) | (none) |
|
|
40
43
|
| `product-badges` | social-proof | (native build) | snippets:1 | label_best_seller, label_new, label_editor_pick | (none) | (none) |
|
|
44
|
+
| `product-trio-medvi` | branding | (native build) | sections:1 assets:1 | panel_heading, panel_bg, layout, bg_band | (none) | (none) |
|
|
41
45
|
| `quantity-breaks` | catalog | (native build) | snippets:1 | eyebrow, fineprint | (none) | define-breaks-metafield + set-product-breaks + create-discount-function |
|
|
42
46
|
| `quick-view` | conversion | (native build) | snippets:2 assets:1 | (none) | (none) | (none) |
|
|
43
|
-
| `recently-viewed` | pdp | (native build) | sections:1 assets:
|
|
44
|
-
| `reviews` | social-proof | (native build) | sections:1 | heading | (none) | (none) |
|
|
47
|
+
| `recently-viewed` | pdp | (native build) | sections:1 assets:2 | eyebrow, heading, background_color | (none) | (none) |
|
|
48
|
+
| `reviews` | social-proof | (native build) | sections:1 assets:1 | heading | (none) | (none) |
|
|
45
49
|
| `risk-reversal` | conversion | (native build) | sections:1 | icon, heading, body, link_label, link_url, background_color, text_color | (none) | (none) |
|
|
50
|
+
| `runwell-bundle-system` | catalog | the legacy bundle-builder module | sections:6 snippets:8 assets:2 | surface_1_collection_page_enabled, surface_2_pdp_pairs_with_enabled, surface_3_home_stacks_enabled, surface_4_cart_drawer_xsell_enabled, surface_5_pdp_banner_enabled, surface_6_collection_filter_enabled, surface_2_eyebrow, surface_2_heading, surface_3_eyebrow, surface_3_heading, surface_4_eyebrow, surface_4_cta, surface_5_copy_template, cross_supplier_disclosure, home_strip_position | (none) | install-shopify-bundles + define-bundle-metafields + create-bundle-index-metaobject + create-first-bundle-product + configure-quantity-tier-discount-function + configure-free-gift-discount + create-bundles-collection-page-template + add-home-stacks-section + add-pdp-pairs-with-section + add-pdp-banner-section + verify-cart-drawer-coordination + rebuild-bundle-index |
|
|
46
51
|
| `scrolling-ticker` | social-proof | announcement-bar / scrolling-text apps | sections:1 assets:1 | (none) | (none) | (none) |
|
|
47
52
|
| `shipping-bar` | conversion | (native build) | sections:1 | threshold_cents, message_below, message_qualified, message_default, background_color, text_color | (none) | (none) |
|
|
48
53
|
| `social-proof-banner` | social-proof | fixed-text social-proof apps | sections:1 assets:1 | (none) | (none) | (none) |
|
|
@@ -50,19 +55,26 @@ Total modules: 34.
|
|
|
50
55
|
| `sticky-atc` | conversion | Sticky Add To Cart Booster Pro and similar | sections:1 assets:1 | (none) | (none) | (none) |
|
|
51
56
|
| `subscriptions` | catalog | Recharge / Bold Subscriptions / Appstle for the storefront display layer; subscription management still uses Shopify's native customer account | snippets:1 | one_time_label, subscribe_label, fineprint | (none) | install-shopify-subscriptions + create-selling-plan-group + enable-customer-account-tab |
|
|
52
57
|
| `testimonials` | social-proof | app-driven review widgets at the social-proof display layer | | eyebrow, heading, background_color, text_color | grid-quotes, carousel-ugc | (none) |
|
|
58
|
+
| `testimonials-medvi` | social-proof | (native build) | sections:1 assets:1 | section_eyebrow, headline_pre, headline_post, headline_accent_color, lede, card_bg, star_color, bg_band | (none) | (none) |
|
|
53
59
|
| `trust-badges` | social-proof | (native build) | sections:1 | background_color, text_color | (none) | (none) |
|
|
54
|
-
| `wishlist` | customer | Wishlist Plus, Wishlist King, Globo Wishlist | sections:1 snippets:1 assets:
|
|
60
|
+
| `wishlist` | customer | Wishlist Plus, Wishlist King, Globo Wishlist | sections:1 snippets:1 assets:2 templates:1 | max_items | (none) | create-wishlist-page |
|
|
55
61
|
|
|
56
62
|
## Descriptions
|
|
57
63
|
|
|
58
64
|
### bundle-builder
|
|
59
65
|
|
|
60
66
|
- Category: catalog
|
|
61
|
-
-
|
|
62
|
-
- What: Build-your-own-bundle PDP section.
|
|
67
|
+
- What: DEPRECATED 2026-05-10 in favor of runwell-bundle-system (Mode A).
|
|
63
68
|
- Files: sections:1 assets:1
|
|
64
69
|
- Config: heading, sale_prefix, show_rating, rating_score, rating_count, show_trust_badges, trust_1, trust_2, trust_3, fomo_mode, fomo_cycle_days, fomo_stock_count
|
|
65
70
|
|
|
71
|
+
### care-coaching-medvi
|
|
72
|
+
|
|
73
|
+
- Category: branding
|
|
74
|
+
- What: Brand-promise section: portrait card + circular rotating text mark + 2-color headline + body + footer CTA line.
|
|
75
|
+
- Files: sections:1 snippets:1 assets:1
|
|
76
|
+
- Config: section_eyebrow, headline_pre, headline_post, headline_accent_color, block_heading, circular_text, circular_text_position, footer_link_label, layout, bg_band
|
|
77
|
+
|
|
66
78
|
### cart-cross-sell
|
|
67
79
|
|
|
68
80
|
- Category: conversion
|
|
@@ -86,6 +98,13 @@ Total modules: 34.
|
|
|
86
98
|
- Files: snippets:1
|
|
87
99
|
- Config: icon, usp_1, usp_2, usp_3
|
|
88
100
|
|
|
101
|
+
### collection-block-medvi
|
|
102
|
+
|
|
103
|
+
- Category: storefront
|
|
104
|
+
- What: Duplex category section: product hero card on one side; eyebrow + split-color headline + benefits checklist + 2 lifestyle photos + CTA on the other.
|
|
105
|
+
- Files: sections:1 assets:1
|
|
106
|
+
- Config: eyebrow, headline_pre, headline_post, headline_accent_color, show_product_card, product_card_bg, benefits_heading, subhead, cta_label, layout, bg_band
|
|
107
|
+
|
|
89
108
|
### comparison-table
|
|
90
109
|
|
|
91
110
|
- Category: pdp
|
|
@@ -104,7 +123,7 @@ Total modules: 34.
|
|
|
104
123
|
|
|
105
124
|
- Category: storefront
|
|
106
125
|
- What: Editorial introduction block: eyebrow + serif italic heading + lede + body.
|
|
107
|
-
- Files: sections:1
|
|
126
|
+
- Files: sections:1 assets:1
|
|
108
127
|
- Config: eyebrow, heading, lede, background_color, text_color
|
|
109
128
|
|
|
110
129
|
### editorial-hero
|
|
@@ -120,14 +139,14 @@ Total modules: 34.
|
|
|
120
139
|
- Category: conversion
|
|
121
140
|
- Replaces: Privy / Justuno display layer
|
|
122
141
|
- What: Exit-intent popup with email capture.
|
|
123
|
-
- Files: sections:1 assets:
|
|
142
|
+
- Files: sections:1 assets:2
|
|
124
143
|
- Config: eyebrow, heading, lede
|
|
125
144
|
|
|
126
145
|
### faq
|
|
127
146
|
|
|
128
147
|
- Category: storefront
|
|
129
148
|
- What: FAQ accordion.
|
|
130
|
-
- Files: sections:1
|
|
149
|
+
- Files: sections:1 assets:1
|
|
131
150
|
- Config: eyebrow, heading, background_color, text_color
|
|
132
151
|
|
|
133
152
|
### gift-with-purchase
|
|
@@ -142,7 +161,7 @@ Total modules: 34.
|
|
|
142
161
|
|
|
143
162
|
- Category: storefront
|
|
144
163
|
- What: How-it-works section: side-image + multi-step explainer.
|
|
145
|
-
- Files: sections:1
|
|
164
|
+
- Files: sections:1 assets:1
|
|
146
165
|
- Config: eyebrow, heading, lede, image, asset_filename, background_color, text_color, cta_label, cta_link
|
|
147
166
|
|
|
148
167
|
### inventory-urgency
|
|
@@ -155,7 +174,7 @@ Total modules: 34.
|
|
|
155
174
|
|
|
156
175
|
- Category: customer
|
|
157
176
|
- What: Lifetime-spend tier card on the customer account page.
|
|
158
|
-
- Files: sections:1
|
|
177
|
+
- Files: sections:1 assets:1
|
|
159
178
|
- Config: tier_0_name, tier_1_name, tier_1_threshold, tier_1_perk_pct, tier_2_name, tier_2_threshold, tier_2_perk_pct
|
|
160
179
|
- Admin steps: create-tier-tags-and-flows + create-tier-discounts + add-tier-card-to-account
|
|
161
180
|
|
|
@@ -203,6 +222,13 @@ Total modules: 34.
|
|
|
203
222
|
- Files: snippets:1
|
|
204
223
|
- Config: label_best_seller, label_new, label_editor_pick
|
|
205
224
|
|
|
225
|
+
### product-trio-medvi
|
|
226
|
+
|
|
227
|
+
- Category: branding
|
|
228
|
+
- What: 3-product showcase, fan layout with center product foregrounded, soft-corner copy panel beside.
|
|
229
|
+
- Files: sections:1 assets:1
|
|
230
|
+
- Config: panel_heading, panel_bg, layout, bg_band
|
|
231
|
+
|
|
206
232
|
### quantity-breaks
|
|
207
233
|
|
|
208
234
|
- Category: catalog
|
|
@@ -221,14 +247,14 @@ Total modules: 34.
|
|
|
221
247
|
|
|
222
248
|
- Category: pdp
|
|
223
249
|
- What: recently viewed.
|
|
224
|
-
- Files: sections:1 assets:
|
|
250
|
+
- Files: sections:1 assets:2
|
|
225
251
|
- Config: eyebrow, heading, background_color
|
|
226
252
|
|
|
227
253
|
### reviews
|
|
228
254
|
|
|
229
255
|
- Category: social-proof
|
|
230
256
|
- What: PDP reviews.
|
|
231
|
-
- Files: sections:1
|
|
257
|
+
- Files: sections:1 assets:1
|
|
232
258
|
- Config: heading
|
|
233
259
|
|
|
234
260
|
### risk-reversal
|
|
@@ -238,6 +264,15 @@ Total modules: 34.
|
|
|
238
264
|
- Files: sections:1
|
|
239
265
|
- Config: icon, heading, body, link_label, link_url, background_color, text_color
|
|
240
266
|
|
|
267
|
+
### runwell-bundle-system
|
|
268
|
+
|
|
269
|
+
- Category: catalog
|
|
270
|
+
- Replaces: the legacy bundle-builder module
|
|
271
|
+
- What: Configurable bundles engine.
|
|
272
|
+
- Files: sections:6 snippets:8 assets:2
|
|
273
|
+
- Config: surface_1_collection_page_enabled, surface_2_pdp_pairs_with_enabled, surface_3_home_stacks_enabled, surface_4_cart_drawer_xsell_enabled, surface_5_pdp_banner_enabled, surface_6_collection_filter_enabled, surface_2_eyebrow, surface_2_heading, surface_3_eyebrow, surface_3_heading, surface_4_eyebrow, surface_4_cta, surface_5_copy_template, cross_supplier_disclosure, home_strip_position
|
|
274
|
+
- Admin steps: install-shopify-bundles + define-bundle-metafields + create-bundle-index-metaobject + create-first-bundle-product + configure-quantity-tier-discount-function + configure-free-gift-discount + create-bundles-collection-page-template + add-home-stacks-section + add-pdp-pairs-with-section + add-pdp-banner-section + verify-cart-drawer-coordination + rebuild-bundle-index
|
|
275
|
+
|
|
241
276
|
### scrolling-ticker
|
|
242
277
|
|
|
243
278
|
- Category: social-proof
|
|
@@ -290,6 +325,13 @@ Total modules: 34.
|
|
|
290
325
|
- Config: eyebrow, heading, background_color, text_color
|
|
291
326
|
- Variants: grid-quotes, carousel-ugc
|
|
292
327
|
|
|
328
|
+
### testimonials-medvi
|
|
329
|
+
|
|
330
|
+
- Category: social-proof
|
|
331
|
+
- What: Two horizontal marquee rows of testimonial cards.
|
|
332
|
+
- Files: sections:1 assets:1
|
|
333
|
+
- Config: section_eyebrow, headline_pre, headline_post, headline_accent_color, lede, card_bg, star_color, bg_band
|
|
334
|
+
|
|
293
335
|
### trust-badges
|
|
294
336
|
|
|
295
337
|
- Category: social-proof
|
|
@@ -302,7 +344,7 @@ Total modules: 34.
|
|
|
302
344
|
- Category: customer
|
|
303
345
|
- Replaces: Wishlist Plus, Wishlist King, Globo Wishlist
|
|
304
346
|
- What: Native wishlist using localStorage.
|
|
305
|
-
- Files: sections:1 snippets:1 assets:
|
|
347
|
+
- Files: sections:1 snippets:1 assets:2 templates:1
|
|
306
348
|
- Config: max_items
|
|
307
349
|
- Admin steps: create-wishlist-page
|
|
308
350
|
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
/* Runwell Shopify Toolkit: brand tokens.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/* Runwell Shopify Toolkit: brand and design tokens.
|
|
2
|
+
|
|
3
|
+
Section 1 (brand): generated from runwell.config.json brand vars.
|
|
4
|
+
Re-run runwell-shopify sync to update.
|
|
5
|
+
|
|
6
|
+
Section 2 (design system): toolkit-wide constants. Tenants override
|
|
7
|
+
in their own tenant-brand.css if they need a different scale.
|
|
5
8
|
|
|
6
9
|
--runwell-tertiary is the canonical brand-tertiary token; the
|
|
7
10
|
--runwell-rain-forrest alias is preserved for one minor cycle of
|
|
@@ -10,6 +13,7 @@
|
|
|
10
13
|
brand.tertiary in runwell.config.json.
|
|
11
14
|
*/
|
|
12
15
|
:root {
|
|
16
|
+
/* Brand colors (interpolated from runwell.config.json) */
|
|
13
17
|
--runwell-primary: {{brand.primary}};
|
|
14
18
|
--runwell-accent: {{brand.accent}};
|
|
15
19
|
--runwell-cream: {{brand.cream}};
|
|
@@ -18,4 +22,20 @@
|
|
|
18
22
|
--runwell-blue: {{brand.blue}};
|
|
19
23
|
--runwell-tertiary: {{brand.tertiary}};
|
|
20
24
|
--runwell-rain-forrest: {{brand.tertiary}};
|
|
25
|
+
|
|
26
|
+
/* Design system: semantic surfaces.
|
|
27
|
+
Components reference these so the theme controls the default look.
|
|
28
|
+
Tenants override in tenant-brand.css to retarget any brand color. */
|
|
29
|
+
--runwell-surface-card: var(--runwell-oat);
|
|
30
|
+
--runwell-surface-card-alt: color-mix(in srgb, var(--runwell-celadon) 18%, white);
|
|
31
|
+
|
|
32
|
+
/* Design system: corner radii */
|
|
33
|
+
--runwell-radius-sm: 4px;
|
|
34
|
+
--runwell-radius-md: 12px;
|
|
35
|
+
--runwell-radius-lg: 20px;
|
|
36
|
+
--runwell-radius-xl: 32px;
|
|
37
|
+
|
|
38
|
+
/* Design system: elevation */
|
|
39
|
+
--runwell-shadow-card: 0 2px 8px rgba(0, 0, 0, 0.04);
|
|
40
|
+
--runwell-shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.06);
|
|
21
41
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "_shared/css-tokens",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"category": "foundation",
|
|
5
|
-
"description": "CSS custom properties published as :root vars
|
|
5
|
+
"description": "CSS custom properties published as :root vars. Brand colors interpolated from runwell.config.json. Design system tokens (radii, shadows) hardcoded as toolkit-wide constants. Always synced.",
|
|
6
6
|
"always_enabled": true,
|
|
7
7
|
"files": {
|
|
8
8
|
"assets": ["assets/runwell-tokens.css"]
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
sliders in layout/theme.liquid) so every toolkit module renders type
|
|
5
5
|
that scales uniformly when a merchant adjusts the sliders.
|
|
6
6
|
|
|
7
|
+
Sizes are Dawn-aligned. Dawn sets html font-size to
|
|
8
|
+
calc(var(--font-body-scale) * 62.5%), so 1rem equals 10px when body
|
|
9
|
+
scale is 1.0. Our tokens land in the readability range Dawn uses for
|
|
10
|
+
its own headings and captions (1.2rem to 1.8rem).
|
|
11
|
+
|
|
7
12
|
Modules reference these via var(--runwell-X-size). Tenant CSS may also
|
|
8
13
|
reference them directly OR compose its own scale-aware sizes using
|
|
9
14
|
calc(var(--font-body-scale) * Xrem) and calc(var(--font-heading-scale) * Xrem).
|
|
@@ -11,13 +16,16 @@
|
|
|
11
16
|
Do not hand-edit in client themes; re-run runwell-shopify sync to update.
|
|
12
17
|
*/
|
|
13
18
|
:root {
|
|
14
|
-
/* Body-scale derived. Eyebrows, captions,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
--runwell-
|
|
19
|
+
/* Body-scale derived. Eyebrows, captions, meta, body, ledes, CTAs.
|
|
20
|
+
Dawn-aligned: smallest readable text at 1.2rem (12px), Dawn body at
|
|
21
|
+
1.5rem (15px), our body slightly larger at 1.6rem (16px) for
|
|
22
|
+
component readability inside cards and sections. */
|
|
23
|
+
--runwell-eyebrow-size: calc(var(--font-body-scale) * 1.2rem);
|
|
24
|
+
--runwell-caption-size: calc(var(--font-body-scale) * 1.3rem);
|
|
25
|
+
--runwell-meta-size: calc(var(--font-body-scale) * 1.4rem);
|
|
26
|
+
--runwell-cta-size: calc(var(--font-body-scale) * 1.5rem);
|
|
19
27
|
--runwell-body-size: calc(var(--font-body-scale) * 1.6rem);
|
|
20
|
-
--runwell-lede-size: calc(var(--font-body-scale) * 1.
|
|
28
|
+
--runwell-lede-size: calc(var(--font-body-scale) * 1.8rem);
|
|
21
29
|
|
|
22
30
|
/* Heading-scale derived. Section titles, big numbers, hero/aura titles. */
|
|
23
31
|
--runwell-h4-size: calc(var(--font-heading-scale) * 1.7rem);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "_shared/css-typography",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"category": "foundation",
|
|
5
|
-
"description": "Typography tokens published as :root vars. Every Runwell module references these instead of hardcoding rem values, so type scale responds to Dawn's body_scale and heading_scale Theme Editor sliders. Always synced.",
|
|
5
|
+
"description": "Typography tokens published as :root vars. Every Runwell module references these instead of hardcoding rem values, so type scale responds to Dawn's body_scale and heading_scale Theme Editor sliders. Sizes are Dawn-aligned (eyebrow 1.2rem, body 1.6rem, etc.). Always synced.",
|
|
6
6
|
"always_enabled": true,
|
|
7
7
|
"files": {
|
|
8
8
|
"assets": ["assets/runwell-typography.css"]
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
# bundle-builder
|
|
1
|
+
# bundle-builder (deprecated)
|
|
2
|
+
|
|
3
|
+
> **Deprecated since toolkit 0.21.0.** Use `runwell-bundle-system` (Mode A: quantity tiers) instead.
|
|
4
|
+
> This module continues to function for tenants pinned to it; removal target version is 0.22.0.
|
|
5
|
+
>
|
|
6
|
+
> **Migration path:** set `modules.bundle-builder.enabled` to false in `runwell.config.json`, enable `runwell-bundle-system`, and set `bundle_mode: "quantity_tiers"` on the bundle product via the `runwell.bundle_mode` metafield. See `_clients/capital-v/lushi/specs/bundle-system/phase-plan.md` v1.1 for the full Lusha cutover plan.
|
|
2
7
|
|
|
3
8
|
PDP section for build-your-own-bundle merchandising. Slideshow gallery + thumbnail nav + radio bundle picker (1x / 2x / 3x with savings, free-ship and free-gift badges) + sticky ATC + FOMO countdown + scarcity. Migrated from Lusha's bundle-selector.
|
|
4
9
|
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
"name": "bundle-builder",
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"category": "catalog",
|
|
5
|
-
"
|
|
5
|
+
"deprecated": true,
|
|
6
|
+
"deprecated_in_favor_of": "runwell-bundle-system",
|
|
7
|
+
"deprecated_since": "0.21.0",
|
|
8
|
+
"removal_target_version": "0.22.0",
|
|
9
|
+
"description": "DEPRECATED 2026-05-10 in favor of runwell-bundle-system (Mode A). Build-your-own-bundle PDP section. Slideshow gallery + thumbnail nav + radio bundle picker (1x / 2x / 3x with savings, free-ship and free-gift badges) + sticky ATC + FOMO countdown + scarcity. Lusha migration to runwell-bundle-system Mode A happens in v1.1; module removed at toolkit 0.22.0.",
|
|
6
10
|
"files": {
|
|
7
11
|
"sections": ["sections/runwell-bundle-builder.liquid"],
|
|
8
12
|
"assets": ["assets/runwell-bundle-builder.css"]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# care-coaching-medvi
|
|
2
|
+
|
|
3
|
+
Brand-promise section. Centered eyebrow + 2-color headline at top; large portrait card on one side; block (heading + body) on the other; circular rotating text mark anchored to a corner of the section; footer eyebrow + link below.
|
|
4
|
+
|
|
5
|
+
Category: `branding`
|
|
6
|
+
|
|
7
|
+
The distinguishing visual is the **circular rotating text mark** ("WITH YOU FROM START TO SUCCESS" in medvi's reference), rendered as inline SVG `textPath` along a closed circle, slowly rotating via CSS animation. Respects `prefers-reduced-motion`.
|
|
8
|
+
|
|
9
|
+
## Files
|
|
10
|
+
|
|
11
|
+
- `sections/runwell-care-coaching-medvi.liquid`
|
|
12
|
+
- `snippets/runwell-care-coaching-medvi-circular-text.liquid` (SVG textPath generator, isolated for reuse)
|
|
13
|
+
- `assets/runwell-care-coaching-medvi.css`
|
|
14
|
+
|
|
15
|
+
## Layout
|
|
16
|
+
|
|
17
|
+
- Section eyebrow (centered, tracked uppercase) + 2-color split headline span across the top, full width.
|
|
18
|
+
- Inner grid: portrait card on one side (4:5), block (eyebrow + heading + body) on the other.
|
|
19
|
+
- Circular text mark anchored to a corner of the section (`top-right` default, `top-left` / `bottom-right` / `bottom-left` available).
|
|
20
|
+
- Footer line: small eyebrow plus link, centered below the inner.
|
|
21
|
+
|
|
22
|
+
## Tokens consumed
|
|
23
|
+
|
|
24
|
+
Brand: `--runwell-primary`, `--runwell-tertiary`, `--runwell-oat`, `--runwell-blue`. Design system: `--runwell-radius-xl`. Typography: `--runwell-eyebrow-size`, `--runwell-h2-size`, `--runwell-h3-size`, `--runwell-body-size`, `--runwell-meta-size`.
|
|
25
|
+
|
|
26
|
+
## Lineage
|
|
27
|
+
|
|
28
|
+
Extracted from `https://home.medvi.org/` on 2026-05-06. Framer label: `Care Coaching`. Scrape path: `_clients/capital-v/lushi/research/medvi-reference/site-scrape/`.
|
|
29
|
+
|
|
30
|
+
The medvi reference shot:
|
|
31
|
+
- Eyebrow: `BETTER IS POSSIBLE, AND WE BUILT FOR IT.`
|
|
32
|
+
- Headline: `Modern healthcare,` (black) `built around you` (green accent), centered.
|
|
33
|
+
- Portrait: woman in beige sweater on warm-grey background.
|
|
34
|
+
- Circular mark: `WITH YOU FROM START TO SUCCESS` in soft tan, top-right of inner card.
|
|
35
|
+
|
|
36
|
+
## Tenant overrides
|
|
37
|
+
|
|
38
|
+
- `runwell.config.json` brand block: rewires the global tokens.
|
|
39
|
+
- Per-instance Theme Editor: section eyebrow, headline split, accent color, portrait + card tint, block heading/eyebrow/body, circular text content + color + corner position, footer eyebrow + link, layout (portrait-left vs portrait-right), bg band.
|
|
40
|
+
|
|
41
|
+
## Notes
|
|
42
|
+
|
|
43
|
+
- Circular mark animation: 30s per full turn, linear, infinite. Stops on `prefers-reduced-motion: reduce`.
|
|
44
|
+
- The SVG `textPath` snippet uses `id_suffix: section.id` to avoid id collisions when the section is dropped multiple times on the same page.
|
|
45
|
+
- Mobile: stacks portrait above block. Circular mark scales smaller and pulls in to corners.
|
|
46
|
+
- Block has its own oat-tinted background by default to lift it visually from the white section bg, mirroring medvi's reference. Override via `portrait_card_bg`-style additions if a different background is needed.
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/* Runwell care-coaching-medvi.
|
|
2
|
+
|
|
3
|
+
Brand-promise section. Centered eyebrow + 2-color headline at top;
|
|
4
|
+
large portrait card on one side; block (heading + body) on the
|
|
5
|
+
other; circular rotating text mark in a corner; footer line below.
|
|
6
|
+
|
|
7
|
+
Tokens: --runwell-tertiary, --runwell-oat, --runwell-radius-xl.
|
|
8
|
+
Typography: --runwell-eyebrow-size, --runwell-h2-size, --runwell-h3-size,
|
|
9
|
+
--runwell-body-size, --runwell-meta-size.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
.runwell-care-coaching-medvi {
|
|
13
|
+
padding: clamp(3rem, 8vw, 7rem) clamp(1.5rem, 4vw, 4rem);
|
|
14
|
+
font-family: var(--font-body-family, inherit);
|
|
15
|
+
color: var(--runwell-tertiary, #0B3D38);
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.runwell-care-coaching-medvi--bg-white {
|
|
20
|
+
background: #ffffff;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.runwell-care-coaching-medvi--bg-oat {
|
|
24
|
+
background: var(--runwell-oat, #F5F0EE);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.runwell-care-coaching-medvi--bg-celadon-tint {
|
|
28
|
+
background: color-mix(in srgb, var(--runwell-celadon, #ADDDBD) 18%, white);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.runwell-care-coaching-medvi__section-eyebrow {
|
|
32
|
+
font-size: var(--runwell-eyebrow-size, 0.78rem);
|
|
33
|
+
letter-spacing: 0.16em;
|
|
34
|
+
text-transform: uppercase;
|
|
35
|
+
font-weight: 600;
|
|
36
|
+
margin: 0 0 1rem;
|
|
37
|
+
text-align: center;
|
|
38
|
+
opacity: 0.85;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.runwell-care-coaching-medvi__headline {
|
|
42
|
+
font-family: var(--font-heading-family, inherit);
|
|
43
|
+
font-size: var(--runwell-h2-size, clamp(3rem, 5vw, 4.8rem));
|
|
44
|
+
font-weight: 700;
|
|
45
|
+
line-height: 1.1;
|
|
46
|
+
margin: 0 0 clamp(2rem, 5vw, 4rem);
|
|
47
|
+
text-align: center;
|
|
48
|
+
letter-spacing: -0.01em;
|
|
49
|
+
max-width: 18ch;
|
|
50
|
+
margin-left: auto;
|
|
51
|
+
margin-right: auto;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.runwell-care-coaching-medvi__headline-pre,
|
|
55
|
+
.runwell-care-coaching-medvi__headline-post {
|
|
56
|
+
display: block;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.runwell-care-coaching-medvi__inner {
|
|
60
|
+
position: relative;
|
|
61
|
+
display: grid;
|
|
62
|
+
grid-template-columns: 1fr;
|
|
63
|
+
gap: clamp(1.5rem, 3vw, 2.5rem);
|
|
64
|
+
max-width: 1200px;
|
|
65
|
+
margin: 0 auto;
|
|
66
|
+
align-items: stretch;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@media (min-width: 768px) {
|
|
70
|
+
.runwell-care-coaching-medvi__inner {
|
|
71
|
+
grid-template-columns: 1fr 1fr;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.runwell-care-coaching-medvi--portrait-right .runwell-care-coaching-medvi__inner {
|
|
75
|
+
direction: rtl;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.runwell-care-coaching-medvi--portrait-right .runwell-care-coaching-medvi__inner > * {
|
|
79
|
+
direction: ltr;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.runwell-care-coaching-medvi__portrait-card {
|
|
84
|
+
border-radius: var(--runwell-radius-xl, 32px);
|
|
85
|
+
overflow: hidden;
|
|
86
|
+
aspect-ratio: 4 / 5;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.runwell-care-coaching-medvi__portrait-card img {
|
|
90
|
+
display: block;
|
|
91
|
+
width: 100%;
|
|
92
|
+
height: 100%;
|
|
93
|
+
object-fit: cover;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.runwell-care-coaching-medvi__block {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-direction: column;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
gap: clamp(0.75rem, 2vw, 1.25rem);
|
|
101
|
+
padding: clamp(1.5rem, 4vw, 3rem) clamp(0.5rem, 2vw, 2rem);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.runwell-care-coaching-medvi__block--bg-transparent {
|
|
105
|
+
background: transparent;
|
|
106
|
+
padding-left: clamp(1rem, 2vw, 2rem);
|
|
107
|
+
padding-right: clamp(1rem, 2vw, 2rem);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Theme-driven default: tenant's design system decides the surface color
|
|
111
|
+
via --runwell-surface-card. Falls back to oat if the token is missing. */
|
|
112
|
+
.runwell-care-coaching-medvi__block--bg-card {
|
|
113
|
+
background: var(--runwell-surface-card, var(--runwell-oat, #F5F0EE));
|
|
114
|
+
border-radius: var(--runwell-radius-xl, 32px);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Explicit named overrides for tenants who want a specific brand color
|
|
118
|
+
regardless of the theme's surface-card token. */
|
|
119
|
+
.runwell-care-coaching-medvi__block--bg-oat-card {
|
|
120
|
+
background: var(--runwell-oat, #F5F0EE);
|
|
121
|
+
border-radius: var(--runwell-radius-xl, 32px);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.runwell-care-coaching-medvi__block--bg-celadon-card {
|
|
125
|
+
background: color-mix(in srgb, var(--runwell-celadon, #ADDDBD) 18%, white);
|
|
126
|
+
border-radius: var(--runwell-radius-xl, 32px);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.runwell-care-coaching-medvi__block-eyebrow {
|
|
130
|
+
font-size: var(--runwell-eyebrow-size, 0.78rem);
|
|
131
|
+
letter-spacing: 0.12em;
|
|
132
|
+
text-transform: uppercase;
|
|
133
|
+
font-weight: 600;
|
|
134
|
+
margin: 0;
|
|
135
|
+
opacity: 0.7;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.runwell-care-coaching-medvi__block-heading {
|
|
139
|
+
font-family: var(--font-heading-family, inherit);
|
|
140
|
+
font-size: var(--runwell-h3-size, clamp(2rem, 3vw, 2.8rem));
|
|
141
|
+
font-weight: 700;
|
|
142
|
+
line-height: 1.2;
|
|
143
|
+
margin: 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.runwell-care-coaching-medvi__block-body {
|
|
147
|
+
font-size: var(--runwell-body-size, 1.6rem);
|
|
148
|
+
line-height: 1.6;
|
|
149
|
+
opacity: 0.85;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.runwell-care-coaching-medvi__block-body p {
|
|
153
|
+
margin: 0 0 0.5em;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.runwell-care-coaching-medvi__block-body p:last-child {
|
|
157
|
+
margin-bottom: 0;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/* ----- Circular rotating text mark ----- */
|
|
161
|
+
|
|
162
|
+
.runwell-care-coaching-medvi__circular {
|
|
163
|
+
position: absolute;
|
|
164
|
+
width: clamp(110px, 14vw, 200px);
|
|
165
|
+
height: clamp(110px, 14vw, 200px);
|
|
166
|
+
z-index: 3;
|
|
167
|
+
pointer-events: none;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.runwell-care-coaching-medvi__circular--top-right { top: -8%; right: -4%; }
|
|
171
|
+
.runwell-care-coaching-medvi__circular--top-left { top: -8%; left: -4%; }
|
|
172
|
+
.runwell-care-coaching-medvi__circular--bottom-right { bottom: -8%; right: -4%; }
|
|
173
|
+
.runwell-care-coaching-medvi__circular--bottom-left { bottom: -8%; left: -4%; }
|
|
174
|
+
|
|
175
|
+
@media (max-width: 767px) {
|
|
176
|
+
.runwell-care-coaching-medvi__circular {
|
|
177
|
+
width: clamp(80px, 22vw, 130px);
|
|
178
|
+
height: clamp(80px, 22vw, 130px);
|
|
179
|
+
}
|
|
180
|
+
.runwell-care-coaching-medvi__circular--top-right,
|
|
181
|
+
.runwell-care-coaching-medvi__circular--bottom-right { right: 0; }
|
|
182
|
+
.runwell-care-coaching-medvi__circular--top-left,
|
|
183
|
+
.runwell-care-coaching-medvi__circular--bottom-left { left: 0; }
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
.runwell-care-coaching-medvi__circular-svg {
|
|
187
|
+
width: 100%;
|
|
188
|
+
height: 100%;
|
|
189
|
+
animation: runwell-care-coaching-medvi__rotate 30s linear infinite;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.runwell-care-coaching-medvi__circular-text {
|
|
193
|
+
font-size: 18px;
|
|
194
|
+
font-weight: 600;
|
|
195
|
+
letter-spacing: 0.16em;
|
|
196
|
+
font-family: var(--font-body-family, inherit);
|
|
197
|
+
text-transform: uppercase;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@keyframes runwell-care-coaching-medvi__rotate {
|
|
201
|
+
from { transform: rotate(0deg); }
|
|
202
|
+
to { transform: rotate(360deg); }
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@media (prefers-reduced-motion: reduce) {
|
|
206
|
+
.runwell-care-coaching-medvi__circular-svg {
|
|
207
|
+
animation: none;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* ----- Footer ----- */
|
|
212
|
+
|
|
213
|
+
.runwell-care-coaching-medvi__footer {
|
|
214
|
+
margin-top: clamp(2rem, 4vw, 3rem);
|
|
215
|
+
text-align: center;
|
|
216
|
+
display: flex;
|
|
217
|
+
flex-direction: column;
|
|
218
|
+
gap: 0.5rem;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.runwell-care-coaching-medvi__footer-eyebrow {
|
|
222
|
+
font-size: var(--runwell-meta-size, 0.92rem);
|
|
223
|
+
font-weight: 600;
|
|
224
|
+
margin: 0;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.runwell-care-coaching-medvi__footer-link {
|
|
228
|
+
display: inline-block;
|
|
229
|
+
font-size: var(--runwell-meta-size, 0.92rem);
|
|
230
|
+
font-weight: 600;
|
|
231
|
+
color: var(--runwell-primary, #0B3D38);
|
|
232
|
+
text-decoration: underline;
|
|
233
|
+
text-underline-offset: 4px;
|
|
234
|
+
text-decoration-color: var(--runwell-blue, #8AD3CC);
|
|
235
|
+
text-decoration-thickness: 2px;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.runwell-care-coaching-medvi__footer-link:hover,
|
|
239
|
+
.runwell-care-coaching-medvi__footer-link:focus {
|
|
240
|
+
text-decoration-color: var(--runwell-primary, #0B3D38);
|
|
241
|
+
}
|