@orderlyshop/web-components 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/AGENTS.md +110 -0
  2. package/README.md +685 -0
  3. package/bin/orderly-build-category-pages.mjs +160 -0
  4. package/bin/orderly-generate-category-pages.mjs +308 -0
  5. package/bin/orderly-hydrate-static-pages.mjs +595 -0
  6. package/bin/orderly-init-navigation.mjs +327 -0
  7. package/bin/orderly-init-shop.mjs +876 -0
  8. package/bin/orderly-init-taxonomy.mjs +2 -0
  9. package/bin/orderly-publish-site.mjs +342 -0
  10. package/custom-elements.json +495 -0
  11. package/dist/browser/orderly-web-components.define.global.js +3085 -0
  12. package/dist/browser/orderly-web-components.define.global.js.map +1 -0
  13. package/dist/browser/orderly-web-components.global.js +3085 -0
  14. package/dist/browser/orderly-web-components.global.js.map +1 -0
  15. package/dist/default-shop-DWdB_MRd.d.ts +220 -0
  16. package/dist/default-shop.d.ts +6 -0
  17. package/dist/default-shop.js +762 -0
  18. package/dist/default-shop.js.map +1 -0
  19. package/dist/define-IAQk8OmQ.d.ts +9 -0
  20. package/dist/define.d.ts +2 -0
  21. package/dist/define.js +10266 -0
  22. package/dist/define.js.map +1 -0
  23. package/dist/index.d.ts +683 -0
  24. package/dist/index.js +10589 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/navigation.d.ts +51 -0
  27. package/dist/navigation.js +818 -0
  28. package/dist/navigation.js.map +1 -0
  29. package/dist/query.d.ts +31 -0
  30. package/dist/query.js +115 -0
  31. package/dist/query.js.map +1 -0
  32. package/dist/registry-CPDecU3g.d.ts +6 -0
  33. package/dist/shop-BnT1C6kG.d.ts +173 -0
  34. package/dist/shop-query.d.ts +8 -0
  35. package/dist/shop-query.js +100 -0
  36. package/dist/shop-query.js.map +1 -0
  37. package/dist/shop.d.ts +8 -0
  38. package/dist/shop.js +10359 -0
  39. package/dist/shop.js.map +1 -0
  40. package/dist/stores.d.ts +46 -0
  41. package/dist/stores.js +145 -0
  42. package/dist/stores.js.map +1 -0
  43. package/dist/taxonomy.d.ts +35 -0
  44. package/dist/taxonomy.js +247 -0
  45. package/dist/taxonomy.js.map +1 -0
  46. package/dist/types-CCQDd6Nd.d.ts +95 -0
  47. package/docs/components/README.md +610 -0
  48. package/docs/components/product-grid.md +176 -0
  49. package/docs/components/product-rail.md +174 -0
  50. package/examples/shop/README.md +71 -0
  51. package/examples/shop/package.json +28 -0
  52. package/examples/shop/src/category.html +20 -0
  53. package/examples/shop/src/checkout.html +21 -0
  54. package/examples/shop/src/forretningsbetingelser.html +80 -0
  55. package/examples/shop/src/includes/body-end.html +1 -0
  56. package/examples/shop/src/includes/body-start.html +2 -0
  57. package/examples/shop/src/includes/head.html +32 -0
  58. package/examples/shop/src/index.html +25 -0
  59. package/examples/shop/src/navigation.ts +154 -0
  60. package/examples/shop/src/product.html +24 -0
  61. package/examples/shop/src/templates/shop-footer.html +76 -0
  62. package/examples/shop/tsconfig.json +32 -0
  63. package/examples/shop/vite.config.mjs +184 -0
  64. package/html-custom-data.json +262 -0
  65. package/package.json +118 -0
  66. package/server/README.md +111 -0
  67. package/server/apache/.htaccess +18 -0
  68. package/server/nginx/orderly-products.conf +24 -0
  69. package/server/node/product-snapshot-server.mjs +133 -0
  70. package/server/php/orderly-product.php +204 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/taxonomy.ts","../src/query.ts","../src/shop-query.ts","../src/i18n.ts","../src/default-shop.ts"],"sourcesContent":["import { clone, create } from \"@bufbuild/protobuf\";\nimport { SearchQuerySchema, type SearchQuery } from \"@orderlyshop/core-client\";\nimport { normalizeSearchQuery } from \"./query.js\";\nimport type {\n CategoryUrlMode,\n NavigationDefinition,\n NavigationMetadata,\n ResolvedNavigationItem\n} from \"./types.js\";\nexport type {\n CategoryDefinition,\n CategoryNavigationItem,\n CategoryUrlMode,\n NavigationDefinition,\n NavigationMetadata,\n ResolvedNavigationItem\n} from \"./types.js\";\n\nexport const defaultCategoryPageRoot = \"/categories/\";\n\nexport interface NavigationBuildOptions {\n pageRoot?: string;\n urlMode?: CategoryUrlMode;\n description?: (input: NavigationDescriptionInput) => string;\n}\n\nexport type CategoryNavigationOptions = NavigationBuildOptions;\n\nexport interface NavigationDescriptionInput {\n definition: NavigationDefinition;\n parent?: NavigationDefinition;\n pathLabels: string[];\n}\n\nexport type CategoryDescriptionInput = NavigationDescriptionInput;\n\nexport function createCategoryNavigation(\n definitions: NavigationDefinition[],\n options: NavigationBuildOptions = {}\n): ResolvedNavigationItem[] {\n assertValidNavigationDefinitions(definitions);\n const pageRoot = options.pageRoot ?? defaultCategoryPageRoot;\n const urlMode = options.urlMode ?? \"path\";\n return definitions.map((definition) => {\n return createCategoryItem({\n definition,\n pageRoot,\n urlMode,\n description: options.description,\n pathLabels: [definition.label],\n pathSlugs: [definition.slug]\n });\n });\n}\n\nexport interface NavigationValidationResult {\n valid: boolean;\n errors: string[];\n}\n\nexport function validateNavigationDefinitions(definitions: NavigationDefinition[]): NavigationValidationResult {\n const errors: string[] = [];\n const seenIds = new Map<string, string>();\n const seenSlugs = new Map<string, string>();\n if (!Array.isArray(definitions) || definitions.length === 0) {\n errors.push(\"navigationDefinitions must contain at least one category.\");\n return { valid: false, errors };\n }\n validateNavigationLevel(definitions, {\n errors,\n seenIds,\n seenSlugs,\n pathLabels: [],\n pathSlugs: []\n });\n return { valid: errors.length === 0, errors };\n}\n\nexport function navigationConfigurationError(definitions: NavigationDefinition[]): string | undefined {\n const result = validateNavigationDefinitions(definitions);\n return result.valid ? undefined : `Navigation configuration error: ${result.errors.join(\" \")}`;\n}\n\nexport function assertValidNavigationDefinitions(definitions: NavigationDefinition[]): void {\n const error = navigationConfigurationError(definitions);\n if (error) {\n throw new Error(error);\n }\n}\n\nexport function flattenCategoryNavigation(items: ResolvedNavigationItem[]): ResolvedNavigationItem[] {\n return items.flatMap((item) => [item, ...flattenCategoryNavigation(item.children ?? [])]);\n}\n\nexport function findCategoryById(\n id: string,\n items: ResolvedNavigationItem[]\n): ResolvedNavigationItem | undefined {\n return flattenCategoryNavigation(items).find((item) => item.id === id);\n}\n\nexport function findCategoryBySlug(\n slug: string,\n items: ResolvedNavigationItem[]\n): ResolvedNavigationItem | undefined {\n return flattenCategoryNavigation(items).find((item) => item.metadata.slug === slug || item.id === slug);\n}\n\nexport function findCategoryByIdOrSlug(\n value: string,\n items: ResolvedNavigationItem[]\n): ResolvedNavigationItem | undefined {\n return findCategoryById(value, items) ?? findCategoryBySlug(value, items);\n}\n\nexport function categoryPagePath(\n id: string,\n options: NavigationBuildOptions = {}\n): string {\n const pageRoot = options.pageRoot ?? defaultCategoryPageRoot;\n if (options.urlMode === \"hash\") {\n return `${pageRoot}#id=${encodeURIComponent(id)}`;\n }\n return `${pageRoot}${id}/`;\n}\n\nexport function resolveCategoryUrlMode(\n url: string | URL | Location = currentLocationUrl(),\n options: Pick<NavigationBuildOptions, \"pageRoot\"> = {}\n): CategoryUrlMode {\n const target = urlFromInput(url);\n const pageRoot = options.pageRoot ?? defaultCategoryPageRoot;\n if (categoryIdFromHash(target.hash)) {\n return \"hash\";\n }\n return categoryIdFromPath(target.pathname, pageRoot) ? \"path\" : \"hash\";\n}\n\nexport function categoryFromUrl(\n url: string | URL | Location,\n items: ResolvedNavigationItem[],\n options: NavigationBuildOptions = {}\n): ResolvedNavigationItem {\n const target = urlFromInput(url);\n const pageRoot = options.pageRoot ?? defaultCategoryPageRoot;\n const requestedId = categoryIdFromHash(target.hash) ?? categoryIdFromPath(target.pathname, pageRoot);\n return requestedId ? findCategoryByIdOrSlug(requestedId, items) ?? items[0] : items[0];\n}\n\nfunction createCategoryItem(input: {\n definition: NavigationDefinition;\n parent?: NavigationDefinition;\n pageRoot: string;\n urlMode: CategoryUrlMode;\n description?: NavigationBuildOptions[\"description\"];\n pathLabels: string[];\n pathSlugs: string[];\n parentId?: string;\n}): ResolvedNavigationItem {\n const id = input.pathSlugs.join(\"/\");\n const query = categorySearchQuery(input.definition, input.parent, input.pathLabels);\n const searchText = categorySearchText(query, input.pathLabels);\n const metadata: NavigationMetadata = {\n slug: input.pathSlugs[input.pathSlugs.length - 1],\n parentId: input.parentId,\n pathSegments: input.pathSlugs,\n query: clone(SearchQuerySchema, query),\n searchText,\n description: input.definition.description\n ?? input.description?.({\n definition: input.definition,\n parent: input.parent,\n pathLabels: input.pathLabels\n })\n ?? `Selected products in ${input.pathLabels.join(\" \").toLowerCase()}.`,\n heroImage: input.definition.heroImage ?? input.parent?.heroImage ?? \"\",\n pagePath: input.pageRoot\n };\n return {\n id,\n label: input.definition.label,\n href: categoryPagePath(id, { pageRoot: input.pageRoot, urlMode: input.urlMode }),\n query: clone(SearchQuerySchema, query),\n metadata,\n children: (input.definition.children ?? []).map((child) => createCategoryItem({\n definition: child,\n parent: input.definition,\n pageRoot: input.pageRoot,\n urlMode: input.urlMode,\n description: input.description,\n parentId: id,\n pathLabels: [...input.pathLabels, child.label],\n pathSlugs: [...input.pathSlugs, child.slug]\n }))\n };\n}\n\nfunction validateNavigationLevel(\n definitions: NavigationDefinition[],\n context: {\n errors: string[];\n seenIds: Map<string, string>;\n seenSlugs: Map<string, string>;\n pathLabels: string[];\n pathSlugs: string[];\n }\n): void {\n definitions.forEach((definition, index) => {\n const label = definition?.label?.trim();\n const location = [...context.pathLabels, label || `item ${index + 1}`].join(\" > \");\n const slug = definition?.slug?.trim();\n if (!label) {\n context.errors.push(`Category ${location} is missing label.`);\n }\n if (!slug) {\n context.errors.push(`Category ${location} is missing slug.`);\n } else if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)) {\n context.errors.push(`Category ${location} has invalid slug \"${slug}\". Use lowercase letters, numbers, and hyphens only.`);\n }\n const nextPathSlugs = slug ? [...context.pathSlugs, slug] : context.pathSlugs;\n const id = nextPathSlugs.join(\"/\");\n if (id) {\n const existing = context.seenIds.get(id);\n if (existing) {\n context.errors.push(`Category ${location} duplicates category id \"${id}\" already used by ${existing}.`);\n } else {\n context.seenIds.set(id, location);\n }\n }\n if (slug) {\n const existing = context.seenSlugs.get(slug);\n if (existing) {\n context.errors.push(`Category ${location} duplicates slug \"${slug}\" already used by ${existing}. Slugs must be globally unique.`);\n } else {\n context.seenSlugs.set(slug, location);\n }\n }\n if (definition.children?.length) {\n validateNavigationLevel(definition.children, {\n ...context,\n pathLabels: [...context.pathLabels, label || `item ${index + 1}`],\n pathSlugs: nextPathSlugs\n });\n }\n });\n}\n\nfunction categorySearchQuery(\n definition: NavigationDefinition,\n parent: NavigationDefinition | undefined,\n pathLabels: string[]\n): SearchQuery {\n if (definition.query) {\n return normalizeSearchQuery(definition.query);\n }\n const parentQuery = parent?.query ? normalizeSearchQuery(parent.query) : undefined;\n const inherited = parentQuery ? clone(SearchQuerySchema, parentQuery) : create(SearchQuerySchema);\n const parentText = parentQuery ? categorySearchText(parentQuery, pathLabels.slice(0, -1)) : parent?.label;\n inherited.Query = [definition.label, parentText].filter(Boolean).join(\" \");\n return inherited;\n}\n\nfunction categorySearchText(query: SearchQuery, pathLabels: string[]): string {\n return query.Query\n || query.HiddenQuery\n || query.Tags.map((tag) => tag.Value).filter(Boolean).join(\" \")\n || pathLabels.join(\" \");\n}\n\nfunction categoryIdFromPath(pathname: string, pageRoot: string): string | undefined {\n const path = pathname.replace(/\\/index\\.html$/, \"/\");\n if (!path.startsWith(pageRoot) || path === pageRoot) {\n return undefined;\n }\n const normalized = path.slice(pageRoot.length).replace(/^\\/+|\\/+$/g, \"\");\n return normalized ? normalized.split(\"/\").map(decodeURIComponent).join(\"/\") : undefined;\n}\n\nfunction categoryIdFromHash(hash: string): string | undefined {\n const value = hash.startsWith(\"#\") ? hash.slice(1) : hash;\n if (!value) {\n return undefined;\n }\n const params = new URLSearchParams(value.startsWith(\"?\") ? value.slice(1) : value);\n const id = params.get(\"id\");\n if (id) {\n return id.trim() || undefined;\n }\n if (value.includes(\"=\")) {\n return undefined;\n }\n try {\n return decodeURIComponent(value).trim() || undefined;\n } catch {\n return value.trim() || undefined;\n }\n}\n\nfunction urlFromInput(url: string | URL | Location): URL {\n if (typeof url === \"string\") {\n return new URL(url, currentLocationUrl());\n }\n return new URL(url.href);\n}\n\nfunction currentLocationUrl(): URL {\n return typeof location === \"undefined\"\n ? new URL(defaultCategoryPageRoot, \"https://example.test\")\n : new URL(location.href);\n}\n","import { create } from \"@bufbuild/protobuf\";\nimport {\n SearchQuerySchema,\n TagSchema,\n type SearchQuery\n} from \"@orderlyshop/core-client\";\n\nexport const declarativeQueryAttributes = [\n \"keywords\",\n \"tags\",\n \"hidden-query\",\n \"order-by\",\n \"store-id\",\n \"featured\"\n];\n\nexport interface SearchQueryInput {\n query?: string;\n keywords?: string;\n hiddenQuery?: string;\n tags?: string[];\n orderBy?: string[];\n storeId?: string;\n featured?: boolean;\n}\n\nexport type SearchQueryConfig = SearchQuery | SearchQueryInput;\n\n/**\n * Creates a Core SearchQuery from plain JavaScript values.\n *\n * This is mainly useful for vanilla browser setups that load the standalone\n * bundle and do not want to import protobuf helpers directly.\n */\nexport function createSearchQuery(input: SearchQueryInput = {}): SearchQuery {\n return create(SearchQuerySchema, {\n Query: input.query ?? input.keywords,\n HiddenQuery: input.hiddenQuery,\n Tags: (input.tags ?? []).map((tag) => create(TagSchema, { Value: tag })),\n OrderBy: input.orderBy ?? [],\n StoreId: input.storeId,\n Featured: input.featured ?? false\n });\n}\n\nexport function normalizeSearchQuery(input: SearchQueryConfig = {}): SearchQuery {\n if (isCoreSearchQuery(input)) {\n return create(SearchQuerySchema, input);\n }\n return createSearchQuery(input);\n}\n\n/**\n * Builds a SearchQuery from simple HTML configuration.\n *\n * Supported on product grids, product rails, and collection pages. Typed\n * JavaScript `query` properties take precedence in the components; this helper\n * only covers the common declarative fields that are safe to express as text.\n */\nexport function declarativeSearchQuery(host: Element): SearchQuery | undefined {\n const queryElement = directQueryElement(host);\n const keywords = readQueryValue(host, queryElement, \"keywords\");\n const hiddenQuery = readQueryValue(host, queryElement, \"hidden-query\");\n const storeId = readQueryValue(host, queryElement, \"store-id\");\n const featured = readQueryBoolean(host, queryElement, \"featured\");\n const tags = readQueryList(host, queryElement, \"tags\");\n const orderBy = readQueryList(host, queryElement, \"order-by\");\n\n if (!keywords && !hiddenQuery && !storeId && featured === undefined && tags.length === 0 && orderBy.length === 0) {\n return undefined;\n }\n\n return create(SearchQuerySchema, {\n Query: keywords || undefined,\n HiddenQuery: hiddenQuery || undefined,\n Tags: tags.map((tag) => create(TagSchema, { Value: tag })),\n OrderBy: orderBy,\n StoreId: storeId || undefined,\n Featured: featured ?? false\n });\n}\n\nfunction directQueryElement(host: Element): Element | undefined {\n const queryElement = [...host.children].find((child) => child.localName === \"query\");\n if (queryElement instanceof HTMLElement) {\n queryElement.hidden = true;\n }\n return queryElement;\n}\n\nfunction isCoreSearchQuery(input: SearchQueryConfig): input is SearchQuery {\n return \"Query\" in input\n || \"HiddenQuery\" in input\n || \"Tags\" in input\n || \"OrderBy\" in input\n || \"StoreId\" in input\n || \"Featured\" in input;\n}\n\nfunction readQueryValue(host: Element, queryElement: Element | undefined, name: string): string {\n return firstValue(\n host.getAttribute(name),\n queryElement?.getAttribute(name),\n childText(queryElement, name)\n );\n}\n\nfunction readQueryList(host: Element, queryElement: Element | undefined, name: string): string[] {\n return uniqueValues([\n ...splitList(host.getAttribute(name)),\n ...splitList(queryElement?.getAttribute(name)),\n ...splitList(childText(queryElement, name))\n ]);\n}\n\nfunction readQueryBoolean(host: Element, queryElement: Element | undefined, name: string): boolean | undefined {\n if (host.hasAttribute(name) && !host.getAttribute(name)) {\n return true;\n }\n if (queryElement?.hasAttribute(name) && !queryElement.getAttribute(name)) {\n return true;\n }\n return parseBoolean(readQueryValue(host, queryElement, name));\n}\n\nfunction childText(queryElement: Element | undefined, name: string): string | undefined {\n const child = [...queryElement?.children ?? []].find((element) => element.localName === name);\n return child?.textContent?.trim();\n}\n\nfunction firstValue(...values: Array<string | null | undefined>): string {\n return values.map((value) => value?.trim()).find(Boolean) ?? \"\";\n}\n\nfunction splitList(value: string | null | undefined): string[] {\n return (value ?? \"\")\n .split(/[\\n,]/g)\n .map((item) => item.trim())\n .filter(Boolean);\n}\n\nfunction uniqueValues(values: string[]): string[] {\n return [...new Set(values)];\n}\n\nfunction parseBoolean(value: string): boolean | undefined {\n if (!value) {\n return undefined;\n }\n if ([\"true\", \"1\", \"yes\", \"\"].includes(value.toLowerCase())) {\n return true;\n }\n if ([\"false\", \"0\", \"no\"].includes(value.toLowerCase())) {\n return false;\n }\n return undefined;\n}\n","import { clone, create } from \"@bufbuild/protobuf\";\nimport {\n AccountIdSchema,\n SearchQuerySchema,\n UUIDSchema,\n type SearchQuery\n} from \"@orderlyshop/core-client\";\n\nlet configuredShopQuery: SearchQuery | undefined;\n\nexport function configureShopSearchQuery(query: SearchQuery | undefined): void {\n configuredShopQuery = query ? clone(SearchQuerySchema, query) : undefined;\n}\n\nexport function shopSearchQuery(): SearchQuery | undefined {\n return configuredShopQuery ? clone(SearchQuerySchema, configuredShopQuery) : undefined;\n}\n\nexport function createAccountShopQuery(accountId: string): SearchQuery {\n return create(SearchQuerySchema, {\n SourceAccountId: create(AccountIdSchema, {\n Id: create(UUIDSchema, { Value: accountId })\n })\n });\n}\n\nexport function mergeShopSearchQuery(query: SearchQuery | undefined, localShopQuery?: SearchQuery): SearchQuery {\n const specific = query ? clone(SearchQuerySchema, query) : create(SearchQuerySchema);\n const base = combineShopQueries(shopSearchQuery(), localShopQuery);\n if (!base) {\n return specific;\n }\n\n const merged = clone(SearchQuerySchema, base);\n const hiddenQuery = combineQueryText(\n base.HiddenQuery,\n specific.HiddenQuery,\n specific.Query !== undefined ? base.Query : undefined\n );\n\n merged.Query = specific.Query ?? base.Query;\n merged.HiddenQuery = hiddenQuery || undefined;\n merged.Tags = [...base.Tags, ...specific.Tags];\n merged.SourceAccountId = base.SourceAccountId ?? specific.SourceAccountId;\n merged.ExcludeAccountId = base.ExcludeAccountId ?? specific.ExcludeAccountId;\n merged.PriceFrom = specific.PriceFrom ?? base.PriceFrom;\n merged.PriceTo = specific.PriceTo ?? base.PriceTo;\n merged.OrderBy = specific.OrderBy.length ? [...specific.OrderBy] : [...base.OrderBy];\n merged.Facets = uniqueStrings([...base.Facets, ...specific.Facets]);\n merged.Barcode = specific.Barcode ?? base.Barcode;\n merged.ConditionAbove = specific.ConditionAbove ?? base.ConditionAbove;\n merged.SaveAsLatest = base.SaveAsLatest || specific.SaveAsLatest;\n merged.Featured = base.Featured || specific.Featured;\n merged.ShareUrl = specific.ShareUrl ?? base.ShareUrl;\n merged.StoreId = base.StoreId ?? specific.StoreId;\n merged.WithBadge = uniqueNumbers([...base.WithBadge, ...specific.WithBadge]);\n merged.RelatedUrl = specific.RelatedUrl ?? base.RelatedUrl;\n merged.Continuation = specific.Continuation;\n return merged;\n}\n\nfunction combineShopQueries(base: SearchQuery | undefined, local: SearchQuery | undefined): SearchQuery | undefined {\n if (!base && !local) {\n return undefined;\n }\n if (!base) {\n return clone(SearchQuerySchema, local!);\n }\n if (!local) {\n return clone(SearchQuerySchema, base);\n }\n\n const merged = clone(SearchQuerySchema, base);\n merged.Query = combineQueryText(base.Query, local.Query) || undefined;\n merged.HiddenQuery = combineQueryText(base.HiddenQuery, local.HiddenQuery) || undefined;\n merged.Tags = [...base.Tags, ...local.Tags];\n merged.SourceAccountId = local.SourceAccountId ?? base.SourceAccountId;\n merged.ExcludeAccountId = local.ExcludeAccountId ?? base.ExcludeAccountId;\n merged.PriceFrom = local.PriceFrom ?? base.PriceFrom;\n merged.PriceTo = local.PriceTo ?? base.PriceTo;\n merged.OrderBy = local.OrderBy.length ? [...local.OrderBy] : [...base.OrderBy];\n merged.Facets = uniqueStrings([...base.Facets, ...local.Facets]);\n merged.Barcode = local.Barcode ?? base.Barcode;\n merged.ConditionAbove = local.ConditionAbove ?? base.ConditionAbove;\n merged.SaveAsLatest = base.SaveAsLatest || local.SaveAsLatest;\n merged.Featured = base.Featured || local.Featured;\n merged.ShareUrl = local.ShareUrl ?? base.ShareUrl;\n merged.StoreId = local.StoreId ?? base.StoreId;\n merged.WithBadge = uniqueNumbers([...base.WithBadge, ...local.WithBadge]);\n merged.RelatedUrl = local.RelatedUrl ?? base.RelatedUrl;\n merged.Continuation = local.Continuation ?? base.Continuation;\n return merged;\n}\n\nfunction combineQueryText(...values: Array<string | undefined>): string {\n return uniqueStrings(values\n .map((value) => value?.trim())\n .filter((value): value is string => Boolean(value)))\n .join(\" \");\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n return [...new Set(values)];\n}\n\nfunction uniqueNumbers(values: number[]): number[] {\n return [...new Set(values)];\n}\n","export type UiLanguage = \"DA\" | \"EN\";\n\nexport type UiTextKey =\n | \"addressTitle\"\n | \"basketCheckoutDisabledLabel\"\n | \"basketCheckoutLabel\"\n | \"basketEmptyLabel\"\n | \"basketLabel\"\n | \"basketPanelTitle\"\n | \"categoriesLabel\"\n | \"categoryConfigurationErrorTitle\"\n | \"categoryNoConfigured\"\n | \"categoryNoDefinitions\"\n | \"categoryNoSlugMatch\"\n | \"categoryNoUrlMatch\"\n | \"checkoutAddressTitle\"\n | \"checkoutCityLabel\"\n | \"checkoutCompanyLabel\"\n | \"checkoutCountryLabel\"\n | \"checkoutCustomerTitle\"\n | \"checkoutChooseServicePointLabel\"\n | \"checkoutDeliveryMethodLabel\"\n | \"checkoutDeliveryAddressPrompt\"\n | \"checkoutDeliveryTitle\"\n | \"checkoutEmailLabel\"\n | \"checkoutErrorLabel\"\n | \"checkoutFirstNameLabel\"\n | \"checkoutFormTitle\"\n | \"checkoutLastNameLabel\"\n | \"checkoutOrderTitle\"\n | \"checkoutNoDeliveryMethodsLabel\"\n | \"checkoutNoServicePointsLabel\"\n | \"checkoutPageDescription\"\n | \"checkoutPageTitle\"\n | \"checkoutPhoneCountryLabel\"\n | \"checkoutPhoneLabel\"\n | \"checkoutServicePointLabel\"\n | \"checkoutServicePointHelpLabel\"\n | \"checkoutStreet2Label\"\n | \"checkoutStreetLabel\"\n | \"checkoutSubmitLabel\"\n | \"checkoutSubmittingLabel\"\n | \"checkoutTermsLabel\"\n | \"checkoutTermsLinkLabel\"\n | \"checkoutZipLabel\"\n | \"clearBasketLabel\"\n | \"clearSearchLabel\"\n | \"closeLabel\"\n | \"closeMenuLabel\"\n | \"collapseLabel\"\n | \"contactTitle\"\n | \"continueShoppingLabel\"\n | \"deliveryFallbackLabel\"\n | \"deliveryNote\"\n | \"emailLabel\"\n | \"emptyLabel\"\n | \"expandLabel\"\n | \"homeRailCtaLabel\"\n | \"homeTitle\"\n | \"informationLinksTitle\"\n | \"itemFallbackTitle\"\n | \"loadMoreLabel\"\n | \"loadingLabel\"\n | \"mainCategoriesLabel\"\n | \"mainNavigationLabel\"\n | \"menuLabel\"\n | \"navigationItemFallbackLabel\"\n | \"openingHoursTitle\"\n | \"phoneLabel\"\n | \"productAddLabel\"\n | \"productDetailColorLabel\"\n | \"productDetailConditionLabel\"\n | \"productDetailSizeLabel\"\n | \"productErrorLabel\"\n | \"productFallbackTitle\"\n | \"productImageLabel\"\n | \"productImageOverlayLabel\"\n | \"productLoadingLabel\"\n | \"productNotFoundLabel\"\n | \"productOpenImageLabel\"\n | \"productOpenPageLabel\"\n | \"productRemoveLabel\"\n | \"productViewLabel\"\n | \"productViewWithTitle\"\n | \"productsLabel\"\n | \"productsLoadError\"\n | \"quantityLabel\"\n | \"quantityShortLabel\"\n | \"removeLabel\"\n | \"searchLabel\"\n | \"searchPlaceholder\"\n | \"searchPromptLabel\"\n | \"searchingLabel\"\n | \"servicePointFallbackLabel\"\n | \"shippingLabel\"\n | \"shopBrandLabel\"\n | \"shopNowLabel\"\n | \"sortLabel\"\n | \"subtotalLabel\"\n | \"totalLabel\"\n | \"totalNote\"\n | \"websiteLabel\";\n\nconst UI_TEXTS: Record<UiLanguage, Record<UiTextKey, string>> = {\n DA: {\n addressTitle: \"Adresse\",\n basketCheckoutDisabledLabel: \"Læg varer i kurven før betaling\",\n basketCheckoutLabel: \"Gå til betaling\",\n basketEmptyLabel: \"Din kurv er tom\",\n basketLabel: \"Kurv\",\n basketPanelTitle: \"Kurv\",\n categoriesLabel: \"Kategorier\",\n categoryConfigurationErrorTitle: \"Fejl i kategorikonfiguration\",\n categoryNoConfigured: \"Der er ikke konfigureret nogen kategori.\",\n categoryNoDefinitions: \"Der er ikke konfigureret nogen navigation.\",\n categoryNoSlugMatch: \"Ingen kategori matcher slug \\\"{slug}\\\". Tjek navigation.ts og slug-attributten på orderly-category-page.\",\n categoryNoUrlMatch: \"Ingen kategori matcher URL-id \\\"{id}\\\". Tjek navigation.ts og #id-værdien.\",\n checkoutAddressTitle: \"Leveringsadresse\",\n checkoutCityLabel: \"By\",\n checkoutCompanyLabel: \"Firma\",\n checkoutCountryLabel: \"Land\",\n checkoutCustomerTitle: \"Kundeoplysninger\",\n checkoutChooseServicePointLabel: \"Vælg {method}\",\n checkoutDeliveryAddressPrompt: \"Udfyld adresse, postnummer og by for at se leveringsmetoder.\",\n checkoutDeliveryMethodLabel: \"Leveringsmetode\",\n checkoutDeliveryTitle: \"Leveringsmetode\",\n checkoutEmailLabel: \"Email\",\n checkoutErrorLabel: \"Checkout kunne ikke gennemføres.\",\n checkoutFirstNameLabel: \"Fornavn\",\n checkoutFormTitle: \"Levering og kontakt\",\n checkoutLastNameLabel: \"Efternavn\",\n checkoutOrderTitle: \"Din ordre\",\n checkoutNoDeliveryMethodsLabel: \"Der blev ikke fundet leveringsmetoder til adressen.\",\n checkoutNoServicePointsLabel: \"Der blev ikke fundet udleveringssteder til adressen.\",\n checkoutPageDescription: \"Udfyld leveringsoplysninger, vælg levering og gennemfør din ordre sikkert.\",\n checkoutPageTitle: \"Levering & betaling\",\n checkoutPhoneCountryLabel: \"Landekode\",\n checkoutPhoneLabel: \"Telefon\",\n checkoutServicePointLabel: \"Udleveringssted\",\n checkoutServicePointHelpLabel: \"Vælg dit ønskede udleveringssted\",\n checkoutStreet2Label: \"Adresse 2\",\n checkoutStreetLabel: \"Adresse\",\n checkoutSubmitLabel: \"Betal og bestil\",\n checkoutSubmittingLabel: \"Sender ordre...\",\n checkoutTermsLabel: \"Jeg accepterer\",\n checkoutTermsLinkLabel: \"forretningsbetingelserne\",\n checkoutZipLabel: \"Postnummer\",\n clearBasketLabel: \"Tøm kurv\",\n clearSearchLabel: \"Ryd søgning\",\n closeLabel: \"Luk\",\n closeMenuLabel: \"Luk menu\",\n collapseLabel: \"Luk {label}\",\n contactTitle: \"Kontakt\",\n continueShoppingLabel: \"Fortsæt med at handle\",\n deliveryFallbackLabel: \"Levering {index}\",\n deliveryNote: \"Levering beregnes fra valgt leveringsmetode.\",\n emailLabel: \"Email\",\n emptyLabel: \"Der blev ikke fundet varer.\",\n expandLabel: \"Åbn {label}\",\n homeRailCtaLabel: \"Se alle\",\n homeTitle: \"Butik\",\n informationLinksTitle: \"Information\",\n itemFallbackTitle: \"Vare\",\n loadMoreLabel: \"Indlæs flere\",\n loadingLabel: \"Indlæser...\",\n mainCategoriesLabel: \"Hovedkategorier\",\n mainNavigationLabel: \"Navigation\",\n menuLabel: \"Menu\",\n navigationItemFallbackLabel: \"Punkt {index}\",\n openingHoursTitle: \"Åbningstider\",\n phoneLabel: \"Telefon\",\n productAddLabel: \"Læg i kurven\",\n productDetailColorLabel: \"Farve\",\n productDetailConditionLabel: \"Stand\",\n productDetailSizeLabel: \"Størrelse\",\n productErrorLabel: \"Produktet kunne ikke indlæses.\",\n productFallbackTitle: \"Produkt\",\n productImageLabel: \"billede {index}\",\n productImageOverlayLabel: \"Produktbillede\",\n productLoadingLabel: \"Indlæser produkt...\",\n productNotFoundLabel: \"Produktet blev ikke fundet.\",\n productOpenImageLabel: \"Åbn produktbillede i fuld skærm\",\n productOpenPageLabel: \"Åbn produktside\",\n productRemoveLabel: \"Fjern fra kurven\",\n productViewLabel: \"Vis produkt\",\n productViewWithTitle: \"Vis {title}\",\n productsLabel: \"varer\",\n productsLoadError: \"Varerne kunne ikke indlæses.\",\n quantityLabel: \"Antal\",\n quantityShortLabel: \"Antal\",\n removeLabel: \"Fjern\",\n searchLabel: \"Søg\",\n searchPlaceholder: \"Søg produkter\",\n searchPromptLabel: \"Skriv i søgefeltet for at finde varer.\",\n searchingLabel: \"Søger efter\",\n servicePointFallbackLabel: \"Udleveringssted {index}\",\n shippingLabel: \"Levering\",\n shopBrandLabel: \"Butik\",\n shopNowLabel: \"Se varer\",\n sortLabel: \"Sorter\",\n subtotalLabel: \"Varer\",\n totalLabel: \"Total\",\n totalNote: \"Inkl. moms\",\n websiteLabel: \"Website\"\n },\n EN: {\n addressTitle: \"Address\",\n basketCheckoutDisabledLabel: \"Add items before checkout\",\n basketCheckoutLabel: \"Go to checkout\",\n basketEmptyLabel: \"Your basket is empty\",\n basketLabel: \"Basket\",\n basketPanelTitle: \"Basket\",\n categoriesLabel: \"Categories\",\n categoryConfigurationErrorTitle: \"Category configuration error\",\n categoryNoConfigured: \"No category has been configured.\",\n categoryNoDefinitions: \"No navigation definitions have been configured.\",\n categoryNoSlugMatch: \"No category matches slug \\\"{slug}\\\". Check navigation.ts and the orderly-category-page slug attribute.\",\n categoryNoUrlMatch: \"No category matches URL id \\\"{id}\\\". Check navigation.ts and the #id value.\",\n checkoutAddressTitle: \"Delivery address\",\n checkoutCityLabel: \"City\",\n checkoutCompanyLabel: \"Company\",\n checkoutCountryLabel: \"Country\",\n checkoutCustomerTitle: \"Customer information\",\n checkoutChooseServicePointLabel: \"Choose {method}\",\n checkoutDeliveryAddressPrompt: \"Enter street, zip, and city to see delivery methods.\",\n checkoutDeliveryMethodLabel: \"Delivery method\",\n checkoutDeliveryTitle: \"Delivery method\",\n checkoutEmailLabel: \"Email\",\n checkoutErrorLabel: \"Checkout failed.\",\n checkoutFirstNameLabel: \"First name\",\n checkoutFormTitle: \"Delivery and contact\",\n checkoutLastNameLabel: \"Last name\",\n checkoutOrderTitle: \"Your order\",\n checkoutNoDeliveryMethodsLabel: \"No delivery methods were found for the address.\",\n checkoutNoServicePointsLabel: \"No service points were found for the address.\",\n checkoutPageDescription: \"Enter your delivery details, choose delivery, and complete your order securely.\",\n checkoutPageTitle: \"Delivery & Payment\",\n checkoutPhoneCountryLabel: \"Phone country\",\n checkoutPhoneLabel: \"Phone\",\n checkoutServicePointLabel: \"Service point\",\n checkoutServicePointHelpLabel: \"Choose your preferred pickup point\",\n checkoutStreet2Label: \"Street 2\",\n checkoutStreetLabel: \"Street\",\n checkoutSubmitLabel: \"Create order\",\n checkoutSubmittingLabel: \"Creating order...\",\n checkoutTermsLabel: \"I accept the terms and conditions\",\n checkoutTermsLinkLabel: \"terms\",\n checkoutZipLabel: \"Zip\",\n clearBasketLabel: \"Clear basket\",\n clearSearchLabel: \"Clear search\",\n closeLabel: \"Close\",\n closeMenuLabel: \"Close menu\",\n collapseLabel: \"Collapse {label}\",\n contactTitle: \"Contact\",\n continueShoppingLabel: \"Continue shopping\",\n deliveryFallbackLabel: \"Delivery {index}\",\n deliveryNote: \"Delivery is calculated from the selected delivery method.\",\n emailLabel: \"Email\",\n emptyLabel: \"No products found.\",\n expandLabel: \"Expand {label}\",\n homeRailCtaLabel: \"See all\",\n homeTitle: \"Shop\",\n informationLinksTitle: \"Information\",\n itemFallbackTitle: \"Item\",\n loadMoreLabel: \"Load more\",\n loadingLabel: \"Loading...\",\n mainCategoriesLabel: \"Main categories\",\n mainNavigationLabel: \"Main navigation\",\n menuLabel: \"Menu\",\n navigationItemFallbackLabel: \"Item {index}\",\n openingHoursTitle: \"Opening hours\",\n phoneLabel: \"Phone\",\n productAddLabel: \"Add to basket\",\n productDetailColorLabel: \"Color\",\n productDetailConditionLabel: \"Condition\",\n productDetailSizeLabel: \"Size\",\n productErrorLabel: \"Product could not be loaded.\",\n productFallbackTitle: \"Product\",\n productImageLabel: \"image {index}\",\n productImageOverlayLabel: \"Product image\",\n productLoadingLabel: \"Loading product...\",\n productNotFoundLabel: \"Product could not be found.\",\n productOpenImageLabel: \"Open product image fullscreen\",\n productOpenPageLabel: \"Open product page\",\n productRemoveLabel: \"Remove from basket\",\n productViewLabel: \"View product\",\n productViewWithTitle: \"View {title}\",\n productsLabel: \"products\",\n productsLoadError: \"Products could not be loaded.\",\n quantityLabel: \"Quantity\",\n quantityShortLabel: \"Qty\",\n removeLabel: \"Remove\",\n searchLabel: \"Search\",\n searchPlaceholder: \"Search products\",\n searchPromptLabel: \"Start typing to find products.\",\n searchingLabel: \"Searching for\",\n servicePointFallbackLabel: \"Service point {index}\",\n shippingLabel: \"Shipping\",\n shopBrandLabel: \"Shop\",\n shopNowLabel: \"Shop now\",\n sortLabel: \"Sort\",\n subtotalLabel: \"Items\",\n totalLabel: \"Total\",\n totalNote: \"Incl. VAT\",\n websiteLabel: \"Website\"\n }\n};\n\nlet currentUiLanguage: UiLanguage = \"DA\";\n\nexport function defaultUiLanguage(): UiLanguage {\n return currentUiLanguage;\n}\n\nexport function configureUiLanguage(language: UiLanguage | string | undefined): UiLanguage {\n currentUiLanguage = normalizeUiLanguage(language);\n return currentUiLanguage;\n}\n\nexport function normalizeUiLanguage(language: UiLanguage | string | undefined): UiLanguage {\n const value = language?.trim().toUpperCase();\n return value === \"EN\" ? \"EN\" : \"DA\";\n}\n\nexport function uiText(key: UiTextKey, language: UiLanguage = currentUiLanguage): string {\n return UI_TEXTS[language][key] ?? UI_TEXTS.DA[key];\n}\n\nexport function formatUiText(key: UiTextKey, values: Record<string, string | number | undefined>, language: UiLanguage = currentUiLanguage): string {\n return uiText(key, language).replace(/\\{(\\w+)\\}/g, (_match, name: string) => {\n const value = values[name];\n return value === undefined ? \"\" : String(value);\n });\n}\n","import type { CategoryUrlMode, NavigationDefinition, ResolvedNavigationItem, SortOption } from \"./types.js\";\nimport { createCategoryNavigation, navigationConfigurationError, resolveCategoryUrlMode } from \"./taxonomy.js\";\nimport { configureShopSearchQuery, shopSearchQuery } from \"./shop-query.js\";\nimport { normalizeSearchQuery } from \"./query.js\";\nimport type { SearchQuery } from \"@orderlyshop/core-client\";\nimport type { CheckoutLabels } from \"./components/checkout.js\";\nimport { configureUiLanguage, uiText, type UiLanguage } from \"./i18n.js\";\n\nexport const DEFAULT_SHOP_BASE_URL = \"https://service.orderly.shop\";\nexport const DEFAULT_SHOP_BRAND_LABEL = uiText(\"shopBrandLabel\", \"DA\");\n\nexport const DEFAULT_SHOP_SORT_OPTIONS: SortOption[] = defaultShopSortOptionsForLanguage(\"DA\");\n\nexport const DEFAULT_SHOP_NAVIGATION_DEFINITIONS: NavigationDefinition[] = defaultShopNavigationDefinitionsForLanguage(\"DA\");\nexport const DEFAULT_SHOP_CATEGORY_DEFINITIONS: NavigationDefinition[] = DEFAULT_SHOP_NAVIGATION_DEFINITIONS;\n\nexport interface BasketLabels {\n emptyLabel?: string;\n clearLabel?: string;\n continueLabel?: string;\n quantityLabel?: string;\n removeLabel?: string;\n subtotalLabel?: string;\n shippingLabel?: string;\n totalLabel?: string;\n totalNote?: string;\n deliveryNote?: string;\n}\n\nexport interface DefaultShopConfig {\n uiLanguage?: UiLanguage | string;\n baseUrl?: string;\n brandLabel?: string;\n homeHref?: string;\n productHref?: string;\n checkoutHref?: string;\n checkoutLabel?: string;\n checkoutPageTitle?: string;\n checkoutPageDescription?: string;\n checkoutOrderTitle?: string;\n checkoutTermsHref?: string;\n checkoutLabels?: CheckoutLabels;\n basketLabels?: BasketLabels;\n searchPlaceholder?: string;\n emptyLabel?: string;\n /**\n * User-facing navigation/category structure for default storefront pages.\n */\n navigationDefinitions?: NavigationDefinition[];\n /**\n * Backward-compatible alias for navigationDefinitions.\n */\n categoryDefinitions?: NavigationDefinition[];\n categoryPageRoot?: string;\n categoryUrlMode?: CategoryUrlMode;\n /**\n * Core SearchQuery merged into every default storefront search.\n *\n * Use this for shop-wide scope such as tenant/account filters, published-only\n * filters, inventory constraints, or other hidden search restrictions. It is\n * intentionally a generic SearchQuery and not account-id specific.\n */\n defaultQuery?: SearchQuery;\n /**\n * Backward-compatible alias for defaultQuery.\n */\n query?: SearchQuery;\n sortOptions?: SortOption[];\n}\n\ninterface DefaultShopState {\n uiLanguage: UiLanguage;\n baseUrl: string;\n brandLabel: string;\n homeHref: string;\n productHref: string;\n checkoutHref: string;\n checkoutLabel: string;\n checkoutPageTitle: string;\n checkoutPageDescription: string;\n checkoutOrderTitle: string;\n checkoutTermsHref: string;\n checkoutLabels: CheckoutLabels;\n basketLabels: BasketLabels;\n searchPlaceholder: string;\n emptyLabel: string;\n navigationDefinitions: NavigationDefinition[];\n categoryPageRoot: string;\n categoryUrlMode?: CategoryUrlMode;\n sortOptions: SortOption[];\n navigationError?: string;\n}\n\nconst initialDefaultShopConfig: DefaultShopState = defaultShopStateForLanguage(\"DA\");\n\nlet defaultShopConfig: DefaultShopState = cloneDefaultShopConfig(initialDefaultShopConfig);\n\nexport function configureDefaultShop(config: DefaultShopConfig = {}): void {\n const nextLanguage = \"uiLanguage\" in config ? configureUiLanguage(config.uiLanguage) : defaultShopConfig.uiLanguage;\n const baseConfig = nextLanguage === defaultShopConfig.uiLanguage ? defaultShopConfig : defaultShopStateForLanguage(nextLanguage);\n if (\"defaultQuery\" in config) {\n configureShopSearchQuery(config.defaultQuery);\n } else if (\"query\" in config) {\n configureShopSearchQuery(config.query);\n }\n const navigationDefinitions = config.navigationDefinitions ?? config.categoryDefinitions ?? baseConfig.navigationDefinitions;\n defaultShopConfig = cloneDefaultShopConfig({\n uiLanguage: nextLanguage,\n baseUrl: config.baseUrl ?? baseConfig.baseUrl,\n brandLabel: config.brandLabel ?? baseConfig.brandLabel,\n homeHref: config.homeHref ?? baseConfig.homeHref,\n productHref: config.productHref ?? baseConfig.productHref,\n checkoutHref: config.checkoutHref ?? baseConfig.checkoutHref,\n checkoutLabel: config.checkoutLabel ?? baseConfig.checkoutLabel,\n checkoutPageTitle: config.checkoutPageTitle ?? baseConfig.checkoutPageTitle,\n checkoutPageDescription: config.checkoutPageDescription ?? baseConfig.checkoutPageDescription,\n checkoutOrderTitle: config.checkoutOrderTitle ?? baseConfig.checkoutOrderTitle,\n checkoutTermsHref: config.checkoutTermsHref ?? baseConfig.checkoutTermsHref,\n checkoutLabels: config.checkoutLabels ? { ...baseConfig.checkoutLabels, ...config.checkoutLabels } : baseConfig.checkoutLabels,\n basketLabels: config.basketLabels ? { ...baseConfig.basketLabels, ...config.basketLabels } : baseConfig.basketLabels,\n searchPlaceholder: config.searchPlaceholder ?? baseConfig.searchPlaceholder,\n emptyLabel: config.emptyLabel ?? baseConfig.emptyLabel,\n navigationDefinitions,\n categoryPageRoot: config.categoryPageRoot ?? baseConfig.categoryPageRoot,\n categoryUrlMode: \"categoryUrlMode\" in config ? config.categoryUrlMode : baseConfig.categoryUrlMode,\n sortOptions: config.sortOptions ?? baseConfig.sortOptions,\n navigationError: navigationConfigurationError(navigationDefinitions)\n });\n}\n\nexport function resetDefaultShop(): void {\n configureUiLanguage(\"DA\");\n defaultShopConfig = cloneDefaultShopConfig(initialDefaultShopConfig);\n configureShopSearchQuery(undefined);\n}\n\nexport function defaultShopUiLanguage(): UiLanguage {\n return defaultShopConfig.uiLanguage;\n}\n\nexport function defaultShopBaseUrl(): string {\n return defaultShopConfig.baseUrl;\n}\n\nexport function defaultShopBrandLabel(): string {\n return defaultShopConfig.brandLabel;\n}\n\nexport function defaultShopHomeHref(): string {\n return defaultShopConfig.homeHref;\n}\n\nexport function defaultShopProductHref(): string {\n return defaultShopConfig.productHref;\n}\n\nexport function defaultShopCheckoutHref(): string {\n return defaultShopConfig.checkoutHref;\n}\n\nexport function defaultShopCheckoutLabel(): string {\n return defaultShopConfig.checkoutLabel;\n}\n\nexport function defaultShopCheckoutPageTitle(): string {\n return defaultShopConfig.checkoutPageTitle;\n}\n\nexport function defaultShopCheckoutPageDescription(): string {\n return defaultShopConfig.checkoutPageDescription;\n}\n\nexport function defaultShopCheckoutOrderTitle(): string {\n return defaultShopConfig.checkoutOrderTitle;\n}\n\nexport function defaultShopCheckoutTermsHref(): string {\n return defaultShopConfig.checkoutTermsHref;\n}\n\nexport function defaultShopCheckoutLabels(): CheckoutLabels {\n return { ...defaultShopConfig.checkoutLabels };\n}\n\nexport function defaultShopBasketLabels(): BasketLabels {\n return { ...defaultShopConfig.basketLabels };\n}\n\nexport function defaultShopSearchPlaceholder(): string {\n return defaultShopConfig.searchPlaceholder;\n}\n\nexport function defaultShopEmptyLabel(): string {\n return defaultShopConfig.emptyLabel;\n}\n\nexport function defaultShopSortOptions(): SortOption[] {\n return defaultShopConfig.sortOptions.map((option) => ({\n label: option.label,\n orderBy: [...option.orderBy]\n }));\n}\n\nexport function defaultShopSearchQuery(): SearchQuery | undefined {\n return shopSearchQuery();\n}\n\nexport function defaultShopNavigationItems(url: string | URL | Location = currentLocationUrl()): ResolvedNavigationItem[] {\n if (defaultShopConfig.navigationError) {\n return [];\n }\n return createCategoryNavigation(defaultShopConfig.navigationDefinitions, {\n pageRoot: defaultShopConfig.categoryPageRoot,\n urlMode: defaultShopConfig.categoryUrlMode ?? resolveCategoryUrlMode(url, { pageRoot: defaultShopConfig.categoryPageRoot })\n });\n}\n\nexport function defaultShopNavigationError(): string | undefined {\n return defaultShopConfig.navigationError;\n}\n\nfunction cloneDefaultShopConfig(config: DefaultShopState): DefaultShopState {\n return {\n ...config,\n navigationDefinitions: config.navigationDefinitions.map(cloneNavigationDefinition),\n checkoutLabels: { ...config.checkoutLabels },\n basketLabels: { ...config.basketLabels },\n navigationError: config.navigationError,\n sortOptions: config.sortOptions.map((option) => ({\n label: option.label,\n orderBy: [...option.orderBy]\n }))\n };\n}\n\nfunction cloneNavigationDefinition(definition: NavigationDefinition): NavigationDefinition {\n return {\n ...definition,\n query: definition.query ? normalizeSearchQuery(definition.query) : undefined,\n children: definition.children?.map(cloneNavigationDefinition)\n };\n}\n\nfunction defaultShopStateForLanguage(language: UiLanguage): DefaultShopState {\n return {\n uiLanguage: language,\n baseUrl: DEFAULT_SHOP_BASE_URL,\n brandLabel: uiText(\"shopBrandLabel\", language),\n homeHref: \"/\",\n productHref: \"/product.html\",\n checkoutHref: \"/checkout.html\",\n checkoutLabel: uiText(\"basketCheckoutLabel\", language),\n checkoutPageTitle: uiText(\"checkoutPageTitle\", language),\n checkoutPageDescription: uiText(\"checkoutPageDescription\", language),\n checkoutOrderTitle: uiText(\"checkoutOrderTitle\", language),\n checkoutTermsHref: \"#\",\n checkoutLabels: {},\n basketLabels: {},\n searchPlaceholder: uiText(\"searchPlaceholder\", language),\n emptyLabel: uiText(\"emptyLabel\", language),\n navigationDefinitions: defaultShopNavigationDefinitionsForLanguage(language),\n categoryPageRoot: \"/categories/\",\n categoryUrlMode: \"path\",\n sortOptions: defaultShopSortOptionsForLanguage(language),\n navigationError: undefined\n };\n}\n\nfunction defaultShopSortOptionsForLanguage(language: UiLanguage): SortOption[] {\n return [\n { label: language === \"EN\" ? \"Newest\" : \"Nyeste\", orderBy: [\"CreatedTime desc\"] },\n { label: language === \"EN\" ? \"Price: low to high\" : \"Pris: lav til høj\", orderBy: [\"Price asc\"] },\n { label: language === \"EN\" ? \"Price: high to low\" : \"Pris: høj til lav\", orderBy: [\"Price desc\"] }\n ];\n}\n\nfunction defaultShopNavigationDefinitionsForLanguage(language: UiLanguage): NavigationDefinition[] {\n if (language === \"EN\") {\n return [\n {\n label: \"Clothing\",\n slug: \"clothing\",\n heroImage: \"https://images.unsplash.com/photo-1496747611176-843222e1e57c?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"clothing fashion\" },\n children: [\n { label: \"Women\", slug: \"women\", query: { query: \"women clothing dresses jackets\" } },\n { label: \"Men\", slug: \"men\", query: { query: \"men clothing shirts jackets\" } },\n { label: \"Kids\", slug: \"kids\", query: { query: \"kids clothing\" } },\n { label: \"Accessories\", slug: \"accessories\", query: { query: \"fashion accessories\" } }\n ]\n },\n {\n label: \"Shoes\",\n slug: \"shoes\",\n heroImage: \"https://images.unsplash.com/photo-1542291026-7eec264c27ff?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"shoes sneakers\" },\n children: [\n { label: \"Women shoes\", slug: \"women-shoes\", query: { query: \"women shoes sneakers boots\" } },\n { label: \"Men shoes\", slug: \"men-shoes\", query: { query: \"men shoes sneakers boots\" } },\n { label: \"Sport shoes\", slug: \"sport-shoes\", query: { query: \"sport shoes running\" } }\n ]\n },\n {\n label: \"Home\",\n slug: \"home\",\n heroImage: \"https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"home interior design\" },\n children: [\n { label: \"Furniture\", slug: \"furniture\", query: { query: \"furniture sofa chair table\" } },\n { label: \"Lighting\", slug: \"lighting\", query: { query: \"lamp lighting home\" } },\n { label: \"Kitchen\", slug: \"kitchen\", query: { query: \"kitchen equipment\" } }\n ]\n },\n {\n label: \"Electronics\",\n slug: \"electronics\",\n heroImage: \"https://images.unsplash.com/photo-1518770660439-4636190af475?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"electronics computer mobile\" },\n children: [\n { label: \"Computers\", slug: \"computers\", query: { query: \"computer tablet laptop\" } },\n { label: \"Mobile\", slug: \"mobile\", query: { query: \"mobile phone accessories\" } },\n { label: \"Gaming\", slug: \"gaming\", query: { query: \"gaming console\" } }\n ]\n },\n {\n label: \"Beauty\",\n slug: \"beauty\",\n heroImage: \"https://images.unsplash.com/photo-1522335789203-aabd1fc54bc9?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"beauty skincare makeup\" },\n children: [\n { label: \"Skincare\", slug: \"skincare\", query: { query: \"skincare beauty\" } },\n { label: \"Makeup\", slug: \"makeup\", query: { query: \"makeup cosmetics\" } },\n { label: \"Perfume\", slug: \"perfume\", query: { query: \"perfume fragrance\" } }\n ]\n }\n ];\n }\n\n return [\n {\n label: \"Tøj\",\n slug: \"toej\",\n heroImage: \"https://images.unsplash.com/photo-1496747611176-843222e1e57c?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"tøj mode\" },\n children: [\n { label: \"Dame\", slug: \"dame\", query: { query: \"dame tøj kjoler jakker\" } },\n { label: \"Herre\", slug: \"herre\", query: { query: \"herre tøj skjorter jakker\" } },\n { label: \"Børn\", slug: \"boern\", query: { query: \"børnetøj\" } },\n { label: \"Accessories\", slug: \"accessories\", query: { query: \"mode accessories\" } }\n ]\n },\n {\n label: \"Sko\",\n slug: \"sko\",\n heroImage: \"https://images.unsplash.com/photo-1542291026-7eec264c27ff?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"sko sneakers\" },\n children: [\n { label: \"Damesko\", slug: \"damesko\", query: { query: \"damesko sneakers støvler\" } },\n { label: \"Herresko\", slug: \"herresko\", query: { query: \"herresko sneakers støvler\" } },\n { label: \"Sportssko\", slug: \"sportssko\", query: { query: \"sportssko løbesko\" } }\n ]\n },\n {\n label: \"Bolig\",\n slug: \"bolig\",\n heroImage: \"https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"bolig indretning design\" },\n children: [\n { label: \"Møbler\", slug: \"moebler\", query: { query: \"møbler sofa stol bord\" } },\n { label: \"Belysning\", slug: \"belysning\", query: { query: \"lampe belysning bolig\" } },\n { label: \"Køkken\", slug: \"koekken\", query: { query: \"køkkenudstyr\" } }\n ]\n },\n {\n label: \"Elektronik\",\n slug: \"elektronik\",\n heroImage: \"https://images.unsplash.com/photo-1518770660439-4636190af475?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"elektronik computer mobil\" },\n children: [\n { label: \"Computere\", slug: \"computere\", query: { query: \"computer tablet laptop\" } },\n { label: \"Mobil\", slug: \"mobil\", query: { query: \"mobil telefon tilbehør\" } },\n { label: \"Gaming\", slug: \"gaming\", query: { query: \"gaming konsol\" } }\n ]\n },\n {\n label: \"Skønhed\",\n slug: \"skoenhed\",\n heroImage: \"https://images.unsplash.com/photo-1522335789203-aabd1fc54bc9?auto=format&fit=crop&w=1800&q=80\",\n query: { query: \"skønhed hudpleje makeup\" },\n children: [\n { label: \"Hudpleje\", slug: \"hudpleje\", query: { query: \"hudpleje skønhed\" } },\n { label: \"Makeup\", slug: \"makeup\", query: { query: \"makeup kosmetik\" } },\n { label: \"Parfume\", slug: \"parfume\", query: { query: \"parfume duft\" } }\n ]\n }\n ];\n}\n\nfunction currentLocationUrl(): URL {\n return typeof location === \"undefined\"\n ? new URL(defaultShopConfig.categoryPageRoot, \"https://example.test\")\n : new URL(location.href);\n}\n"],"mappings":"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","names":["create","SearchQuerySchema","SearchQuerySchema","location","create","clone","create","SearchQuerySchema","currentLocationUrl"]}
