@snacky/ui 0.13.0 → 0.13.1

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/dist/index.css CHANGED
@@ -947,6 +947,7 @@
947
947
  width: 100%;
948
948
  background: var(--bg-surface);
949
949
  box-shadow: var(--shadow-top);
950
+ padding-bottom: var(--spacing-16);
950
951
  }
951
952
  .snacky-navbar__item {
952
953
  flex: 1;
@@ -1062,7 +1063,7 @@
1062
1063
  display: block;
1063
1064
  width: 100%;
1064
1065
  aspect-ratio: 312 / 128;
1065
- border-radius: var(--radius-field);
1066
+ border-radius: var(--radius-bubble);
1066
1067
  box-shadow: var(--shadow-md);
1067
1068
  object-fit: cover;
1068
1069
  }
@@ -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/PageIndicator/PageIndicator.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/ProductGroupSection/ProductGroupSection.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","../src/components/ImagePlaceholder/ImagePlaceholder.css"],"sourcesContent":["/* Generated from tokens.json by scripts/generate-react-tokens.js - do not hand-edit. */\n:root {\n --color-amber-50: #fef8eb;\n --color-amber-100: #fde9bf;\n --color-amber-200: #fcdea1;\n --color-amber-300: #facf76;\n --color-amber-400: #f9c55b;\n --color-amber-500: #f8b732;\n --color-amber-600: #e2a72e;\n --color-amber-700: #b08224;\n --color-amber-800: #88651c;\n --color-amber-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: var(--color-neutral-20);\n --bg-surface: var(--color-neutral-0);\n --bg-surface-primary: var(--color-amber-500);\n --bg-surface-accent: var(--color-red-500);\n --bg-surface-variant: var(--color-neutral-50);\n --bg-surface-field: var(--color-neutral-0);\n --bg-surface-highlight: var(--color-amber-50);\n --bg-action-primary: var(--color-amber-500);\n --bg-action-primary-hover: var(--color-amber-600);\n --bg-action-primary-pressed: var(--color-amber-700);\n --bg-action-secondary: var(--color-neutral-0);\n --bg-action-secondary-hover: var(--color-neutral-50);\n --bg-action-secondary-pressed: var(--color-neutral-100);\n --bg-action-disabled: var(--color-neutral-200);\n --bg-action-primary-danger: var(--color-red-500);\n --bg-action-primary-danger-hovered: var(--color-red-600);\n --bg-action-primary-danger-pressed: var(--color-red-700);\n --bg-indicator-active: var(--color-amber-500);\n --bg-indicator-inactive: var(--color-neutral-200);\n --bg-overlay-dim: rgba(51,51,51,0.8);\n --border-main: var(--color-neutral-200);\n --border-highlight: var(--color-amber-200);\n --border-input-default: var(--color-neutral-200);\n --border-input-active: var(--color-amber-500);\n --border-input-error: var(--color-red-500);\n --border-action-secondary: var(--color-neutral-200);\n --border-action-secondary-pressed: var(--color-neutral-400);\n --border-action-danger: var(--color-red-500);\n --border-action-disabled: var(--color-neutral-200);\n --text-primary: var(--color-neutral-950);\n --text-secondary: var(--color-neutral-500);\n --text-placeholder: var(--color-neutral-500);\n --text-disabled: var(--color-neutral-400);\n --text-link: var(--color-amber-800);\n --text-error: var(--color-red-700);\n --text-inverse: var(--color-neutral-0);\n --text-on-action-primary: var(--color-neutral-950);\n --text-on-action-secondary: var(--color-neutral-950);\n --text-on-action-tertiary: var(--color-amber-700);\n --text-on-action-tertiary-hovered: var(--color-amber-800);\n --text-on-action-tertiary-pressed: var(--color-amber-900);\n --text-action-danger: var(--color-red-600);\n --text-action-danger-hovered: var(--color-red-700);\n --text-action-danger-pressed: var(--color-red-800);\n --text-action-disabled: var(--color-neutral-400);\n --icon-primary: var(--color-neutral-950);\n --icon-secondary: var(--color-neutral-700);\n --icon-brand: var(--color-amber-500);\n --icon-disabled: var(--color-neutral-400);\n --icon-active: var(--color-red-500);\n --icon-on-accent: var(--color-neutral-0);\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: var(--spacing-4);\n --gap-cell: var(--spacing-4);\n --gap-text-icon: var(--spacing-8);\n --gap-text-underline: var(--spacing-16);\n --gap-layout-section-list: var(--spacing-8);\n --gap-layout-block: var(--spacing-16);\n --gap-layout-stack: var(--spacing-24);\n --gap-layout-page: var(--spacing-32);\n --margin-screen: var(--spacing-16);\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: var(--radius-4);\n --radius-tag: var(--radius-6);\n --radius-bubble: var(--radius-8);\n --radius-card: var(--radius-10);\n --radius-sheet-top: var(--radius-20);\n --radius-full: var(--radius-100);\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/* The slot itself is documented as a generic 24x24 (size.icon.lg), but that\n reads oversized next to Small's 12px label - scaled down to size.icon.md\n (20x20) to stay proportional. */\n.snacky-btn--small .snacky-btn__icon {\n width: var(--size-icon-md);\n height: var(--size-icon-md);\n}\n\n/* The icon is absolutely positioned (out of flow, per Figma's own \"Slot\n Usage\" guideline) so a hug-width button never reserves space for it on its\n own - without this, the label centers across the button's full width and\n the icon sits on top of it. Reserve exactly the space the icon occupies\n (its left offset + its own size) plus a text-icon gap, so the label starts\n right after the icon instead of overlapping it. */\n.snacky-btn--with-icon {\n padding-left: calc(var(--spacing-8) + var(--size-icon-lg) + var(--gap-text-icon));\n}\n.snacky-btn--small.snacky-btn--with-icon {\n padding-left: calc(var(--spacing-8) + var(--size-icon-md) + var(--gap-text-icon));\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: var(--size-icon-lg);\n height: var(--size-icon-lg);\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/* Figma's small variant (Icon-Button set, Property 1=small) is a 24px circle\n with its chevron icon at the full 24x24, not inset: no padding. */\n.snacky-iconbtn--primary.snacky-iconbtn--small {\n width: 24px;\n height: 24px;\n padding: 0;\n}\n.snacky-iconbtn--primary.snacky-iconbtn--small .snacky-iconbtn__icon { width: 24px; height: 24px; }\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","/* Figma: Icon-Button set 8685:6254, Property 1=upload. A 72px circle, 24px\n padding around a 24px icon, filled bg-action-secondary. */\n.snacky-upload {\n position: relative;\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: none;\n border-radius: var(--radius-full);\n background: var(--bg-action-secondary);\n color: var(--icon-primary);\n cursor: pointer;\n transition: background-color 0.12s ease;\n}\n/* Figma draws the 1px dashed border-action-secondary stroke OUTSIDE the 72px\n frame. A real border sits inside the box and squeezed the icon to 22px, so\n the stroke is painted by this pseudo-element 1px outside instead. */\n.snacky-upload::before {\n content: '';\n position: absolute;\n inset: -1px;\n border: 1px dashed var(--border-action-secondary);\n border-radius: inherit;\n pointer-events: none;\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(--border-input-active);\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(--bg-surface-primary);\n border-color: var(--bg-surface-primary);\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(--bg-surface-primary);\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(--icon-brand);\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 /* Both fills come straight from Figma's bound variables (node 386:10910):\n the active label is text/on-action/text-on-action-tertiary and the\n underline stroke is border/input/border-input-active. An earlier pass\n dismissed the underline binding as incidental variable reuse and kept\n the raw primitive instead; reading the node confirmed it is deliberate,\n and Chips uses the same token for its selected border. */\n color: var(--text-on-action-tertiary);\n box-shadow: inset 0 -2px 0 0 var(--border-input-active);\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 own frame is 312 wide and hugs its content, which is why this was\n briefly `display: inline-flex` with no width. That reads fine in\n isolation, but real usage sits this next to a sibling of the same width\n (the \"Default\"/\"LowBalance\" pair in the docs gallery), and hugging made a\n low-balance \"0\" / \"Rp 0\" row collapse to a fraction of the width its\n sibling used, stranded inside whatever wider container held it. Filling\n the container keeps the banner a consistent width regardless of content\n length; `justify-content` stays at its flex-start default (not\n space-between) so the two item groups still stay grouped on the left\n with a plain `gap`, they just no longer get spread across the full\n width the way the original space-between bug did. */\n display: flex;\n width: 100%;\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(--border-highlight);\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 /* Figma's own auto-layout sets both item columns to fill-container, splitting\n the row 50/50 around the divider (confirmed in dev-mode inspect) - without\n this, the two hug-width groups just packed against the left edge, leaving\n the divider stranded right after the first group instead of centred, and a\n growing empty band of surface colour on the right in any container wider\n than the content (as wide as any real usage beyond a ~312px mobile screen). */\n flex: 1;\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(--border-highlight);\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","/* Figma: the `Pagination` row under the Home hero carousel, 52x8 for three\n pages. Repeated cells 4 apart, which is what gap/cell is for. */\n.snacky-page-indicator {\n display: flex;\n align-items: center;\n gap: var(--gap-cell);\n}\n.snacky-page-indicator__dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--bg-indicator-inactive);\n flex-shrink: 0;\n}\n/* The current page widens into a pill rather than changing size, so the row\n height stays 8 whichever page is showing. */\n.snacky-page-indicator__dot--active {\n width: 28px;\n background: var(--bg-indicator-active);\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 /* bg-overlay-dim is defined for exactly this: the dark translucent Sold Out\n overlay over a product image. */\n background: var(--bg-overlay-dim);\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-info-badge {\n display: inline-flex;\n align-items: center;\n /* Icon -> label gap. Only applies when the optional icon slot is filled;\n with no icon the badge is a single text node and the gap collapses. */\n gap: var(--gap-text-icon);\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 /* Figma's two info variants carry different strokes (node 8792:6172):\n Property 2=variant is border/border-highlight, Property 2=points is\n border/input/border-input-active. The icon slot is what separates them\n there too, so the presence of the icon selects the border here. */\n border: 1px solid var(--border-highlight);\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-info-badge:has(.snacky-info-badge__icon) {\n border-color: var(--border-input-active);\n}\n.snacky-info-badge__icon {\n display: inline-flex;\n flex-shrink: 0;\n /* Figma binds this glyph to icon/icon-brand, and the icons render\n currentColor, so tint the slot rather than making every caller pass a\n color prop. Matches SnackyInfoBadge's LocalContentColor in compose-ui. */\n color: var(--icon-brand);\n /* 12x12, raw rather than a token on purpose: the icon size scale is\n 16/20/24 (size.icon.sm/md/lg) and Figma draws this one at 12, below the\n smallest step. Sized here rather than left to the caller so the badge\n stays 32 tall whatever icon is passed in. */\n width: 12px;\n height: 12px;\n}\n.snacky-info-badge__icon svg {\n width: 100%;\n height: 100%;\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(--bg-surface-primary);\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 /* Figma draws this as an explicit 40x4 rectangle (`Driver Slider`, node\n Modal > Property 1=driver) bound to border/border-main, radius 100.\n No bottom margin: the next child sits at y28 there (8 padding + 4 handle\n + 16), so the gap below the handle is just the sheet's own 16px gap. */\n width: 40px;\n height: 4px;\n border-radius: var(--radius-full);\n background: var(--border-main);\n margin: 0 auto;\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/* Figma's Section headers (component set 351:7830) are 30 tall, not the\n title's 36 line box: the h3-bold text node is cropped to 30 from the top,\n so the title stays top-aligned and only the chevron is centered (3px down). */\n.snacky-section__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n height: 30px;\n}\n.snacky-section__header > .snacky-iconbtn { align-self: center; }\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","/* Figma: Section variants Group-Products-Horizontal (360x372), Group-Products-Banner\n (360x396) and Group-Products-vertical (360x1278 with eight cards). All three keep\n the Section shell's 30px header; the heights follow from it. */\n\n/* Horizontal and banner rows scroll sideways with the scrollbar hidden. */\n.snacky-product-group__row {\n display: flex;\n gap: var(--spacing-8);\n overflow-x: auto;\n scrollbar-width: none;\n cursor: grab;\n user-select: none;\n}\n.snacky-product-group__row::-webkit-scrollbar {\n display: none;\n}\n.snacky-product-group__row--dragging {\n cursor: grabbing;\n}\n.snacky-product-group__row > * {\n flex-shrink: 0;\n}\n\n/* Horizontal: the row runs out to the screen's right edge instead of stopping at\n the shell's 24px padding, as Figma's 336px row inside a clipped 360 frame does. */\n.snacky-product-group--horizontal .snacky-product-group__row {\n margin-right: calc(-1 * var(--spacing-24));\n}\n\n/* Banner: no side or bottom padding (16/0/0/0 in Figma), the header keeps its 24px\n inset, and the banner runs edge to edge with square corners. */\n.snacky-product-group--banner.snacky-section {\n padding: var(--spacing-16) 0 0;\n}\n.snacky-product-group--banner .snacky-section__header {\n padding: 0 var(--spacing-24);\n}\n.snacky-product-group__stage {\n position: relative;\n height: 334px;\n}\n.snacky-product-group__banner,\n.snacky-product-group__banner > * {\n width: 100%;\n height: 100%;\n}\n.snacky-product-group__banner .snacky-banner-square {\n border-radius: 0;\n}\n/* The row spans the full width and starts its first card at x160 with padding, so\n scrolling carries the cards over the banner while the banner stays put. */\n.snacky-product-group--banner .snacky-product-group__row {\n position: absolute;\n top: var(--spacing-24);\n left: 0;\n right: 0;\n box-sizing: border-box;\n padding-left: 160px;\n}\n\n/* Grid: two 152px list cards, 8 apart, in both directions. */\n.snacky-product-group__grid {\n display: grid;\n grid-template-columns: repeat(2, max-content);\n gap: var(--spacing-8);\n}\n\n/* \"See other products\": the trailing card in a scrolling row. Figma draws it by\n hand (145x294, 8 padding, 5 gap) with the same surface and shadow as ProductCard. */\n.snacky-product-group__see-more {\n width: 145px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 5px;\n padding: var(--spacing-8);\n border-radius: var(--radius-field);\n background: var(--bg-surface);\n box-shadow: var(--shadow-lg);\n}\n.snacky-product-group__see-more-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 color: var(--text-link);\n text-align: center;\n}\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/* The dot fills are the indicator role, not an icon colour and not a disabled\n control: a pending step is one the order has not reached yet, not one the\n user cannot use. Same values as before (amber-500, neutral-200). */\n.snacky-stepper__dot--done::before {\n background: var(--bg-indicator-active);\n}\n.snacky-stepper__dot--pending::before {\n background: var(--bg-indicator-inactive);\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 /* bg-overlay-dim is defined for exactly this: the dark translucent Sold Out\n overlay over a product image. */\n background: var(--bg-overlay-dim);\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/* Figma fixes the list card's name box and rating/cart row at 41 each (Product-Card\n set, Property 1=list), which is what makes the card 294 tall rather than 292.\n The second line of a two-line name overflows the box into the gap, as in Figma. */\n.snacky-product-card--list .snacky-product-card__name { height: 41px; }\n.snacky-product-card--list .snacky-product-card__footer-row { height: 41px; }\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",".snacky-image-placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--bg-surface-variant);\n color: var(--icon-disabled);\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/PageIndicator/PageIndicator.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/ProductGroupSection/ProductGroupSection.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","../src/components/ImagePlaceholder/ImagePlaceholder.css"],"sourcesContent":["/* Generated from tokens.json by scripts/generate-react-tokens.js - do not hand-edit. */\n:root {\n --color-amber-50: #fef8eb;\n --color-amber-100: #fde9bf;\n --color-amber-200: #fcdea1;\n --color-amber-300: #facf76;\n --color-amber-400: #f9c55b;\n --color-amber-500: #f8b732;\n --color-amber-600: #e2a72e;\n --color-amber-700: #b08224;\n --color-amber-800: #88651c;\n --color-amber-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: var(--color-neutral-20);\n --bg-surface: var(--color-neutral-0);\n --bg-surface-primary: var(--color-amber-500);\n --bg-surface-accent: var(--color-red-500);\n --bg-surface-variant: var(--color-neutral-50);\n --bg-surface-field: var(--color-neutral-0);\n --bg-surface-highlight: var(--color-amber-50);\n --bg-action-primary: var(--color-amber-500);\n --bg-action-primary-hover: var(--color-amber-600);\n --bg-action-primary-pressed: var(--color-amber-700);\n --bg-action-secondary: var(--color-neutral-0);\n --bg-action-secondary-hover: var(--color-neutral-50);\n --bg-action-secondary-pressed: var(--color-neutral-100);\n --bg-action-disabled: var(--color-neutral-200);\n --bg-action-primary-danger: var(--color-red-500);\n --bg-action-primary-danger-hovered: var(--color-red-600);\n --bg-action-primary-danger-pressed: var(--color-red-700);\n --bg-indicator-active: var(--color-amber-500);\n --bg-indicator-inactive: var(--color-neutral-200);\n --bg-overlay-dim: rgba(51,51,51,0.8);\n --border-main: var(--color-neutral-200);\n --border-highlight: var(--color-amber-200);\n --border-input-default: var(--color-neutral-200);\n --border-input-active: var(--color-amber-500);\n --border-input-error: var(--color-red-500);\n --border-action-secondary: var(--color-neutral-200);\n --border-action-secondary-pressed: var(--color-neutral-400);\n --border-action-danger: var(--color-red-500);\n --border-action-disabled: var(--color-neutral-200);\n --text-primary: var(--color-neutral-950);\n --text-secondary: var(--color-neutral-500);\n --text-placeholder: var(--color-neutral-500);\n --text-disabled: var(--color-neutral-400);\n --text-link: var(--color-amber-800);\n --text-error: var(--color-red-700);\n --text-inverse: var(--color-neutral-0);\n --text-on-action-primary: var(--color-neutral-950);\n --text-on-action-secondary: var(--color-neutral-950);\n --text-on-action-tertiary: var(--color-amber-700);\n --text-on-action-tertiary-hovered: var(--color-amber-800);\n --text-on-action-tertiary-pressed: var(--color-amber-900);\n --text-action-danger: var(--color-red-600);\n --text-action-danger-hovered: var(--color-red-700);\n --text-action-danger-pressed: var(--color-red-800);\n --text-action-disabled: var(--color-neutral-400);\n --icon-primary: var(--color-neutral-950);\n --icon-secondary: var(--color-neutral-700);\n --icon-brand: var(--color-amber-500);\n --icon-disabled: var(--color-neutral-400);\n --icon-active: var(--color-red-500);\n --icon-on-accent: var(--color-neutral-0);\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: var(--spacing-4);\n --gap-cell: var(--spacing-4);\n --gap-text-icon: var(--spacing-8);\n --gap-text-underline: var(--spacing-16);\n --gap-layout-section-list: var(--spacing-8);\n --gap-layout-block: var(--spacing-16);\n --gap-layout-stack: var(--spacing-24);\n --gap-layout-page: var(--spacing-32);\n --margin-screen: var(--spacing-16);\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: var(--radius-4);\n --radius-tag: var(--radius-6);\n --radius-bubble: var(--radius-8);\n --radius-card: var(--radius-10);\n --radius-sheet-top: var(--radius-20);\n --radius-full: var(--radius-100);\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/* The slot itself is documented as a generic 24x24 (size.icon.lg), but that\n reads oversized next to Small's 12px label - scaled down to size.icon.md\n (20x20) to stay proportional. */\n.snacky-btn--small .snacky-btn__icon {\n width: var(--size-icon-md);\n height: var(--size-icon-md);\n}\n\n/* The icon is absolutely positioned (out of flow, per Figma's own \"Slot\n Usage\" guideline) so a hug-width button never reserves space for it on its\n own - without this, the label centers across the button's full width and\n the icon sits on top of it. Reserve exactly the space the icon occupies\n (its left offset + its own size) plus a text-icon gap, so the label starts\n right after the icon instead of overlapping it. */\n.snacky-btn--with-icon {\n padding-left: calc(var(--spacing-8) + var(--size-icon-lg) + var(--gap-text-icon));\n}\n.snacky-btn--small.snacky-btn--with-icon {\n padding-left: calc(var(--spacing-8) + var(--size-icon-md) + var(--gap-text-icon));\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: var(--size-icon-lg);\n height: var(--size-icon-lg);\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/* Figma's small variant (Icon-Button set, Property 1=small) is a 24px circle\n with its chevron icon at the full 24x24, not inset: no padding. */\n.snacky-iconbtn--primary.snacky-iconbtn--small {\n width: 24px;\n height: 24px;\n padding: 0;\n}\n.snacky-iconbtn--primary.snacky-iconbtn--small .snacky-iconbtn__icon { width: 24px; height: 24px; }\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","/* Figma: Icon-Button set 8685:6254, Property 1=upload. A 72px circle, 24px\n padding around a 24px icon, filled bg-action-secondary. */\n.snacky-upload {\n position: relative;\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: none;\n border-radius: var(--radius-full);\n background: var(--bg-action-secondary);\n color: var(--icon-primary);\n cursor: pointer;\n transition: background-color 0.12s ease;\n}\n/* Figma draws the 1px dashed border-action-secondary stroke OUTSIDE the 72px\n frame. A real border sits inside the box and squeezed the icon to 22px, so\n the stroke is painted by this pseudo-element 1px outside instead. */\n.snacky-upload::before {\n content: '';\n position: absolute;\n inset: -1px;\n border: 1px dashed var(--border-action-secondary);\n border-radius: inherit;\n pointer-events: none;\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(--border-input-active);\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(--bg-surface-primary);\n border-color: var(--bg-surface-primary);\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(--bg-surface-primary);\n}\n",".snacky-navbar {\n display: flex;\n width: 100%;\n background: var(--bg-surface);\n box-shadow: var(--shadow-top);\n /* Figma's variant (Property 1=Customer, node 55:2100) is 360x88: five\n 72x72 items plus this 16px below them, on the same surface. Shipped\n without it, the bar rendered 72 tall. */\n padding-bottom: var(--spacing-16);\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(--icon-brand);\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 /* Both fills come straight from Figma's bound variables (node 386:10910):\n the active label is text/on-action/text-on-action-tertiary and the\n underline stroke is border/input/border-input-active. An earlier pass\n dismissed the underline binding as incidental variable reuse and kept\n the raw primitive instead; reading the node confirmed it is deliberate,\n and Chips uses the same token for its selected border. */\n color: var(--text-on-action-tertiary);\n box-shadow: inset 0 -2px 0 0 var(--border-input-active);\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 /* Confirmed against the master Banner component's own Card Background\n (Property 1=promo, node 10136:5912): 8px (radius-bubble), not\n radius-field's 4px. At 4px the box-shadow's silhouette is nearly\n straight-edged and visibly peeks past the artwork's more rounded 8px\n corner. */\n border-radius: var(--radius-bubble);\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 own frame is 312 wide and hugs its content, which is why this was\n briefly `display: inline-flex` with no width. That reads fine in\n isolation, but real usage sits this next to a sibling of the same width\n (the \"Default\"/\"LowBalance\" pair in the docs gallery), and hugging made a\n low-balance \"0\" / \"Rp 0\" row collapse to a fraction of the width its\n sibling used, stranded inside whatever wider container held it. Filling\n the container keeps the banner a consistent width regardless of content\n length; `justify-content` stays at its flex-start default (not\n space-between) so the two item groups still stay grouped on the left\n with a plain `gap`, they just no longer get spread across the full\n width the way the original space-between bug did. */\n display: flex;\n width: 100%;\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(--border-highlight);\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 /* Figma's own auto-layout sets both item columns to fill-container, splitting\n the row 50/50 around the divider (confirmed in dev-mode inspect) - without\n this, the two hug-width groups just packed against the left edge, leaving\n the divider stranded right after the first group instead of centred, and a\n growing empty band of surface colour on the right in any container wider\n than the content (as wide as any real usage beyond a ~312px mobile screen). */\n flex: 1;\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(--border-highlight);\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","/* Figma: the `Pagination` row under the Home hero carousel, 52x8 for three\n pages. Repeated cells 4 apart, which is what gap/cell is for. */\n.snacky-page-indicator {\n display: flex;\n align-items: center;\n gap: var(--gap-cell);\n}\n.snacky-page-indicator__dot {\n width: 8px;\n height: 8px;\n border-radius: var(--radius-full);\n background: var(--bg-indicator-inactive);\n flex-shrink: 0;\n}\n/* The current page widens into a pill rather than changing size, so the row\n height stays 8 whichever page is showing. */\n.snacky-page-indicator__dot--active {\n width: 28px;\n background: var(--bg-indicator-active);\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 /* bg-overlay-dim is defined for exactly this: the dark translucent Sold Out\n overlay over a product image. */\n background: var(--bg-overlay-dim);\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-info-badge {\n display: inline-flex;\n align-items: center;\n /* Icon -> label gap. Only applies when the optional icon slot is filled;\n with no icon the badge is a single text node and the gap collapses. */\n gap: var(--gap-text-icon);\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 /* Figma's two info variants carry different strokes (node 8792:6172):\n Property 2=variant is border/border-highlight, Property 2=points is\n border/input/border-input-active. The icon slot is what separates them\n there too, so the presence of the icon selects the border here. */\n border: 1px solid var(--border-highlight);\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-info-badge:has(.snacky-info-badge__icon) {\n border-color: var(--border-input-active);\n}\n.snacky-info-badge__icon {\n display: inline-flex;\n flex-shrink: 0;\n /* Figma binds this glyph to icon/icon-brand, and the icons render\n currentColor, so tint the slot rather than making every caller pass a\n color prop. Matches SnackyInfoBadge's LocalContentColor in compose-ui. */\n color: var(--icon-brand);\n /* 12x12, raw rather than a token on purpose: the icon size scale is\n 16/20/24 (size.icon.sm/md/lg) and Figma draws this one at 12, below the\n smallest step. Sized here rather than left to the caller so the badge\n stays 32 tall whatever icon is passed in. */\n width: 12px;\n height: 12px;\n}\n.snacky-info-badge__icon svg {\n width: 100%;\n height: 100%;\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(--bg-surface-primary);\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 /* Figma draws this as an explicit 40x4 rectangle (`Driver Slider`, node\n Modal > Property 1=driver) bound to border/border-main, radius 100.\n No bottom margin: the next child sits at y28 there (8 padding + 4 handle\n + 16), so the gap below the handle is just the sheet's own 16px gap. */\n width: 40px;\n height: 4px;\n border-radius: var(--radius-full);\n background: var(--border-main);\n margin: 0 auto;\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/* Figma's Section headers (component set 351:7830) are 30 tall, not the\n title's 36 line box: the h3-bold text node is cropped to 30 from the top,\n so the title stays top-aligned and only the chevron is centered (3px down). */\n.snacky-section__header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n height: 30px;\n}\n.snacky-section__header > .snacky-iconbtn { align-self: center; }\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","/* Figma: Section variants Group-Products-Horizontal (360x372), Group-Products-Banner\n (360x396) and Group-Products-vertical (360x1278 with eight cards). All three keep\n the Section shell's 30px header; the heights follow from it. */\n\n/* Horizontal and banner rows scroll sideways with the scrollbar hidden. */\n.snacky-product-group__row {\n display: flex;\n gap: var(--spacing-8);\n overflow-x: auto;\n scrollbar-width: none;\n cursor: grab;\n user-select: none;\n}\n.snacky-product-group__row::-webkit-scrollbar {\n display: none;\n}\n.snacky-product-group__row--dragging {\n cursor: grabbing;\n}\n.snacky-product-group__row > * {\n flex-shrink: 0;\n}\n\n/* Horizontal: the row runs out to the screen's right edge instead of stopping at\n the shell's 24px padding, as Figma's 336px row inside a clipped 360 frame does. */\n.snacky-product-group--horizontal .snacky-product-group__row {\n margin-right: calc(-1 * var(--spacing-24));\n}\n\n/* Banner: no side or bottom padding (16/0/0/0 in Figma), the header keeps its 24px\n inset, and the banner runs edge to edge with square corners. */\n.snacky-product-group--banner.snacky-section {\n padding: var(--spacing-16) 0 0;\n}\n.snacky-product-group--banner .snacky-section__header {\n padding: 0 var(--spacing-24);\n}\n.snacky-product-group__stage {\n position: relative;\n height: 334px;\n}\n.snacky-product-group__banner,\n.snacky-product-group__banner > * {\n width: 100%;\n height: 100%;\n}\n.snacky-product-group__banner .snacky-banner-square {\n border-radius: 0;\n}\n/* The row spans the full width and starts its first card at x160 with padding, so\n scrolling carries the cards over the banner while the banner stays put. */\n.snacky-product-group--banner .snacky-product-group__row {\n position: absolute;\n top: var(--spacing-24);\n left: 0;\n right: 0;\n box-sizing: border-box;\n padding-left: 160px;\n}\n\n/* Grid: two 152px list cards, 8 apart, in both directions. */\n.snacky-product-group__grid {\n display: grid;\n grid-template-columns: repeat(2, max-content);\n gap: var(--spacing-8);\n}\n\n/* \"See other products\": the trailing card in a scrolling row. Figma draws it by\n hand (145x294, 8 padding, 5 gap) with the same surface and shadow as ProductCard. */\n.snacky-product-group__see-more {\n width: 145px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 5px;\n padding: var(--spacing-8);\n border-radius: var(--radius-field);\n background: var(--bg-surface);\n box-shadow: var(--shadow-lg);\n}\n.snacky-product-group__see-more-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 color: var(--text-link);\n text-align: center;\n}\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/* The dot fills are the indicator role, not an icon colour and not a disabled\n control: a pending step is one the order has not reached yet, not one the\n user cannot use. Same values as before (amber-500, neutral-200). */\n.snacky-stepper__dot--done::before {\n background: var(--bg-indicator-active);\n}\n.snacky-stepper__dot--pending::before {\n background: var(--bg-indicator-inactive);\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 /* bg-overlay-dim is defined for exactly this: the dark translucent Sold Out\n overlay over a product image. */\n background: var(--bg-overlay-dim);\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/* Figma fixes the list card's name box and rating/cart row at 41 each (Product-Card\n set, Property 1=list), which is what makes the card 294 tall rather than 292.\n The second line of a two-line name overflows the box into the gap, as in Figma. */\n.snacky-product-card--list .snacky-product-card__name { height: 41px; }\n.snacky-product-card--list .snacky-product-card__footer-row { height: 41px; }\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",".snacky-image-placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--bg-surface-variant);\n color: var(--icon-disabled);\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.13.0",
3
+ "version": "0.13.1",
4
4
  "description": "Snacky App design system - React component library. Generated from the source-of-truth design system at ../../index.html, pixel-accurate to Figma.",
5
5
  "license": "MIT",
6
6
  "author": "rezatresnas",