@snacky/ui 0.6.1 → 0.6.2

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/CHANGELOG.md CHANGED
@@ -91,3 +91,16 @@ unverified - see the README's Verification status.
91
91
  not: tsup extracts the CSS to a standalone `dist/index.css` and never
92
92
  re-injects it into the JS entry, so anyone following the snippet verbatim got
93
93
  unstyled components. The correct import is `@snacky/ui/styles.css`.
94
+ - **PointBalanceBanner stretched to fill its container (0.6.2).** Figma's frame
95
+ hugs its content at 312px, it was never meant to fill full-bleed, but the
96
+ component set `width: 100%` plus `justify-content: space-between` anyway.
97
+ Inside any container wider than 312px (which is most of them), the Points and
98
+ Balance groups spread apart across the extra width instead of staying grouped
99
+ on the left like Figma. Switched to `display: inline-flex` (hugs by default)
100
+ with an explicit `gap`, matching the value already recorded in
101
+ `components.json`'s spec for this variant.
102
+ - **AlertBanner clipped a long message (0.6.2).** The row had a fixed
103
+ `height: 40px`, Figma's single-line sample height, not a cap. A message long
104
+ enough to wrap onto a second line got clipped instead of growing the banner.
105
+ Changed to `min-height: 40px` and let the message text take `flex: 1` so it
106
+ shrinks and wraps within the row instead of overflowing sideways.
package/dist/index.css CHANGED
@@ -1054,10 +1054,8 @@
1054
1054
  object-fit: cover;
1055
1055
  }
1056
1056
  .snacky-banner-point-balance {
1057
- display: flex;
1057
+ display: inline-flex;
1058
1058
  align-items: center;
1059
- justify-content: space-between;
1060
- width: 100%;
1061
1059
  padding: var(--spacing-8) var(--spacing-16);
1062
1060
  gap: var(--spacing-8);
1063
1061
  background: var(--bg-surface-highlight);
@@ -1104,7 +1102,7 @@
1104
1102
  align-items: center;
1105
1103
  justify-content: space-between;
1106
1104
  width: 100%;
1107
- height: 40px;
1105
+ min-height: 40px;
1108
1106
  padding: var(--spacing-8) var(--spacing-24);
1109
1107
  gap: var(--spacing-4);
1110
1108
  background: var(--bg-surface-accent);
@@ -1112,6 +1110,8 @@
1112
1110
  }