@@ -0,0 +1,9 @@
1
+ import './registry-CPDecU3g.js';
2
+
3
+ declare const ORDERLY_LAZY_LOAD_CSS = "\norderly-page-layout,\norderly-home-page,\norderly-collection-page,\norderly-product-grid,\norderly-product-detail-page,\norderly-product-rail,\norderly-product-tile,\norderly-product-page,\norderly-basket,\norderly-basket-icon,\norderly-checkout,\norderly-checkout-page,\norderly-navigation,\norderly-shop-footer,\norderly-stored-image {\n box-sizing: border-box;\n}\n\norderly-page-layout:not(:defined),\norderly-page-layout:not([data-orderly-ready]) {\n display: block;\n min-height: 100vh;\n background: var(--orderly-loading-page-background, #ffffff);\n}\n\norderly-page-layout:not(:defined) > :not(template),\norderly-page-layout:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]) {\n display: none !important;\n}\n\norderly-collection-page > query,\norderly-product-grid > query,\norderly-product-rail > query {\n display: none !important;\n}\n\norderly-home-page:not(:defined),\norderly-home-page:not([data-orderly-ready]) {\n display: block;\n min-height: 100vh;\n background: var(--orderly-loading-page-background, #ffffff);\n}\n\norderly-home-page:not(:defined) > :not(template),\norderly-home-page:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]) {\n display: none !important;\n}\n\norderly-home-page:not(:defined)::before,\norderly-home-page:not([data-orderly-ready])::before {\n content: \"\";\n display: block;\n height: var(--orderly-loading-header-height, 62px);\n border-bottom: 1px solid var(--orderly-loading-border, #d8dee3);\n background: var(--orderly-loading-surface, #ffffff);\n}\n\norderly-home-page:not(:defined)::after,\norderly-home-page:not([data-orderly-ready])::after {\n content: \"\";\n display: block;\n min-height: calc(100vh - var(--orderly-loading-header-height, 62px));\n background:\n linear-gradient(90deg, var(--orderly-loading-surface, #ffffff) 0 280px, transparent 280px),\n linear-gradient(90deg, transparent 0 300px, var(--orderly-loading-highlight, #eef2f4) 300px 100%);\n}\n\norderly-page-layout:not(:defined)::before,\norderly-page-layout:not([data-orderly-ready])::before {\n content: \"\";\n display: block;\n height: var(--orderly-loading-header-height, 62px);\n border-bottom: 1px solid var(--orderly-loading-border, #d8dee3);\n background:\n linear-gradient(90deg, var(--orderly-loading-highlight, #f6f8f9) 0 120px, transparent 120px),\n var(--orderly-loading-surface, #ffffff);\n}\n\norderly-page-layout:not(:defined)::after,\norderly-page-layout:not([data-orderly-ready])::after {\n content: \"\";\n display: block;\n min-height: calc(100vh - var(--orderly-loading-header-height, 62px));\n background:\n linear-gradient(90deg, var(--orderly-loading-surface, #ffffff) 0 280px, transparent 280px),\n linear-gradient(90deg, transparent 0 300px, var(--orderly-loading-highlight, #eef2f4) 300px 100%);\n}\n\norderly-collection-page:not([data-orderly-ready]),\norderly-product-grid:not([data-orderly-ready]),\norderly-product-detail-page:not([data-orderly-ready]),\norderly-product-rail:not([data-orderly-ready]),\norderly-product-page:not([data-orderly-ready]),\norderly-basket:not([data-orderly-ready]),\norderly-checkout:not([data-orderly-ready]),\norderly-checkout-page:not([data-orderly-ready]),\norderly-navigation:not([data-orderly-ready]),\norderly-shop-footer:not([data-orderly-ready]) {\n display: block;\n min-height: var(--orderly-loading-block-min-height, 120px);\n}\n\norderly-collection-page:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-product-grid:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-product-detail-page:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-product-rail:not([data-orderly-ready]) > :not(template):not(query):not([data-orderly-render-root]),\norderly-product-page:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-basket:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-checkout:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-checkout-page:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-navigation:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]),\norderly-shop-footer:not([data-orderly-ready]) > :not(template):not([data-orderly-render-root]) {\n display: none !important;\n}\n\norderly-collection-page:not([data-orderly-ready])::before,\norderly-product-grid:not([data-orderly-ready])::before,\norderly-product-detail-page:not([data-orderly-ready])::before,\norderly-product-rail:not([data-orderly-ready])::before,\norderly-product-page:not([data-orderly-ready])::before,\norderly-basket:not([data-orderly-ready])::before,\norderly-checkout:not([data-orderly-ready])::before,\norderly-checkout-page:not([data-orderly-ready])::before,\norderly-navigation:not([data-orderly-ready])::before,\norderly-shop-footer:not([data-orderly-ready])::before {\n content: \"\";\n display: block;\n min-height: var(--orderly-loading-block-min-height, 120px);\n border-radius: var(--orderly-loading-radius, 8px);\n background: linear-gradient(\n 90deg,\n var(--orderly-skeleton-base, #eef2f4),\n var(--orderly-skeleton-highlight, #f8fafb),\n var(--orderly-skeleton-base, #eef2f4)\n );\n background-size: 200% 100%;\n}\n\n.orderly-skeleton {\n background: linear-gradient(\n 90deg,\n var(--orderly-skeleton-base, #eef2f4),\n var(--orderly-skeleton-highlight, #f8fafb),\n var(--orderly-skeleton-base, #eef2f4)\n );\n background-size: 200% 100%;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .orderly-skeleton,\n orderly-collection-page:not([data-orderly-ready])::before,\n orderly-product-grid:not([data-orderly-ready])::before,\n orderly-product-detail-page:not([data-orderly-ready])::before,\n orderly-product-rail:not([data-orderly-ready])::before,\n orderly-product-page:not([data-orderly-ready])::before,\n orderly-basket:not([data-orderly-ready])::before,\n orderly-checkout:not([data-orderly-ready])::before,\n orderly-checkout-page:not([data-orderly-ready])::before,\n orderly-navigation:not([data-orderly-ready])::before,\n orderly-shop-footer:not([data-orderly-ready])::before {\n animation: orderly-skeleton-loading 1.2s ease-in-out infinite;\n }\n}\n\n@keyframes orderly-skeleton-loading {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n";
4
+ declare function installOrderlyLazyLoadStyles(target?: Document | undefined): HTMLStyleElement | undefined;
5
+
6
+ declare const ORDERLY_DEFAULT_CSS = "\n:root {\n --orderly-color-text: #1e1e1e;\n --orderly-color-muted: #6d6d6d;\n --orderly-color-border: #e5e5e5;\n --orderly-color-surface: #ffffff;\n --orderly-color-page: #f4f4f4;\n --orderly-color-accent: #ef5a24;\n --orderly-color-accent-soft: #fff1ed;\n --orderly-color-danger: #b91c1c;\n --orderly-color-on-dark: #ffffff;\n --orderly-color-strong: #111111;\n --orderly-color-text-soft: #222222;\n --orderly-color-border-subtle: #ececec;\n --orderly-color-border-strong: #d4d4d4;\n --orderly-color-control-border: #cfcfcf;\n --orderly-color-control-muted-border: #aeb8c2;\n --orderly-color-card-border: #e4e4e4;\n --orderly-color-image-border: #e7e4dc;\n --orderly-color-selected-soft: #fff5ef;\n --orderly-shadow-sm: 0 4px 16px rgba(20, 20, 20, 0.05);\n --orderly-shadow-md: 0 8px 24px rgba(20, 20, 20, 0.08);\n --orderly-radius: 3px;\n --orderly-radius-control: 8px;\n --orderly-radius-pill: 999px;\n --orderly-border: 1px solid var(--orderly-color-border);\n --orderly-border-control: 1px solid var(--orderly-color-control-border);\n --orderly-border-card: 1px solid var(--orderly-color-card-border);\n --orderly-border-subtle: 1px solid var(--orderly-color-border-subtle);\n --orderly-focus-ring: 0 0 0 3px rgba(239, 90, 36, 0.22);\n --orderly-focus-outline: 3px solid rgba(239, 90, 36, 0.32);\n --orderly-control-height: 42px;\n --orderly-control-padding-x: 12px;\n --orderly-icon-button-size: 42px;\n --orderly-icon-button-radius: var(--orderly-radius-control);\n --orderly-panel-padding: 24px;\n --orderly-card-padding: 14px 16px;\n --orderly-section-gap: 18px;\n --orderly-item-gap: 12px;\n --orderly-product-action-width: 42px;\n --orderly-product-action-height: 34px;\n --orderly-content-max-width: 1280px;\n color: var(--orderly-color-text);\n font-family: Roboto, \"Segoe UI\", Arial, sans-serif;\n line-height: 1.5;\n}\n\nbody:has(orderly-home-page),\nbody:has(orderly-category-page),\nbody:has(orderly-product-detail-page),\nbody:has(orderly-checkout-page) {\n min-width: 320px;\n margin: 0;\n overflow-x: hidden;\n background: var(--orderly-color-page);\n color: var(--orderly-color-text);\n -webkit-font-smoothing: antialiased;\n}\n\nbody.orderly-navigation-menu-open {\n overflow: hidden;\n}\n\nbody.orderly-search-overlay-open {\n overflow: hidden;\n}\n\nbody.orderly-product-image-overlay-open {\n overflow: hidden;\n}\n\n.orderly-page-layout *,\n.orderly-product-grid *,\n.orderly-product-rail *,\n.orderly-product-tile *,\n.orderly-product-page *,\n.orderly-basket *,\n.orderly-checkout *,\n.orderly-shop-footer *,\n.orderly-navigation *,\n.orderly-search-box *,\n.orderly-search-box-shell *,\n.orderly-search-box__overlay *,\n.orderly-credit * {\n box-sizing: border-box;\n}\n\n.orderly-page-layout button,\n.orderly-product-grid button,\n.orderly-product-rail button,\n.orderly-product-tile button,\n.orderly-product-page button,\n.orderly-basket button,\n.orderly-checkout button,\n.orderly-navigation button,\n.orderly-search-box button,\n.orderly-search-box__trigger,\n.orderly-search-box__close,\n.orderly-page-layout input,\n.orderly-product-grid input,\n.orderly-basket input,\n.orderly-checkout input,\n.orderly-search-box input,\ninput.orderly-search-box,\n.orderly-search-box__overlay-input,\n.orderly-product-grid select,\n.orderly-checkout select {\n font: inherit;\n}\n\n.orderly-page-layout button,\n.orderly-product-grid button,\n.orderly-product-rail button,\n.orderly-product-tile button,\n.orderly-product-page button,\n.orderly-basket button,\n.orderly-checkout button,\n.orderly-navigation button,\n.orderly-search-box button {\n border: 1px solid var(--orderly-color-text);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-text);\n color: var(--orderly-color-on-dark);\n cursor: pointer;\n}\n\n.orderly-page-layout button:hover,\n.orderly-product-grid button:hover,\n.orderly-product-rail button:hover,\n.orderly-product-tile button:hover,\n.orderly-product-page button:hover,\n.orderly-basket button:hover,\n.orderly-checkout button:hover,\n.orderly-navigation button:hover,\n.orderly-search-box button:hover {\n border-color: var(--orderly-color-accent);\n background: var(--orderly-color-accent);\n}\n\n.orderly-page-layout a,\n.orderly-product-grid a,\n.orderly-product-rail a,\n.orderly-product-tile a,\n.orderly-product-page a,\n.orderly-basket a,\n.orderly-checkout a,\n.orderly-shop-footer a,\n.orderly-navigation a {\n color: inherit;\n}\n\n[data-orderly-ssr-fallback][hidden] {\n display: none !important;\n}\n\n.orderly-ssr-home,\n.orderly-ssr-category {\n display: grid;\n gap: clamp(22px, 4vw, 44px);\n width: min(var(--orderly-content-max-width), 100%);\n margin: 0 auto;\n padding: clamp(18px, 4vw, 44px);\n}\n\n.orderly-ssr-product-detail {\n display: grid;\n grid-template-columns: minmax(0, 0.95fr) minmax(280px, 0.75fr);\n align-items: start;\n gap: clamp(20px, 4vw, 48px);\n width: min(var(--orderly-content-max-width), 100%);\n margin: 0 auto;\n padding: clamp(18px, 4vw, 44px);\n}\n\n.orderly-ssr-product-detail__image {\n display: grid;\n place-items: center;\n aspect-ratio: 1;\n border: var(--orderly-border-card);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n overflow: hidden;\n}\n\n.orderly-ssr-product-detail__image img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n\n.orderly-ssr-product-detail__text {\n display: grid;\n gap: 10px;\n}\n\n.orderly-ssr-product-detail__text h1,\n.orderly-ssr-product-detail__text p {\n margin: 0;\n}\n\n.orderly-ssr-product-detail__text h1 {\n font-size: clamp(2rem, 4vw, 3.6rem);\n line-height: 1;\n}\n\n.orderly-ssr-home__intro,\n.orderly-ssr-category__hero {\n display: grid;\n gap: 10px;\n}\n\n.orderly-ssr-home__intro h1,\n.orderly-ssr-category__text h1 {\n margin: 0;\n font-size: clamp(2rem, 5vw, 4.4rem);\n line-height: 1;\n}\n\n.orderly-ssr-home__eyebrow,\n.orderly-ssr-category__eyebrow,\n.orderly-ssr-product__text p {\n margin: 0;\n color: var(--orderly-color-muted);\n}\n\n.orderly-ssr-home__rails {\n display: grid;\n gap: clamp(26px, 5vw, 52px);\n}\n\n.orderly-ssr-rail,\n.orderly-ssr-category__text {\n display: grid;\n gap: 14px;\n}\n\n.orderly-ssr-rail__header {\n display: flex;\n align-items: end;\n justify-content: space-between;\n gap: 16px;\n}\n\n.orderly-ssr-rail__header h2,\n.orderly-ssr-rail__header p,\n.orderly-ssr-product__text h3,\n.orderly-ssr-product__text p {\n margin: 0;\n}\n\n.orderly-ssr-rail__items {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: minmax(160px, 220px);\n gap: 14px;\n overflow-x: auto;\n padding-bottom: 8px;\n}\n\n.orderly-ssr-product-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n gap: 14px;\n}\n\n.orderly-ssr-product {\n min-width: 0;\n border: var(--orderly-border-card);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n overflow: hidden;\n}\n\n.orderly-ssr-product__link {\n display: grid;\n height: 100%;\n color: inherit;\n text-decoration: none;\n}\n\n.orderly-ssr-product__image {\n display: grid;\n place-items: center;\n aspect-ratio: 1;\n background: var(--orderly-color-surface);\n}\n\n.orderly-ssr-product__image img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n}\n\n.orderly-ssr-product__text {\n display: grid;\n gap: 4px;\n padding: 12px;\n}\n\n.orderly-ssr-breadcrumb {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n color: var(--orderly-color-muted);\n font-size: 0.9rem;\n}\n\n.orderly-ssr-breadcrumb a {\n color: inherit;\n}\n\n.orderly-ssr-category__hero {\n overflow: hidden;\n border: var(--orderly-border-card);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n}\n\n.orderly-ssr-category__hero img {\n width: 100%;\n max-height: 320px;\n object-fit: cover;\n}\n\n.orderly-ssr-category__text {\n padding: clamp(18px, 4vw, 34px);\n}\n\n.orderly-page-layout {\n min-height: 100vh;\n max-width: 100%;\n overflow-x: clip;\n background: var(--orderly-color-page);\n}\n\n.orderly-page-layout__utility {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: 6px 8px;\n min-height: 34px;\n padding: 6px 24px;\n border-bottom: var(--orderly-border);\n background: var(--orderly-color-text);\n color: var(--orderly-color-on-dark);\n font-size: 0.88rem;\n font-weight: 700;\n}\n\n.orderly-page-layout__utility:empty {\n display: none;\n}\n\n.orderly-page-layout__utility > * {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));\n align-items: center;\n justify-items: center;\n gap: 6px clamp(18px, 5vw, 72px);\n width: min(var(--orderly-content-max-width), 100%);\n min-width: 0;\n margin: 0 auto;\n}\n\n.orderly-page-layout__utility > :empty {\n display: none;\n}\n\n.orderly-page-layout__utility > * > * {\n min-width: 0;\n text-align: center;\n}\n\n.orderly-page-layout__header {\n position: sticky;\n top: 0;\n z-index: 30;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 16px;\n padding: 14px 24px;\n border-bottom: var(--orderly-border);\n background: rgba(255, 255, 255, 0.96);\n box-shadow: none;\n backdrop-filter: blur(12px);\n}\n\n.orderly-page-layout__header-main,\n.orderly-page-layout__header-actions {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.orderly-page-layout__header-main {\n flex: 1 1 auto;\n gap: 10px;\n}\n\n.orderly-page-layout__header-actions {\n flex: 0 0 auto;\n gap: 10px;\n}\n\n.orderly-page-layout__logo {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n}\n\n.orderly-page-layout__logo-image {\n display: block;\n width: 36px;\n height: 36px;\n}\n\n.orderly-category-page__brand,\n.orderly-home-page__brand,\n.orderly-checkout-page__brand,\n.orderly-product-detail-page__brand {\n color: var(--orderly-color-text);\n font-size: 1.08rem;\n font-weight: 800;\n letter-spacing: 0;\n text-decoration: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n overflow-wrap: anywhere;\n}\n\n.orderly-page-layout__primary-nav {\n --orderly-navigation-sticky-top: var(--orderly-page-layout-sticky-top, 65px);\n border-bottom: 1px solid var(--orderly-color-border);\n background: var(--orderly-color-surface);\n}\n\n.orderly-page-layout__body {\n display: grid;\n grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);\n min-height: calc(100vh - 62px);\n max-width: 100%;\n overflow-x: clip;\n}\n\n.orderly-page-layout__left {\n --orderly-navigation-sticky-top: var(--orderly-page-layout-sticky-top, 65px);\n border-right: 1px solid var(--orderly-color-border);\n background: var(--orderly-color-surface);\n}\n\n.orderly-page-layout__right {\n --orderly-navigation-sticky-top: var(--orderly-page-layout-sticky-top, 65px);\n}\n\n.orderly-page-layout__content {\n min-width: 0;\n max-width: 100%;\n}\n\n.orderly-page-layout__left:empty,\n.orderly-page-layout__right:empty,\n.orderly-page-layout__footer:empty,\n.orderly-page-layout__primary-nav:empty,\n.orderly-page-layout__primary-nav[hidden] {\n display: none;\n}\n\n.orderly-page-layout__body:has(.orderly-page-layout__left:empty) {\n grid-template-columns: 1fr;\n}\n\n.orderly-page-layout__footer {\n border-top: 1px solid var(--orderly-color-border);\n background: var(--orderly-color-surface);\n}\n\n.orderly-navigation {\n padding: 18px 16px 22px;\n}\n\n[data-orderly-navigation-host][data-orderly-sticky=\"true\"] {\n position: sticky;\n top: var(--orderly-navigation-sticky-top, 0px);\n z-index: var(--orderly-navigation-sticky-z-index, 25);\n display: block;\n align-self: start;\n max-height: calc(100vh - var(--orderly-navigation-sticky-top, 0px));\n overflow: auto;\n overscroll-behavior: contain;\n}\n\n.orderly-navigation[data-orderly-sticky=\"true\"] {\n position: sticky;\n top: var(--orderly-navigation-sticky-top, 0px);\n z-index: var(--orderly-navigation-sticky-z-index, 25);\n}\n\n[data-orderly-navigation-host][data-orderly-sticky=\"false\"],\n.orderly-navigation[data-orderly-sticky=\"false\"] {\n position: static;\n max-height: none;\n overflow: visible;\n}\n\n.orderly-navigation__menu-button {\n display: none;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n min-height: 44px;\n padding: 0 12px;\n}\n\n.orderly-navigation__menu-icon {\n position: relative;\n width: 18px;\n height: 12px;\n border-top: 2px solid currentColor;\n border-bottom: 2px solid currentColor;\n}\n\n.orderly-navigation__menu-icon::before {\n position: absolute;\n top: 3px;\n left: 0;\n width: 18px;\n border-top: 2px solid currentColor;\n content: \"\";\n}\n\n.orderly-navigation__backdrop,\n.orderly-navigation__close {\n display: none;\n}\n\n.orderly-navigation__list {\n display: grid;\n gap: 0;\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\n.orderly-navigation__item {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: 4px;\n}\n\n.orderly-navigation__item .orderly-navigation__list {\n grid-column: 1 / -1;\n margin-left: 8px;\n padding-left: 12px;\n border-left: 1px solid var(--orderly-color-border);\n}\n\n.orderly-navigation__link {\n min-width: 0;\n padding: 10px 8px;\n border-radius: 0;\n color: var(--orderly-color-text);\n font-size: 0.95rem;\n font-weight: 800;\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n.orderly-navigation__item .orderly-navigation__item .orderly-navigation__link {\n color: var(--orderly-color-muted);\n font-size: 0.92rem;\n font-weight: 600;\n}\n\n.orderly-navigation__link:hover {\n background: transparent;\n color: var(--orderly-color-accent);\n}\n\n.orderly-navigation__link[aria-current=\"page\"] {\n background: transparent;\n color: var(--orderly-color-text);\n}\n\n.orderly-navigation .orderly-navigation__toggle {\n display: inline-grid;\n place-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--orderly-color-muted);\n box-shadow: none;\n}\n\n.orderly-navigation .orderly-navigation__toggle:hover {\n border: 0;\n background: var(--orderly-color-page);\n color: var(--orderly-color-accent);\n}\n\n.orderly-navigation__chevron {\n width: 18px;\n height: 18px;\n transition: transform 160ms ease;\n}\n\n.orderly-navigation__toggle[aria-expanded=\"true\"] .orderly-navigation__chevron {\n transform: rotate(90deg);\n}\n\n.orderly-search-box--icon,\n.orderly-basket-icon {\n display: inline-flex;\n align-items: center;\n}\n\n.orderly-search-box-shell.orderly-search-box--icon {\n display: contents;\n}\n\n.orderly-search-box__trigger,\n.orderly-search-box__close,\n.orderly-basket-icon,\n.orderly-basket-icon button {\n width: var(--orderly-icon-button-size);\n min-width: var(--orderly-icon-button-size);\n height: var(--orderly-icon-button-size);\n padding: 0;\n}\n\n.orderly-basket-icon {\n position: relative;\n display: inline-grid;\n place-items: center;\n}\n\n.orderly-search-box__trigger,\n.orderly-search-box__close,\n.orderly-basket-icon {\n display: inline-grid;\n place-items: center;\n border: var(--orderly-border-control);\n border-radius: var(--orderly-icon-button-radius);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n box-shadow: none;\n cursor: pointer;\n}\n\n.orderly-search-box__trigger:hover,\n.orderly-search-box__close:hover,\n.orderly-basket-icon:hover {\n border-color: var(--orderly-color-text);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n}\n\n.orderly-basket-icon__glyph {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.orderly-basket-icon__svg {\n display: block;\n width: 24px;\n height: 24px;\n}\n\n.orderly-basket-icon__count {\n position: absolute;\n top: -8px;\n right: -10px;\n display: inline-grid;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n place-items: center;\n border-radius: var(--orderly-radius-pill);\n background: var(--orderly-basket-icon-badge-background, var(--orderly-color-accent));\n color: var(--orderly-basket-icon-badge-color, var(--orderly-color-on-dark));\n font-size: 0.72rem;\n font-weight: 700;\n line-height: 1;\n}\n\n.orderly-search-box__trigger-icon,\n.orderly-search-box__close-icon {\n display: block;\n width: 22px;\n height: 22px;\n}\n\n.orderly-search-box__close-icon {\n width: 20px;\n height: 20px;\n}\n\n.orderly-search-box__close-label {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n}\n\n.orderly-page-layout .orderly-search-box__trigger,\n.orderly-page-layout .orderly-basket-icon {\n display: inline-grid;\n place-items: center;\n width: var(--orderly-icon-button-size);\n min-width: var(--orderly-icon-button-size);\n height: var(--orderly-icon-button-size);\n padding: 0;\n border: var(--orderly-border-control);\n border-radius: var(--orderly-icon-button-radius);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n box-shadow: none;\n --orderly-basket-icon-badge-background: var(--orderly-color-accent);\n}\n\n.orderly-page-layout .orderly-search-box__trigger:hover,\n.orderly-page-layout .orderly-basket-icon:hover {\n border-color: var(--orderly-color-text);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n}\n\n.orderly-search-box__overlay[hidden] {\n display: none !important;\n}\n\n.orderly-search-box__overlay {\n position: fixed;\n inset: 0;\n z-index: 1000;\n display: block;\n padding: clamp(var(--orderly-section-gap), 4vw, 48px);\n overflow: auto;\n background: rgba(244, 244, 244, 0.98);\n color: var(--orderly-color-text);\n}\n\n.orderly-search-box__overlay-shell {\n display: grid;\n gap: var(--orderly-panel-padding);\n width: min(var(--orderly-content-max-width), 100%);\n min-width: 0;\n margin: 0 auto;\n}\n\n.orderly-search-box__overlay-form {\n position: sticky;\n top: 0;\n z-index: 1;\n display: grid;\n grid-template-columns: minmax(0, 1fr) var(--orderly-icon-button-size);\n gap: 10px;\n align-items: center;\n padding: 0 0 18px;\n background: rgba(244, 244, 244, 0.98);\n}\n\n.orderly-search-box__overlay-label {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n}\n\n.orderly-search-box__overlay-input,\ninput.orderly-search-box,\n.orderly-sort-select,\n.orderly-product-grid__sort-select,\n.orderly-checkout input,\n.orderly-checkout select,\n.orderly-basket__quantity {\n width: 100%;\n min-height: var(--orderly-control-height);\n border: var(--orderly-border-control);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n}\n\n.orderly-search-box__overlay-input,\ninput.orderly-search-box,\n.orderly-sort-select,\n.orderly-product-grid__sort-select,\n.orderly-checkout input,\n.orderly-checkout select {\n padding: 0 var(--orderly-control-padding-x);\n}\n\n.orderly-search-box__overlay-input {\n min-height: var(--orderly-control-height);\n padding: 0 var(--orderly-control-padding-x);\n border: var(--orderly-border-control);\n border-radius: var(--orderly-radius-control);\n background: var(--orderly-color-surface);\n font-size: 1rem;\n font-weight: 500;\n line-height: 1.4;\n}\n\n.orderly-search-box__overlay-status,\n.orderly-search-box__empty {\n max-width: 720px;\n margin: 0;\n color: var(--orderly-color-muted);\n font-size: 1rem;\n}\n\n.orderly-search-box__overlay-status:empty {\n display: none;\n}\n\n.orderly-search-box__overlay-results {\n min-width: 0;\n}\n\n.orderly-search-box__overlay-results .orderly-product-grid {\n padding: 0;\n}\n\n.orderly-search-box__overlay-results .orderly-product-grid__items {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.orderly-search-box__overlay-results .orderly-product-grid__toolbar {\n display: none;\n}\n\n.orderly-home-page,\n.orderly-product-detail-page {\n display: grid;\n gap: 34px;\n max-width: 100%;\n min-width: 0;\n padding: 30px 0 48px;\n overflow: hidden;\n}\n\n.orderly-home-page__intro,\n.orderly-product-detail-page,\n.orderly-product-detail-page__product {\n width: min(var(--orderly-content-max-width), 100%);\n margin: 0 auto;\n padding-right: 24px;\n padding-left: 24px;\n}\n\n.orderly-home-page__eyebrow {\n margin: 0 0 6px;\n color: var(--orderly-color-accent);\n font-size: 0.82rem;\n font-weight: 800;\n text-transform: uppercase;\n}\n\n.orderly-home-page__intro h1 {\n max-width: 780px;\n margin: 0;\n font-size: clamp(2.3rem, 5vw, 5.4rem);\n line-height: 0.98;\n}\n\n.orderly-home-page__rails {\n display: grid;\n gap: 38px;\n min-width: 0;\n}\n\n.orderly-product-rail {\n --orderly-product-rail-padding: 2px 24px 16px;\n display: grid;\n gap: 14px;\n max-width: 100vw;\n overflow: hidden;\n}\n\n.orderly-product-rail__header {\n display: flex;\n align-items: end;\n justify-content: space-between;\n gap: 18px;\n width: min(var(--orderly-content-max-width), 100%);\n margin: 0 auto;\n padding: 0 24px;\n}\n\n.orderly-product-rail__title {\n margin: 0;\n font-size: clamp(1.3rem, 2.5vw, 2.05rem);\n line-height: 1.05;\n}\n\n.orderly-product-rail__cta {\n color: var(--orderly-color-text);\n font-size: 0.92rem;\n font-weight: 800;\n text-decoration: none;\n}\n\n.orderly-product-rail__cta:hover {\n color: var(--orderly-color-accent);\n}\n\n.orderly-product-rail__grid-slot,\n.orderly-product-rail__grid,\n.orderly-product-rail__grid-layout {\n min-width: 0;\n}\n\n.orderly-product-rail__grid-layout {\n display: grid;\n gap: 10px;\n}\n\n.orderly-product-rail__items {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: var(--orderly-product-rail-item-width, minmax(210px, 240px));\n gap: var(--orderly-product-rail-gap, 16px);\n align-items: stretch;\n width: min(var(--orderly-content-max-width), 100%);\n margin: 0 auto;\n overflow-x: auto;\n overscroll-behavior-x: contain;\n padding: var(--orderly-product-rail-padding, 2px 24px 16px);\n scroll-padding-inline: 24px;\n scroll-snap-type: x proximity;\n scrollbar-width: thin;\n}\n\n.orderly-product-rail__items > * {\n scroll-snap-align: start;\n}\n\n.orderly-product-rail__status,\n.orderly-product-rail__empty {\n width: min(var(--orderly-content-max-width), 100%);\n margin: 0 auto;\n padding: 0 24px;\n}\n\n.orderly-checkout__error,\n.orderly-basket__line-error {\n color: var(--orderly-color-danger);\n}\n\n.orderly-product-rail__status:not(:empty),\n.orderly-product-grid__status:not(:empty) {\n color: var(--orderly-color-muted);\n font-size: 0.92rem;\n}\n\n.orderly-product-rail__status:not(:empty) {\n width: min(var(--orderly-content-max-width), calc(100% - 48px));\n padding: var(--orderly-card-padding);\n border: var(--orderly-border);\n background: var(--orderly-color-surface);\n}\n\n.orderly-product-rail__empty,\n.orderly-product-grid__context,\n.orderly-product-tile__brand,\n.orderly-product-tile__description,\n.orderly-basket__delivery-note,\n.orderly-basket__checkout-disabled,\n.orderly-shop-footer__about,\n.orderly-shop-footer__address,\n.orderly-shop-footer__list,\n.orderly-shop-footer__hours {\n color: var(--orderly-color-muted);\n}\n\n.orderly-collection-page__hero {\n position: relative;\n display: grid;\n height: clamp(210px, 24vw, 320px);\n min-height: 0;\n overflow: hidden;\n background: var(--orderly-color-text);\n color: var(--orderly-color-on-dark);\n}\n\n.orderly-collection-page__hero-image {\n grid-area: 1 / 1;\n width: 100%;\n height: 100%;\n min-height: 0;\n object-fit: cover;\n opacity: 0.5;\n}\n\n.orderly-collection-page__intro {\n grid-area: 1 / 1;\n align-self: center;\n max-width: 820px;\n padding: 42px clamp(24px, 6vw, 72px);\n}\n\n.orderly-collection-page__title {\n margin: 0;\n font-size: clamp(2.2rem, 5vw, 4.5rem);\n line-height: 1.08;\n}\n\n.orderly-collection-page__description {\n max-width: 620px;\n margin: 12px 0 0;\n font-size: 1.05rem;\n}\n\n.orderly-collection-page__cta {\n display: inline-flex;\n align-items: center;\n min-height: var(--orderly-control-height);\n margin-top: 22px;\n padding: 0 18px;\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n font-weight: 800;\n text-decoration: none;\n}\n\n.orderly-collection-page__cta[hidden] {\n display: none !important;\n}\n\n.orderly-product-grid {\n padding: var(--orderly-panel-padding);\n}\n\n.orderly-product-grid__toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 16px;\n}\n\n.orderly-product-grid__sort {\n display: grid;\n gap: 6px;\n width: min(100%, 220px);\n}\n\n.orderly-product-grid__sort-label {\n color: var(--orderly-color-muted);\n font-size: 0.78rem;\n font-weight: 700;\n text-transform: uppercase;\n}\n\n.orderly-product-grid__status {\n min-height: 0;\n}\n\n.orderly-product-grid__status:not(:empty) {\n margin-bottom: 16px;\n padding: var(--orderly-card-padding);\n border: var(--orderly-border);\n background: var(--orderly-color-surface);\n}\n\n.orderly-product-grid__items {\n display: grid;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n gap: 1.05rem;\n align-items: stretch;\n}\n\n.orderly-product-grid__item,\n.orderly-category-page__product-card {\n display: block;\n height: 100%;\n min-width: 0;\n}\n\n.orderly-category-page__product-card > [data-orderly-render-root] {\n height: 100%;\n min-width: 0;\n}\n\n.orderly-product-grid__loading-item,\n.orderly-product-tile {\n overflow: hidden;\n border: var(--orderly-border-card);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n box-shadow: none;\n}\n\n.orderly-product-grid__loading-item.orderly-product-tile {\n display: grid;\n grid-template-rows: auto auto minmax(0, 1fr);\n height: 100%;\n min-height: 360px;\n}\n\n.orderly-product-grid__loading-heading,\n.orderly-product-grid__loading-body {\n display: grid;\n}\n\n.orderly-product-grid__loading-heading {\n gap: 8px;\n padding: 15px 15px 0;\n}\n\n.orderly-product-grid__loading-body {\n gap: 10px;\n align-content: end;\n padding: 0 15px 15px;\n}\n\n.orderly-product-grid__loading-title,\n.orderly-product-grid__loading-subtitle,\n.orderly-product-grid__loading-price,\n.orderly-product-grid__loading-button,\n.orderly-product-grid__loading-image {\n display: block;\n}\n\n.orderly-product-grid__loading-title {\n width: 76%;\n height: 18px;\n border-radius: 6px;\n}\n\n.orderly-product-grid__loading-subtitle {\n width: 42%;\n height: 12px;\n border-radius: 6px;\n}\n\n.orderly-product-grid__loading-image {\n width: 100%;\n aspect-ratio: 1 / 1;\n}\n\n.orderly-product-grid__loading-price {\n width: 54%;\n height: 18px;\n border-radius: 6px;\n}\n\n.orderly-product-grid__loading-button {\n justify-self: end;\n width: 40px;\n height: 40px;\n border-radius: var(--orderly-radius-control);\n}\n\n.orderly-product-tile {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 100%;\n min-width: 0;\n transition: border-color 140ms ease;\n}\n\n.orderly-product-tile,\norderly-product-tile[data-orderly-clickable] {\n cursor: pointer;\n}\n\n.orderly-product-tile:hover {\n border-color: var(--orderly-color-border-strong);\n}\n\norderly-product-tile[data-orderly-clickable]:focus-visible {\n outline: var(--orderly-focus-outline);\n outline-offset: 3px;\n}\n\n.orderly-product-tile__image,\n.orderly-product-page__image,\n.orderly-product-page__thumbnail-image,\n.orderly-basket__line-image {\n display: block;\n width: 100%;\n min-width: 0;\n aspect-ratio: 1 / 1;\n overflow: hidden;\n background: var(--orderly-color-surface);\n}\n\n.orderly-product-tile__image {\n background: var(--orderly-color-surface);\n}\n\n.orderly-stored-image__frame {\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n background: var(--orderly-color-surface);\n}\n\n.orderly-stored-image__frame[data-orderly-empty-image],\n.orderly-stored-image__frame[data-orderly-image-error] {\n background:\n linear-gradient(135deg, transparent 0 48%, #eeeeee 48% 52%, transparent 52%),\n var(--orderly-color-surface);\n}\n\n.orderly-stored-image__img {\n display: block;\n max-width: none;\n max-height: none;\n}\n\n.orderly-product-tile__body {\n display: flex;\n flex-direction: column;\n gap: 0.4rem;\n flex: 1;\n height: 100%;\n min-width: 0;\n padding: 0.75rem;\n}\n\n.orderly-product-tile__title {\n margin: 0;\n color: var(--orderly-color-text);\n font-size: 0.95rem;\n font-weight: 400;\n line-height: 1.32;\n overflow-wrap: anywhere;\n}\n\n.orderly-product-tile__brand,\n.orderly-product-tile__price,\n.orderly-product-tile__description {\n margin: 0;\n}\n\n.orderly-product-tile__price,\n.orderly-product-page__price {\n color: var(--orderly-color-text-soft);\n font-weight: 700;\n}\n\n.orderly-credit {\n display: inline-flex;\n align-items: baseline;\n gap: 0.25em;\n white-space: nowrap;\n}\n\n.orderly-credit__prefix,\n.orderly-credit__amount {\n display: inline;\n}\n\n.orderly-product-tile__brand {\n color: var(--orderly-color-muted);\n font-size: 0.86rem;\n}\n\n.orderly-product-tile__footer {\n position: relative;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 0.65rem;\n align-items: center;\n min-height: 40px;\n margin-top: auto;\n padding-top: 0.5rem;\n}\n\n.orderly-product-tile__price {\n font-size: 1.2rem;\n text-align: left;\n}\n\n.orderly-product-tile__offer {\n min-width: 0;\n}\n\n.orderly-product-tile__add {\n display: inline-grid;\n place-items: center;\n width: var(--orderly-product-action-width);\n min-width: var(--orderly-product-action-width);\n height: var(--orderly-product-action-height);\n min-height: var(--orderly-product-action-height);\n padding: 0;\n border: 0;\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-strong);\n color: var(--orderly-color-on-dark);\n line-height: 1;\n transition: opacity 140ms ease, transform 140ms ease, background-color 140ms ease, color 140ms ease, border-color 140ms ease;\n}\n\n.orderly-product-tile__add:hover,\n.orderly-product-tile__add:focus-visible {\n border-color: var(--orderly-color-strong);\n background: var(--orderly-color-strong);\n color: var(--orderly-color-on-dark);\n box-shadow: inset 0 -3px 0 var(--orderly-color-accent);\n}\n\n.orderly-product-tile__add[data-orderly-basket-action=\"remove\"] {\n border: 1px solid var(--orderly-color-strong);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n opacity: 1;\n pointer-events: auto;\n}\n\n.orderly-product-tile__add-icon {\n display: inline-grid;\n place-items: center;\n line-height: 0;\n}\n\n.orderly-product-tile__add-svg,\n.orderly-product-tile__remove-svg {\n display: block;\n width: 20px;\n height: 20px;\n}\n\n.orderly-category-page__empty-state,\n.orderly-product-grid__message,\n.orderly-basket__empty-state {\n margin: 0;\n padding: var(--orderly-panel-padding);\n border: 1px dashed var(--orderly-color-control-muted-border);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n}\n\n.orderly-category-page__basket-panel {\n position: fixed;\n inset: 0 0 0 auto;\n z-index: 60;\n width: min(460px, 100vw);\n max-width: 100vw;\n padding: 20px;\n overflow: auto;\n border-left: var(--orderly-border);\n background: var(--orderly-color-surface);\n box-shadow: -18px 0 40px rgba(20, 20, 20, 0.18);\n}\n\n.orderly-category-page__basket-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n.orderly-category-page__product-dialog {\n width: min(1120px, calc(100vw - 32px));\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 32px);\n overflow: auto;\n border: 0;\n border-radius: var(--orderly-radius);\n padding: 0;\n}\n\n.orderly-category-page__product-dialog::backdrop {\n background: rgba(20, 20, 20, 0.55);\n}\n\n.orderly-category-page__product-dialog-actions {\n position: sticky;\n top: 0;\n z-index: 2;\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 14px 14px 0;\n pointer-events: none;\n}\n\n.orderly-category-page__product-dialog-expand,\n.orderly-category-page__product-dialog-close {\n pointer-events: auto;\n}\n\n.orderly-category-page__product-dialog-expand {\n display: inline-grid;\n place-items: center;\n width: 38px;\n height: 38px;\n min-width: 38px;\n min-height: 38px;\n padding: 0;\n border: 1px solid var(--orderly-color-strong);\n border-radius: 3px;\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n text-decoration: none;\n box-shadow: 0 2px 10px rgba(17, 17, 17, 0.14);\n}\n\n.orderly-category-page__product-dialog-expand:hover,\n.orderly-category-page__product-dialog-expand:focus-visible {\n border-color: var(--orderly-color-strong);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n box-shadow: inset 0 -3px 0 var(--orderly-color-accent);\n}\n\n.orderly-category-page__product-dialog-close {\n display: inline-grid;\n place-items: center;\n width: 38px;\n min-width: 38px;\n height: 38px;\n min-height: 38px;\n padding: 0;\n border: 1px solid var(--orderly-color-strong);\n border-radius: 3px;\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n box-shadow: 0 2px 10px rgba(17, 17, 17, 0.14);\n}\n\n.orderly-category-page__product-dialog-close:hover,\n.orderly-category-page__product-dialog-close:focus-visible {\n border-color: var(--orderly-color-strong);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n box-shadow: inset 0 -3px 0 var(--orderly-color-accent);\n}\n\n.orderly-product-page {\n display: grid;\n grid-template-columns: minmax(0, 1.1fr) minmax(320px, 0.9fr);\n gap: 2rem;\n align-items: start;\n clear: both;\n min-width: 0;\n max-width: 100%;\n padding: 1.25rem;\n border: var(--orderly-border);\n background: var(--orderly-color-surface);\n}\n\n.orderly-product-page__media {\n display: grid;\n gap: 0.85rem;\n align-content: start;\n justify-self: stretch;\n width: 100%;\n min-width: 0;\n}\n\n.orderly-product-page__image-button {\n display: block;\n width: 100%;\n min-width: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n cursor: zoom-in;\n}\n\n.orderly-product-page__image-button:hover,\n.orderly-product-page__image-button:focus-visible {\n border: 0;\n background: transparent;\n color: inherit;\n box-shadow: none;\n outline: var(--orderly-focus-outline);\n outline-offset: 3px;\n}\n\n.orderly-product-page__image-button:disabled {\n cursor: default;\n}\n\n.orderly-product-page__image {\n border: 1px solid var(--orderly-color-image-border);\n border-radius: 0;\n}\n\n.orderly-product-page__image-overlay[hidden] {\n display: none !important;\n}\n\n.orderly-product-page__image-overlay {\n position: fixed;\n inset: 0;\n z-index: 1300;\n display: grid;\n grid-template-rows: auto minmax(0, 1fr);\n gap: 18px;\n padding: clamp(16px, 3vw, 36px);\n background: rgba(17, 17, 17, 0.92);\n}\n\n.orderly-product-page__image-overlay-close {\n justify-self: end;\n min-height: var(--orderly-control-height);\n padding: 0 16px;\n border: 1px solid rgba(255, 255, 255, 0.72);\n border-radius: 3px;\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n font-weight: 800;\n}\n\n.orderly-product-page__image-overlay-close:hover,\n.orderly-product-page__image-overlay-close:focus-visible {\n border-color: var(--orderly-color-on-dark);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-strong);\n box-shadow: inset 0 -3px 0 var(--orderly-color-accent);\n}\n\n.orderly-product-page__image-overlay-frame {\n display: grid;\n place-items: center;\n min-width: 0;\n min-height: 0;\n}\n\n.orderly-product-page__image-overlay-image {\n display: block;\n width: min(100%, 1400px);\n height: 100%;\n max-height: calc(100vh - 112px);\n min-width: 0;\n min-height: 0;\n background: var(--orderly-color-surface);\n}\n\n.orderly-product-page__thumbnails {\n display: flex;\n gap: 0.55rem;\n min-width: 0;\n overflow-x: auto;\n padding-bottom: 2px;\n scrollbar-width: thin;\n}\n\n.orderly-product-page__thumbnail {\n flex: 0 0 clamp(54px, 7vw, 76px);\n width: clamp(54px, 7vw, 76px);\n min-width: 0;\n padding: 0;\n border: 1px solid var(--orderly-color-image-border);\n border-radius: 0;\n background: var(--orderly-color-surface);\n}\n\n.orderly-product-page__thumbnail:hover,\n.orderly-product-page__thumbnail[data-orderly-selected=\"true\"],\n.orderly-product-page__thumbnail[aria-pressed=\"true\"] {\n border-color: var(--orderly-color-strong);\n background: var(--orderly-color-surface);\n box-shadow: inset 0 0 0 1px var(--orderly-color-strong);\n}\n\n.orderly-product-page__thumbnail-image {\n border-radius: 0;\n}\n\n.orderly-product-page__details {\n display: grid;\n gap: 1rem;\n align-content: start;\n min-width: 0;\n}\n\n.orderly-product-page__brand,\n.orderly-product-page__description {\n margin: 0;\n}\n\n.orderly-product-page__brand {\n color: var(--orderly-color-muted);\n font-size: 0.9rem;\n}\n\n.orderly-product-page__title {\n margin: 0;\n font-size: 2.25rem;\n line-height: 1.06;\n overflow-wrap: anywhere;\n}\n\n.orderly-product-page__price {\n margin: 0;\n font-size: 1.9rem;\n font-weight: 600;\n letter-spacing: -0.02em;\n}\n\n.orderly-product-page__description {\n color: var(--orderly-color-text);\n font-size: 0.95rem;\n line-height: 1.55;\n}\n\n.orderly-product-page__attributes {\n display: grid;\n grid-template-columns: 150px minmax(0, 1fr);\n margin: 0;\n border-top: var(--orderly-border-subtle);\n border-bottom: var(--orderly-border-subtle);\n}\n\n.orderly-product-page__attributes dt,\n.orderly-product-page__attributes dd {\n margin: 0;\n padding: 0.8rem 0;\n border-top: 1px solid #f1f1f1;\n}\n\n.orderly-product-page__attributes dt:first-of-type,\n.orderly-product-page__attributes dt:first-of-type + dd {\n border-top: 0;\n}\n\n.orderly-product-page__attributes dt {\n color: #6a6a6a;\n}\n\n.orderly-product-page__attributes dd {\n color: var(--orderly-color-strong);\n}\n\n.orderly-product-page__add {\n width: 100%;\n min-height: 52px;\n margin-top: 8px;\n border: 0;\n border-radius: 3px;\n background: var(--orderly-color-strong);\n color: var(--orderly-color-on-dark);\n font-size: 0.94rem;\n font-weight: 700;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.orderly-product-page__add:hover,\n.orderly-product-page__add:focus-visible {\n border-color: var(--orderly-color-strong);\n background: var(--orderly-color-strong);\n color: var(--orderly-color-on-dark);\n box-shadow: inset 0 -3px 0 var(--orderly-color-accent);\n}\n\n.orderly-basket__lines {\n display: grid;\n gap: var(--orderly-item-gap);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.orderly-basket [hidden],\n.orderly-checkout [hidden] {\n display: none !important;\n}\n\n.orderly-basket__empty-state {\n display: grid;\n gap: var(--orderly-item-gap);\n background: #f6f8f9;\n}\n\n.orderly-basket__empty-text {\n margin: 0;\n color: var(--orderly-color-text);\n font-weight: 800;\n}\n\n.orderly-basket__continue {\n color: var(--orderly-color-accent);\n font-weight: 800;\n}\n\n.orderly-basket__line {\n display: grid;\n grid-template-columns: 84px minmax(0, 1fr) auto auto;\n gap: var(--orderly-item-gap);\n align-items: center;\n padding: 10px;\n border: var(--orderly-border-subtle);\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-surface);\n}\n\n.orderly-basket__line-image {\n width: 84px;\n height: 84px;\n border-radius: var(--orderly-radius);\n}\n\n.orderly-basket__line-content {\n display: grid;\n gap: 3px;\n min-width: 0;\n}\n\n.orderly-basket__line-title {\n color: var(--orderly-color-text);\n font-weight: 700;\n line-height: 1.25;\n overflow-wrap: anywhere;\n}\n\n.orderly-basket__line-sku {\n color: var(--orderly-color-muted);\n font-size: 0.82rem;\n}\n\n.orderly-basket__line-sku:empty {\n display: none;\n}\n\n.orderly-basket__line-price,\n.orderly-basket__summary-amount,\n.orderly-basket__summary-total-amount {\n color: var(--orderly-color-text);\n font-weight: 800;\n white-space: nowrap;\n}\n\n.orderly-basket__quantity-text {\n color: var(--orderly-color-muted);\n font-size: 0.86rem;\n white-space: nowrap;\n}\n\n.orderly-basket__remove {\n display: inline-grid;\n width: 36px;\n height: 36px;\n padding: 0;\n place-items: center;\n border: 1px solid var(--orderly-color-border-strong);\n border-radius: var(--orderly-radius-pill);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n}\n\n.orderly-basket__remove-icon {\n display: block;\n}\n\n.orderly-basket__remove-label,\n.orderly-checkout-page__visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.orderly-basket__summary {\n display: grid;\n gap: 12px;\n margin-top: 18px;\n padding-top: 16px;\n border-top: var(--orderly-border-subtle);\n}\n\n.orderly-basket__summary-row,\n.orderly-basket__summary-total {\n display: flex;\n justify-content: space-between;\n gap: 16px;\n}\n\n.orderly-basket__delivery-note {\n margin: -4px 0 0;\n font-size: 0.82rem;\n}\n\n.orderly-basket__summary-total {\n align-items: baseline;\n padding-top: 12px;\n border-top: var(--orderly-border-subtle);\n font-size: 1.15rem;\n font-weight: 800;\n}\n\n.orderly-basket__summary-total-note {\n display: block;\n color: var(--orderly-color-muted);\n font-size: 0.78rem;\n font-weight: 500;\n}\n\n.orderly-basket__count {\n display: none;\n}\n\n.orderly-basket__checkout {\n display: grid;\n min-height: var(--orderly-control-height);\n margin-top: 16px;\n place-items: center;\n border-radius: var(--orderly-radius);\n background: var(--orderly-color-text);\n color: var(--orderly-color-on-dark);\n font-weight: 700;\n text-decoration: none;\n}\n\n.orderly-basket a.orderly-basket__checkout,\n.orderly-basket a.orderly-basket__checkout:visited {\n color: var(--orderly-color-on-dark);\n}\n\n.orderly-basket__checkout:hover,\n.orderly-basket__checkout:focus-visible {\n background: var(--orderly-color-accent);\n color: var(--orderly-color-on-dark);\n}\n\n.orderly-basket__checkout[data-orderly-disabled] {\n background: var(--orderly-color-control-muted-border);\n color: var(--orderly-color-on-dark);\n cursor: not-allowed;\n}\n\n.orderly-basket__clear {\n margin-top: 10px;\n border-color: var(--orderly-color-control-muted-border);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n}\n\n.orderly-checkout {\n display: grid;\n gap: 18px;\n margin: 0;\n}\n\n.orderly-checkout fieldset {\n padding: 0;\n border: 0;\n}\n\n.orderly-checkout__section {\n display: grid;\n gap: 12px;\n padding-top: 18px;\n border-top: var(--orderly-border-subtle);\n}\n\n.orderly-checkout__section:first-child {\n padding-top: 0;\n border-top: 0;\n}\n\n.orderly-checkout__section-title {\n margin: 0;\n font-size: 1.45rem;\n line-height: 1.15;\n}\n\n.orderly-checkout__field-grid,\n.orderly-checkout__delivery-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px;\n}\n\n.orderly-checkout__field {\n display: grid;\n gap: 5px;\n min-width: 0;\n}\n\n.orderly-checkout__field--full {\n grid-column: 1 / -1;\n}\n\n.orderly-checkout__field span {\n color: #2c2b2a;\n font-size: 0.78rem;\n font-weight: 800;\n text-transform: uppercase;\n}\n\n.orderly-checkout__delivery-prompt {\n margin: 0;\n color: var(--orderly-color-muted);\n}\n\n.orderly-checkout__option-grid,\n.orderly-checkout__option-list {\n display: grid;\n gap: 10px;\n}\n\n.orderly-checkout__option-grid--delivery {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.orderly-checkout__option {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr);\n gap: 10px;\n align-items: start;\n min-width: 0;\n border: var(--orderly-border);\n border-radius: 0;\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n cursor: pointer;\n}\n\n.orderly-checkout__option:hover,\n.orderly-checkout__option.is-selected {\n border-color: var(--orderly-color-accent);\n background: var(--orderly-color-selected-soft);\n}\n\n.orderly-checkout__option--delivery {\n min-height: 84px;\n padding: 13px 14px;\n}\n\n.orderly-checkout__option--service-point {\n min-height: 65px;\n padding: 13px 14px;\n}\n\n.orderly-checkout .orderly-checkout__option-input {\n width: 18px;\n min-height: 18px;\n margin: 2px 0 0;\n padding: 0;\n border: 2px solid var(--orderly-color-control-muted-border);\n border-radius: 0;\n appearance: none;\n background: var(--orderly-color-surface);\n}\n\n.orderly-checkout .orderly-checkout__option-input:checked {\n border: 4px solid var(--orderly-color-accent);\n}\n\n.orderly-checkout__option-copy {\n display: grid;\n gap: 4px;\n min-width: 0;\n}\n\n.orderly-checkout__option-title {\n font-weight: 800;\n line-height: 1.25;\n}\n\n.orderly-checkout__option-meta {\n color: var(--orderly-color-muted);\n font-size: 0.9rem;\n line-height: 1.35;\n}\n\n.orderly-checkout__option-meta .orderly-credit {\n display: inline-flex;\n}\n\n.orderly-checkout__subsection-title {\n margin: 18px 0 0;\n font-size: 1.3rem;\n line-height: 1.15;\n}\n\n.orderly-checkout__service-point-help {\n margin: -4px 0 10px;\n color: var(--orderly-color-muted);\n}\n\n.orderly-checkout input:focus,\n.orderly-checkout select:focus,\n.orderly-search-box__overlay-input:focus,\n.orderly-product-grid__sort-select:focus {\n border-color: var(--orderly-color-accent);\n box-shadow: var(--orderly-focus-ring);\n outline: 0;\n}\n\n.orderly-checkout__terms {\n display: flex;\n align-items: center;\n gap: 9px;\n color: #4f4f4f;\n font-size: 0.9rem;\n}\n\n.orderly-checkout__terms input {\n width: 18px;\n min-height: 18px;\n accent-color: var(--orderly-color-text);\n}\n\n.orderly-checkout__submit {\n width: 100%;\n min-height: 52px;\n border: 0;\n font-weight: 800;\n text-transform: uppercase;\n}\n\n.orderly-checkout-page {\n display: grid;\n gap: var(--orderly-section-gap);\n padding: 22px 28px 32px;\n}\n\n.orderly-checkout-page__header,\n.orderly-checkout-page__card {\n border: var(--orderly-border);\n background: var(--orderly-color-surface);\n box-shadow: var(--orderly-shadow-md);\n}\n\n.orderly-checkout-page__header {\n width: min(1080px, 100%);\n max-width: 1080px;\n margin: 0 auto;\n padding: var(--orderly-panel-padding);\n text-align: center;\n}\n\n.orderly-checkout-page__header h1 {\n margin: 0;\n font-size: clamp(2rem, 2.3vw, 2.6rem);\n}\n\n.orderly-checkout-page__header p:last-child {\n margin: 8px 0 0;\n color: var(--orderly-color-muted);\n}\n\n.orderly-checkout-page__grid {\n display: grid;\n grid-template-columns: minmax(0, 1.25fr) minmax(320px, 0.75fr);\n gap: var(--orderly-section-gap);\n width: min(1080px, 100%);\n margin: 0 auto;\n align-items: start;\n}\n\n.orderly-checkout-page__card {\n min-width: 0;\n padding: var(--orderly-section-gap);\n}\n\n.orderly-checkout-page__card--summary {\n position: sticky;\n top: 128px;\n}\n\n.orderly-content-page {\n display: grid;\n gap: var(--orderly-section-gap);\n padding: 22px 28px 32px;\n}\n\n.orderly-content-page__header,\n.orderly-content-page__card {\n width: min(1080px, 100%);\n margin: 0 auto;\n border: var(--orderly-border);\n background: var(--orderly-color-surface);\n box-shadow: var(--orderly-shadow-md);\n}\n\n.orderly-content-page__header {\n padding: var(--orderly-panel-padding);\n text-align: center;\n}\n\n.orderly-content-page__header h1 {\n margin: 0;\n font-size: clamp(2rem, 2.3vw, 2.6rem);\n}\n\n.orderly-content-page__header p:last-child {\n margin: 8px 0 0;\n color: var(--orderly-color-muted);\n}\n\n.orderly-content-page__card {\n min-width: 0;\n padding: var(--orderly-panel-padding);\n}\n\n.orderly-content-page__body {\n color: var(--orderly-color-text);\n line-height: 1.65;\n}\n\n.orderly-content-page__body h2 {\n margin: 28px 0 8px;\n font-size: 1.25rem;\n line-height: 1.2;\n}\n\n.orderly-content-page__body h2:first-child {\n margin-top: 0;\n}\n\n.orderly-content-page__body p {\n margin: 0 0 14px;\n}\n\n.orderly-shop-footer {\n display: grid;\n grid-template-columns: minmax(240px, 1.4fr) repeat(4, minmax(150px, 1fr));\n gap: 28px;\n max-width: var(--orderly-content-max-width);\n margin: 0 auto;\n padding: 34px 24px;\n}\n\n.orderly-shop-footer__brand,\n.orderly-shop-footer__contact-item,\n.orderly-shop-footer__hours-row {\n display: grid;\n gap: 8px;\n}\n\n.orderly-shop-footer__logo {\n display: inline-flex;\n width: max-content;\n}\n\n.orderly-shop-footer__logo-image {\n width: var(--orderly-icon-button-size);\n height: var(--orderly-icon-button-size);\n}\n\n.orderly-shop-footer__heading {\n margin: 0 0 10px;\n color: var(--orderly-color-text);\n font-size: 0.9rem;\n text-transform: uppercase;\n}\n\n.orderly-shop-footer__address,\n.orderly-shop-footer__list,\n.orderly-shop-footer__hours {\n display: grid;\n gap: 8px;\n margin: 0;\n padding: 0;\n font-style: normal;\n list-style: none;\n}\n\n.orderly-shop-footer a {\n color: var(--orderly-color-accent);\n text-decoration: none;\n}\n\n.orderly-shop-footer a:hover {\n text-decoration: underline;\n}\n\n@media (min-width: 700px) {\n .orderly-search-box__overlay-results .orderly-product-grid__items {\n grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n }\n}\n\n@media (max-width: 1024px) {\n .orderly-product-grid__items {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .orderly-product-page {\n grid-template-columns: 1fr;\n }\n}\n\n@media (max-width: 640px) {\n .orderly-product-grid__items {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 0.4rem;\n }\n}\n\n@media (max-width: 860px) {\n .orderly-page-layout__utility {\n padding-right: 12px;\n padding-left: 12px;\n font-size: 0.78rem;\n }\n\n .orderly-page-layout__utility > * {\n gap: 4px 8px;\n }\n\n .orderly-page-layout__utility > * > * {\n line-height: 1.2;\n overflow-wrap: anywhere;\n }\n\n .orderly-page-layout__header {\n padding: 12px 16px;\n }\n\n .orderly-page-layout__body {\n grid-template-columns: 1fr;\n }\n\n .orderly-ssr-product-detail {\n grid-template-columns: 1fr;\n }\n\n .orderly-page-layout__left {\n border-right: 0;\n border-bottom: 1px solid var(--orderly-color-border);\n }\n\n .orderly-navigation {\n padding: 12px 16px;\n }\n\n .orderly-navigation .orderly-navigation__menu-button {\n display: inline-flex;\n width: auto;\n min-width: 116px;\n border-color: var(--orderly-color-control-muted-border);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n }\n\n .orderly-navigation .orderly-navigation__menu-button:hover {\n border-color: var(--orderly-color-text);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n }\n\n .orderly-navigation__backdrop {\n position: fixed;\n inset: 0;\n z-index: 39;\n border: 0;\n border-radius: 0;\n background: rgba(20, 20, 20, 0.46);\n }\n\n .orderly-navigation__panel {\n display: none;\n position: fixed;\n inset: 0 auto 0 0;\n z-index: 40;\n width: min(360px, 88vw);\n max-height: none;\n margin-top: 0;\n padding: 60px 18px 24px;\n overflow: auto;\n background: var(--orderly-color-surface);\n box-shadow: 18px 0 40px rgba(20, 20, 20, 0.18);\n }\n\n .orderly-navigation[data-orderly-menu-open=\"true\"] .orderly-navigation__backdrop,\n .orderly-navigation[data-orderly-menu-open=\"true\"] .orderly-navigation__panel {\n display: block;\n }\n\n .orderly-navigation .orderly-navigation__close {\n position: absolute;\n top: 14px;\n right: 14px;\n display: inline-grid;\n place-items: center;\n width: 38px;\n height: 38px;\n padding: 0;\n border-color: var(--orderly-color-control-border);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n }\n\n .orderly-navigation .orderly-navigation__close:hover {\n border-color: var(--orderly-color-text);\n background: var(--orderly-color-surface);\n color: var(--orderly-color-text);\n }\n\n .orderly-product-grid__toolbar,\n .orderly-checkout-page__grid,\n .orderly-checkout__field-grid,\n .orderly-checkout__delivery-grid,\n .orderly-checkout__option-grid--delivery,\n .orderly-product-page {\n grid-template-columns: 1fr;\n }\n\n .orderly-product-grid__toolbar {\n display: grid;\n align-items: stretch;\n }\n\n .orderly-product-grid__sort {\n width: 100%;\n }\n\n .orderly-home-page {\n gap: 28px;\n padding: 24px 0 36px;\n }\n\n .orderly-home-page__intro,\n .orderly-product-rail__header,\n .orderly-product-rail__status,\n .orderly-product-rail__empty {\n padding-right: 18px;\n padding-left: 18px;\n }\n\n .orderly-product-rail {\n --orderly-product-rail-item-width: minmax(190px, 76vw);\n --orderly-product-rail-padding: 2px 18px 16px;\n }\n\n .orderly-product-tile__footer {\n justify-content: space-between;\n }\n\n .orderly-product-tile__price {\n text-align: left;\n }\n\n .orderly-product-tile__add {\n position: static;\n opacity: 1;\n pointer-events: auto;\n transform: none;\n }\n\n .orderly-product-page {\n padding: 0;\n }\n\n .orderly-product-page__details {\n padding: 0 1rem 1rem;\n }\n\n .orderly-product-page__title {\n font-size: 1.7rem;\n }\n\n .orderly-product-page__price {\n font-size: 1.55rem;\n }\n\n .orderly-product-page__attributes {\n grid-template-columns: 108px minmax(0, 1fr);\n }\n\n .orderly-product-page__add {\n position: static;\n }\n\n .orderly-search-box__overlay-form {\n grid-template-columns: minmax(0, 1fr) 42px;\n margin-top: 0;\n }\n\n .orderly-search-box__submit {\n grid-column: 1 / -1;\n grid-row: 2;\n }\n\n .orderly-checkout-page {\n padding: 18px;\n }\n\n .orderly-content-page {\n padding: 18px;\n }\n\n .orderly-content-page__card {\n padding: 18px;\n }\n\n .orderly-checkout-page__card--summary {\n position: static;\n }\n\n .orderly-basket__line {\n grid-template-columns: 72px minmax(0, 1fr) auto;\n }\n\n .orderly-basket__line-image {\n width: 72px;\n height: 72px;\n }\n\n .orderly-basket__line-price {\n grid-column: 2;\n }\n\n .orderly-basket__remove {\n grid-column: 3;\n grid-row: 1 / span 2;\n }\n\n .orderly-shop-footer {\n grid-template-columns: 1fr;\n padding: 28px 18px;\n }\n}\n\n";
7
+ declare function installOrderlyDefaultStyles(target?: Document | undefined): HTMLStyleElement | undefined;
8
+
9
+ export { ORDERLY_DEFAULT_CSS as O, ORDERLY_LAZY_LOAD_CSS as a, installOrderlyLazyLoadStyles as b, installOrderlyDefaultStyles as i };
@@ -0,0 +1,2 @@
1
+ export { i as installOrderlyDefaultStyles, b as installOrderlyLazyLoadStyles } from './define-IAQk8OmQ.js';
2
+ export { d as defineOrderlyWebComponents } from './registry-CPDecU3g.js';