diff --git a/STYLE-CHANGES.md b/STYLE-CHANGES.md
index 6e53fef..fb2cc39 100644
--- a/STYLE-CHANGES.md
+++ b/STYLE-CHANGES.md
@@ -333,6 +333,176 @@ to the colour-swatch reference so the in-app design-system page stays accurate.
---
+## 16. Brand name — ® trademark + hyphenation pass
+
+**Files:** `src/i18n/messages.js` (de + en), `src/api/products.js`,
+`src/design-system/components/Logo.vue`, `src/design-system/components/Navbar.vue`
+
+The brand name is now written **`Kaiser-Natron®`** consistently — hyphenated,
+with the ® mark — on every visible mention. Two problems were fixed:
+
+- **Missing ®** — display headlines, CTAs, the bundle line-item lists and the
+ product `brand` field carried no trademark mark. (The long Kaiserhacks recipe
+ copy and the product `title` fields already had `Kaiser-Natron®` and were left
+ as-is.)
+- **Spelling drift** — the English locale (and one German headline) used the
+ un-hyphenated `Kaiser Natron`. All standardised to the hyphenated form.
+
+| File | What changed |
+|------|--------------|
+| `src/i18n/messages.js` | `shop.headline`, `ds.hero.headline.a`, `home.banner.sub`, `home.brand.headline.a`, `home.teaser.cta`, and the `bundle.*.items.*` lists — de **and** en — now read `Kaiser-Natron®` |
+| `src/api/products.js` | `brand: 'Kaiser-Natron'` → `'Kaiser-Natron®'` (all 11 products; shown in search results via `Search.vue`) |
+| `src/design-system/components/Logo.vue` | default accessible `title` prop `'Kaiser Natron'` → `'Kaiser-Natron®'` |
+| `src/design-system/components/Navbar.vue` | logo link `aria-label` `'Kaiser Natron home'` → `'Kaiser-Natron home'` |
+
+> Not touched: generic ingredient references ("Natron", "Natronwasser",
+> "Natron-basierte …") — those mean the substance, not the brand, so they take
+> no ®. Image `alt` text keeps the plain hyphenated name (not on-screen).
+
+---
+
+## 17. Hero headline copy — versatility, not "shine"
+
+**File:** `src/i18n/messages.js` (`ds.hero.headline.*`, de + en)
+
+The product-hero headline was reworded from a generic cleaning-shine line to the
+brand's own versatility voice (drawn from kaiser-natron.de — *"Die
+Verwendungsmöglichkeiten … sind beinah grenzenlos"*). The three-part split
+(`a` / emphasised `em` / `b`) is unchanged; only the words changed.
+
+```
+DE "Kaiser-Natron® für alles was glänzen soll."
+ → "Kaiser-Natron® für fast alles im Alltag."
+
+EN "Kaiser-Natron® for everything that should shine."
+ → "Kaiser-Natron® for almost anything at home."
+```
+
+---
+
+## 18. Bundle artwork — "AI Edited" disclosure (L5 + L6)
+
+**Files:** `src/api/bundles.js`, `src/design-system/components/BundleCard.vue`,
+`src/design-system/components/Bundles.vue`, `src/pages/HomePage.vue`,
+`src/pages/BundlePage.vue`
+
+The bundle images are AI-composed. Rather than replace them, each is now marked
+with a small, faint **"AI Edited"** caption in the bottom-right of the image, so
+the AI origin is disclosed. It's data-driven, so it disappears automatically once
+real photography replaces a given image.
+
+- `bundles.js` — each bundle record gains `aiEdited: true`.
+- `BundleCard.vue` — new `aiEdited` Boolean prop; when true, renders the overlay
+ span inside the media area (both the card-link and plain-media branches).
+- `Bundles.vue` — passes `:ai-edited="bundle.aiEdited"` to all four BundleCard
+ instances (mobile + grid + sidebar + carousel).
+- `HomePage.vue` / `BundlePage.vue` — carry `aiEdited` through to the rendered
+ records; BundlePage renders the same overlay on its large hero image (desktop
+ + mobile).
+
+```html
+AI Edited
+```
+
+> Set a bundle's `aiEdited: false` (or drop it) in `bundles.js` to remove the
+> badge once its image is a real photo.
+
+---
+
+## 19. Revitalization section — animation row + CTA removed (L10)
+
+**File:** `src/pages/HomePage.vue` (`revitCopy`, Revitalization usage)
+
+The Revitalization section was stripped back. Removed entirely:
+
+- the **three-pillar feature row** with the spinning orbit animations (the
+ emoji icons ⚗️💊🌿 were off-brand; the brand owner wanted the whole row gone), and
+- the **"early access" CTA** button (`revit.notifyCta` — "Get early access" /
+ "Early Access sichern").
+
+This is done at the **usage** site, not the component: `revitCopy` no longer
+passes `features` or `notifyCta`, and the `:features` / `:notify-cta` / `@notify`
+bindings (and the orphaned `onRevitNotify` handler) were removed. The section now
+renders **eyebrow + headline + sub only**.
+
+`Revitalization.vue` is unchanged and still reusable — its `v-if="features.length"`
+and `v-if="notifyCta"` guards simply render nothing when those props are absent.
+The unused `revit.feature.*` / `revit.notifyCta` i18n keys are left in place
+(harmless) in case the section is restored.
+
+---
+
+## 20. Shop page category banners + colours + Küche page (L8/U4)
+
+**Files:** `src/design-system/tokens.css`, `src/design-system/components/Hero.vue`,
+`src/pages/ShopPage.vue`, `src/router/index.js`, `src/pages/CategoryPage.vue`,
+`src/i18n/messages.js`
+
+On the **shop page**, the catalogue is split into **four** use-group sections,
+each fronted by a **full-width colour banner** in the brand's own use-group
+colour (sourced from kaiser-natron.de), with diagonal dividers carrying the
+colour in and back out to the neutral product grid below. (The home page was
+left unchanged — it keeps its 3-card `ProductTeaser`.)
+
+**Four sections + colours (design tokens).** `tokens.css` — the old "Haushalt"
+lump was split into **Clean** (cleaning) and **Wash** (laundry):
+| Token | Hex | Section | Products |
+|-------|-----|---------|----------|
+| `--color-cat-kitchen` | `#c6d47d` (lime) | Küche / cook | Pulver, Tabletten |
+| `--color-cat-clean` | `#eb5a61` (grapefruit) | Reinigung / clean | cleaners, sprays, descalers |
+| `--color-cat-wash` | `#c15a7e` (plum) | Wäsche / wash | wash-soda, starch, stain removers |
+| `--color-cat-care` | `#f1864c` (orange) | Pflege / care | bath, foot-bath, sport |
+Tailwind v4 auto-emits `bg-cat-kitchen` / `bg-cat-clean` / `bg-cat-wash` / `bg-cat-care`.
+
+**Product grouping.** `src/api/products.js` — `USE_CASES` is now
+`['cook','clean','wash','care']`; `Wäsche` maps to the new `wash` group (was
+`clean`). `productsByUseCase` returns all four buckets.
+
+**Hero tones.** `Hero.vue` has `kitchen` / `clean` / `wash` / `care` tones. Lime
+keeps dark ink text; the other three take cream (white) text. Each sets an
+`eyebrowColor` applied inline (overrides the global `.eyebrow { color: muted }`).
+`WaveDivider.vue` gained matching `kitchen` / `clean` / `wash` / `care` tones.
+
+**Shop page.** `ShopPage.vue` loops the four use-cases; each renders
+`WaveDivider → (hero product + mixed-font heading +
+CTAs) → WaveDivider → a section title + product grid`. `CAT_TONE` maps
+cook→kitchen, clean→clean, wash→wash, care→care; `CAT_HERO_ID` picks the headline
+product (Pulver / Allzweck-Spray / Daunenwasch / Bad). A per-section title
+(`shop.section..products.title`) now sits above each grid.
+
+**Banner CTAs.** Each banner carries two buttons (via the Hero `#actions` slot):
+**"add to cart"** in the brand crimson (`Button variant="accent"`, adds the
+section's hero product) and **"learn more"** as a white-outline ghost
+(`border-white/90 text-white`, links to the product page).
+> ⚠️ The white-outline "learn more" reads well on the saturated grapefruit / plum
+> / orange banners but is low-contrast on the light lime (Kitchen) banner — may
+> want a dark-outline variant there.
+
+**Shop first fold — halved.** The green title fold was `min-h:calc(100svh − nav)`
+but only holds a compact title band, leaving too much empty green. Reduced to
+`calc(50svh − var(--nav-h))`. A diagonal then drops into a **thin white band**
+(`h-6 md:h-10`) before the first colour banner, so the green hero and the lime
+Kitchen banner don't butt directly together.
+
+**Küche category page (new, separate from the shop sections).** Added for parity
+with `/haushalt` + `/pflege`:
+- `router/index.js` — new `/kueche` route → `CategoryPage` `{ slug: 'kueche', useCase: 'cook' }`.
+- `CategoryPage.vue` — `slug` validator allows `kueche`; `useCase` allows `cook`.
+- `messages.js` — full `category.kueche.*` copy (de + en), mirroring pflege/haushalt.
+
+> ⚠️ **Open decision on the standalone category pages.** The footer
+> (`Footer.vue:54-55`) links only to `/pflege` and `/haushalt` — **`/kueche` is not
+> linked anywhere** (reachable only by direct URL). Also, splitting Wäsche into the
+> `wash` group means the `/haushalt` page (`useCase: clean`) no longer lists laundry
+> products, and there's no `/waesche` page. The **shop page itself is complete** (all
+> four groups); only these secondary category pages need a taxonomy decision — wire
+> up `/kueche` (+ a `/waesche`?) and a footer link, or retire the standalone pages in
+> favour of the shop's in-page sections.
+
+---
+
## Quick reference — the two new colours
```
diff --git a/dist/assets/AboutPreview-BSczKAte.js b/dist/assets/AboutPreview-CgsRGQii.js
similarity index 89%
rename from dist/assets/AboutPreview-BSczKAte.js
rename to dist/assets/AboutPreview-CgsRGQii.js
index 734a654..85d3f88 100644
--- a/dist/assets/AboutPreview-BSczKAte.js
+++ b/dist/assets/AboutPreview-CgsRGQii.js
@@ -1 +1 @@
-import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as a}from"./i18n-BvZbJICa.js";import{t as o}from"./About-DFXxc7oN.js";var s={class:`min-h-screen bg-cream`},c={__name:`AboutPreview`,setup(c){let{t:l}=a(),u=r(()=>[1,2,3].map(e=>({year:l(`about.milestone.${e}.year`),title:l(`about.milestone.${e}.title`),text:l(`about.milestone.${e}.text`)})));return(r,a)=>(e(),i(`div`,s,[n(o,{eyebrow:t(l)(`about.eyebrow`),headline:t(l)(`about.headline`),sub:t(l)(`about.sub`),milestones:u.value},null,8,[`eyebrow`,`headline`,`sub`,`milestones`])]))}};export{c as default};
\ No newline at end of file
+import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as a}from"./i18n-C2O_jcDr.js";import{t as o}from"./About-DFXxc7oN.js";var s={class:`min-h-screen bg-cream`},c={__name:`AboutPreview`,setup(c){let{t:l}=a(),u=r(()=>[1,2,3].map(e=>({year:l(`about.milestone.${e}.year`),title:l(`about.milestone.${e}.title`),text:l(`about.milestone.${e}.text`)})));return(r,a)=>(e(),i(`div`,s,[n(o,{eyebrow:t(l)(`about.eyebrow`),headline:t(l)(`about.headline`),sub:t(l)(`about.sub`),milestones:u.value},null,8,[`eyebrow`,`headline`,`sub`,`milestones`])]))}};export{c as default};
\ No newline at end of file
diff --git a/dist/assets/AboutSection-BRQUOd7c.js b/dist/assets/AboutSection-DGaj-4SF.js
similarity index 96%
rename from dist/assets/AboutSection-BRQUOd7c.js
rename to dist/assets/AboutSection-DGaj-4SF.js
index 909f878..4f8c251 100644
--- a/dist/assets/AboutSection-BRQUOd7c.js
+++ b/dist/assets/AboutSection-DGaj-4SF.js
@@ -1,4 +1,4 @@
-import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./SectionShell-XUVs_07L.js";import{t as u}from"./DevicePreview-CxF-mErd.js";var d={class:`eyebrow mb-5`},f=`/design/preview/about`,p={__name:`AboutSection`,setup(p){let{t:m}=c();return(c,p)=>(e(),n(l,{eyebrow:t(m)(`ds.eyebrow.components`),title:t(m)(`ds.about.title`),description:t(m)(`ds.about.description`),wide:``},{default:i(()=>[s(`section`,null,[a(u,{src:f,initial:`desktop`,height:820})]),s(`section`,null,[s(`h2`,d,r(t(m)(`ds.heading.usage`)),1),p[0]||=s(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[s(`pre`,{class:`whitespace-pre-wrap`},`(e(),n(l,{eyebrow:t(m)(`ds.eyebrow.components`),title:t(m)(`ds.about.title`),description:t(m)(`ds.about.description`),wide:``},{default:i(()=>[s(`section`,null,[a(u,{src:f,initial:`desktop`,height:820})]),s(`section`,null,[s(`h2`,d,r(t(m)(`ds.heading.usage`)),1),p[0]||=s(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[s(`pre`,{class:`whitespace-pre-wrap`},`V.accountMode===`guest`),J=d(()=>V.accountMode===`signin`),Y=d(()=>V.accountMode===`register`),X=d(()=>!Y.value||V.password===V.passwordConfirm),Z=d(()=>V.email?q.value?!1:!!(!V.password||V.password.length<8||Y.value&&!X.value):!0);async function Q(){W.value=``,U.value=!0;try{J.value?await b({email:V.email,password:V.password}):Y.value&&await x({email:V.email,password:V.password,firstName:V.firstName,lastName:V.lastName,acceptsMarketing:V.acceptsMarketing}),V.persist(),H.push(`/checkout/shipping`)}catch(e){W.value=e?.message||B(`checkout.error.generic`)}finally{U.value=!1}}return i(async()=>{let e=await S();e?.user?.email&&!V.email&&V.update({email:e.user.email})}),(e,i)=>{let d=n(`RouterLink`);return t(),h(p,null,[m(`section`,E,[m(`div`,{role:`tablist`,"aria-label":r(B)(`checkout.account.tabsLabel`),class:`flex w-full rounded-pill border border-line bg-paper p-1`},[(t(),h(p,null,a(G,e=>m(`button`,{key:e.key,role:`tab`,type:`button`,"aria-selected":r(V).accountMode===e.key,class:g([`flex-1 px-4 py-2 rounded-pill text-[13px] font-semibold tracking-label transition-colors duration-base text-center`,r(V).accountMode===e.key?`bg-brand text-cream`:`text-brand hover:bg-cream`]),onClick:t=>K(e.key)},s(r(B)(e.label)),11,O)),64))],8,D),m(`form`,{class:`flex flex-col gap-5 md:min-h-[28rem]`,novalidate:``,onSubmit:_(Q,[`prevent`])},[u(T,{"model-value":r(V).email,label:r(B)(`checkout.field.email`),type:`email`,required:``,placeholder:r(B)(`checkout.placeholder.email`),hint:q.value?r(B)(`checkout.hint.email`):``,"onUpdate:modelValue":i[0]||=e=>r(V).update({email:e})},null,8,[`model-value`,`label`,`placeholder`,`hint`]),Y.value?(t(),h(`div`,k,[u(T,{"model-value":r(V).firstName,label:r(B)(`checkout.field.firstName`),"onUpdate:modelValue":i[1]||=e=>r(V).update({firstName:e})},null,8,[`model-value`,`label`]),u(T,{"model-value":r(V).lastName,label:r(B)(`checkout.field.lastName`),"onUpdate:modelValue":i[2]||=e=>r(V).update({lastName:e})},null,8,[`model-value`,`label`])])):l(``,!0),J.value||Y.value?(t(),o(T,{key:1,"model-value":r(V).password,label:r(B)(`checkout.field.password`),type:`password`,required:``,hint:Y.value?r(B)(`checkout.hint.password`):``,"onUpdate:modelValue":i[3]||=e=>r(V).update({password:e})},null,8,[`model-value`,`label`,`hint`])):l(``,!0),Y.value?(t(),o(T,{key:2,"model-value":r(V).passwordConfirm,label:r(B)(`checkout.field.passwordConfirm`),type:`password`,required:``,error:X.value?``:r(B)(`checkout.error.passwordMismatch`),"onUpdate:modelValue":i[4]||=e=>r(V).update({passwordConfirm:e})},null,8,[`model-value`,`label`,`error`])):l(``,!0),q.value||Y.value?(t(),h(`label`,A,[m(`input`,{checked:r(V).acceptsMarketing,type:`checkbox`,class:`w-5 h-5 rounded-xs border border-line accent-brand`,onChange:i[5]||=e=>r(V).update({acceptsMarketing:e.target.checked})},null,40,j),m(`span`,M,s(r(B)(`checkout.field.marketing`)),1)])):l(``,!0),W.value?(t(),h(`p`,N,s(W.value),1)):l(``,!0),J.value?(t(),h(`p`,P,[m(`a`,F,s(r(B)(`checkout.account.forgot`)),1)])):l(``,!0)],32)]),m(`footer`,I,[m(`div`,L,[u(d,{to:`/checkout/cart`,class:`flex-1 sm:flex-initial`},{default:c(()=>[u(C,{variant:`primary`,size:`lg`,block:``,type:`button`},{default:c(()=>[f(s(r(B)(`checkout.back`)),1)]),_:1})]),_:1}),m(`div`,R,[u(C,{variant:`accent`,size:`lg`,block:``,loading:U.value,disabled:Z.value,onClick:Q},{default:c(()=>[f(s(r(B)(`checkout.account.cta.continue`)),1)]),_:1},8,[`loading`,`disabled`])])])])],64)}}};export{z as default};
\ No newline at end of file
+import{B as e,C as t,D as n,G as r,S as i,T as a,c as o,ft as s,j as c,l,m as u,o as d,p as f,r as p,s as m,u as h,ut as g}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{c as _}from"./runtime-dom.esm-bundler-Bg1uJ-W7.js";import{o as v}from"./vue-router-Cyqru1db.js";import{t as y}from"./i18n-C2O_jcDr.js";import{i as b,n as x,t as S}from"./api-DeBxQCQq.js";import{t as C}from"./Button-DG-tA4DQ.js";import{t as w}from"./checkout-DTEUVxo-.js";import{t as T}from"./Input-RN3gn2df.js";var E={class:`flex flex-col gap-6`},D=[`aria-label`],O=[`aria-selected`,`onClick`],k={key:0,class:`grid gap-5 md:grid-cols-2`},A={key:3,class:`inline-flex items-center gap-3 cursor-pointer select-none`},j=[`checked`],M={class:`text-sm text-ink`},N={key:4,class:`text-sm text-danger`,role:`alert`,"aria-live":`polite`},P={key:5,class:`text-[13px] text-muted`},F={href:`/account/reset-password`,class:`text-brand hover:underline`},I={class:`fixed inset-x-0 bottom-0 z-30 bg-cream border-t border-line`,role:`contentinfo`},L={class:`mx-auto w-full max-w-7xl px-6 sm:px-8 md:px-12 lg:px-16 py-3 flex gap-3 sm:justify-between`,style:{paddingBottom:`max(0.75rem, env(safe-area-inset-bottom))`}},R={class:`flex-1 sm:flex-initial`},z={__name:`AccountStep`,setup(z){let{t:B}=y(),V=w(),H=v(),U=e(!1),W=e(``),G=[{key:`guest`,label:`checkout.account.tab.guest`},{key:`signin`,label:`checkout.account.tab.signin`},{key:`register`,label:`checkout.account.tab.register`}];function K(e){W.value=``,V.setAccountMode(e)}let q=d(()=>V.accountMode===`guest`),J=d(()=>V.accountMode===`signin`),Y=d(()=>V.accountMode===`register`),X=d(()=>!Y.value||V.password===V.passwordConfirm),Z=d(()=>V.email?q.value?!1:!!(!V.password||V.password.length<8||Y.value&&!X.value):!0);async function Q(){W.value=``,U.value=!0;try{J.value?await b({email:V.email,password:V.password}):Y.value&&await x({email:V.email,password:V.password,firstName:V.firstName,lastName:V.lastName,acceptsMarketing:V.acceptsMarketing}),V.persist(),H.push(`/checkout/shipping`)}catch(e){W.value=e?.message||B(`checkout.error.generic`)}finally{U.value=!1}}return i(async()=>{let e=await S();e?.user?.email&&!V.email&&V.update({email:e.user.email})}),(e,i)=>{let d=n(`RouterLink`);return t(),h(p,null,[m(`section`,E,[m(`div`,{role:`tablist`,"aria-label":r(B)(`checkout.account.tabsLabel`),class:`flex w-full rounded-pill border border-line bg-paper p-1`},[(t(),h(p,null,a(G,e=>m(`button`,{key:e.key,role:`tab`,type:`button`,"aria-selected":r(V).accountMode===e.key,class:g([`flex-1 px-4 py-2 rounded-pill text-[13px] font-semibold tracking-label transition-colors duration-base text-center`,r(V).accountMode===e.key?`bg-brand text-cream`:`text-brand hover:bg-cream`]),onClick:t=>K(e.key)},s(r(B)(e.label)),11,O)),64))],8,D),m(`form`,{class:`flex flex-col gap-5 md:min-h-[28rem]`,novalidate:``,onSubmit:_(Q,[`prevent`])},[u(T,{"model-value":r(V).email,label:r(B)(`checkout.field.email`),type:`email`,required:``,placeholder:r(B)(`checkout.placeholder.email`),hint:q.value?r(B)(`checkout.hint.email`):``,"onUpdate:modelValue":i[0]||=e=>r(V).update({email:e})},null,8,[`model-value`,`label`,`placeholder`,`hint`]),Y.value?(t(),h(`div`,k,[u(T,{"model-value":r(V).firstName,label:r(B)(`checkout.field.firstName`),"onUpdate:modelValue":i[1]||=e=>r(V).update({firstName:e})},null,8,[`model-value`,`label`]),u(T,{"model-value":r(V).lastName,label:r(B)(`checkout.field.lastName`),"onUpdate:modelValue":i[2]||=e=>r(V).update({lastName:e})},null,8,[`model-value`,`label`])])):l(``,!0),J.value||Y.value?(t(),o(T,{key:1,"model-value":r(V).password,label:r(B)(`checkout.field.password`),type:`password`,required:``,hint:Y.value?r(B)(`checkout.hint.password`):``,"onUpdate:modelValue":i[3]||=e=>r(V).update({password:e})},null,8,[`model-value`,`label`,`hint`])):l(``,!0),Y.value?(t(),o(T,{key:2,"model-value":r(V).passwordConfirm,label:r(B)(`checkout.field.passwordConfirm`),type:`password`,required:``,error:X.value?``:r(B)(`checkout.error.passwordMismatch`),"onUpdate:modelValue":i[4]||=e=>r(V).update({passwordConfirm:e})},null,8,[`model-value`,`label`,`error`])):l(``,!0),q.value||Y.value?(t(),h(`label`,A,[m(`input`,{checked:r(V).acceptsMarketing,type:`checkbox`,class:`w-5 h-5 rounded-xs border border-line accent-brand`,onChange:i[5]||=e=>r(V).update({acceptsMarketing:e.target.checked})},null,40,j),m(`span`,M,s(r(B)(`checkout.field.marketing`)),1)])):l(``,!0),W.value?(t(),h(`p`,N,s(W.value),1)):l(``,!0),J.value?(t(),h(`p`,P,[m(`a`,F,s(r(B)(`checkout.account.forgot`)),1)])):l(``,!0)],32)]),m(`footer`,I,[m(`div`,L,[u(d,{to:`/checkout/cart`,class:`flex-1 sm:flex-initial`},{default:c(()=>[u(C,{variant:`primary`,size:`lg`,block:``,type:`button`},{default:c(()=>[f(s(r(B)(`checkout.back`)),1)]),_:1})]),_:1}),m(`div`,R,[u(C,{variant:`accent`,size:`lg`,block:``,loading:U.value,disabled:Z.value,onClick:Q},{default:c(()=>[f(s(r(B)(`checkout.account.cta.continue`)),1)]),_:1},8,[`loading`,`disabled`])])])])],64)}}};export{z as default};
\ No newline at end of file
diff --git a/dist/assets/BadgesSection-BRhuNJar.js b/dist/assets/BadgesSection-DAx9Ko0l.js
similarity index 96%
rename from dist/assets/BadgesSection-BRhuNJar.js
rename to dist/assets/BadgesSection-DAx9Ko0l.js
index 6093360..786603e 100644
--- a/dist/assets/BadgesSection-BRhuNJar.js
+++ b/dist/assets/BadgesSection-DAx9Ko0l.js
@@ -1 +1 @@
-import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-BvZbJICa.js";import{t as l}from"./Badge-CudT491x.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`flex flex-wrap gap-3`},m={class:`eyebrow mb-5`},h={class:`flex flex-wrap gap-3`},g={__name:`BadgesSection`,setup(g){let{t:_}=c();return(c,g)=>(e(),n(u,{eyebrow:t(_)(`ds.eyebrow.components`),title:t(_)(`ds.badges.title`),description:t(_)(`ds.badges.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,f,r(t(_)(`ds.heading.variants`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,p,[a(l,{variant:`neutral`},{default:i(()=>[o(r(t(_)(`ds.badges.neutral`)),1)]),_:1}),a(l,{variant:`brand`},{default:i(()=>[o(r(t(_)(`ds.badges.brand`)),1)]),_:1}),a(l,{variant:`accent`},{default:i(()=>[o(r(t(_)(`ds.badges.accent`)),1)]),_:1}),a(l,{variant:`subtle`},{default:i(()=>[o(r(t(_)(`ds.badges.subtle`)),1)]),_:1}),a(l,{variant:`success`},{default:i(()=>[o(r(t(_)(`ds.badges.success`)),1)]),_:1}),a(l,{variant:`warning`},{default:i(()=>[o(r(t(_)(`ds.badges.warning`)),1)]),_:1}),a(l,{variant:`danger`},{default:i(()=>[o(r(t(_)(`ds.badges.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,m,r(t(_)(`ds.heading.nonUppercase`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,h,[a(l,{variant:`brand`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.newRelease`)),1)]),_:1}),a(l,{variant:`accent`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.featured`)),1)]),_:1}),a(l,{variant:`subtle`,uppercase:!1},{default:i(()=>[...g[0]||=[o(`v2.1.0`,-1)]]),_:1})])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
\ No newline at end of file
+import{C as e,G as t,c as n,ft as r,j as i,m as a,p as o,s}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as c}from"./i18n-C2O_jcDr.js";import{t as l}from"./Badge-CudT491x.js";import{t as u}from"./SectionShell-XUVs_07L.js";import{t as d}from"./Card-CPlQ-6EI.js";var f={class:`eyebrow mb-5`},p={class:`flex flex-wrap gap-3`},m={class:`eyebrow mb-5`},h={class:`flex flex-wrap gap-3`},g={__name:`BadgesSection`,setup(g){let{t:_}=c();return(c,g)=>(e(),n(u,{eyebrow:t(_)(`ds.eyebrow.components`),title:t(_)(`ds.badges.title`),description:t(_)(`ds.badges.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,f,r(t(_)(`ds.heading.variants`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,p,[a(l,{variant:`neutral`},{default:i(()=>[o(r(t(_)(`ds.badges.neutral`)),1)]),_:1}),a(l,{variant:`brand`},{default:i(()=>[o(r(t(_)(`ds.badges.brand`)),1)]),_:1}),a(l,{variant:`accent`},{default:i(()=>[o(r(t(_)(`ds.badges.accent`)),1)]),_:1}),a(l,{variant:`subtle`},{default:i(()=>[o(r(t(_)(`ds.badges.subtle`)),1)]),_:1}),a(l,{variant:`success`},{default:i(()=>[o(r(t(_)(`ds.badges.success`)),1)]),_:1}),a(l,{variant:`warning`},{default:i(()=>[o(r(t(_)(`ds.badges.warning`)),1)]),_:1}),a(l,{variant:`danger`},{default:i(()=>[o(r(t(_)(`ds.badges.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,m,r(t(_)(`ds.heading.nonUppercase`)),1),a(d,{tone:`paper`},{default:i(()=>[s(`div`,h,[a(l,{variant:`brand`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.newRelease`)),1)]),_:1}),a(l,{variant:`accent`,uppercase:!1},{default:i(()=>[o(r(t(_)(`ds.badges.featured`)),1)]),_:1}),a(l,{variant:`subtle`,uppercase:!1},{default:i(()=>[...g[0]||=[o(`v2.1.0`,-1)]]),_:1})])]),_:1})])]),_:1},8,[`eyebrow`,`title`,`description`]))}};export{g as default};
\ No newline at end of file
diff --git a/dist/assets/BundleCard-Bgh6G83l.js b/dist/assets/BundleCard-Bgh6G83l.js
new file mode 100644
index 0000000..cd6fbcb
--- /dev/null
+++ b/dist/assets/BundleCard-Bgh6G83l.js
@@ -0,0 +1 @@
+import{C as e,G as t,O as n,T as r,c as i,ft as a,j as o,l as s,m as c,o as l,p as u,r as d,s as f,u as p,ut as m}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as h}from"./vue-router-Cyqru1db.js";import{t as g}from"./Icon-CtR1FGIT.js";import{t as _}from"./i18n-C2O_jcDr.js";import{t as v}from"./Badge-CudT491x.js";import{t as y}from"./Button-DG-tA4DQ.js";var b=[`src`,`alt`],x={key:1,class:`pointer-events-none absolute bottom-0 right-0 z-[1] px-2 py-0.5 text-[10px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]`},S=[`src`,`alt`],C={key:1,class:`pointer-events-none absolute bottom-0 right-0 z-[1] px-2 py-0.5 text-[10px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]`},w={class:`flex flex-col gap-1.5`},T={key:0,class:`text-xs font-semibold tracking-label text-muted uppercase`},E={class:`flex flex-col gap-1.5`},D={key:0,class:`text-sm text-muted tracking-label`},O={class:`flex flex-col gap-0.5`},k={class:`text-xs tracking-label text-muted uppercase`},A={class:`font-display text-2xl font-normal text-brand leading-none`},j={key:0,class:`text-xs text-muted mt-1`},M={key:1,class:`text-xs font-semibold tracking-label uppercase text-danger mt-1`},N=3,P={__name:`BundleCard`,props:{name:{type:String,required:!0},items:{type:Array,required:!0},price:{type:Number,required:!0},memberPrice:{type:Number,default:null},usage:{type:String,default:``},image:{type:String,required:!0},imageAlt:{type:String,default:``},badge:{type:String,default:``},badgeVariant:{type:String,default:`accent`,validator:e=>[`neutral`,`brand`,`accent`,`subtle`,`success`,`warning`,`danger`].includes(e)},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`].includes(e)},layout:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},inStock:{type:Boolean,default:!0},currency:{type:String,default:`€`},href:{type:String,default:``},imageFit:{type:String,default:`cover`,validator:e=>[`contain`,`cover`].includes(e)},aiEdited:{type:Boolean,default:!1}},emits:[`add`],setup(P){function F(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)}let I=P,{t:L}=_(),R={paper:{surface:`bg-paper`,media:`bg-cream`,border:`border-line`},cream:{surface:`bg-cream`,media:`bg-paper`,border:`border-line`}},z=l(()=>R[I.tone]);function B(e){return`${I.currency} ${e.toFixed(2).replace(`.`,`,`)}`}let V=l(()=>B(I.price)),H=l(()=>I.memberPrice==null?``:B(I.memberPrice)),U=l(()=>I.items.slice(0,N)),W=l(()=>Math.max(0,I.items.length-N));return(l,_)=>(e(),p(`article`,{class:m([`group flex overflow-hidden rounded-md border transition-all duration-base ease-out`,P.layout===`horizontal`?`flex-col md:flex-row`:`flex-col`,z.value.surface,z.value.border,`hover:-translate-y-1 hover:shadow-md hover:border-brand-soft`])},[P.href&&F(P.href)?(e(),i(t(h),{key:0,to:P.href,class:m([`relative block overflow-hidden`,P.layout===`horizontal`?`aspect-[4/3] md:aspect-auto md:w-[38%] md:shrink-0 md:min-h-[300px]`:`aspect-[4/3]`,z.value.media])},{default:o(()=>[P.badge?(e(),i(v,{key:0,variant:P.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:o(()=>[u(a(P.badge),1)]),_:1},8,[`variant`])):s(``,!0),f(`img`,{src:P.image,alt:P.imageAlt||P.name,loading:`lazy`,decoding:`async`,class:m([`absolute inset-0 w-full h-full transition-transform duration-slow ease-out group-hover:scale-105`,P.imageFit===`cover`?`object-cover`:`object-contain `+(P.layout===`horizontal`?`p-6 md:p-5`:`p-8`)])},null,10,b),P.aiEdited?(e(),p(`span`,x,`AI Edited`)):s(``,!0)]),_:1},8,[`to`,`class`])):(e(),i(n(P.href?`a`:`div`),{key:1,href:P.href||null,class:m([`relative block overflow-hidden`,P.layout===`horizontal`?`aspect-[4/3] md:aspect-auto md:w-[38%] md:shrink-0 md:min-h-[300px]`:`aspect-[4/3]`,z.value.media])},{default:o(()=>[P.badge?(e(),i(v,{key:0,variant:P.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:o(()=>[u(a(P.badge),1)]),_:1},8,[`variant`])):s(``,!0),f(`img`,{src:P.image,alt:P.imageAlt||P.name,loading:`lazy`,decoding:`async`,class:m([`absolute inset-0 w-full h-full transition-transform duration-slow ease-out group-hover:scale-105`,P.imageFit===`cover`?`object-cover`:`object-contain `+(P.layout===`horizontal`?`p-6 md:p-5`:`p-8`)])},null,10,S),P.aiEdited?(e(),p(`span`,C,`AI Edited`)):s(``,!0)]),_:1},8,[`href`,`class`])),f(`div`,{class:m([`flex flex-col gap-4 p-6`,P.layout===`horizontal`?`md:p-6 md:flex-1`:``])},[f(`div`,w,[P.usage?(e(),p(`span`,T,a(P.usage),1)):s(``,!0),P.href&&F(P.href)?(e(),i(t(h),{key:1,to:P.href,class:`font-display text-xl font-normal leading-tight text-ink hover:text-brand transition-colors duration-base`},{default:o(()=>[u(a(P.name),1)]),_:1},8,[`to`])):(e(),i(n(P.href?`a`:`h3`),{key:2,href:P.href||null,class:m([`font-display text-xl font-normal leading-tight text-ink`,P.href?`hover:text-brand transition-colors duration-base`:``])},{default:o(()=>[u(a(P.name),1)]),_:1},8,[`href`,`class`]))]),f(`ul`,E,[(e(!0),p(d,null,r(U.value,t=>(e(),p(`li`,{key:t,class:`text-sm text-ink/80 leading-relaxed`},a(t),1))),128)),W.value>0?(e(),p(`li`,D,`+ `+a(W.value)+` `+a(t(L)(`bundles.card.moreItems`)),1)):s(``,!0)]),f(`div`,{class:m([`mt-auto pt-4 border-t border-line flex gap-3`,P.layout===`horizontal`?`flex-col sm:flex-row sm:items-end sm:justify-between`:`flex-col`])},[f(`div`,O,[f(`span`,k,a(t(L)(`bundles.card.priceLabel`)),1),f(`span`,A,a(V.value),1),H.value?(e(),p(`span`,j,a(t(L)(`bundles.card.memberPrefix`))+` `+a(H.value),1)):s(``,!0),P.inStock?s(``,!0):(e(),p(`span`,M,a(t(L)(`ds.product.outOfStock`)),1))]),c(y,{variant:`accent`,size:`md`,block:P.layout===`vertical`,disabled:!P.inStock,onClick:_[0]||=e=>l.$emit(`add`)},{before:o(()=>[c(g,{name:`plus`,size:16})]),default:o(()=>[u(` `+a(t(L)(`ds.buttons.addToCart`)),1)]),_:1},8,[`block`,`disabled`])],2)],2)],2))}};export{P as t};
\ No newline at end of file
diff --git a/dist/assets/BundleCard-DQifBKz2.js b/dist/assets/BundleCard-DQifBKz2.js
deleted file mode 100644
index e4c355f..0000000
--- a/dist/assets/BundleCard-DQifBKz2.js
+++ /dev/null
@@ -1 +0,0 @@
-import{C as e,G as t,O as n,T as r,c as i,ft as a,j as o,l as s,m as c,o as l,p as u,r as d,s as f,u as p,ut as m}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as h}from"./vue-router-Cyqru1db.js";import{t as g}from"./Icon-CtR1FGIT.js";import{t as _}from"./i18n-BvZbJICa.js";import{t as v}from"./Badge-CudT491x.js";import{t as y}from"./Button-DG-tA4DQ.js";var b=[`src`,`alt`],x=[`src`,`alt`],S={class:`flex flex-col gap-1.5`},C={key:0,class:`text-xs font-semibold tracking-label text-muted uppercase`},w={class:`flex flex-col gap-1.5`},T={key:0,class:`text-sm text-muted tracking-label`},E={class:`flex flex-col gap-0.5`},D={class:`text-xs tracking-label text-muted uppercase`},O={class:`font-display text-2xl font-normal text-brand leading-none`},k={key:0,class:`text-xs text-muted mt-1`},A={key:1,class:`text-xs font-semibold tracking-label uppercase text-danger mt-1`},j=3,M={__name:`BundleCard`,props:{name:{type:String,required:!0},items:{type:Array,required:!0},price:{type:Number,required:!0},memberPrice:{type:Number,default:null},usage:{type:String,default:``},image:{type:String,required:!0},imageAlt:{type:String,default:``},badge:{type:String,default:``},badgeVariant:{type:String,default:`accent`,validator:e=>[`neutral`,`brand`,`accent`,`subtle`,`success`,`warning`,`danger`].includes(e)},tone:{type:String,default:`paper`,validator:e=>[`paper`,`cream`].includes(e)},layout:{type:String,default:`vertical`,validator:e=>[`vertical`,`horizontal`].includes(e)},inStock:{type:Boolean,default:!0},currency:{type:String,default:`€`},href:{type:String,default:``},imageFit:{type:String,default:`cover`,validator:e=>[`contain`,`cover`].includes(e)}},emits:[`add`],setup(M){function N(e){return typeof e==`string`&&e.startsWith(`/`)&&!e.startsWith(`//`)}let P=M,{t:F}=_(),I={paper:{surface:`bg-paper`,media:`bg-cream`,border:`border-line`},cream:{surface:`bg-cream`,media:`bg-paper`,border:`border-line`}},L=l(()=>I[P.tone]);function R(e){return`${P.currency} ${e.toFixed(2).replace(`.`,`,`)}`}let z=l(()=>R(P.price)),B=l(()=>P.memberPrice==null?``:R(P.memberPrice)),V=l(()=>P.items.slice(0,j)),H=l(()=>Math.max(0,P.items.length-j));return(l,_)=>(e(),p(`article`,{class:m([`group flex overflow-hidden rounded-md border transition-all duration-base ease-out`,M.layout===`horizontal`?`flex-col md:flex-row`:`flex-col`,L.value.surface,L.value.border,`hover:-translate-y-1 hover:shadow-md hover:border-brand-soft`])},[M.href&&N(M.href)?(e(),i(t(h),{key:0,to:M.href,class:m([`relative block overflow-hidden`,M.layout===`horizontal`?`aspect-[4/3] md:aspect-auto md:w-[38%] md:shrink-0 md:min-h-[300px]`:`aspect-[4/3]`,L.value.media])},{default:o(()=>[M.badge?(e(),i(v,{key:0,variant:M.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:o(()=>[u(a(M.badge),1)]),_:1},8,[`variant`])):s(``,!0),f(`img`,{src:M.image,alt:M.imageAlt||M.name,loading:`lazy`,decoding:`async`,class:m([`absolute inset-0 w-full h-full transition-transform duration-slow ease-out group-hover:scale-105`,M.imageFit===`cover`?`object-cover`:`object-contain `+(M.layout===`horizontal`?`p-6 md:p-5`:`p-8`)])},null,10,b)]),_:1},8,[`to`,`class`])):(e(),i(n(M.href?`a`:`div`),{key:1,href:M.href||null,class:m([`relative block overflow-hidden`,M.layout===`horizontal`?`aspect-[4/3] md:aspect-auto md:w-[38%] md:shrink-0 md:min-h-[300px]`:`aspect-[4/3]`,L.value.media])},{default:o(()=>[M.badge?(e(),i(v,{key:0,variant:M.badgeVariant,class:`absolute top-4 left-4 z-[1]`},{default:o(()=>[u(a(M.badge),1)]),_:1},8,[`variant`])):s(``,!0),f(`img`,{src:M.image,alt:M.imageAlt||M.name,loading:`lazy`,decoding:`async`,class:m([`absolute inset-0 w-full h-full transition-transform duration-slow ease-out group-hover:scale-105`,M.imageFit===`cover`?`object-cover`:`object-contain `+(M.layout===`horizontal`?`p-6 md:p-5`:`p-8`)])},null,10,x)]),_:1},8,[`href`,`class`])),f(`div`,{class:m([`flex flex-col gap-4 p-6`,M.layout===`horizontal`?`md:p-6 md:flex-1`:``])},[f(`div`,S,[M.usage?(e(),p(`span`,C,a(M.usage),1)):s(``,!0),M.href&&N(M.href)?(e(),i(t(h),{key:1,to:M.href,class:`font-display text-xl font-normal leading-tight text-ink hover:text-brand transition-colors duration-base`},{default:o(()=>[u(a(M.name),1)]),_:1},8,[`to`])):(e(),i(n(M.href?`a`:`h3`),{key:2,href:M.href||null,class:m([`font-display text-xl font-normal leading-tight text-ink`,M.href?`hover:text-brand transition-colors duration-base`:``])},{default:o(()=>[u(a(M.name),1)]),_:1},8,[`href`,`class`]))]),f(`ul`,w,[(e(!0),p(d,null,r(V.value,t=>(e(),p(`li`,{key:t,class:`text-sm text-ink/80 leading-relaxed`},a(t),1))),128)),H.value>0?(e(),p(`li`,T,`+ `+a(H.value)+` `+a(t(F)(`bundles.card.moreItems`)),1)):s(``,!0)]),f(`div`,{class:m([`mt-auto pt-4 border-t border-line flex gap-3`,M.layout===`horizontal`?`flex-col sm:flex-row sm:items-end sm:justify-between`:`flex-col`])},[f(`div`,E,[f(`span`,D,a(t(F)(`bundles.card.priceLabel`)),1),f(`span`,O,a(z.value),1),B.value?(e(),p(`span`,k,a(t(F)(`bundles.card.memberPrefix`))+` `+a(B.value),1)):s(``,!0),M.inStock?s(``,!0):(e(),p(`span`,A,a(t(F)(`ds.product.outOfStock`)),1))]),c(y,{variant:`accent`,size:`md`,block:M.layout===`vertical`,disabled:!M.inStock,onClick:_[0]||=e=>l.$emit(`add`)},{before:o(()=>[c(g,{name:`plus`,size:16})]),default:o(()=>[u(` `+a(t(F)(`ds.buttons.addToCart`)),1)]),_:1},8,[`block`,`disabled`])],2)],2)],2))}};export{M as t};
\ No newline at end of file
diff --git a/dist/assets/BundleCardSection-DmDObjup.js b/dist/assets/BundleCardSection-BqIKV5M0.js
similarity index 96%
rename from dist/assets/BundleCardSection-DmDObjup.js
rename to dist/assets/BundleCardSection-BqIKV5M0.js
index 678c370..06f6b24 100644
--- a/dist/assets/BundleCardSection-DmDObjup.js
+++ b/dist/assets/BundleCardSection-BqIKV5M0.js
@@ -1,4 +1,4 @@
-import{B as e,C as t,G as n,c as r,ft as i,j as a,l as o,m as s,p as c,s as l,u,y as d}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as f}from"./i18n-BvZbJICa.js";import{t as p}from"./BundleCard-DQifBKz2.js";import{t as m}from"./SectionShell-XUVs_07L.js";var h={class:`eyebrow mb-5`},g={class:`grid sm:grid-cols-2 lg:grid-cols-3 gap-6`},_={key:0,class:`mt-5 text-sm text-muted`},v={class:`font-mono text-[12px]`},y={class:`grid gap-6`},b={class:`eyebrow mb-5`},x={class:`grid sm:grid-cols-2 gap-6`},S={class:`eyebrow mb-5`},C=`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,w={__name:`BundleCardSection`,setup(w){let{t:T}=f(),E=e(``);function D(e){E.value=e,setTimeout(()=>{E.value===e&&(E.value=``)},2e3)}let O={name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:C,imageAlt:`Haushalts-Bundle`},k={...O,items:[...O.items,`1× Holste Wasch-Soda 500 g`,`1× Allzweckreiniger 750 ml`]};return(e,f)=>(t(),r(m,{eyebrow:n(T)(`ds.eyebrow.components`),title:n(T)(`ds.bundleCard.title`),description:n(T)(`ds.bundleCard.description`)},{default:a(()=>[l(`section`,null,[l(`h2`,h,i(n(T)(`ds.heading.default`)),1),l(`div`,g,[s(p,d(O,{onAdd:f[0]||=e=>D(`default`)}),null,16),s(p,d(O,{badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[1]||=e=>D(`bestseller`)}),null,16),s(p,d(O,{tone:`cream`,onAdd:f[2]||=e=>D(`cream`)}),null,16)]),E.value?(t(),u(`p`,_,[c(i(n(T)(`ds.product.added`))+`: `,1),l(`code`,v,i(E.value),1)])):o(``,!0)]),l(`section`,null,[f[5]||=l(`h2`,{class:`eyebrow mb-5`},`Horizontal layout`,-1),f[6]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},[c(` Passed as `),l(`code`,{class:`font-mono text-[12px]`},`layout="horizontal"`),c(`. From `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` up the media takes ~38% of the row and the body fills the rest, with the CTA inlined next to the price block. Below `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` it collapses back to vertical. `)],-1),l(`div`,y,[s(p,d(O,{layout:`horizontal`,badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[3]||=e=>D(`horizontal`)}),null,16)])]),l(`section`,null,[l(`h2`,b,i(n(T)(`ds.heading.states`)),1),f[7]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},` Same bundle across both cards — only the state being demonstrated changes. `,-1),l(`div`,x,[s(p,d(O,{"in-stock":!1}),null,16),s(p,d(k,{onAdd:f[4]||=e=>D(`overflow`)}),null,16)]),f[8]||=l(`p`,{class:`mt-3 text-sm text-muted max-w-2xl`},[c(` More than three items collapse the tail into a `),l(`code`,{class:`font-mono text-[12px]`},`+ N weitere`),c(` line so the card stays scannable. `)],-1)]),l(`section`,null,[l(`h2`,S,i(n(T)(`ds.heading.usage`)),1),f[9]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`{E.value===e&&(E.value=``)},2e3)}let O={name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:C,imageAlt:`Haushalts-Bundle`},k={...O,items:[...O.items,`1× Holste Wasch-Soda 500 g`,`1× Allzweckreiniger 750 ml`]};return(e,f)=>(t(),r(m,{eyebrow:n(T)(`ds.eyebrow.components`),title:n(T)(`ds.bundleCard.title`),description:n(T)(`ds.bundleCard.description`)},{default:a(()=>[l(`section`,null,[l(`h2`,h,i(n(T)(`ds.heading.default`)),1),l(`div`,g,[s(p,d(O,{onAdd:f[0]||=e=>D(`default`)}),null,16),s(p,d(O,{badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[1]||=e=>D(`bestseller`)}),null,16),s(p,d(O,{tone:`cream`,onAdd:f[2]||=e=>D(`cream`)}),null,16)]),E.value?(t(),u(`p`,_,[c(i(n(T)(`ds.product.added`))+`: `,1),l(`code`,v,i(E.value),1)])):o(``,!0)]),l(`section`,null,[f[5]||=l(`h2`,{class:`eyebrow mb-5`},`Horizontal layout`,-1),f[6]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},[c(` Passed as `),l(`code`,{class:`font-mono text-[12px]`},`layout="horizontal"`),c(`. From `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` up the media takes ~38% of the row and the body fills the rest, with the CTA inlined next to the price block. Below `),l(`code`,{class:`font-mono text-[12px]`},`md`),c(` it collapses back to vertical. `)],-1),l(`div`,y,[s(p,d(O,{layout:`horizontal`,badge:`Bestseller`,"badge-variant":`accent`,onAdd:f[3]||=e=>D(`horizontal`)}),null,16)])]),l(`section`,null,[l(`h2`,b,i(n(T)(`ds.heading.states`)),1),f[7]||=l(`p`,{class:`text-sm text-muted mb-5 max-w-2xl`},` Same bundle across both cards — only the state being demonstrated changes. `,-1),l(`div`,x,[s(p,d(O,{"in-stock":!1}),null,16),s(p,d(k,{onAdd:f[4]||=e=>D(`overflow`)}),null,16)]),f[8]||=l(`p`,{class:`mt-3 text-sm text-muted max-w-2xl`},[c(` More than three items collapse the tail into a `),l(`code`,{class:`font-mono text-[12px]`},`+ N weitere`),c(` line so the card stays scannable. `)],-1)]),l(`section`,null,[l(`h2`,S,i(n(T)(`ds.heading.usage`)),1),f[9]||=l(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[l(`pre`,{class:`whitespace-pre-wrap`},`String(Re.params.slug||``)),W=d(()=>de(ze.value)),G=e(null);i(()=>{se();let e=typeof window<`u`?window.history.state?.back:null;G.value=typeof e==`string`?e:null});let Be=d(()=>{let e=G.value;return!e||e===`/`||e.startsWith(`/#`)?`product.backHome`:`product.backGeneric`});function Ve(){G.value?V.back():V.push(`/`)}let He=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],Ue=[],K=d(()=>{let e=W.value;return e?`€ ${e.price.toFixed(2).replace(`.`,`,`)}`:``}),q=d(()=>{let e=W.value;return e?.memberPrice?`€ ${e.memberPrice.toFixed(2).replace(`.`,`,`)}`:``}),J=d(()=>{let e=W.value;return e?{name:z(e.nameKey),usage:e.usageKey?z(e.usageKey):``,description:e.descriptionKey?z(e.descriptionKey):``,imageAlt:e.imageAltKey?z(e.imageAltKey):``,badge:e.badgeKey?z(e.badgeKey):``}:null}),Y=d(()=>{let e=W.value;return e?e.itemKeys.map(e=>{let t=z(e);return{label:t,product:v.find(e=>t.toLowerCase().includes(e.title.toLowerCase().replace(/®/g,``).trim()))}}):[]});async function X(){let e=W.value;e?.anchorProductId&&(await y(e.anchorProductId,U.value),H.value=!0)}async function We({productId:e,quantity:t}){await ae(e,t)}async function Ge(e){await ie(e)}function Ke(){H.value=!1,V.push(`/checkout`)}async function qe(e){await y(e.id,1),H.value=!0}let Z=e(null),Q=null;function $(){let e=Z.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return i(()=>{if($(),typeof ResizeObserver<`u`&&Z.value){let e=Z.value.$el||Z.value;Q=new ResizeObserver($),Q.observe(e)}typeof window<`u`&&window.addEventListener(`resize`,$)}),ee(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,i)=>{let d=n(`RouterLink`);return t(),h(p,null,[u(ce,{ref_key:`navRef`,ref:Z,variant:`brand`,layout:`standard`,items:He,"secondary-items":Ue,"cart-count":r(B).count,products:r(v),onCart:i[0]||=e=>H.value=!0,onSearch:qe},null,8,[`cart-count`,`products`]),W.value?(t(),h(`main`,ge,[m(`div`,S,[m(`button`,{type:`button`,class:`inline-flex items-center gap-2 text-sm tracking-label uppercase text-cream/75 hover:text-cream transition-colors`,onClick:Ve},[u(g,{name:`arrow-left`,size:16}),f(` `+s(r(z)(Be.value)),1)])]),m(`section`,C,[m(`div`,w,[m(`div`,T,[J.value.badge?(t(),o(_,{key:0,variant:W.value.badgeVariant||`accent`,class:`absolute top-4 left-4 z-[1] shadow-sm`},{default:c(()=>[f(s(J.value.badge),1)]),_:1},8,[`variant`])):l(``,!0),m(`div`,E,[m(`img`,{src:W.value.image,alt:J.value.imageAlt||J.value.name,loading:`eager`,decoding:`async`,class:`absolute inset-0 w-full h-full object-cover`},null,8,D)])]),m(`div`,O,[J.value.usage?(t(),h(`p`,k,s(J.value.usage),1)):l(``,!0),m(`h1`,A,s(J.value.name),1),J.value.description?(t(),h(`p`,j,s(J.value.description),1)):l(``,!0),m(`div`,M,[m(`p`,N,s(r(z)(`bundle.items`)),1),m(`ul`,P,[(t(!0),h(p,null,a(Y.value,(e,n)=>(t(),h(`li`,{key:n,class:`flex items-start gap-2 text-base text-cream/95 leading-relaxed`},[u(g,{name:`check`,size:18,class:`mt-0.5 shrink-0 text-accent`}),e.product?(t(),o(d,{key:0,to:e.product.href,class:`hover:text-accent transition-colors`},{default:c(()=>[f(s(e.label),1)]),_:2},1032,[`to`])):(t(),h(`span`,F,s(e.label),1))]))),128))])]),m(`div`,I,[m(`span`,L,s(K.value),1),q.value?(t(),h(`span`,_e,[f(s(r(z)(`bundle.memberPrice`))+` `,1),m(`span`,ve,s(q.value),1)])):l(``,!0)]),m(`div`,ye,[u(x,{modelValue:U.value,"onUpdate:modelValue":i[1]||=e=>U.value=e,min:1,max:10},null,8,[`modelValue`]),u(b,{variant:`accent`,size:`lg`,onClick:X},{before:c(()=>[u(g,{name:`plus`,size:16})]),default:c(()=>[f(` `+s(r(z)(`ds.buttons.addToCart`)),1)]),_:1})])])])]),m(`div`,be,[m(`section`,xe,[m(`div`,Se,[J.value.badge?(t(),o(_,{key:0,variant:W.value.badgeVariant||`accent`,class:`absolute top-4 left-4 z-[1] shadow-sm`},{default:c(()=>[f(s(J.value.badge),1)]),_:1},8,[`variant`])):l(``,!0),m(`img`,{src:W.value.image,alt:J.value.imageAlt||J.value.name,loading:`eager`,decoding:`async`,class:`block w-full h-auto`},null,8,Ce)])]),m(`section`,we,[m(`div`,Te,[J.value.usage?(t(),h(`p`,R,s(J.value.usage),1)):l(``,!0),m(`h1`,Ee,s(J.value.name),1),J.value.description?(t(),h(`p`,De,s(J.value.description),1)):l(``,!0),m(`div`,Oe,[m(`p`,ke,s(r(z)(`bundle.items`)),1),m(`ul`,Ae,[(t(!0),h(p,null,a(Y.value,(e,n)=>(t(),h(`li`,{key:n,class:`flex items-start gap-2 text-base text-cream/95 leading-relaxed`},[u(g,{name:`check`,size:18,class:`mt-0.5 shrink-0 text-accent`}),e.product?(t(),o(d,{key:0,to:e.product.href,class:`hover:text-accent transition-colors`},{default:c(()=>[f(s(e.label),1)]),_:2},1032,[`to`])):(t(),h(`span`,je,s(e.label),1))]))),128))])]),m(`div`,Me,[m(`span`,Ne,s(K.value),1),q.value?(t(),h(`span`,Pe,[f(s(r(z)(`bundle.memberPrice`))+` `,1),m(`span`,Fe,s(q.value),1)])):l(``,!0)]),m(`div`,Ie,[u(x,{modelValue:U.value,"onUpdate:modelValue":i[2]||=e=>U.value=e,min:1,max:10},null,8,[`modelValue`]),u(b,{variant:`accent`,size:`lg`,onClick:X},{before:c(()=>[u(g,{name:`plus`,size:16})]),default:c(()=>[f(` `+s(r(z)(`ds.buttons.addToCart`)),1)]),_:1})])])])])])):(t(),h(`main`,fe,[m(`div`,pe,[m(`h1`,me,s(r(z)(`product.notFound.title`)),1),m(`p`,he,s(r(z)(`product.notFound.body`)),1),u(d,{to:`/`,class:`inline-flex`},{default:c(()=>[u(b,{variant:`primary`,size:`lg`},{default:c(()=>[f(s(r(z)(`product.backHome`)),1)]),_:1})]),_:1})])])),i[4]||=m(`div`,{"aria-hidden":`true`,class:`min-[1100px]:hidden bg-brand`,style:{height:`calc(100px + env(safe-area-inset-bottom))`}},null,-1),u(ue),u(le,{modelValue:H.value,"onUpdate:modelValue":i[3]||=e=>H.value=e,items:r(B).items,subtotal:r(B).subtotal,count:r(B).count,onUpdateQuantity:We,onRemove:Ge,onCheckout:Ke},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64)}}};export{Le as default};
\ No newline at end of file
diff --git a/dist/assets/BundlePage-BtRLHc9H.js b/dist/assets/BundlePage-BtRLHc9H.js
new file mode 100644
index 0000000..f0d2f11
--- /dev/null
+++ b/dist/assets/BundlePage-BtRLHc9H.js
@@ -0,0 +1 @@
+import{B as e,C as t,D as n,G as r,S as i,T as a,c as o,ft as s,j as c,l,m as u,o as d,p as f,r as p,s as m,u as h,x as ee}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a as te,o as ne}from"./vue-router-Cyqru1db.js";import{t as g}from"./Icon-CtR1FGIT.js";import{t as re}from"./i18n-C2O_jcDr.js";import{t as _}from"./Badge-CudT491x.js";import{r as v}from"./products-CfIXFr2X.js";import{c as y,d as ie,f as ae,p as oe,u as se}from"./api-DeBxQCQq.js";import{t as ce}from"./Navbar--vwcBwtS.js";import{t as b}from"./Button-DG-tA4DQ.js";import{t as x}from"./QuantityStepper-BB38-Td1.js";import{t as le}from"./CartDrawer-CegjvllQ.js";import{t as ue}from"./Footer-Co01VUwo.js";import{n as de}from"./bundles-CbVF2Hvx.js";var fe={key:0,class:`bg-cream min-h-[60svh] flex items-center justify-center px-6`},pe={class:`text-center max-w-md`},me={class:`font-display text-3xl text-ink mb-4`},he={class:`text-muted mb-6`},ge={key:1,class:`bg-brand text-cream`},S={class:`mx-auto w-full max-w-7xl px-6 md:px-10 lg:px-16 pt-6`},C={class:`hidden lg:block mx-auto w-full max-w-7xl px-6 md:px-10 lg:px-16 pt-4 pb-14`},w={class:`grid grid-cols-[1.4fr_1fr] gap-12 xl:gap-16 items-center`},T={class:`relative overflow-hidden rounded-lg bg-cream/10`},E={class:`relative aspect-[16/10]`},D=[`src`,`alt`],O={key:0,class:`pointer-events-none absolute bottom-0 right-0 z-[1] px-2.5 py-1 text-[11px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]`},k={class:`flex flex-col gap-6 min-w-0 text-cream`},A={key:0,class:`text-xs tracking-label uppercase text-cream/75`},j={class:`font-display font-normal leading-[1.05] tracking-tight text-cream text-[2.25rem] xl:text-[2.75rem] 2xl:text-[3.25rem]`},M={key:1,class:`text-base xl:text-lg leading-relaxed text-cream/85`},N={class:`flex flex-col gap-2`},P={class:`text-xs tracking-label uppercase text-cream/75`},F={class:`flex flex-col gap-1.5`},I={key:1},L={class:`flex flex-col gap-1`},_e={class:`font-display text-3xl xl:text-4xl text-cream`},ve={key:0,class:`text-sm text-cream/75`},ye={class:`text-accent font-medium`},be={class:`flex flex-wrap items-center gap-4 mt-2`},xe={class:`lg:hidden`},Se={class:`mx-auto w-full max-w-7xl px-6 md:px-10 pt-6 md:pt-8`},Ce={class:`relative overflow-hidden rounded-lg bg-cream/10`},we=[`src`,`alt`],Te={key:1,class:`pointer-events-none absolute bottom-0 right-0 z-[1] px-2.5 py-1 text-[11px] font-medium uppercase tracking-label text-white/55 drop-shadow-[0_1px_2px_rgba(0,0,0,0.45)]`},Ee={class:`mx-auto w-full max-w-7xl px-6 md:px-10 py-10 md:py-14`},De={class:`flex flex-col gap-6`},Oe={key:0,class:`text-xs tracking-label uppercase text-cream/70`},ke={class:`font-display font-normal leading-[1.06] tracking-tight text-cream text-[2rem] md:text-[2.5rem]`},Ae={key:1,class:`text-base md:text-lg leading-relaxed text-cream/85`},je={class:`flex flex-col gap-2`},Me={class:`text-xs tracking-label uppercase text-cream/70`},Ne={class:`flex flex-col gap-1.5`},Pe={key:1},Fe={class:`flex flex-col gap-1`},Ie={class:`font-display text-3xl md:text-4xl text-cream`},Le={key:0,class:`text-sm text-cream/70`},Re={class:`text-accent font-medium`},ze={class:`flex flex-wrap items-center gap-4 mt-2`},Be={__name:`BundlePage`,setup(Be){let{t:R}=re(),z=oe(),Ve=te(),B=ne(),V=e(!1),H=e(1),He=d(()=>String(Ve.params.slug||``)),U=d(()=>de(He.value)),W=e(null);i(()=>{se();let e=typeof window<`u`?window.history.state?.back:null;W.value=typeof e==`string`?e:null});let Ue=d(()=>{let e=W.value;return!e||e===`/`||e.startsWith(`/#`)?`product.backHome`:`product.backGeneric`});function We(){W.value?B.back():B.push(`/`)}let Ge=[{key:`nav.shop`,href:`/shop`},{key:`nav.bundles`,href:`/#bundles`},{key:`nav.revitalization`,href:`/#revitalize`},{key:`nav.about`,href:`/#about`},{key:`nav.kaiserhacks`,href:`/kaiserhacks`}],Ke=[],G=d(()=>{let e=U.value;return e?`€ ${e.price.toFixed(2).replace(`.`,`,`)}`:``}),K=d(()=>{let e=U.value;return e?.memberPrice?`€ ${e.memberPrice.toFixed(2).replace(`.`,`,`)}`:``}),q=d(()=>{let e=U.value;return e?{name:R(e.nameKey),usage:e.usageKey?R(e.usageKey):``,description:e.descriptionKey?R(e.descriptionKey):``,imageAlt:e.imageAltKey?R(e.imageAltKey):``,badge:e.badgeKey?R(e.badgeKey):``}:null}),J=d(()=>{let e=U.value;return e?e.itemKeys.map(e=>{let t=R(e);return{label:t,product:v.find(e=>t.toLowerCase().includes(e.title.toLowerCase().replace(/®/g,``).trim()))}}):[]});async function Y(){let e=U.value;e?.anchorProductId&&(await y(e.anchorProductId,H.value),V.value=!0)}async function qe({productId:e,quantity:t}){await ae(e,t)}async function X(e){await ie(e)}function Je(){V.value=!1,B.push(`/checkout`)}async function Ye(e){await y(e.id,1),V.value=!0}let Z=e(null),Q=null;function $(){let e=Z.value,t=e&&(e.$el||e);if(!t||typeof window>`u`)return;let n=Math.round(t.getBoundingClientRect().height);document.documentElement.style.setProperty(`--nav-h`,`${n}px`)}return i(()=>{if($(),typeof ResizeObserver<`u`&&Z.value){let e=Z.value.$el||Z.value;Q=new ResizeObserver($),Q.observe(e)}typeof window<`u`&&window.addEventListener(`resize`,$)}),ee(()=>{Q&&Q.disconnect(),typeof window<`u`&&window.removeEventListener(`resize`,$)}),(e,i)=>{let d=n(`RouterLink`);return t(),h(p,null,[u(ce,{ref_key:`navRef`,ref:Z,variant:`brand`,layout:`standard`,items:Ge,"secondary-items":Ke,"cart-count":r(z).count,products:r(v),onCart:i[0]||=e=>V.value=!0,onSearch:Ye},null,8,[`cart-count`,`products`]),U.value?(t(),h(`main`,ge,[m(`div`,S,[m(`button`,{type:`button`,class:`inline-flex items-center gap-2 text-sm tracking-label uppercase text-cream/75 hover:text-cream transition-colors`,onClick:We},[u(g,{name:`arrow-left`,size:16}),f(` `+s(r(R)(Ue.value)),1)])]),m(`section`,C,[m(`div`,w,[m(`div`,T,[q.value.badge?(t(),o(_,{key:0,variant:U.value.badgeVariant||`accent`,class:`absolute top-4 left-4 z-[1] shadow-sm`},{default:c(()=>[f(s(q.value.badge),1)]),_:1},8,[`variant`])):l(``,!0),m(`div`,E,[m(`img`,{src:U.value.image,alt:q.value.imageAlt||q.value.name,loading:`eager`,decoding:`async`,class:`absolute inset-0 w-full h-full object-cover`},null,8,D),U.value.aiEdited?(t(),h(`span`,O,`AI Edited`)):l(``,!0)])]),m(`div`,k,[q.value.usage?(t(),h(`p`,A,s(q.value.usage),1)):l(``,!0),m(`h1`,j,s(q.value.name),1),q.value.description?(t(),h(`p`,M,s(q.value.description),1)):l(``,!0),m(`div`,N,[m(`p`,P,s(r(R)(`bundle.items`)),1),m(`ul`,F,[(t(!0),h(p,null,a(J.value,(e,n)=>(t(),h(`li`,{key:n,class:`flex items-start gap-2 text-base text-cream/95 leading-relaxed`},[u(g,{name:`check`,size:18,class:`mt-0.5 shrink-0 text-accent`}),e.product?(t(),o(d,{key:0,to:e.product.href,class:`hover:text-accent transition-colors`},{default:c(()=>[f(s(e.label),1)]),_:2},1032,[`to`])):(t(),h(`span`,I,s(e.label),1))]))),128))])]),m(`div`,L,[m(`span`,_e,s(G.value),1),K.value?(t(),h(`span`,ve,[f(s(r(R)(`bundle.memberPrice`))+` `,1),m(`span`,ye,s(K.value),1)])):l(``,!0)]),m(`div`,be,[u(x,{modelValue:H.value,"onUpdate:modelValue":i[1]||=e=>H.value=e,min:1,max:10},null,8,[`modelValue`]),u(b,{variant:`accent`,size:`lg`,onClick:Y},{before:c(()=>[u(g,{name:`plus`,size:16})]),default:c(()=>[f(` `+s(r(R)(`ds.buttons.addToCart`)),1)]),_:1})])])])]),m(`div`,xe,[m(`section`,Se,[m(`div`,Ce,[q.value.badge?(t(),o(_,{key:0,variant:U.value.badgeVariant||`accent`,class:`absolute top-4 left-4 z-[1] shadow-sm`},{default:c(()=>[f(s(q.value.badge),1)]),_:1},8,[`variant`])):l(``,!0),m(`img`,{src:U.value.image,alt:q.value.imageAlt||q.value.name,loading:`eager`,decoding:`async`,class:`block w-full h-auto`},null,8,we),U.value.aiEdited?(t(),h(`span`,Te,`AI Edited`)):l(``,!0)])]),m(`section`,Ee,[m(`div`,De,[q.value.usage?(t(),h(`p`,Oe,s(q.value.usage),1)):l(``,!0),m(`h1`,ke,s(q.value.name),1),q.value.description?(t(),h(`p`,Ae,s(q.value.description),1)):l(``,!0),m(`div`,je,[m(`p`,Me,s(r(R)(`bundle.items`)),1),m(`ul`,Ne,[(t(!0),h(p,null,a(J.value,(e,n)=>(t(),h(`li`,{key:n,class:`flex items-start gap-2 text-base text-cream/95 leading-relaxed`},[u(g,{name:`check`,size:18,class:`mt-0.5 shrink-0 text-accent`}),e.product?(t(),o(d,{key:0,to:e.product.href,class:`hover:text-accent transition-colors`},{default:c(()=>[f(s(e.label),1)]),_:2},1032,[`to`])):(t(),h(`span`,Pe,s(e.label),1))]))),128))])]),m(`div`,Fe,[m(`span`,Ie,s(G.value),1),K.value?(t(),h(`span`,Le,[f(s(r(R)(`bundle.memberPrice`))+` `,1),m(`span`,Re,s(K.value),1)])):l(``,!0)]),m(`div`,ze,[u(x,{modelValue:H.value,"onUpdate:modelValue":i[2]||=e=>H.value=e,min:1,max:10},null,8,[`modelValue`]),u(b,{variant:`accent`,size:`lg`,onClick:Y},{before:c(()=>[u(g,{name:`plus`,size:16})]),default:c(()=>[f(` `+s(r(R)(`ds.buttons.addToCart`)),1)]),_:1})])])])])])):(t(),h(`main`,fe,[m(`div`,pe,[m(`h1`,me,s(r(R)(`product.notFound.title`)),1),m(`p`,he,s(r(R)(`product.notFound.body`)),1),u(d,{to:`/`,class:`inline-flex`},{default:c(()=>[u(b,{variant:`primary`,size:`lg`},{default:c(()=>[f(s(r(R)(`product.backHome`)),1)]),_:1})]),_:1})])])),i[4]||=m(`div`,{"aria-hidden":`true`,class:`min-[1100px]:hidden bg-brand`,style:{height:`calc(100px + env(safe-area-inset-bottom))`}},null,-1),u(ue),u(le,{modelValue:V.value,"onUpdate:modelValue":i[3]||=e=>V.value=e,items:r(z).items,subtotal:r(z).subtotal,count:r(z).count,onUpdateQuantity:qe,onRemove:X,onCheckout:Je},null,8,[`modelValue`,`items`,`subtotal`,`count`])],64)}}};export{Be as default};
\ No newline at end of file
diff --git a/dist/assets/Bundles-C6zd-SgA.css b/dist/assets/Bundles-C6zd-SgA.css
new file mode 100644
index 0000000..a8dc151
--- /dev/null
+++ b/dist/assets/Bundles-C6zd-SgA.css
@@ -0,0 +1 @@
+.no-scrollbar[data-v-84e5faca]::-webkit-scrollbar{display:none}.no-scrollbar[data-v-84e5faca]{scrollbar-width:none;-ms-overflow-style:none}
diff --git a/dist/assets/Bundles-CAjLaQ_O.css b/dist/assets/Bundles-CAjLaQ_O.css
deleted file mode 100644
index 96f7483..0000000
--- a/dist/assets/Bundles-CAjLaQ_O.css
+++ /dev/null
@@ -1 +0,0 @@
-.no-scrollbar[data-v-86262777]::-webkit-scrollbar{display:none}.no-scrollbar[data-v-86262777]{scrollbar-width:none;-ms-overflow-style:none}
diff --git a/dist/assets/Bundles-CvTZ82YZ.js b/dist/assets/Bundles-hfeZFK7S.js
similarity index 61%
rename from dist/assets/Bundles-CvTZ82YZ.js
rename to dist/assets/Bundles-hfeZFK7S.js
index 090b1d3..f180c8e 100644
--- a/dist/assets/Bundles-CvTZ82YZ.js
+++ b/dist/assets/Bundles-hfeZFK7S.js
@@ -1 +1 @@
-import{B as e,C as t,S as n,T as r,c as i,ft as a,j as o,l as s,m as c,p as l,r as u,s as d,u as f,ut as p,x as m}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as h}from"./Icon-CtR1FGIT.js";import{t as g}from"./IconButton-UABNp_yn.js";import{t as _}from"./i18n-BvZbJICa.js";import{t as v}from"./_plugin-vue_export-helper-0vLWKQyu.js";import{t as y}from"./Button-DG-tA4DQ.js";import{t as b}from"./BundleCard-DQifBKz2.js";var x={key:0,class:`flex flex-col gap-4`},S={key:0,class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},C={key:0,class:`italic font-light text-brand`},w={__name:`BundlesHeader`,props:{headline:{type:String,default:``},headlineEm:{type:String,default:``},sub:{type:String,default:``},subMaxWidth:{type:String,default:`max-w-md`}},setup(e){return(n,r)=>e.headline||e.headlineEm||e.sub?(t(),f(`div`,x,[e.headline||e.headlineEm?(t(),f(`h2`,S,[l(a(e.headline)+` `,1),e.headlineEm?(t(),f(`em`,C,a(e.headlineEm),1)):s(``,!0)])):s(``,!0),e.sub?(t(),f(`p`,{key:1,class:p([`text-base leading-relaxed text-muted`,e.subMaxWidth])},a(e.sub),3)):s(``,!0)])):s(``,!0)}},T={"aria-hidden":`true`,class:`mt-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-brand-wash text-brand`},E={class:`font-sans text-sm font-semibold text-ink leading-snug`},D={__name:`BundlesBenefits`,props:{benefits:{type:Array,required:!0,validator:e=>e.every(e=>typeof e==`string`)},listClass:{type:String,default:``}},setup(e){return(n,i)=>e.benefits.length?(t(),f(`ul`,{key:0,class:p([`flex flex-col gap-4`,e.listClass])},[(t(!0),f(u,null,r(e.benefits.slice(0,3),e=>(t(),f(`li`,{key:e,class:`flex items-start gap-3`},[d(`span`,T,[c(h,{name:`check`,size:14,"stroke-width":2.2})]),d(`span`,E,a(e),1)]))),128))],2)):s(``,!0)}},O={id:`bundles`,class:`bg-surface text-ink`},k={class:`mx-auto w-full max-w-6xl px-6 py-16 sm:px-8 sm:py-20 md:px-12 md:py-24 lg:px-16 lg:py-28`},ee={key:0,class:`flex flex-col gap-10 md:gap-12 lg:gap-14`},te={key:0,class:`rounded-md border border-cream-dark bg-cream px-5 py-4 sm:px-6 sm:py-5`},ne={class:`flex flex-col gap-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-between sm:gap-x-8 sm:gap-y-3`},A={"aria-hidden":`true`,class:`inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-brand-wash text-brand`},j={class:`font-sans text-sm font-semibold text-ink leading-snug`},M={class:`min-w-0`},N={class:`md:hidden grid gap-5`},P={class:`hidden md:grid md:gap-6 md:grid-cols-3`},F={key:1,class:`flex justify-center`},I={key:1,class:`grid gap-10 md:gap-12 lg:gap-16 lg:grid-cols-[340px_1fr] lg:items-center`},L={class:`flex flex-col gap-8`},R={class:`min-w-0`},z={class:`md:hidden grid gap-5`},B={class:`hidden md:flex md:flex-col md:gap-6 relative`},V=[`aria-label`],H=[`aria-label`],U={class:`flex items-center justify-between gap-4`},W={class:`flex items-center gap-2`},G=[`aria-label`,`aria-current`,`onClick`],K={class:`flex items-center gap-2`},q=v({__name:`Bundles`,props:{layout:{type:String,default:`sidebar`,validator:e=>[`sidebar`,`stacked`].includes(e)},headline:{type:String,default:``},headlineEm:{type:String,default:``},sub:{type:String,default:``},benefits:{type:Array,default:()=>[],validator:e=>e.every(e=>typeof e==`string`)},joinCta:{type:String,default:``},bundles:{type:Array,required:!0},carouselLabel:{type:String,default:``},carouselPrevLabel:{type:String,default:``},carouselNextLabel:{type:String,default:``},carouselGoToPrefix:{type:String,default:``}},emits:[`add`,`join`],setup(v){let x=v,{t:S}=_(),C=()=>x.carouselLabel||S(`ds.bundles.carousel.label`),T=()=>x.carouselPrevLabel||S(`ds.bundles.carousel.prev`),E=()=>x.carouselNextLabel||S(`ds.bundles.carousel.next`),q=()=>x.carouselGoToPrefix||S(`ds.bundles.carousel.goToSlide`),J=e(null),Y=e(0);function X(){return J.value?J.value.children.length:0}function Z(e,t=`smooth`){let n=J.value;if(!n)return;let r=n.children.length-1,i=Math.max(0,Math.min(e,r));n.scrollTo({left:i*n.clientWidth,behavior:t})}function re(){let e=X()-1;e<0||Z(Y.value===0?e:Y.value-1)}function ie(){let e=X()-1;e<0||Z(Y.value===e?0:Y.value+1)}function ae(){let e=J.value;if(!e)return;let t=Math.round(e.scrollLeft/e.clientWidth);t!==Y.value&&(Y.value=t)}let Q=0;function $(){Q&&cancelAnimationFrame(Q),Q=requestAnimationFrame(()=>{let e=J.value;e&&(e.scrollLeft=Y.value*e.clientWidth,Q=0)})}return n(()=>{window.addEventListener(`resize`,$,{passive:!0})}),m(()=>{window.removeEventListener(`resize`,$),Q&&cancelAnimationFrame(Q)}),(e,n)=>(t(),f(`section`,O,[d(`div`,k,[v.layout===`stacked`?(t(),f(`div`,ee,[c(w,{headline:v.headline,"headline-em":v.headlineEm,sub:v.sub,"sub-max-width":`max-w-2xl`},null,8,[`headline`,`headline-em`,`sub`]),v.benefits.length?(t(),f(`div`,te,[d(`ul`,ne,[(t(!0),f(u,null,r(v.benefits.slice(0,3),e=>(t(),f(`li`,{key:e,class:`flex items-center gap-3`},[d(`span`,A,[c(h,{name:`check`,size:14,"stroke-width":2.2})]),d(`span`,j,a(e),1)]))),128))])])):s(``,!0),d(`div`,M,[d(`div`,N,[(t(!0),f(u,null,r(v.bundles,n=>(t(),i(b,{key:n.id,layout:`vertical`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`badge`,`badge-variant`,`href`,`onAdd`]))),128))]),d(`div`,P,[(t(!0),f(u,null,r(v.bundles.slice(0,3),n=>(t(),i(b,{key:n.id,layout:`vertical`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`badge`,`badge-variant`,`href`,`onAdd`]))),128))])]),v.joinCta?(t(),f(`div`,F,[c(y,{variant:`primary`,size:`lg`,onClick:n[0]||=t=>e.$emit(`join`)},{default:o(()=>[l(a(v.joinCta),1)]),_:1})])):s(``,!0)])):(t(),f(`div`,I,[d(`aside`,L,[c(w,{headline:v.headline,"headline-em":v.headlineEm,sub:v.sub,"sub-max-width":`max-w-md`},null,8,[`headline`,`headline-em`,`sub`]),c(D,{benefits:v.benefits},null,8,[`benefits`]),v.joinCta?(t(),i(y,{key:0,variant:`primary`,size:`md`,class:`self-start`,onClick:n[1]||=t=>e.$emit(`join`)},{default:o(()=>[l(a(v.joinCta),1)]),_:1})):s(``,!0)]),d(`div`,R,[d(`div`,z,[(t(!0),f(u,null,r(v.bundles,n=>(t(),i(b,{key:n.id,layout:`vertical`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`badge`,`badge-variant`,`href`,`onAdd`]))),128))]),d(`div`,B,[d(`div`,{ref_key:`track`,ref:J,class:`flex snap-x snap-mandatory overflow-x-auto scroll-smooth no-scrollbar pt-2 pb-16 -mt-2 -mb-16`,role:`region`,"aria-roledescription":`carousel`,"aria-label":C(),onScroll:ae},[(t(!0),f(u,null,r(v.bundles,(n,r)=>(t(),f(`div`,{key:n.id,class:`snap-start shrink-0 w-full`,role:`group`,"aria-roledescription":`slide`,"aria-label":`${r+1} / ${v.bundles.length}`},[c(b,{layout:`horizontal`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`badge`,`badge-variant`,`href`,`onAdd`])],8,H))),128))],40,V),d(`div`,U,[d(`div`,W,[(t(!0),f(u,null,r(v.bundles,(e,n)=>(t(),f(`button`,{key:n,type:`button`,class:p([`h-2 rounded-full transition-all duration-base`,Y.value===n?`w-8 bg-brand`:`w-2 bg-brand/30 hover:bg-brand/50`]),"aria-label":`${q()} ${n+1}`,"aria-current":Y.value===n?`true`:void 0,onClick:e=>Z(n)},null,10,G))),128))]),d(`div`,K,[c(g,{icon:`chevron-left`,variant:`brand-wash`,size:`md`,"aria-label":T(),onClick:re},null,8,[`aria-label`]),c(g,{icon:`chevron-right`,variant:`brand-wash`,size:`md`,"aria-label":E(),onClick:ie},null,8,[`aria-label`])])])])])]))])]))}},[[`__scopeId`,`data-v-86262777`]]);export{q as t};
\ No newline at end of file
+import{B as e,C as t,S as n,T as r,c as i,ft as a,j as o,l as s,m as c,p as l,r as u,s as d,u as f,ut as p,x as m}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as h}from"./Icon-CtR1FGIT.js";import{t as g}from"./IconButton-UABNp_yn.js";import{t as _}from"./i18n-C2O_jcDr.js";import{t as v}from"./_plugin-vue_export-helper-0vLWKQyu.js";import{t as y}from"./Button-DG-tA4DQ.js";import{t as b}from"./BundleCard-Bgh6G83l.js";var x={key:0,class:`flex flex-col gap-4`},S={key:0,class:`font-display font-normal leading-[1.05] tracking-tight text-ink text-headline-md`},C={key:0,class:`italic font-light text-brand`},w={__name:`BundlesHeader`,props:{headline:{type:String,default:``},headlineEm:{type:String,default:``},sub:{type:String,default:``},subMaxWidth:{type:String,default:`max-w-md`}},setup(e){return(n,r)=>e.headline||e.headlineEm||e.sub?(t(),f(`div`,x,[e.headline||e.headlineEm?(t(),f(`h2`,S,[l(a(e.headline)+` `,1),e.headlineEm?(t(),f(`em`,C,a(e.headlineEm),1)):s(``,!0)])):s(``,!0),e.sub?(t(),f(`p`,{key:1,class:p([`text-base leading-relaxed text-muted`,e.subMaxWidth])},a(e.sub),3)):s(``,!0)])):s(``,!0)}},T={"aria-hidden":`true`,class:`mt-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-brand-wash text-brand`},E={class:`font-sans text-sm font-semibold text-ink leading-snug`},D={__name:`BundlesBenefits`,props:{benefits:{type:Array,required:!0,validator:e=>e.every(e=>typeof e==`string`)},listClass:{type:String,default:``}},setup(e){return(n,i)=>e.benefits.length?(t(),f(`ul`,{key:0,class:p([`flex flex-col gap-4`,e.listClass])},[(t(!0),f(u,null,r(e.benefits.slice(0,3),e=>(t(),f(`li`,{key:e,class:`flex items-start gap-3`},[d(`span`,T,[c(h,{name:`check`,size:14,"stroke-width":2.2})]),d(`span`,E,a(e),1)]))),128))],2)):s(``,!0)}},O={id:`bundles`,class:`bg-surface text-ink`},k={class:`mx-auto w-full max-w-6xl px-6 py-16 sm:px-8 sm:py-20 md:px-12 md:py-24 lg:px-16 lg:py-28`},ee={key:0,class:`flex flex-col gap-10 md:gap-12 lg:gap-14`},te={key:0,class:`rounded-md border border-cream-dark bg-cream px-5 py-4 sm:px-6 sm:py-5`},ne={class:`flex flex-col gap-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-between sm:gap-x-8 sm:gap-y-3`},A={"aria-hidden":`true`,class:`inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-brand-wash text-brand`},j={class:`font-sans text-sm font-semibold text-ink leading-snug`},M={class:`min-w-0`},N={class:`md:hidden grid gap-5`},P={class:`hidden md:grid md:gap-6 md:grid-cols-3`},F={key:1,class:`flex justify-center`},I={key:1,class:`grid gap-10 md:gap-12 lg:gap-16 lg:grid-cols-[340px_1fr] lg:items-center`},L={class:`flex flex-col gap-8`},R={class:`min-w-0`},z={class:`md:hidden grid gap-5`},B={class:`hidden md:flex md:flex-col md:gap-6 relative`},V=[`aria-label`],H=[`aria-label`],U={class:`flex items-center justify-between gap-4`},W={class:`flex items-center gap-2`},G=[`aria-label`,`aria-current`,`onClick`],K={class:`flex items-center gap-2`},q=v({__name:`Bundles`,props:{layout:{type:String,default:`sidebar`,validator:e=>[`sidebar`,`stacked`].includes(e)},headline:{type:String,default:``},headlineEm:{type:String,default:``},sub:{type:String,default:``},benefits:{type:Array,default:()=>[],validator:e=>e.every(e=>typeof e==`string`)},joinCta:{type:String,default:``},bundles:{type:Array,required:!0},carouselLabel:{type:String,default:``},carouselPrevLabel:{type:String,default:``},carouselNextLabel:{type:String,default:``},carouselGoToPrefix:{type:String,default:``}},emits:[`add`,`join`],setup(v){let x=v,{t:S}=_(),C=()=>x.carouselLabel||S(`ds.bundles.carousel.label`),T=()=>x.carouselPrevLabel||S(`ds.bundles.carousel.prev`),E=()=>x.carouselNextLabel||S(`ds.bundles.carousel.next`),q=()=>x.carouselGoToPrefix||S(`ds.bundles.carousel.goToSlide`),J=e(null),Y=e(0);function X(){return J.value?J.value.children.length:0}function Z(e,t=`smooth`){let n=J.value;if(!n)return;let r=n.children.length-1,i=Math.max(0,Math.min(e,r));n.scrollTo({left:i*n.clientWidth,behavior:t})}function re(){let e=X()-1;e<0||Z(Y.value===0?e:Y.value-1)}function ie(){let e=X()-1;e<0||Z(Y.value===e?0:Y.value+1)}function ae(){let e=J.value;if(!e)return;let t=Math.round(e.scrollLeft/e.clientWidth);t!==Y.value&&(Y.value=t)}let Q=0;function $(){Q&&cancelAnimationFrame(Q),Q=requestAnimationFrame(()=>{let e=J.value;e&&(e.scrollLeft=Y.value*e.clientWidth,Q=0)})}return n(()=>{window.addEventListener(`resize`,$,{passive:!0})}),m(()=>{window.removeEventListener(`resize`,$),Q&&cancelAnimationFrame(Q)}),(e,n)=>(t(),f(`section`,O,[d(`div`,k,[v.layout===`stacked`?(t(),f(`div`,ee,[c(w,{headline:v.headline,"headline-em":v.headlineEm,sub:v.sub,"sub-max-width":`max-w-2xl`},null,8,[`headline`,`headline-em`,`sub`]),v.benefits.length?(t(),f(`div`,te,[d(`ul`,ne,[(t(!0),f(u,null,r(v.benefits.slice(0,3),e=>(t(),f(`li`,{key:e,class:`flex items-center gap-3`},[d(`span`,A,[c(h,{name:`check`,size:14,"stroke-width":2.2})]),d(`span`,j,a(e),1)]))),128))])])):s(``,!0),d(`div`,M,[d(`div`,N,[(t(!0),f(u,null,r(v.bundles,n=>(t(),i(b,{key:n.id,layout:`vertical`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,"ai-edited":n.aiEdited,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`ai-edited`,`badge`,`badge-variant`,`href`,`onAdd`]))),128))]),d(`div`,P,[(t(!0),f(u,null,r(v.bundles.slice(0,3),n=>(t(),i(b,{key:n.id,layout:`vertical`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,"ai-edited":n.aiEdited,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`ai-edited`,`badge`,`badge-variant`,`href`,`onAdd`]))),128))])]),v.joinCta?(t(),f(`div`,F,[c(y,{variant:`primary`,size:`lg`,onClick:n[0]||=t=>e.$emit(`join`)},{default:o(()=>[l(a(v.joinCta),1)]),_:1})])):s(``,!0)])):(t(),f(`div`,I,[d(`aside`,L,[c(w,{headline:v.headline,"headline-em":v.headlineEm,sub:v.sub,"sub-max-width":`max-w-md`},null,8,[`headline`,`headline-em`,`sub`]),c(D,{benefits:v.benefits},null,8,[`benefits`]),v.joinCta?(t(),i(y,{key:0,variant:`primary`,size:`md`,class:`self-start`,onClick:n[1]||=t=>e.$emit(`join`)},{default:o(()=>[l(a(v.joinCta),1)]),_:1})):s(``,!0)]),d(`div`,R,[d(`div`,z,[(t(!0),f(u,null,r(v.bundles,n=>(t(),i(b,{key:n.id,layout:`vertical`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,"ai-edited":n.aiEdited,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`ai-edited`,`badge`,`badge-variant`,`href`,`onAdd`]))),128))]),d(`div`,B,[d(`div`,{ref_key:`track`,ref:J,class:`flex snap-x snap-mandatory overflow-x-auto scroll-smooth no-scrollbar pt-2 pb-16 -mt-2 -mb-16`,role:`region`,"aria-roledescription":`carousel`,"aria-label":C(),onScroll:ae},[(t(!0),f(u,null,r(v.bundles,(n,r)=>(t(),f(`div`,{key:n.id,class:`snap-start shrink-0 w-full`,role:`group`,"aria-roledescription":`slide`,"aria-label":`${r+1} / ${v.bundles.length}`},[c(b,{layout:`horizontal`,name:n.name,items:n.items,price:n.price,"member-price":n.memberPrice,usage:n.usage,image:n.image,"image-alt":n.imageAlt,"ai-edited":n.aiEdited,badge:n.badge,"badge-variant":n.badgeVariant||`accent`,href:n.href||``,tone:`paper`,onAdd:t=>e.$emit(`add`,n.id)},null,8,[`name`,`items`,`price`,`member-price`,`usage`,`image`,`image-alt`,`ai-edited`,`badge`,`badge-variant`,`href`,`onAdd`])],8,H))),128))],40,V),d(`div`,U,[d(`div`,W,[(t(!0),f(u,null,r(v.bundles,(e,n)=>(t(),f(`button`,{key:n,type:`button`,class:p([`h-2 rounded-full transition-all duration-base`,Y.value===n?`w-8 bg-brand`:`w-2 bg-brand/30 hover:bg-brand/50`]),"aria-label":`${q()} ${n+1}`,"aria-current":Y.value===n?`true`:void 0,onClick:e=>Z(n)},null,10,G))),128))]),d(`div`,K,[c(g,{icon:`chevron-left`,variant:`brand-wash`,size:`md`,"aria-label":T(),onClick:re},null,8,[`aria-label`]),c(g,{icon:`chevron-right`,variant:`brand-wash`,size:`md`,"aria-label":E(),onClick:ie},null,8,[`aria-label`])])])])])]))])]))}},[[`__scopeId`,`data-v-84e5faca`]]);export{q as t};
\ No newline at end of file
diff --git a/dist/assets/BundlesPreview-CZAeZNMT.js b/dist/assets/BundlesPreview-CpT0qGGF.js
similarity index 92%
rename from dist/assets/BundlesPreview-CZAeZNMT.js
rename to dist/assets/BundlesPreview-CpT0qGGF.js
index b1f37c6..3ce6b4d 100644
--- a/dist/assets/BundlesPreview-CZAeZNMT.js
+++ b/dist/assets/BundlesPreview-CpT0qGGF.js
@@ -1 +1 @@
-import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a}from"./vue-router-Cyqru1db.js";import{t as o}from"./i18n-BvZbJICa.js";import{t as s}from"./Bundles-CvTZ82YZ.js";var c={class:`min-h-screen bg-surface`},l={__name:`BundlesPreview`,setup(l){let{t:u}=o(),d=a(),f=r(()=>d.query.layout===`stacked`?`stacked`:`sidebar`),p=[{id:`haushalt`,name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,imageAlt:`Haushalts-Bundle mit Kaiser-Natron`,badge:`Bestseller`,badgeVariant:`accent`},{id:`waesche`,name:`Wäsche & Pflege`,usage:`1–2× pro Quartal`,items:[`1× Holste Wasch-Soda 500 g`,`1× Gazelle Wäschestärke 1 l`,`1× Linda Fleckenweg 200 ml`],price:22.9,memberPrice:19.47,image:`/products/holste-wasch-soda-500-g-beutel.webp`,imageAlt:`Wäsche & Pflege Bundle`},{id:`wohlfuehl`,name:`Wohlfühl-Bundle`,usage:`1× pro Quartal`,items:[`1× Kaiser-Natron Tabletten 100 g`,`1× Kaiser-Natron Bad 500 g`,`1× Kaiser-Natron Fußbad 500 g`],price:29.9,memberPrice:25.42,image:`/products/kaiser-natron-bad-500-g.webp`,imageAlt:`Wohlfühl-Bundle`}],m=r(()=>[u(`bundles.benefit.1.title`),u(`bundles.benefit.2.title`),u(`bundles.benefit.3.title`)]);return(r,a)=>(e(),i(`div`,c,[n(s,{layout:f.value,bundles:p,headline:t(u)(`bundles.headline.a`),"headline-em":t(u)(`bundles.headline.em`),sub:t(u)(`bundles.sub`),benefits:m.value,"join-cta":t(u)(`bundles.joinCta`)},null,8,[`layout`,`headline`,`headline-em`,`sub`,`benefits`,`join-cta`])]))}};export{l as default};
\ No newline at end of file
+import{C as e,G as t,m as n,o as r,u as i}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{a}from"./vue-router-Cyqru1db.js";import{t as o}from"./i18n-C2O_jcDr.js";import{t as s}from"./Bundles-hfeZFK7S.js";var c={class:`min-h-screen bg-surface`},l={__name:`BundlesPreview`,setup(l){let{t:u}=o(),d=a(),f=r(()=>d.query.layout===`stacked`?`stacked`:`sidebar`),p=[{id:`haushalt`,name:`Haushalts-Bundle`,usage:`2–3× pro Quartal empfohlen`,items:[`1× Kaiser-Natron Pulver 250 g`,`1× Allzweck-Spray 500 ml`,`1× Spülmittel 500 ml`],price:24.9,memberPrice:21.17,image:`/products/kaiser-natron-pulver-250-g-grosspackung.webp`,imageAlt:`Haushalts-Bundle mit Kaiser-Natron`,badge:`Bestseller`,badgeVariant:`accent`},{id:`waesche`,name:`Wäsche & Pflege`,usage:`1–2× pro Quartal`,items:[`1× Holste Wasch-Soda 500 g`,`1× Gazelle Wäschestärke 1 l`,`1× Linda Fleckenweg 200 ml`],price:22.9,memberPrice:19.47,image:`/products/holste-wasch-soda-500-g-beutel.webp`,imageAlt:`Wäsche & Pflege Bundle`},{id:`wohlfuehl`,name:`Wohlfühl-Bundle`,usage:`1× pro Quartal`,items:[`1× Kaiser-Natron Tabletten 100 g`,`1× Kaiser-Natron Bad 500 g`,`1× Kaiser-Natron Fußbad 500 g`],price:29.9,memberPrice:25.42,image:`/products/kaiser-natron-bad-500-g.webp`,imageAlt:`Wohlfühl-Bundle`}],m=r(()=>[u(`bundles.benefit.1.title`),u(`bundles.benefit.2.title`),u(`bundles.benefit.3.title`)]);return(r,a)=>(e(),i(`div`,c,[n(s,{layout:f.value,bundles:p,headline:t(u)(`bundles.headline.a`),"headline-em":t(u)(`bundles.headline.em`),sub:t(u)(`bundles.sub`),benefits:m.value,"join-cta":t(u)(`bundles.joinCta`)},null,8,[`layout`,`headline`,`headline-em`,`sub`,`benefits`,`join-cta`])]))}};export{l as default};
\ No newline at end of file
diff --git a/dist/assets/BundlesSection-ByTt2ygh.js b/dist/assets/BundlesSection-Dep6TGd4.js
similarity index 98%
rename from dist/assets/BundlesSection-ByTt2ygh.js
rename to dist/assets/BundlesSection-Dep6TGd4.js
index b822a25..abdc8ac 100644
--- a/dist/assets/BundlesSection-ByTt2ygh.js
+++ b/dist/assets/BundlesSection-Dep6TGd4.js
@@ -1,4 +1,4 @@
-import{B as e,C as t,G as n,T as r,c as i,ft as a,j as o,m as s,o as c,p as l,r as u,s as d,u as f,ut as p}from"./runtime-core.esm-bundler-DTXUv7Wx.js";import{t as m}from"./i18n-BvZbJICa.js";import{t as h}from"./SectionShell-XUVs_07L.js";import{t as g}from"./DevicePreview-CxF-mErd.js";var _={role:`tablist`,"aria-label":`Layout variant`,class:`inline-flex items-center p-1 gap-0.5 rounded-pill border border-line bg-paper`},v=[`aria-selected`,`onClick`],y={class:`eyebrow mb-5`},b={__name:`BundlesSection`,setup(b){let{t:x}=m(),S=[{id:`sidebar`,label:`Option 1`},{id:`stacked`,label:`Option 2`}],C=e(`sidebar`),w=c(()=>`/design/preview/bundles?layout=${C.value}`);return(e,c)=>(t(),i(h,{eyebrow:n(x)(`ds.eyebrow.components`),title:n(x)(`ds.bundles.title`),description:n(x)(`ds.bundles.description`),wide:``},{default:o(()=>[d(`section`,null,[s(g,{src:w.value,initial:`desktop`,height:1080},{controls:o(()=>[d(`div`,_,[(t(),f(u,null,r(S,e=>d(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":C.value===e.id,class:p([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,C.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>C.value=e.id},a(e.label),11,v)),64))])]),_:1},8,[`src`])]),d(`section`,null,[d(`h2`,y,a(n(x)(`ds.heading.usage`)),1),c[0]||=d(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[d(`pre`,{class:`whitespace-pre-wrap`},``/design/preview/bundles?layout=${C.value}`);return(e,c)=>(t(),i(h,{eyebrow:n(x)(`ds.eyebrow.components`),title:n(x)(`ds.bundles.title`),description:n(x)(`ds.bundles.description`),wide:``},{default:o(()=>[d(`section`,null,[s(g,{src:w.value,initial:`desktop`,height:1080},{controls:o(()=>[d(`div`,_,[(t(),f(u,null,r(S,e=>d(`button`,{key:e.id,type:`button`,role:`tab`,"aria-selected":C.value===e.id,class:p([`inline-flex items-center gap-2 px-3 py-1.5 text-[12px] font-semibold tracking-label rounded-pill transition-colors duration-base`,C.value===e.id?`bg-brand text-accent`:`text-muted hover:text-brand`]),onClick:t=>C.value=e.id},a(e.label),11,v)),64))])]),_:1},8,[`src`])]),d(`section`,null,[d(`h2`,y,a(n(x)(`ds.heading.usage`)),1),c[0]||=d(`div`,{class:`rounded-md border border-line bg-paper p-6 font-mono text-[12px] text-ink`},[d(`pre`,{class:`whitespace-pre-wrap`},`(e(),n(d,{eyebrow:t(F)(`ds.eyebrow.components`),title:t(F)(`ds.buttons.title`),description:t(F)(`ds.buttons.description`)},{default:i(()=>[s(`section`,null,[s(`h2`,p,r(t(F)(`ds.heading.variants`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,m,[a(u,{variant:`primary`},{default:i(()=>[o(r(t(F)(`ds.buttons.primary`)),1)]),_:1}),a(u,{variant:`accent`},{default:i(()=>[o(r(t(F)(`ds.buttons.accent`)),1)]),_:1}),a(u,{variant:`secondary`},{default:i(()=>[o(r(t(F)(`ds.buttons.secondary`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.ghost`)),1)]),_:1}),a(u,{variant:`danger`},{default:i(()=>[o(r(t(F)(`ds.buttons.danger`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,h,r(t(F)(`ds.heading.onDifferentSurfaces`)),1),s(`div`,g,[a(f,{tone:`paper`},{default:i(()=>[s(`p`,_,r(t(F)(`ds.cards.paper`)),1),s(`div`,v,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1}),a(f,{tone:`cream`},{default:i(()=>[s(`p`,y,r(t(F)(`ds.cards.cream`)),1),s(`div`,b,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1}),a(f,{tone:`brand`},{default:i(()=>[s(`p`,x,r(t(F)(`ds.cards.brand`)),1),s(`div`,S,[a(u,{variant:`accent`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`ghost`,class:`!text-cream hover:!bg-cream-wash`},{default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`)),1)]),_:1})])]),_:1})])]),s(`section`,null,[s(`h2`,C,r(t(F)(`ds.heading.sizes`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,w,[a(u,{size:`sm`},{default:i(()=>[o(r(t(F)(`ds.buttons.small`)),1)]),_:1}),a(u,{size:`md`},{default:i(()=>[o(r(t(F)(`ds.buttons.medium`)),1)]),_:1}),a(u,{size:`lg`},{default:i(()=>[o(r(t(F)(`ds.buttons.large`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,T,r(t(F)(`ds.heading.withIcons`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,E,[a(u,{variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{variant:`secondary`},{after:i(()=>[a(c,{name:`arrow-right`,size:18})]),default:i(()=>[o(r(t(F)(`ds.buttons.learnMore`))+` `,1)]),_:1}),a(u,{variant:`ghost`},{before:i(()=>[a(c,{name:`heart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.save`)),1)]),_:1}),a(u,{variant:`accent`,size:`sm`},{before:i(()=>[a(c,{name:`check`,size:16})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.confirm`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,D,r(t(F)(`ds.heading.states`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,O,[a(u,null,{default:i(()=>[o(r(t(F)(`ds.heading.default`)),1)]),_:1}),a(u,{disabled:``},{default:i(()=>[o(r(t(F)(`ds.buttons.disabled`)),1)]),_:1}),a(u,{loading:``},{default:i(()=>[o(r(t(F)(`ds.buttons.loading`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,k,r(t(F)(`ds.heading.block`)),1),a(f,{tone:`paper`},{default:i(()=>[s(`div`,A,[a(u,{block:``,variant:`primary`},{before:i(()=>[a(c,{name:`cart`,size:18})]),default:i(()=>[o(` `+r(t(F)(`ds.buttons.addToCart`)),1)]),_:1}),a(u,{block:``,variant:`secondary`},{default:i(()=>[o(r(t(F)(`ds.buttons.continueShopping`)),1)]),_:1})])]),_:1})]),s(`section`,null,[s(`h2`,j,r(t(F)(`ds.heading.usage`)),1),s(`div`,M,[s(`pre`,N,`