1113
1111
  .snacky-banner-alert__message {
1114
1112
  margin: 0;
1113
+ flex: 1 1 auto;
1114
+ min-width: 0;
1115
1115
  font-family: var(--font-body-regular-family);
1116
1116
  font-size: var(--font-body-regular-size);
1117
1117
  color: var(--text-inverse);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/tokens.css","../src/theme/base.css","../src/components/Button/Button.css","../src/components/IconButton/IconButton.css","../src/components/IconButton/UploadButton.css","../src/components/Input/TextField.css","../src/components/Input/SearchField.css","../src/components/Input/OtpField.css","../src/components/Input/CopyField.css","../src/components/Input/ChatInput.css","../src/components/Input/AddressResult.css","../src/components/Chips/Chips.css","../src/components/RadioButton/RadioButton.css","../src/components/Checkbox/Checkbox.css","../src/components/Toggle/Toggle.css","../src/components/Navbar/Navbar.css","../src/components/Tab/Tab.css","../src/components/Header/Header.css","../src/components/Banner/Banner.css","../src/components/Badge/Badge.css","../src/components/Callout/Callout.css","../src/components/List/List.css","../src/components/Accordion/Accordion.css","../src/components/Modal/BottomSheet.css","../src/components/Section/Section.css","../src/components/Stepper/Stepper.css","../src/components/Calendar/Calendar.css","../src/components/Avatar/Avatar.css","../src/components/Illustration/Illustration.css","../src/components/ProductImage/ProductImage.css","../src/components/ProductCard/ProductCard.css"],"sourcesContent":["/* Generated from tokens.json by scripts/generate-react-tokens.js - do not hand-edit. */\n:root {\n --color-primary-50: #fef8eb;\n --color-primary-100: #fde9bf;\n --color-primary-200: #fcdea1;\n --color-primary-300: #facf76;\n --color-primary-400: #f9c55b;\n --color-primary-500: #f8b732;\n --color-primary-600: #e2a72e;\n --color-primary-700: #b08224;\n --color-primary-800: #88651c;\n --color-primary-900: #684d15;\n --color-neutral-0: #ffffff;\n --color-neutral-10: #fdfdfd;\n --color-neutral-20: #f7f7f7;\n --color-neutral-50: #f3f3f3;\n --color-neutral-100: #e0e0e0;\n --color-neutral-200: #cccccc;\n --color-neutral-400: #a3a3a3;\n --color-neutral-500: #7a7a7a;\n --color-neutral-600: #6a6a6a;\n --color-neutral-700: #525252;\n --color-neutral-800: #4b4b4b;\n --color-neutral-900: #434343;\n --color-neutral-950: #333333;\n --color-red-50: #fdeeee;\n --color-red-100: #f9cbcb;\n --color-red-200: #f6b2b2;\n --color-red-300: #f28e8e;\n --color-red-400: #ef7979;\n --color-red-500: #eb5757;\n --color-red-600: #d64f4f;\n --color-red-700: #a73e3e;\n --color-red-800: #813030;\n --color-red-900: #632525;\n --bg-app: #f7f7f7;\n --bg-surface: #ffffff;\n --bg-surface-primary: #f8b732;\n --bg-surface-accent: #eb5757;\n --bg-surface-variant: #f3f3f3;\n --bg-surface-field: #ffffff;\n --bg-surface-highlight: #fef8eb;\n --bg-action-primary: #f8b732;\n --bg-action-primary-hover: #e2a72e;\n --bg-action-primary-pressed: #b08224;\n --bg-action-secondary: #ffffff;\n --bg-action-secondary-hover: #f3f3f3;\n --bg-action-secondary-pressed: #e0e0e0;\n --bg-action-disabled: #cccccc;\n --bg-action-primary-danger: #eb5757;\n --bg-action-primary-danger-hovered: #d64f4f;\n --bg-action-primary-danger-pressed: #a73e3e;\n --bg-overlay-dim: rgba(51,51,51,0.8);\n --border-main: #cccccc;\n --border-highlight: #fcdea1;\n --border-input-default: #cccccc;\n --border-input-active: #f8b732;\n --border-input-error: #eb5757;\n --border-action-secondary: #cccccc;\n --border-action-secondary-pressed: #a3a3a3;\n --border-action-danger: #eb5757;\n --border-action-disabled: #cccccc;\n --text-primary: #333333;\n --text-secondary: #7a7a7a;\n --text-placeholder: #7a7a7a;\n --text-disabled: #a3a3a3;\n --text-link: #88651c;\n --text-error: #a73e3e;\n --text-inverse: #ffffff;\n --text-on-action-primary: #333333;\n --text-on-action-secondary: #333333;\n --text-on-action-tertiary: #b08224;\n --text-on-action-tertiary-hovered: #88651c;\n --text-on-action-tertiary-pressed: #684d15;\n --text-action-danger: #d64f4f;\n --text-action-danger-hovered: #a73e3e;\n --text-action-danger-pressed: #813030;\n --text-action-disabled: #a3a3a3;\n --icon-primary: #333333;\n --icon-secondary: #525252;\n --icon-brand: #f8b732;\n --icon-disabled: #a3a3a3;\n --icon-active: #eb5757;\n --icon-on-accent: #ffffff;\n --spacing-2: 2px;\n --spacing-4: 4px;\n --spacing-8: 8px;\n --spacing-12: 12px;\n --spacing-16: 16px;\n --spacing-24: 24px;\n --spacing-32: 32px;\n --gap-icon-label: 4px;\n --gap-cell: 4px;\n --gap-text-icon: 8px;\n --gap-text-underline: 16px;\n --gap-layout-section-list: 8px;\n --gap-layout-block: 16px;\n --gap-layout-stack: 24px;\n --gap-layout-page: 32px;\n --margin-screen: 16px;\n --radius-4: 4px;\n --radius-6: 6px;\n --radius-8: 8px;\n --radius-10: 10px;\n --radius-20: 20px;\n --radius-100: 100px;\n --radius-999: 999px;\n --radius-field: 4px;\n --radius-tag: 6px;\n --radius-bubble: 8px;\n --radius-card: 10px;\n --radius-sheet-top: 20px;\n --radius-full: 100px;\n --size-icon-sm: 16px;\n --size-icon-md: 20px;\n --size-icon-lg: 24px;\n --size-avatar-sm: 32px;\n --size-avatar-md: 56px;\n --size-avatar-lg: 72px;\n --shadow-md: 0 4px 8px rgba(0,0,0,0.08);\n --shadow-lg: 0 10px 30px rgba(0,0,0,0.1);\n --shadow-top: 0 -4px 10px rgba(0,0,0,0.08);\n --font-h1-bold-family: 'Poppins', sans-serif;\n --font-h1-bold-size: 32px;\n --font-h1-bold-weight: 700;\n --font-h1-bold-line-height: 36px;\n --font-h1-bold-letter-spacing: 0.01em;\n --font-h2-bold-family: 'Poppins', sans-serif;\n --font-h2-bold-size: 20px;\n --font-h2-bold-weight: 700;\n --font-h2-bold-line-height: 36px;\n --font-h2-bold-letter-spacing: 0.01em;\n --font-h3-bold-family: 'Poppins', sans-serif;\n --font-h3-bold-size: 16px;\n --font-h3-bold-weight: 700;\n --font-h3-bold-line-height: 36px;\n --font-h3-bold-letter-spacing: 0.01em;\n --font-h3-regular-family: 'Poppins', sans-serif;\n --font-h3-regular-size: 16px;\n --font-h3-regular-weight: 400;\n --font-h3-regular-line-height: 36px;\n --font-h3-regular-letter-spacing: normal;\n --font-body-semibold-family: 'Poppins', sans-serif;\n --font-body-semibold-size: 14px;\n --font-body-semibold-weight: 600;\n --font-body-semibold-line-height: 24px;\n --font-body-semibold-letter-spacing: normal;\n --font-body-regular-family: 'Poppins', sans-serif;\n --font-body-regular-size: 14px;\n --font-body-regular-weight: 400;\n --font-body-regular-line-height: 24px;\n --font-body-regular-letter-spacing: normal;\n --font-small-semibold-family: 'Poppins', sans-serif;\n --font-small-semibold-size: 12px;\n --font-small-semibold-weight: 600;\n --font-small-semibold-line-height: 24px;\n --font-small-semibold-letter-spacing: normal;\n --font-small-bold-family: 'Poppins', sans-serif;\n --font-small-bold-size: 12px;\n --font-small-bold-weight: 700;\n --font-small-bold-line-height: 24px;\n --font-small-bold-letter-spacing: 0.01em;\n --font-small-regular-family: 'Poppins', sans-serif;\n --font-small-regular-size: 12px;\n --font-small-regular-weight: 400;\n --font-small-regular-line-height: 24px;\n --font-small-regular-letter-spacing: normal;\n --font-caption-semibold-family: 'Poppins', sans-serif;\n --font-caption-semibold-size: 10px;\n --font-caption-semibold-weight: 600;\n --font-caption-semibold-line-height: 23px;\n --font-caption-semibold-letter-spacing: 0.01em;\n --font-caption-regular-family: 'Poppins', sans-serif;\n --font-caption-regular-size: 10px;\n --font-caption-regular-weight: 400;\n --font-caption-regular-line-height: 16px;\n --font-caption-regular-letter-spacing: 0.01em;\n}\n","/* Base rules every Snacky component depends on.\n *\n * The docs site (../../index.html) opens with a global\n * `*,*::before,*::after{box-sizing:border-box}` reset, so its Live Preview has\n * always rendered components at their spec sizes. The package ships no reset,\n * and only some of its own selectors set the property, so on a host page\n * without one every fixed-size component with padding came out oversized:\n * `.snacky-product-card--list` measured 168px instead of 152, and\n * `.snacky-iconbtn--primary` 48px instead of 32.\n *\n * Scoped to `snacky-*` rather than `*` so it never touches the host page's own\n * elements, or the content a caller passes into a component's slot.\n */\n[class^='snacky-'],\n[class*=' snacky-'],\n[class^='snacky-']::before,\n[class^='snacky-']::after,\n[class*=' snacky-']::before,\n[class*=' snacky-']::after {\n box-sizing: border-box;\n}\n",".snacky-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* Figma gives every variant a fixed 48 (large) / 40 (small) height and draws\n Secondary's stroke INSIDE it. Without an explicit height the box grew from\n padding alone, so Secondary's 1px border pushed it to 50 while every other\n variant sat at 48. */\n height: 48px;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: var(--radius-field);\n border: none;\n font-family: var(--font-small-semibold-family);\n font-size: var(--font-small-semibold-size);\n font-weight: var(--font-small-semibold-weight);\n line-height: var(--font-small-semibold-line-height);\n cursor: pointer;\n white-space: nowrap;\n transition: background-color 0.12s ease, border-color 0.12s ease, color 0.12s ease;\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n\n.snacky-btn:disabled {\n cursor: not-allowed;\n}\n\n.snacky-btn--small {\n height: 40px;\n padding: var(--spacing-8) var(--spacing-8);\n}\n\n/* Primary */\n.snacky-btn--primary {\n background: var(--bg-action-primary);\n color: var(--text-on-action-primary);\n}\n.snacky-btn--primary:hover:not(:disabled) { background: var(--bg-action-primary-hover); }\n.snacky-btn--primary:active:not(:disabled) { background: var(--bg-action-primary-pressed); }\n.snacky-btn--primary:disabled { background: var(--bg-action-disabled); color: var(--text-action-disabled); }\n\n/* Primary + Danger */\n.snacky-btn--primary.snacky-btn--danger {\n background: var(--bg-action-primary-danger);\n color: var(--text-on-action-primary);\n}\n.snacky-btn--primary.snacky-btn--danger:hover:not(:disabled) { background: var(--bg-action-primary-danger-hovered); }\n.snacky-btn--primary.snacky-btn--danger:active:not(:disabled) { background: var(--bg-action-primary-danger-pressed); }\n/* Flagged asymmetry, confirmed against the site's own live implementation:\n Primary+Danger's disabled state carries a border that plain Primary's\n disabled state does not. */\n.snacky-btn--primary.snacky-btn--danger:disabled { background: var(--bg-action-disabled); color: var(--text-action-disabled); border: 1px solid var(--border-action-disabled); }\n\n/* Secondary */\n.snacky-btn--secondary {\n background: var(--bg-action-secondary);\n border: 1px solid var(--border-action-secondary);\n color: var(--text-on-action-primary);\n}\n.snacky-btn--secondary:hover:not(:disabled) { background: var(--bg-action-secondary-hover); }\n.snacky-btn--secondary:active:not(:disabled) { background: var(--bg-action-secondary-pressed); }\n.snacky-btn--secondary:disabled { color: var(--text-action-disabled); }\n\n/* Secondary + Danger */\n.snacky-btn--secondary.snacky-btn--danger {\n border-color: var(--border-action-danger);\n color: var(--text-action-danger);\n}\n.snacky-btn--secondary.snacky-btn--danger:hover:not(:disabled) { background: var(--bg-action-secondary-hover); }\n.snacky-btn--secondary.snacky-btn--danger:active:not(:disabled) { background: var(--bg-action-secondary-pressed); }\n.snacky-btn--secondary.snacky-btn--danger:disabled { border-color: var(--border-action-disabled); color: var(--text-action-disabled); }\n\n/* Tertiary - ghost, never a fill or border, including disabled */\n.snacky-btn--tertiary {\n background: transparent;\n color: var(--text-on-action-tertiary);\n}\n.snacky-btn--tertiary:hover:not(:disabled) { color: var(--text-on-action-tertiary-hovered); }\n.snacky-btn--tertiary:active:not(:disabled) { color: var(--text-on-action-tertiary-pressed); }\n.snacky-btn--tertiary:disabled { color: var(--text-action-disabled); }\n\n/* Tertiary + Danger */\n.snacky-btn--tertiary.snacky-btn--danger { color: var(--text-action-danger); }\n.snacky-btn--tertiary.snacky-btn--danger:hover:not(:disabled) { color: var(--text-action-danger-hovered); }\n.snacky-btn--tertiary.snacky-btn--danger:active:not(:disabled) { color: var(--text-action-danger-pressed); }\n.snacky-btn--tertiary.snacky-btn--danger:disabled { color: var(--text-action-disabled); }\n\n.snacky-btn__icon {\n position: absolute;\n left: var(--spacing-8);\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n}\n",".snacky-iconbtn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n border-radius: var(--radius-full);\n cursor: pointer;\n transition: background-color 0.12s ease;\n}\n.snacky-iconbtn:disabled { cursor: not-allowed; }\n.snacky-iconbtn svg,\n.snacky-iconbtn img { width: 100%; height: 100%; }\n\n/* Primary - 32px default, 24px small */\n.snacky-iconbtn--primary {\n width: 32px;\n height: 32px;\n padding: var(--spacing-8);\n background: var(--bg-action-primary);\n}\n/* Figma binds every icon-button glyph to an icon/* variable, not a text/* one.\n Same #333333 either way, but the icon token is the one that is actually\n specced, so a future retint of icon/icon-primary reaches these. */\n.snacky-iconbtn--primary .snacky-iconbtn__icon { width: 16px; height: 16px; color: var(--icon-primary); }\n.snacky-iconbtn--primary:hover:not(:disabled) { background: var(--bg-action-primary-hover); }\n.snacky-iconbtn--primary:active:not(:disabled) { background: var(--bg-action-primary-pressed); }\n.snacky-iconbtn--primary:disabled { background: var(--bg-action-disabled); border: 1px solid var(--border-action-disabled); }\n.snacky-iconbtn--primary:disabled .snacky-iconbtn__icon { color: var(--icon-disabled); }\n\n.snacky-iconbtn--primary.snacky-iconbtn--small {\n width: 24px;\n height: 24px;\n padding: var(--spacing-4);\n}\n\n/* Secondary - 40px, elevated, can act as a toggle via `selected` */\n.snacky-iconbtn--secondary {\n width: 40px;\n height: 40px;\n padding: var(--spacing-8);\n background: var(--bg-action-secondary);\n box-shadow: var(--shadow-md);\n}\n/* icon-primary (#333333), NOT icon-secondary. Figma's secondary set binds\n default/hovered/pressed all to icon/icon-primary; icon-secondary (#525252)\n appears only on the tertiary variant's hover. */\n.snacky-iconbtn--secondary .snacky-iconbtn__icon { width: 20px; height: 20px; color: var(--icon-primary); }\n.snacky-iconbtn--secondary:hover:not(:disabled) { background: var(--bg-action-secondary-hover); }\n.snacky-iconbtn--secondary:active:not(:disabled) { background: var(--bg-action-secondary-pressed); }\n.snacky-iconbtn--secondary:disabled { background: var(--bg-action-disabled); box-shadow: none; }\n.snacky-iconbtn--secondary:disabled .snacky-iconbtn__icon { color: var(--icon-disabled); }\n.snacky-iconbtn--secondary.snacky-iconbtn--selected .snacky-iconbtn__icon { color: var(--icon-active); }\n\n/* Tertiary - 40px, no resting fill, only a transient state-layer overlay */\n.snacky-iconbtn--tertiary {\n width: 40px;\n height: 40px;\n padding: var(--spacing-8);\n background: transparent;\n}\n.snacky-iconbtn--tertiary .snacky-iconbtn__icon { width: 24px; height: 24px; color: var(--icon-primary); }\n.snacky-iconbtn--tertiary:hover:not(:disabled) { background: rgba(0, 0, 0, 0.08); }\n.snacky-iconbtn--tertiary:hover:not(:disabled) .snacky-iconbtn__icon { color: var(--icon-secondary); }\n.snacky-iconbtn--tertiary:active:not(:disabled) { background: rgba(0, 0, 0, 0.12); }\n.snacky-iconbtn--tertiary:disabled .snacky-iconbtn__icon { color: var(--icon-disabled); }\n",".snacky-upload {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 72px;\n height: 72px;\n padding: var(--spacing-24);\n border-radius: var(--radius-full);\n background: var(--bg-surface);\n border: 1px dashed var(--border-main);\n cursor: pointer;\n transition: background-color 0.12s ease;\n}\n.snacky-upload svg,\n.snacky-upload img { width: 100%; height: 100%; }\n.snacky-upload:hover { background: var(--bg-action-secondary-hover); }\n.snacky-upload:active { background: var(--bg-action-secondary-pressed); }\n",".snacky-field {\n display: flex;\n align-items: center;\n gap: var(--gap-text-icon);\n width: 100%;\n height: 48px;\n padding: var(--spacing-12) var(--spacing-8);\n background: var(--bg-surface-field);\n border: 1px solid var(--border-input-default);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n transition: border-color 0.12s ease;\n}\n\n.snacky-field:focus-within {\n border-color: var(--border-input-active);\n}\n\n.snacky-field--error {\n border-color: var(--border-input-error) !important;\n}\n\n.snacky-field--disabled {\n background: var(--bg-surface-variant);\n cursor: not-allowed;\n}\n\n.snacky-field__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n color: var(--text-primary);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n\n.snacky-field__input::placeholder {\n color: var(--text-placeholder);\n}\n\n.snacky-field__input:disabled {\n cursor: not-allowed;\n color: var(--text-disabled);\n}\n\n.snacky-field__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n /* Figma binds the resting glyph to text/text-placeholder and the focused one\n to text/text-primary, not icon-secondary. */\n color: var(--text-placeholder);\n}\n.snacky-field:focus-within .snacky-field__icon { color: var(--text-primary); }\n\n.snacky-field__icon--button {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n color: inherit;\n}\n\n.snacky-field-label {\n display: block;\n margin-bottom: var(--spacing-4);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n\n.snacky-field-error {\n display: block;\n margin-top: var(--spacing-4);\n font-family: var(--font-caption-regular-family);\n font-size: var(--font-caption-regular-size);\n color: var(--text-error);\n font-weight: var(--font-caption-regular-weight);\n line-height: var(--font-caption-regular-line-height);\n letter-spacing: var(--font-caption-regular-letter-spacing);\n}\n",".snacky-search {\n display: flex;\n align-items: center;\n gap: var(--spacing-12);\n /* Animates 260px -> 312px on focus, matching the site's own verified\n implementation - not a fluid 100% field. */\n width: 260px;\n height: 40px;\n padding: var(--spacing-8) var(--spacing-12);\n background: var(--bg-surface-variant);\n border: 1px solid transparent;\n border-radius: var(--radius-field);\n box-sizing: border-box;\n transition: border-color 0.12s ease, width 0.15s ease;\n}\n.snacky-search:focus-within {\n width: 312px;\n border-color: var(--border-input-active);\n}\n.snacky-search__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-search__input::placeholder {\n color: var(--text-placeholder);\n}\n.snacky-search__icon {\n display: inline-flex;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n color: var(--text-placeholder);\n}\n.snacky-search__clear {\n display: inline-flex;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n color: var(--text-placeholder);\n}\n",".snacky-otp {\n display: flex;\n gap: var(--spacing-4);\n}\n.snacky-otp__cell {\n width: 48px;\n height: 48px;\n padding: 0;\n box-sizing: border-box;\n text-align: center;\n border: 1px solid transparent;\n border-radius: var(--radius-field);\n background: var(--bg-surface-variant);\n font-family: var(--font-h3-bold-family);\n font-size: var(--font-h3-bold-size);\n font-weight: var(--font-h3-bold-weight);\n /* 46px, not the h3Bold token's 36px - specifically tuned to center a\n single digit in the 48px cell, per the site's own implementation. */\n line-height: 46px;\n letter-spacing: 0.16px;\n color: var(--text-primary);\n outline: none;\n transition: border-color 0.1s ease;\n}\n.snacky-otp__cell:focus {\n border-color: var(--border-input-active);\n}\n/* Figma defines no disabled OTP variant (only default/active/filled), so this\n is not a spec value: it reuses the disabled text colour TextField already\n uses, so the prop is at least visible. Without it a disabled field rendered\n identically to an enabled one and the prop looked broken. */\n.snacky-otp__cell:disabled {\n cursor: not-allowed;\n color: var(--text-disabled);\n}\n",".snacky-copy {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n /* Figma has two heights here: 64 by default, because the Copy action sits in\n its own 8px-padded 40px-tall frame, and 48 once copied, where the action\n collapses to plain text. The package was pinned at 48 for both. */\n height: 64px;\n padding: var(--spacing-12);\n background: var(--bg-surface-variant);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-copy__value {\n font-family: var(--font-body-semibold-family);\n font-size: var(--font-body-semibold-size);\n font-weight: var(--font-body-semibold-weight);\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n.snacky-copy__action {\n flex-shrink: 0;\n margin-left: var(--spacing-12);\n background: none;\n border: none;\n padding: var(--spacing-8);\n cursor: pointer;\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-link);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-copy__action--copied {\n color: var(--text-secondary);\n /* the copied state is plain text, not a padded button */\n padding: 0;\n}\n.snacky-copy:has(.snacky-copy__action--copied) {\n height: 48px;\n}\n",".snacky-chatfield {\n display: flex;\n align-items: center;\n gap: var(--gap-text-icon);\n width: 100%;\n height: 72px;\n padding: var(--spacing-12);\n background: var(--bg-surface);\n border: 1px solid var(--border-input-default);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n transition: border-color 0.12s ease;\n}\n.snacky-chatfield:focus-within {\n border-color: var(--border-input-active);\n}\n.snacky-chatfield__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-chatfield__input::placeholder {\n color: var(--text-placeholder);\n}\n.snacky-chatfield__send {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n border: none;\n border-radius: var(--radius-full);\n /* Transparent with a muted icon when empty, not a grayed-out disabled\n circle - it only fills once there's something to send. */\n background: transparent;\n /* Figma binds the resting send glyph to text/text-placeholder (#7a7a7a). */\n color: var(--text-placeholder);\n cursor: default;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.snacky-chatfield__send--active {\n background: var(--bg-action-primary);\n /* White on the accent circle. Figma binds this to background/surface/bg-surface,\n which is the same #ffffff but an odd name for an icon colour, so the\n equivalent icon token is used here. It is NOT the dark text-on-action-primary\n that a labelled button would use. */\n color: var(--icon-on-accent);\n cursor: pointer;\n}\n.snacky-chatfield__send--active:hover { background: var(--bg-action-primary-hover); }\n",".snacky-address-result {\n display: flex;\n align-items: flex-start;\n gap: var(--gap-text-icon);\n width: 100%;\n /* Figma's \"Address, Search (Selected)\" is 72: 12/12 padding around a 24 title\n and a 24 subtitle, with the stroke drawn INSIDE. box-sizing:border-box\n plus this explicit height already absorbs a real border into the 72px\n total (verified: both render 72px), so a plain border is correct here -\n unlike Tab, which has no explicit height for box-sizing to apply to. */\n height: 72px;\n padding: var(--spacing-12) var(--spacing-8);\n background: var(--bg-surface);\n border: 1px solid var(--border-input-default);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n cursor: pointer;\n text-align: left;\n}\n.snacky-address-result__icon {\n display: inline-flex;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n color: var(--text-placeholder);\n margin-top: 2px;\n}\n.snacky-address-result__title {\n margin: 0;\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-address-result__subtitle {\n margin: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n",".snacky-chip {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n /* Figma gives both chip types a fixed 40 with the stroke inside. Without an\n explicit height the 1px border stacked on 8 + 24 + 8 and made it 42. */\n height: 40px;\n padding: var(--spacing-8);\n border-radius: var(--radius-full);\n background: var(--bg-surface);\n border: 1px solid var(--border-main);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n cursor: pointer;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-chip--selected {\n background: var(--bg-surface-highlight);\n border-color: var(--color-primary-500);\n}\n.snacky-chip__thumb {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n object-fit: contain;\n}\n",".snacky-radio-option {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-icon-label);\n cursor: pointer;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-radio-option--disabled {\n cursor: not-allowed;\n}\n.snacky-radio {\n appearance: none;\n width: 24px;\n height: 24px;\n margin: 0;\n flex-shrink: 0;\n box-sizing: border-box;\n border-radius: 999px;\n border: 1px solid var(--border-main);\n background: transparent;\n cursor: pointer;\n position: relative;\n}\n.snacky-radio:checked {\n /* Figma binds both the ring and the dot to background/action/bg-action-primary\n (same #f8b732 as the primary-500 primitive this used before, but the real\n semantic token the file actually references). */\n border-color: var(--bg-action-primary);\n}\n.snacky-radio:checked::after {\n content: '';\n position: absolute;\n inset: 0;\n margin: auto;\n width: 12px;\n height: 12px;\n border-radius: 999px;\n background: var(--bg-action-primary);\n}\n.snacky-radio:disabled {\n cursor: not-allowed;\n border-color: var(--border-main);\n background: var(--bg-surface-variant);\n}\n/* Disabled suppresses the selected dot entirely, even if checked - matches\n the site's own verified implementation exactly. */\n.snacky-radio:disabled::after {\n display: none;\n}\n",".snacky-checkbox-option {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-icon-label);\n cursor: pointer;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-checkbox {\n appearance: none;\n width: 24px;\n height: 24px;\n margin: 0;\n box-sizing: border-box;\n flex-shrink: 0;\n /* Off state is a white field surface with an outline - updated in Figma\n (node 444:11084) from an earlier solid neutral-500 fill to this outline\n style. Figma binds the stroke to border/border-main, not the\n border-input-default this used before (same #cccccc either way). */\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n cursor: pointer;\n position: relative;\n background: var(--bg-surface-field);\n}\n.snacky-checkbox:checked {\n background: var(--color-primary-500);\n border-color: var(--color-primary-500);\n}\n.snacky-checkbox:checked::after {\n content: '';\n position: absolute;\n inset: 3px;\n /* Confirmed against Figma: the checkmark is white (icon-on-accent), not\n text-primary - it reads as a white cutout in the compound icon path, not a\n dark mark layered on top. */\n background: var(--icon-on-accent);\n -webkit-mask: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E\") center / contain no-repeat;\n mask: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E\") center / contain no-repeat;\n}\n",".snacky-toggle {\n position: relative;\n display: inline-block;\n width: 56px;\n height: 32px;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n appearance: none;\n}\n.snacky-toggle:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n.snacky-toggle__track {\n position: absolute;\n left: 0;\n top: 4px;\n width: 56px;\n height: 24px;\n border-radius: 12px;\n /* Bound to bg-action-disabled in Figma (same #cccccc as neutral-200, this\n just matches the actual token binding, confirmed via the file's variables). */\n background: var(--bg-action-disabled);\n transition: background-color 0.2s ease;\n}\n.snacky-toggle--on .snacky-toggle__track {\n /* \"Accent tint\" per Figma - a light wash, not the solid accent color. Figma's\n actual paint (#fffbe9) isn't bound to any variable and isn't quite\n bg-surface-highlight/primary-50 (#fef8eb) either, close enough (a few\n values out of 255 per channel) that this token is used rather than a new\n one-off raw color for an likely-untokenized value in Figma itself. */\n background: var(--bg-surface-highlight);\n}\n.snacky-toggle__thumb {\n position: absolute;\n top: 0;\n left: 0;\n width: 32px;\n height: 32px;\n border-radius: 999px;\n /* Confirmed against Figma (bound to the icon-disabled variable): #a3a3a3,\n not neutral-500 (#7a7a7a). */\n background: var(--icon-disabled);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n transition: left 0.2s ease, background-color 0.2s ease;\n}\n.snacky-toggle--on .snacky-toggle__thumb {\n left: 24px;\n background: var(--color-primary-500);\n}\n",".snacky-navbar {\n display: flex;\n width: 100%;\n background: var(--bg-surface);\n box-shadow: var(--shadow-top);\n}\n.snacky-navbar__item {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--gap-icon-label);\n padding: var(--spacing-12) 0;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-secondary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-navbar__item--active {\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-navbar__icon {\n display: inline-flex;\n width: 20px;\n height: 20px;\n /* Icon and label use different inactive colors in the site's own\n verified implementation - icon-secondary, not text-secondary. */\n color: var(--icon-secondary);\n}\n.snacky-navbar__item--active .snacky-navbar__icon {\n color: var(--color-primary-500);\n}\n",".snacky-tabrow {\n display: flex;\n gap: var(--spacing-24);\n border-bottom: 1px solid var(--border-main);\n}\n.snacky-tab {\n background: none;\n border: none;\n /* Figma's own token for this exact gap is gap.text-underline (16px,\n documented as \"Text → underline indicator gap (Tab)\"), not spacing-12.\n The accent line is painted as an inset box-shadow rather than a real\n border so it doesn't add its own 2px on top - a real border pushed the\n tab to 38 against Figma's declared 40 (24 text + 16 gap, no extra). The\n transparent/coloured swap below still reserves the same space either\n way, so switching tabs causes no layout shift. */\n box-shadow: inset 0 -2px 0 0 transparent;\n padding: 0 0 var(--gap-text-underline) 0;\n cursor: pointer;\n font-family: var(--font-body-regular-family);\n font-size: 14px;\n line-height: var(--font-body-regular-line-height);\n color: var(--text-primary);\n transition: color 0.15s ease;\n font-weight: var(--font-body-regular-weight);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n.snacky-tab--active {\n font-family: var(--font-body-semibold-family);\n font-weight: var(--font-body-semibold-weight);\n /* Re-verified against Figma's actual bound variables (an earlier pass\n read this as the raw primary-700 primitive): the active label's text\n fill is bound to text/on-action/text-on-action-tertiary (#b08224,\n same value as primary-700, but the real semantic token, matching the\n Tertiary button's default label color). The underline's stroke is\n bound to border/input/border-input-active (#f8b732) - an input-focus\n token reused here, which reads as incidental Figma variable reuse\n rather than an intentional shared role, so this keeps the primitive\n --color-primary-500 instead of adopting a misleading token name. */\n color: var(--text-on-action-tertiary);\n box-shadow: inset 0 -2px 0 0 var(--color-primary-500);\n font-size: var(--font-body-semibold-size);\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n",".snacky-header {\n display: flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n padding: var(--spacing-16) var(--spacing-8);\n background: var(--bg-surface);\n}\n.snacky-header__icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n border-radius: var(--radius-full);\n background: transparent;\n color: var(--icon-primary);\n cursor: pointer;\n}\n.snacky-header__title-row {\n flex: 1;\n min-width: 0;\n display: flex;\n justify-content: center;\n}\n/* When a leading icon is present but there's no trailing action, the title\n row gets matching right padding so the text stays optically centered\n against the whole bar, not just the leftover space next to the icon. */\n.snacky-header__title-row--balance {\n padding-right: 40px;\n}\n.snacky-header__title {\n font-family: var(--font-h3-bold-family);\n font-weight: var(--font-h3-bold-weight);\n font-size: var(--font-h3-bold-size);\n line-height: var(--font-h3-bold-line-height);\n letter-spacing: var(--font-h3-bold-letter-spacing);\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n",".snacky-banner-hero {\n display: block;\n width: 100%;\n /* Its two siblings below both pin an aspect-ratio; this one did not, so the\n artwork's own proportions decided the height and a 6.4:1 strip rendered the\n banner 49 tall instead of Figma's 312x128. */\n aspect-ratio: 312 / 128;\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n object-fit: cover;\n}\n.snacky-banner-square {\n display: block;\n width: 100%;\n aspect-ratio: 360 / 334;\n border-radius: var(--radius-bubble);\n object-fit: cover;\n}\n.snacky-banner-full {\n display: block;\n width: 100%;\n aspect-ratio: 360 / 176;\n object-fit: cover;\n}\n.snacky-banner-point-balance {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: var(--spacing-8) var(--spacing-16);\n /* 8px, per Figma's `Property 1=point-balance` frame. Primitive rather than a\n semantic gap token because none covers this: gap.text-icon is also 8px but\n is documented as a field row's text-to-icon gap, not the split between the\n banner's two halves. */\n gap: var(--spacing-8);\n background: var(--bg-surface-highlight);\n /* Figma draws this stroke INSIDE a 60-tall frame. There's no explicit height\n on this rule, so box-sizing:border-box alone can't absorb a real border -\n unlike AddressResult, which has a fixed height and uses a plain border.\n An inset shadow paints the same 1px line without adding to the box, so the\n row's own content (56px: 20 padding + 36 item) plus this 8+8 padding\n still lands on 60 rather than 62. */\n box-shadow: inset 0 0 0 1px var(--color-primary-500);\n border-radius: var(--radius-card);\n box-sizing: border-box;\n}\n.snacky-banner-point-balance__item {\n display: flex;\n align-items: center;\n /* 12px, per Figma's \"Points and Balance Container\". This was gap.icon-label\n (4px), which is documented as a *vertical* navbar/menu icon-to-label gap,\n so it was wrong on both the axis and the value and left the icon jammed\n against the text. No semantic gap token is 12px, hence the primitive. */\n gap: var(--spacing-12);\n}\n.snacky-banner-point-balance__icon {\n /* Figma binds both icons to icon/icon-brand and draws them at 16x16. Without\n an explicit colour the icons render currentColor, which inherits the row's\n dark label colour instead of the accent. */\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: var(--icon-brand);\n}\n.snacky-banner-point-balance__label {\n margin: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n /* Figma authors this label node at 20 tall even though its line-height reads\n 24, and 20 + the value's 24 is what makes the banner exactly 60. Deliberate\n override of the token's 24. */\n line-height: 20px;\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-banner-point-balance__value {\n margin: 0;\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-banner-point-balance__divider {\n width: 1px;\n align-self: stretch;\n background: var(--color-primary-500);\n}\n\n.snacky-banner-alert {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 40px;\n padding: var(--spacing-8) var(--spacing-24);\n gap: var(--spacing-4);\n background: var(--bg-surface-accent);\n box-sizing: border-box;\n}\n.snacky-banner-alert__message {\n margin: 0;\n font-family: var(--font-body-regular-family);\n font-size: var(--font-body-regular-size);\n color: var(--text-inverse);\n font-weight: var(--font-body-regular-weight);\n line-height: var(--font-body-regular-line-height);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n.snacky-banner-alert__countdown {\n margin: 0;\n font-family: var(--font-body-semibold-family);\n font-weight: var(--font-body-semibold-weight);\n color: var(--text-inverse);\n font-size: var(--font-body-semibold-size);\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n",".snacky-badge-wrap {\n position: relative;\n display: inline-flex;\n}\n.snacky-badge-notification {\n position: absolute;\n top: -8px;\n right: -10px;\n min-width: 20px;\n height: 19px;\n padding: var(--spacing-2) var(--spacing-4);\n border-radius: 999px;\n background: var(--bg-surface-accent);\n color: var(--text-inverse);\n font-family: var(--font-caption-semibold-family);\n font-size: var(--font-caption-semibold-size);\n font-weight: var(--font-caption-semibold-weight);\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n letter-spacing: var(--font-caption-semibold-letter-spacing);\n}\n.snacky-discount-tag {\n /* Figma: 24 tall. The 16px caption line box plus 2/4 padding only made 20. */\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-2) var(--spacing-4);\n border-radius: var(--radius-tag);\n background: var(--bg-surface-accent);\n color: var(--text-inverse);\n font-family: var(--font-caption-semibold-family);\n font-size: var(--font-caption-semibold-size);\n font-weight: var(--font-caption-semibold-weight);\n line-height: var(--font-caption-semibold-line-height);\n letter-spacing: var(--font-caption-semibold-letter-spacing);\n}\n.snacky-soldout-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: 999px;\n background: rgba(51, 51, 51, 0.8);\n color: var(--text-inverse);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-variant-badge {\n display: inline-flex;\n align-items: center;\n /* Figma: 32 tall with the stroke inside; the 1px border was stacking on top. */\n height: 32px;\n padding: var(--spacing-8);\n border-radius: var(--radius-field);\n background: var(--bg-surface-highlight);\n border: 1px solid var(--color-primary-500);\n color: var(--text-primary);\n font-family: var(--font-caption-regular-family);\n font-size: var(--font-caption-regular-size);\n font-weight: var(--font-caption-regular-weight);\n line-height: var(--font-caption-regular-line-height);\n letter-spacing: var(--font-caption-regular-letter-spacing);\n}\n",".snacky-callout {\n display: inline-flex;\n flex-direction: column;\n gap: var(--spacing-4);\n max-width: 200px;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: var(--radius-bubble);\n font-family: var(--font-body-regular-family);\n font-size: var(--font-body-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-body-regular-weight);\n line-height: var(--font-body-regular-line-height);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n.snacky-callout--received {\n align-self: flex-start;\n background: var(--bg-surface);\n /* No box-shadow: confirmed against Figma (node 8690:7424), the Received\n bubble has an empty effects array, flat like Sent/Pending. */\n}\n.snacky-callout--sent,\n.snacky-callout--pending {\n align-self: flex-end;\n background: var(--color-primary-500);\n}\n.snacky-callout__message {\n margin: 0;\n width: 100%;\n}\n.snacky-callout__meta {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--spacing-4);\n width: 100%;\n font-family: var(--font-caption-regular-family);\n font-size: var(--font-caption-regular-size);\n color: var(--text-primary);\n text-align: right;\n font-weight: var(--font-caption-regular-weight);\n line-height: var(--font-caption-regular-line-height);\n letter-spacing: var(--font-caption-regular-letter-spacing);\n}\n.snacky-callout__meta-icon {\n width: 16px;\n height: 16px;\n display: inline-flex;\n}\n",".snacky-order-item {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-8);\n width: 100%;\n padding: var(--spacing-8) var(--spacing-12);\n background: var(--bg-surface);\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n box-sizing: border-box;\n text-align: left;\n}\n.snacky-order-item__top {\n display: flex;\n gap: var(--spacing-8);\n width: 100%;\n}\n.snacky-order-item__thumb-box {\n width: 56px;\n height: 56px;\n flex-shrink: 0;\n border-radius: var(--radius-field);\n /* No background: Figma's Image component set (usage=list) has no fill and no\n stroke on the 56x56 frame, it only holds the 48x48 photo. An earlier pass\n invented #f4f4f5 here, which is also 1-2 values off bg-surface-variant and\n contradicted ProductImage's own usage=\"list\", which correctly has none. */\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n}\n.snacky-order-item__thumb {\n width: 48px;\n height: 48px;\n object-fit: contain;\n}\n.snacky-order-item__info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n.snacky-order-item__status {\n font-family: var(--font-small-semibold-family);\n font-weight: var(--font-small-semibold-weight);\n font-size: var(--font-small-semibold-size);\n line-height: 24px;\n color: var(--text-primary);\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n.snacky-order-item__status--cancelled {\n color: var(--text-error);\n}\n.snacky-order-item__name {\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__details {\n display: flex;\n align-items: center;\n gap: var(--spacing-8);\n width: 100%;\n /* Figma's \"Details Container\" is padded 8/0. Without it every order variant\n came out exactly 16px short. */\n padding: var(--spacing-8) 0;\n}\n.snacky-order-item__count {\n flex: 1;\n min-width: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-secondary);\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__total {\n flex: 1;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n text-align: right;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__total b {\n font-weight: var(--font-small-bold-weight);\n letter-spacing: 0.12px;\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n}\n.snacky-order-item__total--cod {\n flex: 0 1 auto;\n}\n.snacky-order-item__cod {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* Figma's \"COD Container\" is 24 tall with its stroke inside. Without an\n explicit height the 1px border stacked on the 24px line box and pushed the\n whole card to 122 instead of 120. */\n height: 24px;\n padding: 0 var(--spacing-8);\n border-radius: var(--radius-field);\n border: 1px solid var(--border-main);\n background: var(--bg-surface);\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n font-size: var(--font-small-bold-size);\n line-height: 24px;\n letter-spacing: 0.12px;\n color: var(--text-secondary);\n}\n.snacky-order-item__deadline {\n width: 100%;\n background: var(--bg-surface-highlight);\n text-align: center;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__action-row {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n}\n\n.snacky-notif-item {\n display: flex;\n flex-direction: column;\n gap: 0;\n width: 100%;\n box-sizing: border-box;\n padding: var(--spacing-8) var(--spacing-12);\n background: var(--bg-surface);\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n text-align: left;\n}\n.snacky-notif-item--unread {\n background: var(--bg-surface-highlight);\n}\n.snacky-notif-item__title {\n font-family: var(--font-small-semibold-family);\n font-weight: var(--font-small-semibold-weight);\n font-size: var(--font-small-semibold-size);\n line-height: 24px;\n color: var(--text-primary);\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n.snacky-notif-item__message {\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n",".snacky-accordion {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n width: 100%;\n}\n.snacky-accordion__header {\n display: flex;\n align-items: center;\n gap: var(--gap-text-icon);\n width: 100%;\n padding: var(--spacing-12) var(--spacing-8);\n background: var(--bg-surface);\n border: none;\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n cursor: pointer;\n text-align: left;\n color: var(--text-primary);\n}\n.snacky-accordion__icon {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n}\n.snacky-accordion__title {\n flex: 1;\n font-family: var(--font-body-semibold-family);\n font-size: 14px;\n font-weight: var(--font-body-semibold-weight);\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n.snacky-accordion--icon .snacky-accordion__title {\n font-family: var(--font-small-semibold-family);\n font-size: var(--font-small-semibold-size);\n font-weight: var(--font-small-semibold-weight);\n line-height: var(--font-small-semibold-line-height);\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n.snacky-accordion__chevron {\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n /* Confirmed against Figma: icon-secondary in both open and closed states,\n not inherited text-primary. */\n color: var(--icon-secondary);\n transition: transform 0.15s ease;\n}\n.snacky-accordion__chevron--open {\n transform: rotate(180deg);\n}\n/* Confirmed against Figma (node 8696:6572): the expanded panel is its own\n separate elevated card (own radius-field + shadow-md), not a padding-only\n section merged into the header's card, and there is no bordered variant\n at all - Figma never draws a border on either the icon or no-icon case. */\n.snacky-accordion__panel {\n padding: var(--spacing-12);\n background: var(--bg-surface);\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n /* Figma's \"Content Text\" is 14/24 (body-regular), not the 12px small-regular\n the header uses. At 12px the copy re-wrapped and the expanded card came out\n 292 tall instead of 340. */\n font-family: var(--font-body-regular-family);\n font-size: var(--font-body-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-body-regular-weight);\n line-height: var(--font-body-regular-line-height);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n",".snacky-sheet-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg-overlay-dim);\n display: flex;\n align-items: flex-end;\n justify-content: center;\n z-index: 1000;\n}\n.snacky-sheet {\n width: 100%;\n max-width: 480px;\n max-height: 90vh;\n overflow-y: auto;\n background: var(--bg-surface);\n border-radius: var(--radius-sheet-top) var(--radius-sheet-top) 0 0;\n padding: var(--spacing-24);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--gap-layout-block);\n}\n.snacky-sheet__handle {\n width: 36px;\n height: 4px;\n border-radius: 999px;\n background: var(--color-neutral-200);\n margin: 0 auto var(--spacing-8);\n}\n",".snacky-section {\n width: 100%;\n padding: var(--spacing-16) var(--spacing-24);\n background: var(--bg-surface);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--gap-layout-block);\n}\n.snacky-section__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.snacky-section__title {\n margin: 0;\n font-family: var(--font-h3-bold-family);\n font-size: var(--font-h3-bold-size);\n font-weight: var(--font-h3-bold-weight);\n color: var(--text-primary);\n line-height: var(--font-h3-bold-line-height);\n letter-spacing: var(--font-h3-bold-letter-spacing);\n}\n.snacky-section__action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n padding: var(--spacing-4);\n border: none;\n border-radius: var(--radius-full);\n background: var(--bg-action-primary);\n /* Re-verified against Figma's actual bound variable on the chevron vector\n (not the icon instance's own unrelated white frame fill, which was\n mistakenly read as the icon color in an earlier pass): text/text-primary,\n #333333 - same rendered color as --text-on-action-primary, which is what\n this originally was, but --text-primary is the variable Figma actually\n binds here. */\n color: var(--text-primary);\n cursor: pointer;\n}\n.snacky-section__action:hover { background: var(--bg-action-primary-hover); }\n",".snacky-stepper {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n /* Figma \"Order status progress\": VERTICAL, 32 between steps. */\n gap: var(--spacing-32);\n}\n\n.snacky-stepper__step {\n position: relative;\n display: flex;\n align-items: flex-start;\n /* Figma \"Order status step\": HORIZONTAL, gap 16. The height follows the\n content - 48 with a timestamp, 24 without - which is what makes the four\n documented progress frames land on 288 / 264 / 216 / 216. Forcing 48 on\n every step made all four 288. */\n gap: var(--gap-layout-block);\n}\n\n/* The connector is one -90deg-rotated dashed LINE spanning the whole stepper in\n Figma. Drawing it per-step instead survives any number of steps, and the\n dashes line up either way. Starts below the 24px dot and runs into the 32px\n gap to the next one. */\n.snacky-stepper__step::before {\n content: '';\n position: absolute;\n left: 12px;\n top: 24px;\n bottom: calc(-1 * var(--spacing-32));\n border-left: 1px dashed var(--border-main);\n}\n.snacky-stepper__step--last::before {\n content: none;\n}\n\n/* 24x24 slot holding a 16x16 circle, per Figma's \"Progress dot/*\" frames. */\n.snacky-stepper__dot {\n position: relative;\n z-index: 1;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n.snacky-stepper__dot::before {\n content: '';\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: var(--radius-full);\n}\n.snacky-stepper__dot--done::before {\n background: var(--icon-brand);\n}\n.snacky-stepper__dot--pending::before {\n background: var(--bg-action-disabled);\n}\n.snacky-stepper__dot--cancelled::before {\n background: var(--bg-surface-accent);\n}\n/* The X only appears on the cancelled dot, drawn on the accent circle. */\n.snacky-stepper__dot--cancelled svg {\n position: relative;\n z-index: 1;\n color: var(--icon-on-accent);\n}\n\n.snacky-stepper__body {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.snacky-stepper__label {\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n font-weight: var(--font-small-bold-weight);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-stepper__label--done {\n color: var(--text-primary);\n}\n.snacky-stepper__label--pending {\n color: var(--text-secondary);\n}\n.snacky-stepper__label--cancelled {\n color: var(--text-error);\n}\n\n.snacky-stepper__time {\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n color: var(--text-secondary);\n}\n","/* Figma \"Property 1=Calendar\": 360 wide, VERTICAL, 24 gap, 24 padding. */\n.snacky-calendar {\n width: 100%;\n max-width: 360px;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-24);\n padding: var(--spacing-24);\n background: var(--bg-surface);\n box-sizing: border-box;\n}\n\n/* \"Calendar Header Container\": 312x36, prev/next 24x24 either side of the label. */\n.snacky-calendar__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-8);\n}\n.snacky-calendar__nav {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: none;\n color: var(--icon-primary);\n cursor: pointer;\n}\n/* One back glyph serves both arrows - the set has no forward twin, and Figma\n uses the same instance mirrored. */\n.snacky-calendar__nav--next {\n transform: scaleX(-1);\n}\n.snacky-calendar__label {\n flex: 1;\n text-align: center;\n font-family: var(--font-h3-bold-family);\n font-size: var(--font-h3-bold-size);\n font-weight: var(--font-h3-bold-weight);\n line-height: var(--font-h3-bold-line-height);\n letter-spacing: var(--font-h3-bold-letter-spacing);\n color: var(--text-primary);\n}\n\n/* Figma hugs each date cell, so its row gaps vary (39/36/33/30/29). A seven\n column grid is the faithful translation: same even distribution, no\n per-row magic numbers. */\n.snacky-calendar__grid {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n justify-items: center;\n align-items: center;\n /* Figma's row pitch is 59: a 36-tall date row plus a 23 gap. The cell here is\n 40 rather than 36 because the selected day's circle is 40 (Figma's\n \"selected\" frame) and would otherwise overflow its row, so the gap is\n 59 - 40 = 19 to keep the same pitch. Not a token: 59 is not on the scale. */\n row-gap: 19px;\n}\n\n.snacky-calendar__weekday {\n height: 30px;\n display: inline-flex;\n align-items: center;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n color: var(--text-primary);\n}\n\n.snacky-calendar__day {\n position: relative;\n width: 100%;\n height: 40px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n font-family: var(--font-h3-regular-family, var(--font-h3-bold-family));\n font-size: 16px;\n line-height: 36px;\n color: var(--text-primary);\n}\n.snacky-calendar__day--outside {\n color: var(--text-disabled);\n cursor: default;\n}\n\n/* The range band sits behind the row; the two ends get the filled circle. */\n.snacky-calendar__day--in-range {\n background: var(--bg-surface-highlight);\n}\n.snacky-calendar__day-number {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: var(--radius-full);\n}\n.snacky-calendar__day--selected .snacky-calendar__day-number {\n background: var(--bg-action-primary);\n font-weight: 700;\n}\n.snacky-calendar__day--selected {\n background: var(--bg-surface-highlight);\n}\n\n/* Figma \"Ellipse 38\": an 8px accent dot under a marked day. */\n.snacky-calendar__marker {\n position: absolute;\n bottom: 2px;\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--bg-action-primary);\n}\n",".snacky-avatar {\n display: block;\n border-radius: 999px;\n object-fit: cover;\n flex-shrink: 0;\n}\n.snacky-avatar--sm { width: 32px; height: 32px; }\n.snacky-avatar--md { width: 56px; height: 56px; }\n.snacky-avatar--lg { width: 72px; height: 72px; }\n",".snacky-illustration {\n display: block;\n max-width: 100%;\n /* The per-variant canvas is the spec, so the artwork is fitted into it rather\n than allowed to set its own height. `height: auto` let the file's aspect win,\n and two of the shipped PNGs do not match their canvas\n (illus-discount-referral is 1076x892, i.e. 1.206, against a 268x200 / 1.340\n canvas), which rendered discountReferral 22px too tall. contain keeps the\n canvas exact without distorting the artwork. */\n object-fit: contain;\n}\n",".snacky-product-image-wrap {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n}\n.snacky-product-image {\n display: block;\n object-fit: contain;\n}\n/* These must match the `usage` prop values verbatim, since the class name is\n built as `--${usage}`. They read `--card`/`--details` before, so the\n product-card and product-details usages, the two most common ones, silently\n matched no rule at all and rendered unsized. */\n.snacky-product-image--product-card,\n.snacky-product-image--product-details {\n width: 100%;\n height: 100%;\n background: transparent;\n}\n.snacky-product-image-wrap--product-card { width: 128px; height: 128px; }\n.snacky-product-image-wrap--product-details { width: 200px; height: 200px; }\n\n.snacky-product-image-wrap--list {\n width: 56px;\n height: 56px;\n padding: var(--spacing-4);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-product-image-wrap--review {\n width: 48px;\n height: 48px;\n padding: var(--spacing-4);\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-product-image-wrap--variant {\n width: 88px;\n height: 88px;\n padding: var(--spacing-4);\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-product-image-wrap--accordion-modal { width: 24px; height: 24px; }\n\n.snacky-product-image-sold-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.46);\n border-radius: inherit;\n}\n.snacky-product-image-sold-label {\n padding: var(--spacing-12) 7px;\n border-radius: 999px;\n background: rgba(51, 51, 51, 0.8);\n color: var(--text-inverse);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n",".snacky-product-card {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-12);\n background: var(--bg-surface);\n text-align: left;\n border: none;\n cursor: pointer;\n font-family: inherit;\n}\n.snacky-product-card--list {\n width: 152px;\n /* 152px is a spec width, not a hint. This card's documented home is a\n horizontal carousel, where a flex parent would otherwise shrink it below\n spec rather than letting the row scroll. */\n flex-shrink: 0;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-lg);\n}\n/* Figma node \"Property 1=details\": the card itself has no padding and no gap.\n Its two child frames carry all of it. */\n.snacky-product-card--details {\n width: 100%;\n padding: 0;\n gap: 0;\n}\n/* \"Image\" frame - 12/8 padding around the 200px image, 224 tall. */\n.snacky-product-card__image-block {\n display: flex;\n justify-content: center;\n padding: var(--spacing-12) var(--spacing-8);\n}\n/* \"Product details container\" - 16/24 padding, 8px gap, 148 tall. */\n.snacky-product-card__details-body {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-8);\n padding: var(--spacing-16) var(--spacing-24);\n}\n.snacky-product-card__image-wrap {\n position: relative;\n}\n.snacky-product-card--list .snacky-product-card__image-wrap { width: 128px; height: 128px; }\n.snacky-product-card--details .snacky-product-card__image-wrap { width: 200px; height: 200px; margin: 0 auto; }\n.snacky-product-card__image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n.snacky-product-card__discount {\n position: absolute;\n top: 0;\n right: 0;\n}\n/* Sold Out is a centred scrim over the whole image, not a corner tag. It used\n to reuse __discount above, which pinned the pill to the top-right with no\n scrim at all. index.html's preview and ProductImage's\n .snacky-product-image-sold-overlay both centre it; this matches them. */\n.snacky-product-card__sold-overlay {\n position: absolute;\n inset: 0;\n margin: var(--spacing-12) var(--spacing-8);\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.46);\n}\n.snacky-product-card__name {\n margin: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-product-card--details .snacky-product-card__name {\n font-size: 14px;\n}\n.snacky-product-card__price-row {\n display: flex;\n /* Figma's \"Price container\" is CENTER with a 5px gap, and 5 is not on the\n spacing scale, so this is a literal on purpose. Was baseline + 4px, which\n made the row 25px instead of the specced 24px. */\n align-items: center;\n gap: 5px;\n}\n.snacky-product-card--details .snacky-product-card__price-row {\n align-items: flex-start;\n gap: var(--spacing-8);\n}\n.snacky-product-card__price {\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-product-card--details .snacky-product-card__price {\n /* Figma: 20px on a 36px line, which is what makes the price row 36 tall.\n Without the line-height it inherited small-bold's 24 and the row came out\n 27. */\n font-size: 20px;\n font-weight: 700;\n line-height: 36px;\n}\n.snacky-product-card__original-price {\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n font-size: 10px;\n color: var(--text-secondary);\n text-decoration: line-through;\n /* Figma authors this one at AUTO line height, not the token's 24px - it is\n the only text in the card that does, so it stays a literal. */\n line-height: normal;\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-product-card--details .snacky-product-card__original-price {\n font-size: 16px;\n font-weight: 700;\n line-height: 36px;\n}\n.snacky-product-card__footer-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-8);\n}\n.snacky-product-card__rating {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-icon-label);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-secondary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-product-card__rating-icon {\n width: 16px;\n height: 16px;\n color: var(--icon-brand);\n}\n.snacky-product-card__actions {\n display: flex;\n gap: var(--gap-cell);\n}\n/* Details page's Favorite/Share/Chat icon buttons use a slightly softer\n shadow than the standard Secondary icon-button elevation. */\n.snacky-product-card__actions--details button {\n box-shadow: 0 4px 4px rgba(0, 0, 0, 0.08);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/theme/tokens.css","../src/theme/base.css","../src/components/Button/Button.css","../src/components/IconButton/IconButton.css","../src/components/IconButton/UploadButton.css","../src/components/Input/TextField.css","../src/components/Input/SearchField.css","../src/components/Input/OtpField.css","../src/components/Input/CopyField.css","../src/components/Input/ChatInput.css","../src/components/Input/AddressResult.css","../src/components/Chips/Chips.css","../src/components/RadioButton/RadioButton.css","../src/components/Checkbox/Checkbox.css","../src/components/Toggle/Toggle.css","../src/components/Navbar/Navbar.css","../src/components/Tab/Tab.css","../src/components/Header/Header.css","../src/components/Banner/Banner.css","../src/components/Badge/Badge.css","../src/components/Callout/Callout.css","../src/components/List/List.css","../src/components/Accordion/Accordion.css","../src/components/Modal/BottomSheet.css","../src/components/Section/Section.css","../src/components/Stepper/Stepper.css","../src/components/Calendar/Calendar.css","../src/components/Avatar/Avatar.css","../src/components/Illustration/Illustration.css","../src/components/ProductImage/ProductImage.css","../src/components/ProductCard/ProductCard.css"],"sourcesContent":["/* Generated from tokens.json by scripts/generate-react-tokens.js - do not hand-edit. */\n:root {\n --color-primary-50: #fef8eb;\n --color-primary-100: #fde9bf;\n --color-primary-200: #fcdea1;\n --color-primary-300: #facf76;\n --color-primary-400: #f9c55b;\n --color-primary-500: #f8b732;\n --color-primary-600: #e2a72e;\n --color-primary-700: #b08224;\n --color-primary-800: #88651c;\n --color-primary-900: #684d15;\n --color-neutral-0: #ffffff;\n --color-neutral-10: #fdfdfd;\n --color-neutral-20: #f7f7f7;\n --color-neutral-50: #f3f3f3;\n --color-neutral-100: #e0e0e0;\n --color-neutral-200: #cccccc;\n --color-neutral-400: #a3a3a3;\n --color-neutral-500: #7a7a7a;\n --color-neutral-600: #6a6a6a;\n --color-neutral-700: #525252;\n --color-neutral-800: #4b4b4b;\n --color-neutral-900: #434343;\n --color-neutral-950: #333333;\n --color-red-50: #fdeeee;\n --color-red-100: #f9cbcb;\n --color-red-200: #f6b2b2;\n --color-red-300: #f28e8e;\n --color-red-400: #ef7979;\n --color-red-500: #eb5757;\n --color-red-600: #d64f4f;\n --color-red-700: #a73e3e;\n --color-red-800: #813030;\n --color-red-900: #632525;\n --bg-app: #f7f7f7;\n --bg-surface: #ffffff;\n --bg-surface-primary: #f8b732;\n --bg-surface-accent: #eb5757;\n --bg-surface-variant: #f3f3f3;\n --bg-surface-field: #ffffff;\n --bg-surface-highlight: #fef8eb;\n --bg-action-primary: #f8b732;\n --bg-action-primary-hover: #e2a72e;\n --bg-action-primary-pressed: #b08224;\n --bg-action-secondary: #ffffff;\n --bg-action-secondary-hover: #f3f3f3;\n --bg-action-secondary-pressed: #e0e0e0;\n --bg-action-disabled: #cccccc;\n --bg-action-primary-danger: #eb5757;\n --bg-action-primary-danger-hovered: #d64f4f;\n --bg-action-primary-danger-pressed: #a73e3e;\n --bg-overlay-dim: rgba(51,51,51,0.8);\n --border-main: #cccccc;\n --border-highlight: #fcdea1;\n --border-input-default: #cccccc;\n --border-input-active: #f8b732;\n --border-input-error: #eb5757;\n --border-action-secondary: #cccccc;\n --border-action-secondary-pressed: #a3a3a3;\n --border-action-danger: #eb5757;\n --border-action-disabled: #cccccc;\n --text-primary: #333333;\n --text-secondary: #7a7a7a;\n --text-placeholder: #7a7a7a;\n --text-disabled: #a3a3a3;\n --text-link: #88651c;\n --text-error: #a73e3e;\n --text-inverse: #ffffff;\n --text-on-action-primary: #333333;\n --text-on-action-secondary: #333333;\n --text-on-action-tertiary: #b08224;\n --text-on-action-tertiary-hovered: #88651c;\n --text-on-action-tertiary-pressed: #684d15;\n --text-action-danger: #d64f4f;\n --text-action-danger-hovered: #a73e3e;\n --text-action-danger-pressed: #813030;\n --text-action-disabled: #a3a3a3;\n --icon-primary: #333333;\n --icon-secondary: #525252;\n --icon-brand: #f8b732;\n --icon-disabled: #a3a3a3;\n --icon-active: #eb5757;\n --icon-on-accent: #ffffff;\n --spacing-2: 2px;\n --spacing-4: 4px;\n --spacing-8: 8px;\n --spacing-12: 12px;\n --spacing-16: 16px;\n --spacing-24: 24px;\n --spacing-32: 32px;\n --gap-icon-label: 4px;\n --gap-cell: 4px;\n --gap-text-icon: 8px;\n --gap-text-underline: 16px;\n --gap-layout-section-list: 8px;\n --gap-layout-block: 16px;\n --gap-layout-stack: 24px;\n --gap-layout-page: 32px;\n --margin-screen: 16px;\n --radius-4: 4px;\n --radius-6: 6px;\n --radius-8: 8px;\n --radius-10: 10px;\n --radius-20: 20px;\n --radius-100: 100px;\n --radius-999: 999px;\n --radius-field: 4px;\n --radius-tag: 6px;\n --radius-bubble: 8px;\n --radius-card: 10px;\n --radius-sheet-top: 20px;\n --radius-full: 100px;\n --size-icon-sm: 16px;\n --size-icon-md: 20px;\n --size-icon-lg: 24px;\n --size-avatar-sm: 32px;\n --size-avatar-md: 56px;\n --size-avatar-lg: 72px;\n --shadow-md: 0 4px 8px rgba(0,0,0,0.08);\n --shadow-lg: 0 10px 30px rgba(0,0,0,0.1);\n --shadow-top: 0 -4px 10px rgba(0,0,0,0.08);\n --font-h1-bold-family: 'Poppins', sans-serif;\n --font-h1-bold-size: 32px;\n --font-h1-bold-weight: 700;\n --font-h1-bold-line-height: 36px;\n --font-h1-bold-letter-spacing: 0.01em;\n --font-h2-bold-family: 'Poppins', sans-serif;\n --font-h2-bold-size: 20px;\n --font-h2-bold-weight: 700;\n --font-h2-bold-line-height: 36px;\n --font-h2-bold-letter-spacing: 0.01em;\n --font-h3-bold-family: 'Poppins', sans-serif;\n --font-h3-bold-size: 16px;\n --font-h3-bold-weight: 700;\n --font-h3-bold-line-height: 36px;\n --font-h3-bold-letter-spacing: 0.01em;\n --font-h3-regular-family: 'Poppins', sans-serif;\n --font-h3-regular-size: 16px;\n --font-h3-regular-weight: 400;\n --font-h3-regular-line-height: 36px;\n --font-h3-regular-letter-spacing: normal;\n --font-body-semibold-family: 'Poppins', sans-serif;\n --font-body-semibold-size: 14px;\n --font-body-semibold-weight: 600;\n --font-body-semibold-line-height: 24px;\n --font-body-semibold-letter-spacing: normal;\n --font-body-regular-family: 'Poppins', sans-serif;\n --font-body-regular-size: 14px;\n --font-body-regular-weight: 400;\n --font-body-regular-line-height: 24px;\n --font-body-regular-letter-spacing: normal;\n --font-small-semibold-family: 'Poppins', sans-serif;\n --font-small-semibold-size: 12px;\n --font-small-semibold-weight: 600;\n --font-small-semibold-line-height: 24px;\n --font-small-semibold-letter-spacing: normal;\n --font-small-bold-family: 'Poppins', sans-serif;\n --font-small-bold-size: 12px;\n --font-small-bold-weight: 700;\n --font-small-bold-line-height: 24px;\n --font-small-bold-letter-spacing: 0.01em;\n --font-small-regular-family: 'Poppins', sans-serif;\n --font-small-regular-size: 12px;\n --font-small-regular-weight: 400;\n --font-small-regular-line-height: 24px;\n --font-small-regular-letter-spacing: normal;\n --font-caption-semibold-family: 'Poppins', sans-serif;\n --font-caption-semibold-size: 10px;\n --font-caption-semibold-weight: 600;\n --font-caption-semibold-line-height: 23px;\n --font-caption-semibold-letter-spacing: 0.01em;\n --font-caption-regular-family: 'Poppins', sans-serif;\n --font-caption-regular-size: 10px;\n --font-caption-regular-weight: 400;\n --font-caption-regular-line-height: 16px;\n --font-caption-regular-letter-spacing: 0.01em;\n}\n","/* Base rules every Snacky component depends on.\n *\n * The docs site (../../index.html) opens with a global\n * `*,*::before,*::after{box-sizing:border-box}` reset, so its Live Preview has\n * always rendered components at their spec sizes. The package ships no reset,\n * and only some of its own selectors set the property, so on a host page\n * without one every fixed-size component with padding came out oversized:\n * `.snacky-product-card--list` measured 168px instead of 152, and\n * `.snacky-iconbtn--primary` 48px instead of 32.\n *\n * Scoped to `snacky-*` rather than `*` so it never touches the host page's own\n * elements, or the content a caller passes into a component's slot.\n */\n[class^='snacky-'],\n[class*=' snacky-'],\n[class^='snacky-']::before,\n[class^='snacky-']::after,\n[class*=' snacky-']::before,\n[class*=' snacky-']::after {\n box-sizing: border-box;\n}\n",".snacky-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* Figma gives every variant a fixed 48 (large) / 40 (small) height and draws\n Secondary's stroke INSIDE it. Without an explicit height the box grew from\n padding alone, so Secondary's 1px border pushed it to 50 while every other\n variant sat at 48. */\n height: 48px;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: var(--radius-field);\n border: none;\n font-family: var(--font-small-semibold-family);\n font-size: var(--font-small-semibold-size);\n font-weight: var(--font-small-semibold-weight);\n line-height: var(--font-small-semibold-line-height);\n cursor: pointer;\n white-space: nowrap;\n transition: background-color 0.12s ease, border-color 0.12s ease, color 0.12s ease;\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n\n.snacky-btn:disabled {\n cursor: not-allowed;\n}\n\n.snacky-btn--small {\n height: 40px;\n padding: var(--spacing-8) var(--spacing-8);\n}\n\n/* Primary */\n.snacky-btn--primary {\n background: var(--bg-action-primary);\n color: var(--text-on-action-primary);\n}\n.snacky-btn--primary:hover:not(:disabled) { background: var(--bg-action-primary-hover); }\n.snacky-btn--primary:active:not(:disabled) { background: var(--bg-action-primary-pressed); }\n.snacky-btn--primary:disabled { background: var(--bg-action-disabled); color: var(--text-action-disabled); }\n\n/* Primary + Danger */\n.snacky-btn--primary.snacky-btn--danger {\n background: var(--bg-action-primary-danger);\n color: var(--text-on-action-primary);\n}\n.snacky-btn--primary.snacky-btn--danger:hover:not(:disabled) { background: var(--bg-action-primary-danger-hovered); }\n.snacky-btn--primary.snacky-btn--danger:active:not(:disabled) { background: var(--bg-action-primary-danger-pressed); }\n/* Flagged asymmetry, confirmed against the site's own live implementation:\n Primary+Danger's disabled state carries a border that plain Primary's\n disabled state does not. */\n.snacky-btn--primary.snacky-btn--danger:disabled { background: var(--bg-action-disabled); color: var(--text-action-disabled); border: 1px solid var(--border-action-disabled); }\n\n/* Secondary */\n.snacky-btn--secondary {\n background: var(--bg-action-secondary);\n border: 1px solid var(--border-action-secondary);\n color: var(--text-on-action-primary);\n}\n.snacky-btn--secondary:hover:not(:disabled) { background: var(--bg-action-secondary-hover); }\n.snacky-btn--secondary:active:not(:disabled) { background: var(--bg-action-secondary-pressed); }\n.snacky-btn--secondary:disabled { color: var(--text-action-disabled); }\n\n/* Secondary + Danger */\n.snacky-btn--secondary.snacky-btn--danger {\n border-color: var(--border-action-danger);\n color: var(--text-action-danger);\n}\n.snacky-btn--secondary.snacky-btn--danger:hover:not(:disabled) { background: var(--bg-action-secondary-hover); }\n.snacky-btn--secondary.snacky-btn--danger:active:not(:disabled) { background: var(--bg-action-secondary-pressed); }\n.snacky-btn--secondary.snacky-btn--danger:disabled { border-color: var(--border-action-disabled); color: var(--text-action-disabled); }\n\n/* Tertiary - ghost, never a fill or border, including disabled */\n.snacky-btn--tertiary {\n background: transparent;\n color: var(--text-on-action-tertiary);\n}\n.snacky-btn--tertiary:hover:not(:disabled) { color: var(--text-on-action-tertiary-hovered); }\n.snacky-btn--tertiary:active:not(:disabled) { color: var(--text-on-action-tertiary-pressed); }\n.snacky-btn--tertiary:disabled { color: var(--text-action-disabled); }\n\n/* Tertiary + Danger */\n.snacky-btn--tertiary.snacky-btn--danger { color: var(--text-action-danger); }\n.snacky-btn--tertiary.snacky-btn--danger:hover:not(:disabled) { color: var(--text-action-danger-hovered); }\n.snacky-btn--tertiary.snacky-btn--danger:active:not(:disabled) { color: var(--text-action-danger-pressed); }\n.snacky-btn--tertiary.snacky-btn--danger:disabled { color: var(--text-action-disabled); }\n\n.snacky-btn__icon {\n position: absolute;\n left: var(--spacing-8);\n top: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n}\n",".snacky-iconbtn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n border-radius: var(--radius-full);\n cursor: pointer;\n transition: background-color 0.12s ease;\n}\n.snacky-iconbtn:disabled { cursor: not-allowed; }\n.snacky-iconbtn svg,\n.snacky-iconbtn img { width: 100%; height: 100%; }\n\n/* Primary - 32px default, 24px small */\n.snacky-iconbtn--primary {\n width: 32px;\n height: 32px;\n padding: var(--spacing-8);\n background: var(--bg-action-primary);\n}\n/* Figma binds every icon-button glyph to an icon/* variable, not a text/* one.\n Same #333333 either way, but the icon token is the one that is actually\n specced, so a future retint of icon/icon-primary reaches these. */\n.snacky-iconbtn--primary .snacky-iconbtn__icon { width: 16px; height: 16px; color: var(--icon-primary); }\n.snacky-iconbtn--primary:hover:not(:disabled) { background: var(--bg-action-primary-hover); }\n.snacky-iconbtn--primary:active:not(:disabled) { background: var(--bg-action-primary-pressed); }\n.snacky-iconbtn--primary:disabled { background: var(--bg-action-disabled); border: 1px solid var(--border-action-disabled); }\n.snacky-iconbtn--primary:disabled .snacky-iconbtn__icon { color: var(--icon-disabled); }\n\n.snacky-iconbtn--primary.snacky-iconbtn--small {\n width: 24px;\n height: 24px;\n padding: var(--spacing-4);\n}\n\n/* Secondary - 40px, elevated, can act as a toggle via `selected` */\n.snacky-iconbtn--secondary {\n width: 40px;\n height: 40px;\n padding: var(--spacing-8);\n background: var(--bg-action-secondary);\n box-shadow: var(--shadow-md);\n}\n/* icon-primary (#333333), NOT icon-secondary. Figma's secondary set binds\n default/hovered/pressed all to icon/icon-primary; icon-secondary (#525252)\n appears only on the tertiary variant's hover. */\n.snacky-iconbtn--secondary .snacky-iconbtn__icon { width: 20px; height: 20px; color: var(--icon-primary); }\n.snacky-iconbtn--secondary:hover:not(:disabled) { background: var(--bg-action-secondary-hover); }\n.snacky-iconbtn--secondary:active:not(:disabled) { background: var(--bg-action-secondary-pressed); }\n.snacky-iconbtn--secondary:disabled { background: var(--bg-action-disabled); box-shadow: none; }\n.snacky-iconbtn--secondary:disabled .snacky-iconbtn__icon { color: var(--icon-disabled); }\n.snacky-iconbtn--secondary.snacky-iconbtn--selected .snacky-iconbtn__icon { color: var(--icon-active); }\n\n/* Tertiary - 40px, no resting fill, only a transient state-layer overlay */\n.snacky-iconbtn--tertiary {\n width: 40px;\n height: 40px;\n padding: var(--spacing-8);\n background: transparent;\n}\n.snacky-iconbtn--tertiary .snacky-iconbtn__icon { width: 24px; height: 24px; color: var(--icon-primary); }\n.snacky-iconbtn--tertiary:hover:not(:disabled) { background: rgba(0, 0, 0, 0.08); }\n.snacky-iconbtn--tertiary:hover:not(:disabled) .snacky-iconbtn__icon { color: var(--icon-secondary); }\n.snacky-iconbtn--tertiary:active:not(:disabled) { background: rgba(0, 0, 0, 0.12); }\n.snacky-iconbtn--tertiary:disabled .snacky-iconbtn__icon { color: var(--icon-disabled); }\n",".snacky-upload {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 72px;\n height: 72px;\n padding: var(--spacing-24);\n border-radius: var(--radius-full);\n background: var(--bg-surface);\n border: 1px dashed var(--border-main);\n cursor: pointer;\n transition: background-color 0.12s ease;\n}\n.snacky-upload svg,\n.snacky-upload img { width: 100%; height: 100%; }\n.snacky-upload:hover { background: var(--bg-action-secondary-hover); }\n.snacky-upload:active { background: var(--bg-action-secondary-pressed); }\n",".snacky-field {\n display: flex;\n align-items: center;\n gap: var(--gap-text-icon);\n width: 100%;\n height: 48px;\n padding: var(--spacing-12) var(--spacing-8);\n background: var(--bg-surface-field);\n border: 1px solid var(--border-input-default);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n transition: border-color 0.12s ease;\n}\n\n.snacky-field:focus-within {\n border-color: var(--border-input-active);\n}\n\n.snacky-field--error {\n border-color: var(--border-input-error) !important;\n}\n\n.snacky-field--disabled {\n background: var(--bg-surface-variant);\n cursor: not-allowed;\n}\n\n.snacky-field__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n color: var(--text-primary);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n\n.snacky-field__input::placeholder {\n color: var(--text-placeholder);\n}\n\n.snacky-field__input:disabled {\n cursor: not-allowed;\n color: var(--text-disabled);\n}\n\n.snacky-field__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n /* Figma binds the resting glyph to text/text-placeholder and the focused one\n to text/text-primary, not icon-secondary. */\n color: var(--text-placeholder);\n}\n.snacky-field:focus-within .snacky-field__icon { color: var(--text-primary); }\n\n.snacky-field__icon--button {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n color: inherit;\n}\n\n.snacky-field-label {\n display: block;\n margin-bottom: var(--spacing-4);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n\n.snacky-field-error {\n display: block;\n margin-top: var(--spacing-4);\n font-family: var(--font-caption-regular-family);\n font-size: var(--font-caption-regular-size);\n color: var(--text-error);\n font-weight: var(--font-caption-regular-weight);\n line-height: var(--font-caption-regular-line-height);\n letter-spacing: var(--font-caption-regular-letter-spacing);\n}\n",".snacky-search {\n display: flex;\n align-items: center;\n gap: var(--spacing-12);\n /* Animates 260px -> 312px on focus, matching the site's own verified\n implementation - not a fluid 100% field. */\n width: 260px;\n height: 40px;\n padding: var(--spacing-8) var(--spacing-12);\n background: var(--bg-surface-variant);\n border: 1px solid transparent;\n border-radius: var(--radius-field);\n box-sizing: border-box;\n transition: border-color 0.12s ease, width 0.15s ease;\n}\n.snacky-search:focus-within {\n width: 312px;\n border-color: var(--border-input-active);\n}\n.snacky-search__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-search__input::placeholder {\n color: var(--text-placeholder);\n}\n.snacky-search__icon {\n display: inline-flex;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n color: var(--text-placeholder);\n}\n.snacky-search__clear {\n display: inline-flex;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n color: var(--text-placeholder);\n}\n",".snacky-otp {\n display: flex;\n gap: var(--spacing-4);\n}\n.snacky-otp__cell {\n width: 48px;\n height: 48px;\n padding: 0;\n box-sizing: border-box;\n text-align: center;\n border: 1px solid transparent;\n border-radius: var(--radius-field);\n background: var(--bg-surface-variant);\n font-family: var(--font-h3-bold-family);\n font-size: var(--font-h3-bold-size);\n font-weight: var(--font-h3-bold-weight);\n /* 46px, not the h3Bold token's 36px - specifically tuned to center a\n single digit in the 48px cell, per the site's own implementation. */\n line-height: 46px;\n letter-spacing: 0.16px;\n color: var(--text-primary);\n outline: none;\n transition: border-color 0.1s ease;\n}\n.snacky-otp__cell:focus {\n border-color: var(--border-input-active);\n}\n/* Figma defines no disabled OTP variant (only default/active/filled), so this\n is not a spec value: it reuses the disabled text colour TextField already\n uses, so the prop is at least visible. Without it a disabled field rendered\n identically to an enabled one and the prop looked broken. */\n.snacky-otp__cell:disabled {\n cursor: not-allowed;\n color: var(--text-disabled);\n}\n",".snacky-copy {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n /* Figma has two heights here: 64 by default, because the Copy action sits in\n its own 8px-padded 40px-tall frame, and 48 once copied, where the action\n collapses to plain text. The package was pinned at 48 for both. */\n height: 64px;\n padding: var(--spacing-12);\n background: var(--bg-surface-variant);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-copy__value {\n font-family: var(--font-body-semibold-family);\n font-size: var(--font-body-semibold-size);\n font-weight: var(--font-body-semibold-weight);\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n.snacky-copy__action {\n flex-shrink: 0;\n margin-left: var(--spacing-12);\n background: none;\n border: none;\n padding: var(--spacing-8);\n cursor: pointer;\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-link);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-copy__action--copied {\n color: var(--text-secondary);\n /* the copied state is plain text, not a padded button */\n padding: 0;\n}\n.snacky-copy:has(.snacky-copy__action--copied) {\n height: 48px;\n}\n",".snacky-chatfield {\n display: flex;\n align-items: center;\n gap: var(--gap-text-icon);\n width: 100%;\n height: 72px;\n padding: var(--spacing-12);\n background: var(--bg-surface);\n border: 1px solid var(--border-input-default);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n transition: border-color 0.12s ease;\n}\n.snacky-chatfield:focus-within {\n border-color: var(--border-input-active);\n}\n.snacky-chatfield__input {\n flex: 1;\n min-width: 0;\n border: none;\n outline: none;\n background: transparent;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-chatfield__input::placeholder {\n color: var(--text-placeholder);\n}\n.snacky-chatfield__send {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n border: none;\n border-radius: var(--radius-full);\n /* Transparent with a muted icon when empty, not a grayed-out disabled\n circle - it only fills once there's something to send. */\n background: transparent;\n /* Figma binds the resting send glyph to text/text-placeholder (#7a7a7a). */\n color: var(--text-placeholder);\n cursor: default;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.snacky-chatfield__send--active {\n background: var(--bg-action-primary);\n /* White on the accent circle. Figma binds this to background/surface/bg-surface,\n which is the same #ffffff but an odd name for an icon colour, so the\n equivalent icon token is used here. It is NOT the dark text-on-action-primary\n that a labelled button would use. */\n color: var(--icon-on-accent);\n cursor: pointer;\n}\n.snacky-chatfield__send--active:hover { background: var(--bg-action-primary-hover); }\n",".snacky-address-result {\n display: flex;\n align-items: flex-start;\n gap: var(--gap-text-icon);\n width: 100%;\n /* Figma's \"Address, Search (Selected)\" is 72: 12/12 padding around a 24 title\n and a 24 subtitle, with the stroke drawn INSIDE. box-sizing:border-box\n plus this explicit height already absorbs a real border into the 72px\n total (verified: both render 72px), so a plain border is correct here -\n unlike Tab, which has no explicit height for box-sizing to apply to. */\n height: 72px;\n padding: var(--spacing-12) var(--spacing-8);\n background: var(--bg-surface);\n border: 1px solid var(--border-input-default);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n cursor: pointer;\n text-align: left;\n}\n.snacky-address-result__icon {\n display: inline-flex;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n color: var(--text-placeholder);\n margin-top: 2px;\n}\n.snacky-address-result__title {\n margin: 0;\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-address-result__subtitle {\n margin: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n",".snacky-chip {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-4);\n /* Figma gives both chip types a fixed 40 with the stroke inside. Without an\n explicit height the 1px border stacked on 8 + 24 + 8 and made it 42. */\n height: 40px;\n padding: var(--spacing-8);\n border-radius: var(--radius-full);\n background: var(--bg-surface);\n border: 1px solid var(--border-main);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n cursor: pointer;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-chip--selected {\n background: var(--bg-surface-highlight);\n border-color: var(--color-primary-500);\n}\n.snacky-chip__thumb {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n object-fit: contain;\n}\n",".snacky-radio-option {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-icon-label);\n cursor: pointer;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-radio-option--disabled {\n cursor: not-allowed;\n}\n.snacky-radio {\n appearance: none;\n width: 24px;\n height: 24px;\n margin: 0;\n flex-shrink: 0;\n box-sizing: border-box;\n border-radius: 999px;\n border: 1px solid var(--border-main);\n background: transparent;\n cursor: pointer;\n position: relative;\n}\n.snacky-radio:checked {\n /* Figma binds both the ring and the dot to background/action/bg-action-primary\n (same #f8b732 as the primary-500 primitive this used before, but the real\n semantic token the file actually references). */\n border-color: var(--bg-action-primary);\n}\n.snacky-radio:checked::after {\n content: '';\n position: absolute;\n inset: 0;\n margin: auto;\n width: 12px;\n height: 12px;\n border-radius: 999px;\n background: var(--bg-action-primary);\n}\n.snacky-radio:disabled {\n cursor: not-allowed;\n border-color: var(--border-main);\n background: var(--bg-surface-variant);\n}\n/* Disabled suppresses the selected dot entirely, even if checked - matches\n the site's own verified implementation exactly. */\n.snacky-radio:disabled::after {\n display: none;\n}\n",".snacky-checkbox-option {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-icon-label);\n cursor: pointer;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-checkbox {\n appearance: none;\n width: 24px;\n height: 24px;\n margin: 0;\n box-sizing: border-box;\n flex-shrink: 0;\n /* Off state is a white field surface with an outline - updated in Figma\n (node 444:11084) from an earlier solid neutral-500 fill to this outline\n style. Figma binds the stroke to border/border-main, not the\n border-input-default this used before (same #cccccc either way). */\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n cursor: pointer;\n position: relative;\n background: var(--bg-surface-field);\n}\n.snacky-checkbox:checked {\n background: var(--color-primary-500);\n border-color: var(--color-primary-500);\n}\n.snacky-checkbox:checked::after {\n content: '';\n position: absolute;\n inset: 3px;\n /* Confirmed against Figma: the checkmark is white (icon-on-accent), not\n text-primary - it reads as a white cutout in the compound icon path, not a\n dark mark layered on top. */\n background: var(--icon-on-accent);\n -webkit-mask: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E\") center / contain no-repeat;\n mask: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E\") center / contain no-repeat;\n}\n",".snacky-toggle {\n position: relative;\n display: inline-block;\n width: 56px;\n height: 32px;\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n appearance: none;\n}\n.snacky-toggle:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n.snacky-toggle__track {\n position: absolute;\n left: 0;\n top: 4px;\n width: 56px;\n height: 24px;\n border-radius: 12px;\n /* Bound to bg-action-disabled in Figma (same #cccccc as neutral-200, this\n just matches the actual token binding, confirmed via the file's variables). */\n background: var(--bg-action-disabled);\n transition: background-color 0.2s ease;\n}\n.snacky-toggle--on .snacky-toggle__track {\n /* \"Accent tint\" per Figma - a light wash, not the solid accent color. Figma's\n actual paint (#fffbe9) isn't bound to any variable and isn't quite\n bg-surface-highlight/primary-50 (#fef8eb) either, close enough (a few\n values out of 255 per channel) that this token is used rather than a new\n one-off raw color for an likely-untokenized value in Figma itself. */\n background: var(--bg-surface-highlight);\n}\n.snacky-toggle__thumb {\n position: absolute;\n top: 0;\n left: 0;\n width: 32px;\n height: 32px;\n border-radius: 999px;\n /* Confirmed against Figma (bound to the icon-disabled variable): #a3a3a3,\n not neutral-500 (#7a7a7a). */\n background: var(--icon-disabled);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n transition: left 0.2s ease, background-color 0.2s ease;\n}\n.snacky-toggle--on .snacky-toggle__thumb {\n left: 24px;\n background: var(--color-primary-500);\n}\n",".snacky-navbar {\n display: flex;\n width: 100%;\n background: var(--bg-surface);\n box-shadow: var(--shadow-top);\n}\n.snacky-navbar__item {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--gap-icon-label);\n padding: var(--spacing-12) 0;\n background: none;\n border: none;\n cursor: pointer;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-secondary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-navbar__item--active {\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-navbar__icon {\n display: inline-flex;\n width: 20px;\n height: 20px;\n /* Icon and label use different inactive colors in the site's own\n verified implementation - icon-secondary, not text-secondary. */\n color: var(--icon-secondary);\n}\n.snacky-navbar__item--active .snacky-navbar__icon {\n color: var(--color-primary-500);\n}\n",".snacky-tabrow {\n display: flex;\n gap: var(--spacing-24);\n border-bottom: 1px solid var(--border-main);\n}\n.snacky-tab {\n background: none;\n border: none;\n /* Figma's own token for this exact gap is gap.text-underline (16px,\n documented as \"Text → underline indicator gap (Tab)\"), not spacing-12.\n The accent line is painted as an inset box-shadow rather than a real\n border so it doesn't add its own 2px on top - a real border pushed the\n tab to 38 against Figma's declared 40 (24 text + 16 gap, no extra). The\n transparent/coloured swap below still reserves the same space either\n way, so switching tabs causes no layout shift. */\n box-shadow: inset 0 -2px 0 0 transparent;\n padding: 0 0 var(--gap-text-underline) 0;\n cursor: pointer;\n font-family: var(--font-body-regular-family);\n font-size: 14px;\n line-height: var(--font-body-regular-line-height);\n color: var(--text-primary);\n transition: color 0.15s ease;\n font-weight: var(--font-body-regular-weight);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n.snacky-tab--active {\n font-family: var(--font-body-semibold-family);\n font-weight: var(--font-body-semibold-weight);\n /* Re-verified against Figma's actual bound variables (an earlier pass\n read this as the raw primary-700 primitive): the active label's text\n fill is bound to text/on-action/text-on-action-tertiary (#b08224,\n same value as primary-700, but the real semantic token, matching the\n Tertiary button's default label color). The underline's stroke is\n bound to border/input/border-input-active (#f8b732) - an input-focus\n token reused here, which reads as incidental Figma variable reuse\n rather than an intentional shared role, so this keeps the primitive\n --color-primary-500 instead of adopting a misleading token name. */\n color: var(--text-on-action-tertiary);\n box-shadow: inset 0 -2px 0 0 var(--color-primary-500);\n font-size: var(--font-body-semibold-size);\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n",".snacky-header {\n display: flex;\n align-items: center;\n width: 100%;\n box-sizing: border-box;\n padding: var(--spacing-16) var(--spacing-8);\n background: var(--bg-surface);\n}\n.snacky-header__icon-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n border-radius: var(--radius-full);\n background: transparent;\n color: var(--icon-primary);\n cursor: pointer;\n}\n.snacky-header__title-row {\n flex: 1;\n min-width: 0;\n display: flex;\n justify-content: center;\n}\n/* When a leading icon is present but there's no trailing action, the title\n row gets matching right padding so the text stays optically centered\n against the whole bar, not just the leftover space next to the icon. */\n.snacky-header__title-row--balance {\n padding-right: 40px;\n}\n.snacky-header__title {\n font-family: var(--font-h3-bold-family);\n font-weight: var(--font-h3-bold-weight);\n font-size: var(--font-h3-bold-size);\n line-height: var(--font-h3-bold-line-height);\n letter-spacing: var(--font-h3-bold-letter-spacing);\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n",".snacky-banner-hero {\n display: block;\n width: 100%;\n /* Its two siblings below both pin an aspect-ratio; this one did not, so the\n artwork's own proportions decided the height and a 6.4:1 strip rendered the\n banner 49 tall instead of Figma's 312x128. */\n aspect-ratio: 312 / 128;\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n object-fit: cover;\n}\n.snacky-banner-square {\n display: block;\n width: 100%;\n aspect-ratio: 360 / 334;\n border-radius: var(--radius-bubble);\n object-fit: cover;\n}\n.snacky-banner-full {\n display: block;\n width: 100%;\n aspect-ratio: 360 / 176;\n object-fit: cover;\n}\n.snacky-banner-point-balance {\n /* Figma's frame is 312 wide, hugging its content, not filled full-bleed -\n `width:100%` plus `justify-content:space-between` was stretching the two\n item groups apart across whatever width the host page gave it instead of\n keeping them grouped on the left like Figma. inline-flex hugs by default. */\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-8) var(--spacing-16);\n /* 8px, per Figma's `Property 1=point-balance` frame. Primitive rather than a\n semantic gap token because none covers this: gap.text-icon is also 8px but\n is documented as a field row's text-to-icon gap, not the split between the\n banner's two halves. */\n gap: var(--spacing-8);\n background: var(--bg-surface-highlight);\n /* Figma draws this stroke INSIDE a 60-tall frame. There's no explicit height\n on this rule, so box-sizing:border-box alone can't absorb a real border -\n unlike AddressResult, which has a fixed height and uses a plain border.\n An inset shadow paints the same 1px line without adding to the box, so the\n row's own content (56px: 20 padding + 36 item) plus this 8+8 padding\n still lands on 60 rather than 62. */\n box-shadow: inset 0 0 0 1px var(--color-primary-500);\n border-radius: var(--radius-card);\n box-sizing: border-box;\n}\n.snacky-banner-point-balance__item {\n display: flex;\n align-items: center;\n /* 12px, per Figma's \"Points and Balance Container\". This was gap.icon-label\n (4px), which is documented as a *vertical* navbar/menu icon-to-label gap,\n so it was wrong on both the axis and the value and left the icon jammed\n against the text. No semantic gap token is 12px, hence the primitive. */\n gap: var(--spacing-12);\n}\n.snacky-banner-point-balance__icon {\n /* Figma binds both icons to icon/icon-brand and draws them at 16x16. Without\n an explicit colour the icons render currentColor, which inherits the row's\n dark label colour instead of the accent. */\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: var(--icon-brand);\n}\n.snacky-banner-point-balance__label {\n margin: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n /* Figma authors this label node at 20 tall even though its line-height reads\n 24, and 20 + the value's 24 is what makes the banner exactly 60. Deliberate\n override of the token's 24. */\n line-height: 20px;\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-banner-point-balance__value {\n margin: 0;\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-banner-point-balance__divider {\n width: 1px;\n align-self: stretch;\n background: var(--color-primary-500);\n}\n\n.snacky-banner-alert {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n /* 40 is Figma's single-line sample, not a cap - a fixed height clipped any\n message long enough to wrap onto a second line. min-height keeps the\n 40px default and lets the row hug taller wrapped content instead. */\n min-height: 40px;\n padding: var(--spacing-8) var(--spacing-24);\n gap: var(--spacing-4);\n background: var(--bg-surface-accent);\n box-sizing: border-box;\n}\n.snacky-banner-alert__message {\n margin: 0;\n /* Lets the message shrink and wrap within the row instead of pushing the\n countdown out or overflowing sideways - a flex item's default min-width\n is its unwrapped content width, which defeats wrapping. */\n flex: 1 1 auto;\n min-width: 0;\n font-family: var(--font-body-regular-family);\n font-size: var(--font-body-regular-size);\n color: var(--text-inverse);\n font-weight: var(--font-body-regular-weight);\n line-height: var(--font-body-regular-line-height);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n.snacky-banner-alert__countdown {\n margin: 0;\n font-family: var(--font-body-semibold-family);\n font-weight: var(--font-body-semibold-weight);\n color: var(--text-inverse);\n font-size: var(--font-body-semibold-size);\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n",".snacky-badge-wrap {\n position: relative;\n display: inline-flex;\n}\n.snacky-badge-notification {\n position: absolute;\n top: -8px;\n right: -10px;\n min-width: 20px;\n height: 19px;\n padding: var(--spacing-2) var(--spacing-4);\n border-radius: 999px;\n background: var(--bg-surface-accent);\n color: var(--text-inverse);\n font-family: var(--font-caption-semibold-family);\n font-size: var(--font-caption-semibold-size);\n font-weight: var(--font-caption-semibold-weight);\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n letter-spacing: var(--font-caption-semibold-letter-spacing);\n}\n.snacky-discount-tag {\n /* Figma: 24 tall. The 16px caption line box plus 2/4 padding only made 20. */\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-2) var(--spacing-4);\n border-radius: var(--radius-tag);\n background: var(--bg-surface-accent);\n color: var(--text-inverse);\n font-family: var(--font-caption-semibold-family);\n font-size: var(--font-caption-semibold-size);\n font-weight: var(--font-caption-semibold-weight);\n line-height: var(--font-caption-semibold-line-height);\n letter-spacing: var(--font-caption-semibold-letter-spacing);\n}\n.snacky-soldout-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: 999px;\n background: rgba(51, 51, 51, 0.8);\n color: var(--text-inverse);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-variant-badge {\n display: inline-flex;\n align-items: center;\n /* Figma: 32 tall with the stroke inside; the 1px border was stacking on top. */\n height: 32px;\n padding: var(--spacing-8);\n border-radius: var(--radius-field);\n background: var(--bg-surface-highlight);\n border: 1px solid var(--color-primary-500);\n color: var(--text-primary);\n font-family: var(--font-caption-regular-family);\n font-size: var(--font-caption-regular-size);\n font-weight: var(--font-caption-regular-weight);\n line-height: var(--font-caption-regular-line-height);\n letter-spacing: var(--font-caption-regular-letter-spacing);\n}\n",".snacky-callout {\n display: inline-flex;\n flex-direction: column;\n gap: var(--spacing-4);\n max-width: 200px;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: var(--radius-bubble);\n font-family: var(--font-body-regular-family);\n font-size: var(--font-body-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-body-regular-weight);\n line-height: var(--font-body-regular-line-height);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n.snacky-callout--received {\n align-self: flex-start;\n background: var(--bg-surface);\n /* No box-shadow: confirmed against Figma (node 8690:7424), the Received\n bubble has an empty effects array, flat like Sent/Pending. */\n}\n.snacky-callout--sent,\n.snacky-callout--pending {\n align-self: flex-end;\n background: var(--color-primary-500);\n}\n.snacky-callout__message {\n margin: 0;\n width: 100%;\n}\n.snacky-callout__meta {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--spacing-4);\n width: 100%;\n font-family: var(--font-caption-regular-family);\n font-size: var(--font-caption-regular-size);\n color: var(--text-primary);\n text-align: right;\n font-weight: var(--font-caption-regular-weight);\n line-height: var(--font-caption-regular-line-height);\n letter-spacing: var(--font-caption-regular-letter-spacing);\n}\n.snacky-callout__meta-icon {\n width: 16px;\n height: 16px;\n display: inline-flex;\n}\n",".snacky-order-item {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-8);\n width: 100%;\n padding: var(--spacing-8) var(--spacing-12);\n background: var(--bg-surface);\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n box-sizing: border-box;\n text-align: left;\n}\n.snacky-order-item__top {\n display: flex;\n gap: var(--spacing-8);\n width: 100%;\n}\n.snacky-order-item__thumb-box {\n width: 56px;\n height: 56px;\n flex-shrink: 0;\n border-radius: var(--radius-field);\n /* No background: Figma's Image component set (usage=list) has no fill and no\n stroke on the 56x56 frame, it only holds the 48x48 photo. An earlier pass\n invented #f4f4f5 here, which is also 1-2 values off bg-surface-variant and\n contradicted ProductImage's own usage=\"list\", which correctly has none. */\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n}\n.snacky-order-item__thumb {\n width: 48px;\n height: 48px;\n object-fit: contain;\n}\n.snacky-order-item__info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n}\n.snacky-order-item__status {\n font-family: var(--font-small-semibold-family);\n font-weight: var(--font-small-semibold-weight);\n font-size: var(--font-small-semibold-size);\n line-height: 24px;\n color: var(--text-primary);\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n.snacky-order-item__status--cancelled {\n color: var(--text-error);\n}\n.snacky-order-item__name {\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__details {\n display: flex;\n align-items: center;\n gap: var(--spacing-8);\n width: 100%;\n /* Figma's \"Details Container\" is padded 8/0. Without it every order variant\n came out exactly 16px short. */\n padding: var(--spacing-8) 0;\n}\n.snacky-order-item__count {\n flex: 1;\n min-width: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-secondary);\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__total {\n flex: 1;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n text-align: right;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__total b {\n font-weight: var(--font-small-bold-weight);\n letter-spacing: 0.12px;\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n}\n.snacky-order-item__total--cod {\n flex: 0 1 auto;\n}\n.snacky-order-item__cod {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n /* Figma's \"COD Container\" is 24 tall with its stroke inside. Without an\n explicit height the 1px border stacked on the 24px line box and pushed the\n whole card to 122 instead of 120. */\n height: 24px;\n padding: 0 var(--spacing-8);\n border-radius: var(--radius-field);\n border: 1px solid var(--border-main);\n background: var(--bg-surface);\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n font-size: var(--font-small-bold-size);\n line-height: 24px;\n letter-spacing: 0.12px;\n color: var(--text-secondary);\n}\n.snacky-order-item__deadline {\n width: 100%;\n background: var(--bg-surface-highlight);\n text-align: center;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-order-item__action-row {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n}\n\n.snacky-notif-item {\n display: flex;\n flex-direction: column;\n gap: 0;\n width: 100%;\n box-sizing: border-box;\n padding: var(--spacing-8) var(--spacing-12);\n background: var(--bg-surface);\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n text-align: left;\n}\n.snacky-notif-item--unread {\n background: var(--bg-surface-highlight);\n}\n.snacky-notif-item__title {\n font-family: var(--font-small-semibold-family);\n font-weight: var(--font-small-semibold-weight);\n font-size: var(--font-small-semibold-size);\n line-height: 24px;\n color: var(--text-primary);\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n.snacky-notif-item__message {\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n line-height: 24px;\n color: var(--text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-weight: var(--font-small-regular-weight);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n",".snacky-accordion {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n width: 100%;\n}\n.snacky-accordion__header {\n display: flex;\n align-items: center;\n gap: var(--gap-text-icon);\n width: 100%;\n padding: var(--spacing-12) var(--spacing-8);\n background: var(--bg-surface);\n border: none;\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n cursor: pointer;\n text-align: left;\n color: var(--text-primary);\n}\n.snacky-accordion__icon {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n}\n.snacky-accordion__title {\n flex: 1;\n font-family: var(--font-body-semibold-family);\n font-size: 14px;\n font-weight: var(--font-body-semibold-weight);\n line-height: var(--font-body-semibold-line-height);\n letter-spacing: var(--font-body-semibold-letter-spacing);\n}\n.snacky-accordion--icon .snacky-accordion__title {\n font-family: var(--font-small-semibold-family);\n font-size: var(--font-small-semibold-size);\n font-weight: var(--font-small-semibold-weight);\n line-height: var(--font-small-semibold-line-height);\n letter-spacing: var(--font-small-semibold-letter-spacing);\n}\n.snacky-accordion__chevron {\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n /* Confirmed against Figma: icon-secondary in both open and closed states,\n not inherited text-primary. */\n color: var(--icon-secondary);\n transition: transform 0.15s ease;\n}\n.snacky-accordion__chevron--open {\n transform: rotate(180deg);\n}\n/* Confirmed against Figma (node 8696:6572): the expanded panel is its own\n separate elevated card (own radius-field + shadow-md), not a padding-only\n section merged into the header's card, and there is no bordered variant\n at all - Figma never draws a border on either the icon or no-icon case. */\n.snacky-accordion__panel {\n padding: var(--spacing-12);\n background: var(--bg-surface);\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-md);\n /* Figma's \"Content Text\" is 14/24 (body-regular), not the 12px small-regular\n the header uses. At 12px the copy re-wrapped and the expanded card came out\n 292 tall instead of 340. */\n font-family: var(--font-body-regular-family);\n font-size: var(--font-body-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-body-regular-weight);\n line-height: var(--font-body-regular-line-height);\n letter-spacing: var(--font-body-regular-letter-spacing);\n}\n",".snacky-sheet-overlay {\n position: fixed;\n inset: 0;\n background: var(--bg-overlay-dim);\n display: flex;\n align-items: flex-end;\n justify-content: center;\n z-index: 1000;\n}\n.snacky-sheet {\n width: 100%;\n max-width: 480px;\n max-height: 90vh;\n overflow-y: auto;\n background: var(--bg-surface);\n border-radius: var(--radius-sheet-top) var(--radius-sheet-top) 0 0;\n padding: var(--spacing-24);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--gap-layout-block);\n}\n.snacky-sheet__handle {\n width: 36px;\n height: 4px;\n border-radius: 999px;\n background: var(--color-neutral-200);\n margin: 0 auto var(--spacing-8);\n}\n",".snacky-section {\n width: 100%;\n padding: var(--spacing-16) var(--spacing-24);\n background: var(--bg-surface);\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--gap-layout-block);\n}\n.snacky-section__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n.snacky-section__title {\n margin: 0;\n font-family: var(--font-h3-bold-family);\n font-size: var(--font-h3-bold-size);\n font-weight: var(--font-h3-bold-weight);\n color: var(--text-primary);\n line-height: var(--font-h3-bold-line-height);\n letter-spacing: var(--font-h3-bold-letter-spacing);\n}\n.snacky-section__action {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n padding: var(--spacing-4);\n border: none;\n border-radius: var(--radius-full);\n background: var(--bg-action-primary);\n /* Re-verified against Figma's actual bound variable on the chevron vector\n (not the icon instance's own unrelated white frame fill, which was\n mistakenly read as the icon color in an earlier pass): text/text-primary,\n #333333 - same rendered color as --text-on-action-primary, which is what\n this originally was, but --text-primary is the variable Figma actually\n binds here. */\n color: var(--text-primary);\n cursor: pointer;\n}\n.snacky-section__action:hover { background: var(--bg-action-primary-hover); }\n",".snacky-stepper {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n /* Figma \"Order status progress\": VERTICAL, 32 between steps. */\n gap: var(--spacing-32);\n}\n\n.snacky-stepper__step {\n position: relative;\n display: flex;\n align-items: flex-start;\n /* Figma \"Order status step\": HORIZONTAL, gap 16. The height follows the\n content - 48 with a timestamp, 24 without - which is what makes the four\n documented progress frames land on 288 / 264 / 216 / 216. Forcing 48 on\n every step made all four 288. */\n gap: var(--gap-layout-block);\n}\n\n/* The connector is one -90deg-rotated dashed LINE spanning the whole stepper in\n Figma. Drawing it per-step instead survives any number of steps, and the\n dashes line up either way. Starts below the 24px dot and runs into the 32px\n gap to the next one. */\n.snacky-stepper__step::before {\n content: '';\n position: absolute;\n left: 12px;\n top: 24px;\n bottom: calc(-1 * var(--spacing-32));\n border-left: 1px dashed var(--border-main);\n}\n.snacky-stepper__step--last::before {\n content: none;\n}\n\n/* 24x24 slot holding a 16x16 circle, per Figma's \"Progress dot/*\" frames. */\n.snacky-stepper__dot {\n position: relative;\n z-index: 1;\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n.snacky-stepper__dot::before {\n content: '';\n position: absolute;\n width: 16px;\n height: 16px;\n border-radius: var(--radius-full);\n}\n.snacky-stepper__dot--done::before {\n background: var(--icon-brand);\n}\n.snacky-stepper__dot--pending::before {\n background: var(--bg-action-disabled);\n}\n.snacky-stepper__dot--cancelled::before {\n background: var(--bg-surface-accent);\n}\n/* The X only appears on the cancelled dot, drawn on the accent circle. */\n.snacky-stepper__dot--cancelled svg {\n position: relative;\n z-index: 1;\n color: var(--icon-on-accent);\n}\n\n.snacky-stepper__body {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.snacky-stepper__label {\n font-family: var(--font-small-bold-family);\n font-size: var(--font-small-bold-size);\n font-weight: var(--font-small-bold-weight);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-stepper__label--done {\n color: var(--text-primary);\n}\n.snacky-stepper__label--pending {\n color: var(--text-secondary);\n}\n.snacky-stepper__label--cancelled {\n color: var(--text-error);\n}\n\n.snacky-stepper__time {\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n color: var(--text-secondary);\n}\n","/* Figma \"Property 1=Calendar\": 360 wide, VERTICAL, 24 gap, 24 padding. */\n.snacky-calendar {\n width: 100%;\n max-width: 360px;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-24);\n padding: var(--spacing-24);\n background: var(--bg-surface);\n box-sizing: border-box;\n}\n\n/* \"Calendar Header Container\": 312x36, prev/next 24x24 either side of the label. */\n.snacky-calendar__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-8);\n}\n.snacky-calendar__nav {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: none;\n color: var(--icon-primary);\n cursor: pointer;\n}\n/* One back glyph serves both arrows - the set has no forward twin, and Figma\n uses the same instance mirrored. */\n.snacky-calendar__nav--next {\n transform: scaleX(-1);\n}\n.snacky-calendar__label {\n flex: 1;\n text-align: center;\n font-family: var(--font-h3-bold-family);\n font-size: var(--font-h3-bold-size);\n font-weight: var(--font-h3-bold-weight);\n line-height: var(--font-h3-bold-line-height);\n letter-spacing: var(--font-h3-bold-letter-spacing);\n color: var(--text-primary);\n}\n\n/* Figma hugs each date cell, so its row gaps vary (39/36/33/30/29). A seven\n column grid is the faithful translation: same even distribution, no\n per-row magic numbers. */\n.snacky-calendar__grid {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n justify-items: center;\n align-items: center;\n /* Figma's row pitch is 59: a 36-tall date row plus a 23 gap. The cell here is\n 40 rather than 36 because the selected day's circle is 40 (Figma's\n \"selected\" frame) and would otherwise overflow its row, so the gap is\n 59 - 40 = 19 to keep the same pitch. Not a token: 59 is not on the scale. */\n row-gap: 19px;\n}\n\n.snacky-calendar__weekday {\n height: 30px;\n display: inline-flex;\n align-items: center;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n color: var(--text-primary);\n}\n\n.snacky-calendar__day {\n position: relative;\n width: 100%;\n height: 40px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n font-family: var(--font-h3-regular-family, var(--font-h3-bold-family));\n font-size: 16px;\n line-height: 36px;\n color: var(--text-primary);\n}\n.snacky-calendar__day--outside {\n color: var(--text-disabled);\n cursor: default;\n}\n\n/* The range band sits behind the row; the two ends get the filled circle. */\n.snacky-calendar__day--in-range {\n background: var(--bg-surface-highlight);\n}\n.snacky-calendar__day-number {\n position: relative;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: var(--radius-full);\n}\n.snacky-calendar__day--selected .snacky-calendar__day-number {\n background: var(--bg-action-primary);\n font-weight: 700;\n}\n.snacky-calendar__day--selected {\n background: var(--bg-surface-highlight);\n}\n\n/* Figma \"Ellipse 38\": an 8px accent dot under a marked day. */\n.snacky-calendar__marker {\n position: absolute;\n bottom: 2px;\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--bg-action-primary);\n}\n",".snacky-avatar {\n display: block;\n border-radius: 999px;\n object-fit: cover;\n flex-shrink: 0;\n}\n.snacky-avatar--sm { width: 32px; height: 32px; }\n.snacky-avatar--md { width: 56px; height: 56px; }\n.snacky-avatar--lg { width: 72px; height: 72px; }\n",".snacky-illustration {\n display: block;\n max-width: 100%;\n /* The per-variant canvas is the spec, so the artwork is fitted into it rather\n than allowed to set its own height. `height: auto` let the file's aspect win,\n and two of the shipped PNGs do not match their canvas\n (illus-discount-referral is 1076x892, i.e. 1.206, against a 268x200 / 1.340\n canvas), which rendered discountReferral 22px too tall. contain keeps the\n canvas exact without distorting the artwork. */\n object-fit: contain;\n}\n",".snacky-product-image-wrap {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n}\n.snacky-product-image {\n display: block;\n object-fit: contain;\n}\n/* These must match the `usage` prop values verbatim, since the class name is\n built as `--${usage}`. They read `--card`/`--details` before, so the\n product-card and product-details usages, the two most common ones, silently\n matched no rule at all and rendered unsized. */\n.snacky-product-image--product-card,\n.snacky-product-image--product-details {\n width: 100%;\n height: 100%;\n background: transparent;\n}\n.snacky-product-image-wrap--product-card { width: 128px; height: 128px; }\n.snacky-product-image-wrap--product-details { width: 200px; height: 200px; }\n\n.snacky-product-image-wrap--list {\n width: 56px;\n height: 56px;\n padding: var(--spacing-4);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-product-image-wrap--review {\n width: 48px;\n height: 48px;\n padding: var(--spacing-4);\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-product-image-wrap--variant {\n width: 88px;\n height: 88px;\n padding: var(--spacing-4);\n border: 1px solid var(--border-main);\n border-radius: var(--radius-field);\n box-sizing: border-box;\n}\n.snacky-product-image-wrap--accordion-modal { width: 24px; height: 24px; }\n\n.snacky-product-image-sold-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.46);\n border-radius: inherit;\n}\n.snacky-product-image-sold-label {\n padding: var(--spacing-12) 7px;\n border-radius: 999px;\n background: rgba(51, 51, 51, 0.8);\n color: var(--text-inverse);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n",".snacky-product-card {\n position: relative;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-12);\n background: var(--bg-surface);\n text-align: left;\n border: none;\n cursor: pointer;\n font-family: inherit;\n}\n.snacky-product-card--list {\n width: 152px;\n /* 152px is a spec width, not a hint. This card's documented home is a\n horizontal carousel, where a flex parent would otherwise shrink it below\n spec rather than letting the row scroll. */\n flex-shrink: 0;\n padding: var(--spacing-12) var(--spacing-8);\n border-radius: var(--radius-field);\n box-shadow: var(--shadow-lg);\n}\n/* Figma node \"Property 1=details\": the card itself has no padding and no gap.\n Its two child frames carry all of it. */\n.snacky-product-card--details {\n width: 100%;\n padding: 0;\n gap: 0;\n}\n/* \"Image\" frame - 12/8 padding around the 200px image, 224 tall. */\n.snacky-product-card__image-block {\n display: flex;\n justify-content: center;\n padding: var(--spacing-12) var(--spacing-8);\n}\n/* \"Product details container\" - 16/24 padding, 8px gap, 148 tall. */\n.snacky-product-card__details-body {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-8);\n padding: var(--spacing-16) var(--spacing-24);\n}\n.snacky-product-card__image-wrap {\n position: relative;\n}\n.snacky-product-card--list .snacky-product-card__image-wrap { width: 128px; height: 128px; }\n.snacky-product-card--details .snacky-product-card__image-wrap { width: 200px; height: 200px; margin: 0 auto; }\n.snacky-product-card__image {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n.snacky-product-card__discount {\n position: absolute;\n top: 0;\n right: 0;\n}\n/* Sold Out is a centred scrim over the whole image, not a corner tag. It used\n to reuse __discount above, which pinned the pill to the top-right with no\n scrim at all. index.html's preview and ProductImage's\n .snacky-product-image-sold-overlay both centre it; this matches them. */\n.snacky-product-card__sold-overlay {\n position: absolute;\n inset: 0;\n margin: var(--spacing-12) var(--spacing-8);\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.46);\n}\n.snacky-product-card__name {\n margin: 0;\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-primary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-product-card--details .snacky-product-card__name {\n font-size: 14px;\n}\n.snacky-product-card__price-row {\n display: flex;\n /* Figma's \"Price container\" is CENTER with a 5px gap, and 5 is not on the\n spacing scale, so this is a literal on purpose. Was baseline + 4px, which\n made the row 25px instead of the specced 24px. */\n align-items: center;\n gap: 5px;\n}\n.snacky-product-card--details .snacky-product-card__price-row {\n align-items: flex-start;\n gap: var(--spacing-8);\n}\n.snacky-product-card__price {\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n color: var(--text-primary);\n font-size: var(--font-small-bold-size);\n line-height: var(--font-small-bold-line-height);\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-product-card--details .snacky-product-card__price {\n /* Figma: 20px on a 36px line, which is what makes the price row 36 tall.\n Without the line-height it inherited small-bold's 24 and the row came out\n 27. */\n font-size: 20px;\n font-weight: 700;\n line-height: 36px;\n}\n.snacky-product-card__original-price {\n font-family: var(--font-small-bold-family);\n font-weight: var(--font-small-bold-weight);\n font-size: 10px;\n color: var(--text-secondary);\n text-decoration: line-through;\n /* Figma authors this one at AUTO line height, not the token's 24px - it is\n the only text in the card that does, so it stays a literal. */\n line-height: normal;\n letter-spacing: var(--font-small-bold-letter-spacing);\n}\n.snacky-product-card--details .snacky-product-card__original-price {\n font-size: 16px;\n font-weight: 700;\n line-height: 36px;\n}\n.snacky-product-card__footer-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-8);\n}\n.snacky-product-card__rating {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-icon-label);\n font-family: var(--font-small-regular-family);\n font-size: var(--font-small-regular-size);\n color: var(--text-secondary);\n font-weight: var(--font-small-regular-weight);\n line-height: var(--font-small-regular-line-height);\n letter-spacing: var(--font-small-regular-letter-spacing);\n}\n.snacky-product-card__rating-icon {\n width: 16px;\n height: 16px;\n color: var(--icon-brand);\n}\n.snacky-product-card__actions {\n display: flex;\n gap: var(--gap-cell);\n}\n/* Details page's Favorite/Share/Chat icon buttons use a slightly softer\n shadow than the standard Secondary icon-button elevation. */\n.snacky-product-card__actions--details button {\n box-shadow: 0 4px 4px rgba(0, 0, 0, 0.08);\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snacky/ui",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "Snacky App design system - React component library. Generated from the source-of-truth design system at ../../index.html (tokens.json / components.json), pixel-accurate to Figma.",
5
5
  "license": "MIT",
6
6
  "author": "rezatresnas",