@skyscanner/backpack-web 43.0.0 → 43.2.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.
@@ -1,5 +1,5 @@
1
1
  import component, { BADGE_TYPES, type Props } from './src/BpkBadge';
2
- import themeAttributes, { allBadgeThemeAttributes, badgeThemeAttributes, badgeNormalThemeAttributes, badgeWarningThemeAttributes, badgeSuccessThemeAttributes, badgeCriticalThemeAttributes, badgeInverseThemeAttributes, badgeOutlineThemeAttributes, badgeStrongThemeAttributes, badgeBrandThemeAttributes } from './src/themeAttributes';
2
+ import themeAttributes, { allBadgeThemeAttributes, badgeThemeAttributes } from './src/themeAttributes';
3
3
  export type BpkBadgeProps = Props;
4
4
  export default component;
5
- export { BADGE_TYPES, themeAttributes, allBadgeThemeAttributes, badgeThemeAttributes, badgeNormalThemeAttributes, badgeWarningThemeAttributes, badgeSuccessThemeAttributes, badgeCriticalThemeAttributes, badgeInverseThemeAttributes, badgeOutlineThemeAttributes, badgeStrongThemeAttributes, badgeBrandThemeAttributes, };
5
+ export { BADGE_TYPES, themeAttributes, allBadgeThemeAttributes, badgeThemeAttributes };
@@ -17,6 +17,6 @@
17
17
  */
18
18
 
19
19
  import component, { BADGE_TYPES } from "./src/BpkBadge";
20
- import themeAttributes, { allBadgeThemeAttributes, badgeThemeAttributes, badgeNormalThemeAttributes, badgeWarningThemeAttributes, badgeSuccessThemeAttributes, badgeCriticalThemeAttributes, badgeInverseThemeAttributes, badgeOutlineThemeAttributes, badgeStrongThemeAttributes, badgeBrandThemeAttributes } from "./src/themeAttributes";
20
+ import themeAttributes, { allBadgeThemeAttributes, badgeThemeAttributes } from "./src/themeAttributes";
21
21
  export default component;
22
- export { BADGE_TYPES, themeAttributes, allBadgeThemeAttributes, badgeThemeAttributes, badgeNormalThemeAttributes, badgeWarningThemeAttributes, badgeSuccessThemeAttributes, badgeCriticalThemeAttributes, badgeInverseThemeAttributes, badgeOutlineThemeAttributes, badgeStrongThemeAttributes, badgeBrandThemeAttributes };
22
+ export { BADGE_TYPES, themeAttributes, allBadgeThemeAttributes, badgeThemeAttributes };
@@ -8,6 +8,7 @@ export declare const BADGE_TYPES: {
8
8
  readonly outline: "outline";
9
9
  readonly strong: "strong";
10
10
  readonly brand: "brand";
11
+ readonly subtle: "subtle";
11
12
  };
12
13
  export type BadgeType = (typeof BADGE_TYPES)[keyof typeof BADGE_TYPES];
13
14
  export type Props = {
@@ -27,7 +27,8 @@ export const BADGE_TYPES = {
27
27
  inverse: 'inverse',
28
28
  outline: 'outline',
29
29
  strong: 'strong',
30
- brand: 'brand'
30
+ brand: 'brand',
31
+ subtle: 'subtle'
31
32
  };
32
33
  const getClassName = cssModules(STYLES);
33
34
  const badgeTypeClassNames = {
@@ -38,7 +39,8 @@ const badgeTypeClassNames = {
38
39
  [BADGE_TYPES.inverse]: getClassName('bpk-badge--inverse'),
39
40
  [BADGE_TYPES.outline]: getClassName('bpk-badge--outline'),
40
41
  [BADGE_TYPES.strong]: getClassName('bpk-badge--strong'),
41
- [BADGE_TYPES.brand]: getClassName('bpk-badge--brand')
42
+ [BADGE_TYPES.brand]: getClassName('bpk-badge--brand'),
43
+ [BADGE_TYPES.subtle]: getClassName('bpk-badge--subtle')
42
44
  };
43
45
  const BpkBadge = ({
44
46
  centered = false,
@@ -15,4 +15,4 @@
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
17
  */
18
- .bpk-badge{display:inline-flex;padding:.25rem .5rem;align-items:center;border-radius:var(--bpk-badge-border-radius, 0.25rem);margin:0;font-size:.75rem;line-height:1rem;font-weight:400;font-size:var(--bpk-badge-font-size, 0.75rem);font-weight:var(--bpk-badge-font-weight, 400);line-height:var(--bpk-badge-line-height, 1rem)}.bpk-badge--centered{vertical-align:text-bottom}.bpk-badge--docked-right{position:absolute;top:0;right:0;border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0}html[dir=rtl] .bpk-badge--docked-right{right:inherit;left:0;border-bottom-left-radius:0;border-bottom-right-radius:.25rem}.bpk-badge--docked-left{position:absolute;top:0;left:0;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0}html[dir=rtl] .bpk-badge--docked-left{right:0;left:inherit;border-bottom-left-radius:.25rem;border-bottom-right-radius:0}.bpk-badge--warning{background-color:var(--bpk-badge-warning-background-color, rgb(239, 243, 248));color:var(--bpk-badge-warning-text-color, rgb(22, 22, 22));fill:var(--bpk-badge-warning-icon-color, rgb(245, 93, 66))}.bpk-badge--success{background-color:var(--bpk-badge-success-background-color, rgb(239, 243, 248));color:var(--bpk-badge-success-text-color, rgb(22, 22, 22));fill:var(--bpk-badge-success-icon-color, rgb(12, 131, 138))}.bpk-badge--critical{background-color:var(--bpk-badge-critical-background-color, rgb(239, 243, 248));color:var(--bpk-badge-critical-text-color, rgb(22, 22, 22));fill:var(--bpk-badge-critical-icon-color, rgb(231, 8, 102))}.bpk-badge--normal{background-color:var(--bpk-badge-normal-background-color, rgb(239, 243, 248));color:var(--bpk-badge-normal-text-color, rgb(22, 22, 22));fill:var(--bpk-badge-normal-icon-color, rgb(22, 22, 22))}.bpk-badge--inverse{background-color:var(--bpk-badge-inverse-background-color, rgb(255, 255, 255));color:var(--bpk-badge-inverse-text-color, rgb(22, 22, 22));fill:var(--bpk-badge-inverse-icon-color, rgb(22, 22, 22))}.bpk-badge--outline{box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 1px var(--bpk-badge-outline-text-color, rgb(255, 255, 255));background-color:var(--bpk-badge-outline-background-color, transparent);color:var(--bpk-badge-outline-text-color, rgb(255, 255, 255));fill:var(--bpk-badge-outline-icon-color, rgb(255, 255, 255))}.bpk-badge--strong{background-color:var(--bpk-badge-strong-background-color, rgb(5, 32, 60));color:var(--bpk-badge-strong-text-color, rgb(255, 255, 255));fill:var(--bpk-badge-strong-icon-color, rgb(255, 255, 255))}.bpk-badge--brand{background-color:var(--bpk-badge-brand-background-color, rgb(0, 98, 227));color:var(--bpk-badge-brand-text-color, rgb(255, 255, 255));fill:var(--bpk-badge-brand-icon-color, rgb(255, 255, 255))}
18
+ .bpk-badge{display:inline-flex;margin:0;padding:var(--bpk-spacing-sm, 0.25rem) var(--bpk-private-badge-dimension-padding-horizontal-default, 0.5rem);align-items:center;border-radius:var(--bpk-radius-xs, 0.25rem);font-size:.75rem;font-weight:400;line-height:1rem}.bpk-badge--centered{vertical-align:text-bottom}.bpk-badge--docked-right{position:absolute;top:0;border-end-end-radius:0;border-start-end-radius:0;border-start-start-radius:0;inset-inline-end:0}.bpk-badge--docked-left{position:absolute;top:0;border-end-start-radius:0;border-start-end-radius:0;border-start-start-radius:0;inset-inline-start:0}.bpk-badge--warning{background-color:var(--bpk-private-badge-colour-bg-default, rgb(239, 243, 248));color:var(--bpk-text-primary, rgb(22, 22, 22));fill:var(--bpk-status-warning-spot, rgb(245, 93, 66))}.bpk-badge--success{background-color:var(--bpk-private-badge-colour-bg-default, rgb(239, 243, 248));color:var(--bpk-text-primary, rgb(22, 22, 22));fill:var(--bpk-status-success-spot, rgb(12, 131, 138))}.bpk-badge--critical{background-color:var(--bpk-private-badge-colour-bg-default, rgb(239, 243, 248));color:var(--bpk-text-primary, rgb(22, 22, 22));fill:var(--bpk-status-danger-spot, rgb(231, 8, 102))}.bpk-badge--normal{background-color:var(--bpk-private-badge-colour-bg-default, rgb(239, 243, 248));color:var(--bpk-text-primary, rgb(22, 22, 22));fill:var(--bpk-text-primary, rgb(22, 22, 22))}.bpk-badge--inverse{background-color:var(--bpk-private-badge-colour-bg-inverse, rgb(255, 255, 255));color:var(--bpk-text-primary, rgb(22, 22, 22));fill:var(--bpk-text-primary, rgb(22, 22, 22));padding-inline:var(--bpk-spacing-md, 0.5rem)}.bpk-badge--outline{background-color:var(--bpk-private-badge-colour-bg-outline, transparent);color:var(--bpk-text-on-dark, rgb(255, 255, 255));box-shadow:inset 0 0 0 1px #fff;box-shadow:inset 0 0 0 var(--bpk-border-1, 1px) var(--bpk-private-badge-colour-stroke-outline, rgb(255, 255, 255));fill:var(--bpk-text-on-dark, rgb(255, 255, 255));padding-inline:var(--bpk-spacing-md, 0.5rem)}.bpk-badge--strong{background-color:var(--bpk-core-primary, rgb(5, 32, 60));color:var(--bpk-text-on-dark, rgb(255, 255, 255));fill:var(--bpk-text-on-dark, rgb(255, 255, 255));padding-inline:var(--bpk-spacing-md, 0.5rem)}.bpk-badge--brand{background-color:var(--bpk-core-accent, rgb(0, 98, 227));color:var(--bpk-text-inverse, rgb(255, 255, 255));fill:var(--bpk-text-inverse, rgb(255, 255, 255));padding-inline:var(--bpk-spacing-md, 0.5rem)}.bpk-badge--subtle{background-color:var(--bpk-private-badge-colour-bg-subtle, rgb(239, 243, 248));color:var(--bpk-text-primary, rgb(22, 22, 22));fill:var(--bpk-text-primary, rgb(22, 22, 22));padding-inline:var(--bpk-private-badge-dimension-padding-horizontal-subtle, 0.25rem)}
@@ -1,17 +1,8 @@
1
1
  export declare const badgeThemeAttributes: string[];
2
- export declare const badgeNormalThemeAttributes: string[];
3
- export declare const badgeWarningThemeAttributes: string[];
4
- export declare const badgeSuccessThemeAttributes: string[];
5
- export declare const badgeCriticalThemeAttributes: string[];
6
- export declare const badgeInverseThemeAttributes: string[];
7
- export declare const badgeOutlineThemeAttributes: string[];
8
- export declare const badgeStrongThemeAttributes: string[];
9
- export declare const badgeBrandThemeAttributes: string[];
10
2
  /**
11
- * Combined array of all badge theme attributes across all variants and shared properties.
12
- * Requires all these attributes to be present in the BpkThemeProvider theme object or theming
13
- * will be silently ignored. Prefer per-variant arrays (e.g. badgeNormalThemeAttributes) for
14
- * targeted theming.
3
+ * Combined deduplicated array of all badge private theme attributes.
4
+ * Only exposes component-scoped (private) badge tokens global semantic vars
5
+ * (text, status, core colours) can be overridden at the theme level independently.
15
6
  */
16
7
  export declare const allBadgeThemeAttributes: string[];
17
8
  /**
@@ -16,23 +16,14 @@
16
16
  * limitations under the License.
17
17
  */
18
18
 
19
- export const badgeThemeAttributes = ['badgeFontSize', 'badgeFontWeight', 'badgeLineHeight', 'badgeBorderRadius'];
20
- export const badgeNormalThemeAttributes = ['badgeNormalBackgroundColor', 'badgeNormalTextColor', 'badgeNormalIconColor'];
21
- export const badgeWarningThemeAttributes = ['badgeWarningBackgroundColor', 'badgeWarningTextColor', 'badgeWarningIconColor'];
22
- export const badgeSuccessThemeAttributes = ['badgeSuccessBackgroundColor', 'badgeSuccessTextColor', 'badgeSuccessIconColor'];
23
- export const badgeCriticalThemeAttributes = ['badgeCriticalBackgroundColor', 'badgeCriticalTextColor', 'badgeCriticalIconColor'];
24
- export const badgeInverseThemeAttributes = ['badgeInverseBackgroundColor', 'badgeInverseTextColor', 'badgeInverseIconColor'];
25
- export const badgeOutlineThemeAttributes = ['badgeOutlineBackgroundColor', 'badgeOutlineTextColor', 'badgeOutlineIconColor'];
26
- export const badgeStrongThemeAttributes = ['badgeStrongBackgroundColor', 'badgeStrongTextColor', 'badgeStrongIconColor'];
27
- export const badgeBrandThemeAttributes = ['badgeBrandBackgroundColor', 'badgeBrandTextColor', 'badgeBrandIconColor'];
19
+ export const badgeThemeAttributes = [];
28
20
 
29
21
  /**
30
- * Combined array of all badge theme attributes across all variants and shared properties.
31
- * Requires all these attributes to be present in the BpkThemeProvider theme object or theming
32
- * will be silently ignored. Prefer per-variant arrays (e.g. badgeNormalThemeAttributes) for
33
- * targeted theming.
22
+ * Combined deduplicated array of all badge private theme attributes.
23
+ * Only exposes component-scoped (private) badge tokens global semantic vars
24
+ * (text, status, core colours) can be overridden at the theme level independently.
34
25
  */
35
- export const allBadgeThemeAttributes = [...badgeThemeAttributes, ...badgeNormalThemeAttributes, ...badgeWarningThemeAttributes, ...badgeSuccessThemeAttributes, ...badgeCriticalThemeAttributes, ...badgeInverseThemeAttributes, ...badgeOutlineThemeAttributes, ...badgeStrongThemeAttributes, ...badgeBrandThemeAttributes];
26
+ export const allBadgeThemeAttributes = ['privateBadgeColourBgDefault', 'privateBadgeDimensionPaddingHorizontalDefault', 'privateBadgeColourBgInverse', 'privateBadgeColourBgOutline', 'privateBadgeColourStrokeOutline', 'privateBadgeColourBgSubtle', 'privateBadgeDimensionPaddingHorizontalSubtle'];
36
27
 
37
28
  /**
38
29
  * @deprecated The keys in this array pre-date full badge theming support and map to CSS variables
@@ -245,6 +245,7 @@ class BpkDatepicker extends Component {
245
245
  isOpen: this.state.isOpen,
246
246
  label: title,
247
247
  closeButtonText: closeButtonText,
248
+ renderTarget: renderTarget,
248
249
  ...getDataComponentAttribute('Datepicker'),
249
250
  ...rest,
250
251
  children: /*#__PURE__*/_jsx(Calendar, {
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const CheckboxMinusIcon = props => /*#__PURE__*/_jsx("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ viewBox: "0 0 24 24",
6
+ "aria-hidden": "true",
7
+ width: "1.5rem",
8
+ height: "1.5rem",
9
+ ...props,
10
+ children: /*#__PURE__*/_jsx("path", {
11
+ d: "M7.7 10.2h8.4a1.8 1.8 0 0 1 0 3.6H7.7a1.8 1.8 0 0 1 0-3.6"
12
+ })
13
+ });
14
+ export default CheckboxMinusIcon;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const CheckboxTickIcon = props => /*#__PURE__*/_jsx("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ viewBox: "0 0 24 24",
6
+ "aria-hidden": "true",
7
+ width: "1.5rem",
8
+ height: "1.5rem",
9
+ ...props,
10
+ children: /*#__PURE__*/_jsx("path", {
11
+ d: "M10.2 17.73a1.8 1.8 0 0 1-1.273-.527L5.89 14.164a1.8 1.8 0 1 1 2.546-2.546l1.764 1.764 5.837-5.837a1.8 1.8 0 1 1 2.546 2.546l-7.11 7.11a1.8 1.8 0 0 1-1.273.527Z"
12
+ })
13
+ });
14
+ export default CheckboxTickIcon;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ const HotelsSwimmingPoolIcon = props => /*#__PURE__*/_jsx("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ viewBox: "0 0 24 24",
6
+ "aria-hidden": "true",
7
+ width: "1.5rem",
8
+ height: "1.5rem",
9
+ ...props,
10
+ children: /*#__PURE__*/_jsx("path", {
11
+ d: "M16 15c.123 0 .225.043.37.178.076.072.156.163.251.277l.085.103c.07.086.15.181.23.273.237.27.538.571.959.8.425.23.946.374 1.605.374q.404-.001.741-.067c.363-.071.759.18.759.55v.502c0 2.215-1.79 4.01-4 4.01H7c-2.21 0-4-1.795-4-4.01v-.502c0-.37.396-.621.759-.55q.338.066.741.067c.66 0 1.18-.143 1.605-.374.421-.229.722-.53.958-.8a13 13 0 0 0 .316-.376c.095-.114.175-.205.252-.277.144-.135.246-.178.369-.178.186 0 .328.063.496.2.09.074.182.165.291.28l.098.103c.08.086.17.181.261.272.271.272.61.566 1.078.789.47.223 1.044.36 1.776.36s1.306-.137 1.776-.36a3.8 3.8 0 0 0 1.078-.788c.09-.092.18-.187.261-.273l.098-.104c.109-.114.201-.205.29-.279.169-.137.31-.2.497-.2M15 2a3 3 0 0 0-3 3v2H6V5a1 1 0 0 1 1.928-.375 1 1 0 0 0 1.853-.75A3 3 0 0 0 4 5v9.969q.236.03.5.031c.606 0 1.094-.122 1.5-.32V13h6v2c.732 0 1.306-.138 1.776-.36q.118-.056.224-.119V5a1 1 0 0 1 1.928-.375 1 1 0 0 0 1.853-.75A3 3 0 0 0 15 2m-9 9V9h6v2z"
12
+ })
13
+ });
14
+ export default HotelsSwimmingPoolIcon;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ const HotelsSwimmingPoolIcon = props => /*#__PURE__*/_jsxs("svg", {
4
+ xmlns: "http://www.w3.org/2000/svg",
5
+ viewBox: "0 0 24 24",
6
+ "aria-hidden": "true",
7
+ width: "1rem",
8
+ height: "1rem",
9
+ ...props,
10
+ children: [/*#__PURE__*/_jsx("path", {
11
+ d: "M16.667 14.722c-.217 0-.383.074-.579.238a4 4 0 0 0-.34.334l-.114.125c-.094.103-.198.218-.304.327-.316.324-.711.675-1.257.941-.549.268-1.219.434-2.073.434s-1.524-.166-2.073-.433c-.546-.267-.941-.618-1.257-.942-.106-.11-.21-.224-.304-.327l-.115-.125a4 4 0 0 0-.34-.334c-.195-.164-.36-.238-.578-.238-.143 0-.263.05-.43.212-.09.086-.184.194-.295.331l-.098.123c-.083.103-.175.219-.268.328-.276.325-.628.685-1.12.958-.496.277-1.103.447-1.872.447a4.4 4.4 0 0 1-.865-.08c-.424-.085-.885.215-.885.659 0 2.65 2.09 4.8 4.667 4.8h11.666c2.577 0 4.667-2.15 4.667-4.8 0-.444-.461-.744-.885-.66a4.4 4.4 0 0 1-.865.081c-.77 0-1.376-.17-1.873-.447-.49-.273-.843-.633-1.119-.958-.093-.11-.185-.225-.268-.328l-.098-.123a4 4 0 0 0-.294-.33c-.168-.162-.288-.213-.431-.213"
12
+ }), /*#__PURE__*/_jsx("path", {
13
+ d: "M15.002 1.5A3.6 3.6 0 0 0 11.4 5.1v2.4H6V5.1a.601.601 0 0 1 1.157-.225 1.5 1.5 0 1 0 2.78-1.125A3.6 3.6 0 0 0 3 5.1v9.888c.081.004.165.012.25.012.77 0 1.376-.17 1.873-.447.359-.2.642-.448.877-.693V12h5.4v2.97q.285.028.6.03c.854 0 1.524-.166 2.073-.434q.174-.085.328-.181V5.1a.601.601 0 0 1 1.157-.226 1.5 1.5 0 1 0 2.78-1.125 3.6 3.6 0 0 0-3.337-2.25M6 10.5V9h5.4v1.5z"
14
+ })]
15
+ });
16
+ export default HotelsSwimmingPoolIcon;
@@ -34,7 +34,7 @@ export type Props = CloseButtonProps & {
34
34
  actionText?: string;
35
35
  zIndexValue?: number;
36
36
  onAction?: () => void;
37
- renderTarget?: () => HTMLElement | HTMLElement | undefined;
37
+ renderTarget?: null | HTMLElement | (() => HTMLElement | null | undefined);
38
38
  [rest: string]: any;
39
39
  };
40
40
  declare const BpkPopover: ({ actionText, children, className, closeButtonIcon, closeButtonLabel, closeButtonProps, closeButtonText, hoverable, id, isOpen, label, labelAsTitle, onAction, onClose, padded, placement, renderTarget, showArrow, target, zIndexValue, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
@@ -135,7 +135,7 @@ const BpkPopover = ({
135
135
  const renderElement = typeof renderTarget === 'function' ? renderTarget() : renderTarget;
136
136
  return /*#__PURE__*/_jsxs(_Fragment, {
137
137
  children: [targetElement, isOpenState && /*#__PURE__*/_jsx(FloatingPortal, {
138
- root: renderElement,
138
+ root: renderElement ?? undefined,
139
139
  children: /*#__PURE__*/_jsx(FloatingFocusManager, {
140
140
  context: context,
141
141
  children: /*#__PURE__*/_jsx("div", {
@@ -19,9 +19,6 @@
19
19
  /* stylelint-disable at-rule-disallowed-list */
20
20
 
21
21
  @use 'tokens';
22
- @use 'radii';
23
- @use 'typography';
24
- @use 'utils';
25
22
 
26
23
  ////
27
24
  /// @group badges
@@ -36,31 +33,17 @@
36
33
 
37
34
  @mixin bpk-badge {
38
35
  display: inline-flex;
39
- padding: tokens.bpk-spacing-sm() tokens.bpk-spacing-md();
36
+ margin: 0;
37
+ padding: var(--bpk-spacing-sm, tokens.bpk-spacing-sm())
38
+ var(
39
+ --bpk-private-badge-dimension-padding-horizontal-default,
40
+ tokens.bpk-spacing-md()
41
+ );
40
42
  align-items: center;
41
-
42
- @include utils.bpk-themeable-property(
43
- border-radius,
44
- --bpk-badge-border-radius,
45
- tokens.$bpk-border-radius-xs
46
- );
47
- @include typography.bpk-text;
48
- @include typography.bpk-caption;
49
- @include utils.bpk-themeable-property(
50
- font-size,
51
- --bpk-badge-font-size,
52
- tokens.$bpk-font-size-xs
53
- );
54
- @include utils.bpk-themeable-property(
55
- font-weight,
56
- --bpk-badge-font-weight,
57
- tokens.$bpk-font-weight-book
58
- );
59
- @include utils.bpk-themeable-property(
60
- line-height,
61
- --bpk-badge-line-height,
62
- tokens.$bpk-line-height-xs
63
- );
43
+ border-radius: var(--bpk-radius-xs, tokens.$bpk-border-radius-xs);
44
+ font-size: tokens.$bpk-font-size-xs;
45
+ font-weight: tokens.$bpk-font-weight-book;
46
+ line-height: tokens.$bpk-line-height-xs;
64
47
  }
65
48
 
66
49
  /// Centered badge. Modifies the bpk-badge mixin.
@@ -90,17 +73,10 @@
90
73
  @mixin bpk-badge--docked-right {
91
74
  position: absolute;
92
75
  top: 0;
93
- right: 0;
94
- border-top-left-radius: 0;
95
- border-top-right-radius: 0;
96
- border-bottom-right-radius: 0;
97
-
98
- @include utils.bpk-rtl {
99
- right: inherit;
100
- left: 0;
101
- border-bottom-left-radius: 0;
102
- border-bottom-right-radius: tokens.$bpk-border-radius-xs;
103
- }
76
+ border-end-end-radius: 0;
77
+ border-start-end-radius: 0;
78
+ border-start-start-radius: 0;
79
+ inset-inline-end: 0;
104
80
  }
105
81
 
106
82
  /// Left-docked badge. Modifies the bpk-badge mixin.
@@ -116,17 +92,10 @@
116
92
  @mixin bpk-badge--docked-left {
117
93
  position: absolute;
118
94
  top: 0;
119
- left: 0;
120
- border-top-left-radius: 0;
121
- border-top-right-radius: 0;
122
- border-bottom-left-radius: 0;
123
-
124
- @include utils.bpk-rtl {
125
- right: 0;
126
- left: inherit;
127
- border-bottom-left-radius: tokens.$bpk-border-radius-xs;
128
- border-bottom-right-radius: 0;
129
- }
95
+ border-end-start-radius: 0;
96
+ border-start-end-radius: 0;
97
+ border-start-start-radius: 0;
98
+ inset-inline-start: 0;
130
99
  }
131
100
 
132
101
  /// Normal badge. Modifies the bpk-badge mixin.
@@ -140,21 +109,12 @@
140
109
  /// }
141
110
 
142
111
  @mixin bpk-badge--normal {
143
- @include utils.bpk-themeable-property(
144
- background-color,
145
- --bpk-badge-normal-background-color,
112
+ background-color: var(
113
+ --bpk-private-badge-colour-bg-default,
146
114
  tokens.$bpk-private-badge-background-normal-day
147
115
  );
148
- @include utils.bpk-themeable-property(
149
- color,
150
- --bpk-badge-normal-text-color,
151
- tokens.$bpk-text-primary-day
152
- );
153
- @include utils.bpk-themeable-property(
154
- fill,
155
- --bpk-badge-normal-icon-color,
156
- tokens.$bpk-text-primary-day
157
- );
116
+ color: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
117
+ fill: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
158
118
  }
159
119
 
160
120
  /// Warning badge. Modifies the bpk-badge mixin.
@@ -168,21 +128,12 @@
168
128
  /// }
169
129
 
170
130
  @mixin bpk-badge--warning {
171
- @include utils.bpk-themeable-property(
172
- background-color,
173
- --bpk-badge-warning-background-color,
131
+ background-color: var(
132
+ --bpk-private-badge-colour-bg-default,
174
133
  tokens.$bpk-private-badge-background-normal-day
175
134
  );
176
- @include utils.bpk-themeable-property(
177
- color,
178
- --bpk-badge-warning-text-color,
179
- tokens.$bpk-text-on-light-day
180
- );
181
- @include utils.bpk-themeable-property(
182
- fill,
183
- --bpk-badge-warning-icon-color,
184
- tokens.$bpk-status-warning-spot-day
185
- );
135
+ color: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
136
+ fill: var(--bpk-status-warning-spot, tokens.$bpk-status-warning-spot-day);
186
137
  }
187
138
 
188
139
  /// Success badge. Modifies the bpk-badge mixin.
@@ -196,21 +147,12 @@
196
147
  /// }
197
148
 
198
149
  @mixin bpk-badge--success {
199
- @include utils.bpk-themeable-property(
200
- background-color,
201
- --bpk-badge-success-background-color,
150
+ background-color: var(
151
+ --bpk-private-badge-colour-bg-default,
202
152
  tokens.$bpk-private-badge-background-normal-day
203
153
  );
204
- @include utils.bpk-themeable-property(
205
- color,
206
- --bpk-badge-success-text-color,
207
- tokens.$bpk-text-on-light-day
208
- );
209
- @include utils.bpk-themeable-property(
210
- fill,
211
- --bpk-badge-success-icon-color,
212
- tokens.$bpk-status-success-spot-day
213
- );
154
+ color: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
155
+ fill: var(--bpk-status-success-spot, tokens.$bpk-status-success-spot-day);
214
156
  }
215
157
 
216
158
  /// Critical badge. Modifies the bpk-badge mixin.
@@ -224,21 +166,12 @@
224
166
  /// }
225
167
 
226
168
  @mixin bpk-badge--critical {
227
- @include utils.bpk-themeable-property(
228
- background-color,
229
- --bpk-badge-critical-background-color,
169
+ background-color: var(
170
+ --bpk-private-badge-colour-bg-default,
230
171
  tokens.$bpk-private-badge-background-normal-day
231
172
  );
232
- @include utils.bpk-themeable-property(
233
- color,
234
- --bpk-badge-critical-text-color,
235
- tokens.$bpk-text-on-light-day
236
- );
237
- @include utils.bpk-themeable-property(
238
- fill,
239
- --bpk-badge-critical-icon-color,
240
- tokens.$bpk-status-danger-spot-day
241
- );
173
+ color: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
174
+ fill: var(--bpk-status-danger-spot, tokens.$bpk-status-danger-spot-day);
242
175
  }
243
176
 
244
177
  /// Inverse badge. Modifies the bpk-badge mixin.
@@ -252,21 +185,13 @@
252
185
  /// }
253
186
 
254
187
  @mixin bpk-badge--inverse {
255
- @include utils.bpk-themeable-property(
256
- background-color,
257
- --bpk-badge-inverse-background-color,
188
+ background-color: var(
189
+ --bpk-private-badge-colour-bg-inverse,
258
190
  tokens.$bpk-surface-default-day
259
191
  );
260
- @include utils.bpk-themeable-property(
261
- color,
262
- --bpk-badge-inverse-text-color,
263
- tokens.$bpk-text-primary-day
264
- );
265
- @include utils.bpk-themeable-property(
266
- fill,
267
- --bpk-badge-inverse-icon-color,
268
- tokens.$bpk-text-primary-day
269
- );
192
+ color: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
193
+ fill: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
194
+ padding-inline: var(--bpk-spacing-md, tokens.bpk-spacing-md());
270
195
  }
271
196
 
272
197
  /// Outline badge. Modifies the bpk-badge mixin.
@@ -280,30 +205,14 @@
280
205
  /// }
281
206
 
282
207
  @mixin bpk-badge--outline {
283
- // The inset border intentionally shares --bpk-badge-outline-text-color with the text colour.
284
- // This means badgeOutlineTextColor controls both the text and the visible border simultaneously.
285
- // There is no separate badgeOutlineBorderColor attribute by design — if independent colours are
286
- // ever needed, a dedicated CSS variable and theme attribute should be introduced at that point.
208
+ background-color: var(--bpk-private-badge-colour-bg-outline, transparent);
209
+ color: var(--bpk-text-on-dark, tokens.$bpk-text-on-dark-day);
287
210
  box-shadow: inset 0 0 0 tokens.$bpk-border-size-sm
288
211
  tokens.$bpk-text-on-dark-day;
289
- box-shadow: inset 0 0 0 tokens.$bpk-border-size-sm
290
- var(--bpk-badge-outline-text-color, tokens.$bpk-text-on-dark-day);
291
-
292
- @include utils.bpk-themeable-property(
293
- background-color,
294
- --bpk-badge-outline-background-color,
295
- transparent
296
- );
297
- @include utils.bpk-themeable-property(
298
- color,
299
- --bpk-badge-outline-text-color,
300
- tokens.$bpk-text-on-dark-day
301
- );
302
- @include utils.bpk-themeable-property(
303
- fill,
304
- --bpk-badge-outline-icon-color,
305
- tokens.$bpk-text-on-dark-day
306
- );
212
+ box-shadow: inset 0 0 0 var(--bpk-border-1, tokens.$bpk-border-size-sm)
213
+ var(--bpk-private-badge-colour-stroke-outline, tokens.$bpk-text-on-dark-day);
214
+ fill: var(--bpk-text-on-dark, tokens.$bpk-text-on-dark-day);
215
+ padding-inline: var(--bpk-spacing-md, tokens.bpk-spacing-md());
307
216
  }
308
217
 
309
218
  /// Strong badge. Modifies the bpk-badge mixin.
@@ -317,21 +226,10 @@
317
226
  /// }
318
227
 
319
228
  @mixin bpk-badge--strong {
320
- @include utils.bpk-themeable-property(
321
- background-color,
322
- --bpk-badge-strong-background-color,
323
- tokens.$bpk-core-primary-day
324
- );
325
- @include utils.bpk-themeable-property(
326
- color,
327
- --bpk-badge-strong-text-color,
328
- tokens.$bpk-text-on-dark-day
329
- );
330
- @include utils.bpk-themeable-property(
331
- fill,
332
- --bpk-badge-strong-icon-color,
333
- tokens.$bpk-text-on-dark-day
334
- );
229
+ background-color: var(--bpk-core-primary, tokens.$bpk-core-primary-day);
230
+ color: var(--bpk-text-on-dark, tokens.$bpk-text-on-dark-day);
231
+ fill: var(--bpk-text-on-dark, tokens.$bpk-text-on-dark-day);
232
+ padding-inline: var(--bpk-spacing-md, tokens.bpk-spacing-md());
335
233
  }
336
234
 
337
235
  /// Brand badge. Modifies the bpk-badge mixin.
@@ -345,19 +243,31 @@
345
243
  /// }
346
244
 
347
245
  @mixin bpk-badge--brand {
348
- @include utils.bpk-themeable-property(
349
- background-color,
350
- --bpk-badge-brand-background-color,
351
- tokens.$bpk-core-accent-day
352
- );
353
- @include utils.bpk-themeable-property(
354
- color,
355
- --bpk-badge-brand-text-color,
356
- tokens.$bpk-text-primary-inverse-day
246
+ background-color: var(--bpk-core-accent, tokens.$bpk-core-accent-day);
247
+ color: var(--bpk-text-inverse, tokens.$bpk-text-primary-inverse-day);
248
+ fill: var(--bpk-text-inverse, tokens.$bpk-text-primary-inverse-day);
249
+ padding-inline: var(--bpk-spacing-md, tokens.bpk-spacing-md());
250
+ }
251
+
252
+ /// Subtle badge. Modifies the bpk-badge mixin.
253
+ ///
254
+ /// @require {mixin} bpk-badge
255
+ ///
256
+ /// @example scss
257
+ /// .selector {
258
+ /// @include bpk-badge();
259
+ /// @include bpk-badge--subtle();
260
+ /// }
261
+
262
+ @mixin bpk-badge--subtle {
263
+ background-color: var(
264
+ --bpk-private-badge-colour-bg-subtle,
265
+ tokens.$bpk-private-badge-background-normal-day
357
266
  );
358
- @include utils.bpk-themeable-property(
359
- fill,
360
- --bpk-badge-brand-icon-color,
361
- tokens.$bpk-text-primary-inverse-day
267
+ color: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
268
+ fill: var(--bpk-text-primary, tokens.$bpk-text-primary-day);
269
+ padding-inline: var(
270
+ --bpk-private-badge-dimension-padding-horizontal-subtle,
271
+ tokens.bpk-spacing-sm()
362
272
  );
363
273
  }
@@ -20,7 +20,7 @@ declare const _default: {
20
20
  appearActiveClassName: string;
21
21
  transitionTimeout: number;
22
22
  children: import("react").ReactElement<{
23
- ref?: import("react").RefObject<HTMLElement | null>;
23
+ ref?: import("react").Ref<HTMLElement>;
24
24
  }>;
25
25
  }) => import("react/jsx-runtime").JSX.Element;
26
26
  cssModules: (styles?: {
@@ -1,10 +1,10 @@
1
- import type { ReactElement, RefObject } from 'react';
1
+ import type { ReactElement, Ref } from 'react';
2
2
  type Props = {
3
3
  appearClassName: string;
4
4
  appearActiveClassName: string;
5
5
  transitionTimeout: number;
6
6
  children: ReactElement<{
7
- ref?: RefObject<HTMLElement | null>;
7
+ ref?: Ref<HTMLElement>;
8
8
  }>;
9
9
  };
10
10
  declare const TransitionInitialMount: ({ appearActiveClassName, appearClassName, children, transitionTimeout, }: Props) => import("react/jsx-runtime").JSX.Element;
@@ -16,7 +16,7 @@
16
16
  * limitations under the License.
17
17
  */
18
18
 
19
- import { cloneElement, useRef } from 'react';
19
+ import { cloneElement, useCallback, useRef, version } from 'react';
20
20
  // @ts-expect-error Untyped import. See `decisions/imports-ts-suppressions.md`.
21
21
  import assign from 'object-assign';
22
22
  import CSSTransition from 'react-transition-group/CSSTransition';
@@ -25,6 +25,21 @@ import CSSTransition from 'react-transition-group/CSSTransition';
25
25
  // It will use the native implementation if it's present and isn't buggy.
26
26
  import { jsx as _jsx } from "react/jsx-runtime";
27
27
  Object.assign = assign;
28
+ // Assigns a node to the child's own ref, supporting both callback refs and
29
+ // object refs (e.g. createRef). nodeRef is handled separately below since it is
30
+ // always an object ref we own.
31
+ const assignChildRef = (childRef, node) => {
32
+ if (!childRef) {
33
+ return;
34
+ }
35
+ if (typeof childRef === 'function') {
36
+ childRef(node);
37
+ } else {
38
+ // eslint-disable-next-line no-param-reassign
39
+ childRef.current = node;
40
+ }
41
+ };
42
+
28
43
  // TODO: revisit the cloneElement pattern when react-transition-group v5 ships;
29
44
  // it is expected to remove the nodeRef requirement.
30
45
  const TransitionInitialMount = ({
@@ -34,6 +49,23 @@ const TransitionInitialMount = ({
34
49
  transitionTimeout
35
50
  }) => {
36
51
  const nodeRef = useRef(null);
52
+ // Read the child's own ref so injecting nodeRef does not clobber it.
53
+ // React 19 exposes ref as a normal prop (children.props.ref) and logs a
54
+ // deprecation warning if you read element.ref; React 18 keeps it on the
55
+ // element itself. Pick the source by major version so we never touch
56
+ // element.ref on React 19, even when the child has no ref of its own.
57
+ const isReact19OrLater = parseInt(version, 10) >= 19;
58
+ const childRef = isReact19OrLater ? children.props.ref : children.ref;
59
+
60
+ // Compose the nodeRef CSSTransition needs with any ref the child already has,
61
+ // so injecting nodeRef does not clobber the child's own ref (e.g. the
62
+ // `dialogRef` used by withScrim to scope focus inside BpkModal/BpkDialog).
63
+ // Memoised so the callback ref keeps a stable identity across renders and is
64
+ // only re-run when nodeRef or the child's ref actually changes.
65
+ const mergedRef = useCallback(node => {
66
+ nodeRef.current = node;
67
+ assignChildRef(childRef, node);
68
+ }, [childRef]);
37
69
  return /*#__PURE__*/_jsx(CSSTransition, {
38
70
  nodeRef: nodeRef,
39
71
  classNames: {
@@ -48,7 +80,7 @@ const TransitionInitialMount = ({
48
80
  appear: transitionTimeout
49
81
  },
50
82
  children: /*#__PURE__*/cloneElement(children, {
51
- ref: nodeRef
83
+ ref: mergedRef
52
84
  })
53
85
  });
54
86
  };
@@ -16,4 +16,4 @@
16
16
  * See the License for the specific language governing permissions and
17
17
  * limitations under the License.
18
18
  *
19
- *//*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:initial}[hidden],template{display:none}a{background-color:#0000;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:initial;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}html{box-sizing:border-box;font-size:100%}*,:after,:before{box-sizing:inherit}body{color:#161616;font-family:var(--bpk-base-font-stack,"Skyscanner Relative",-apple-system,BlinkMacSystemFont,"Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif);font-size:1rem;line-height:1.3rem}body.scaffold-font-size{font-size:13px}body.enable-font-smoothing{-webkit-font-smoothing:antialiased}:focus-visible,[type=button]:focus-visible,[type=reset]:focus-visible,[type=submit]:focus-visible,button:focus-visible{outline:.125rem solid #0062e3;outline-offset:.125rem}.hidden,.hide{display:none!important}.visually-hidden,.visuallyhidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;clip:rect(0 0 0 0)}.visually-hidden.focusable:active,.visually-hidden.focusable:focus,.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{height:auto;margin:0;overflow:visible;position:static;width:auto;clip:auto}.invisible{visibility:hidden}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}:root{--bpk-border-1:0.0625rem;--bpk-border-2:0.125rem;--bpk-border-3:0.1875rem;--bpk-modal-200:12.5rem;--bpk-modal-400:25rem;--bpk-modal-512:32rem;--bpk-modal-600:37.5rem;--bpk-modal-800:50rem;--bpk-modal-1000:62.5rem;--bpk-modal-1024:64rem;--bpk-radius-none:0;--bpk-radius-full:62.4375rem;--bpk-radius-lg:1.5rem;--bpk-radius-md:0.75rem;--bpk-radius-nav-tabs:1.125rem;--bpk-radius-sm:0.5rem;--bpk-radius-xs:0.25rem;--bpk-spacing-base:1rem;--bpk-spacing-lg:1.5rem;--bpk-spacing-md:0.5rem;--bpk-spacing-none:0;--bpk-spacing-sm:0.25rem;--bpk-spacing-xl:2rem;--bpk-spacing-xs:0.125rem;--bpk-spacing-xxl:2.5rem;--bpk-spacing-xxs:0.0625rem;--bpk-spacing-xxxl:4rem;--bpk-spacing-xxxxl:6rem;--bpk-canvas-contrast:#eff3f8;--bpk-canvas-default:#fff;--bpk-private-autosuggest-colour-bg-default:#fff;--bpk-private-autosuggest-colour-bg-hover:#f7f9fb;--bpk-private-autosuggest-colour-border-default:#c1c7cf;--bpk-private-autosuggest-colour-text-close:#161616;--bpk-private-badge-colour-bg-default:#eff3f8;--bpk-private-badge-colour-bg-inverse:#fff;--bpk-private-badge-colour-bg-outline:#fff0;--bpk-private-badge-colour-bg-subtle:#eff3f8;--bpk-private-badge-colour-stroke-outline:#fff;--bpk-private-badge-dimension-padding-horizontal-default:0.5rem;--bpk-private-badge-dimension-padding-horizontal-subtle:0.5rem;--bpk-private-badge-typography-tmp-badge-label:0.875rem;--bpk-private-button-colour-bg-destructive:#e0e4e9;--bpk-private-button-colour-bg-destructive-pressed:#e70866;--bpk-private-button-colour-bg-disabled:#e0e4e9;--bpk-private-button-colour-bg-feature-pressed:#024daf;--bpk-private-button-colour-bg-featured:#0062e3;--bpk-private-button-colour-bg-footer:#fff0;--bpk-private-button-colour-bg-footer-pressed:#fff0;--bpk-private-button-colour-bg-primary:#05203c;--bpk-private-button-colour-bg-primary-on-dark:#fff;--bpk-private-button-colour-bg-primary-on-dark-pressed:#c1c7cf;--bpk-private-button-colour-bg-primary-on-light:#fff;--bpk-private-button-colour-bg-primary-on-light-pressed:#154679;--bpk-private-button-colour-bg-secondary:#e0e4e9;--bpk-private-button-colour-bg-secondary-pressed:#c1c7cf;--bpk-private-button-colour-bg-secondary-on-contrast:#e0e4e9;--bpk-private-button-colour-bg-secondary-on-contrast-pressed:#c1c7cf;--bpk-private-button-colour-bg-secondary-on-dark:#ffffff1a;--bpk-private-button-colour-bg-secondary-on-dark-disabled:#0b121d;--bpk-private-button-colour-bg-secondary-on-dark-pressed:#04182d;--bpk-private-button-colour-text-disruptive:#e70866;--bpk-private-button-colour-text-feature:#fff;--bpk-private-button-colour-text-footer:#fff0;--bpk-private-button-colour-text-link-on-dark:#fff;--bpk-private-button-colour-text-secondary:#161616;--bpk-private-button-dimension-radius:0.5rem;--bpk-private-button-dimension-min-height-default:2.25rem;--bpk-private-button-dimension-min-height-large:3rem;--bpk-private-button-dimension-min-weight-large:3rem;--bpk-private-button-dimension-padding-horizontal-default:1rem;--bpk-private-button-dimension-padding-horizontal-large:1rem;--bpk-private-button-typography-tmp-default-label:1rem;--bpk-private-card-button-contained-fill:#fffc;--bpk-private-card-button-max-height:2.5rem;--bpk-private-carousel-trigger-bg-default:#ffffff80;--bpk-private-carousel-trigger-bg-default-hover:#fffc;--bpk-private-checkbox-bg-default-checked:#0062e3;--bpk-private-checkbox-bg-default-intermediate:#0062e3;--bpk-private-checkbox-bg-on-contrast-checked:#0062e3;--bpk-private-checkbox-bg-on-contrast-intermediate:#0062e3;--bpk-private-checkbox-border-default-disabled:#e0e4e9;--bpk-private-checkbox-border-default-not-checked:#626971;--bpk-private-checkbox-border-on-contrast-disabled:#fff3;--bpk-private-checkbox-border-on-contrast-not-checked:#ffffff80;--bpk-private-checkbox-icon-on-contrast:#fff;--bpk-private-checkbox-stroke:0.1875rem;--bpk-private-chip-group-filter-colour-bg-icon-hover-on-image:#eff3f8;--bpk-private-chip-group-filter-colour-bg-icon-off-on-image:#fff;--bpk-private-chip-group-filter-colour-bg-icon-on-default:#05203c;--bpk-private-chip-group-filter-colour-bg-icon-on-on-dark:#fff;--bpk-private-chip-group-filter-colour-bg-icon-on-on-image:#05203c;--bpk-private-chip-group-filter-colour-stroke-icon-hover-default:#05203c;--bpk-private-chip-group-filter-colour-stroke-icon-hover-on-dark:#fff;--bpk-private-chip-group-filter-colour-stroke-icon-off-default:#c1c7cf;--bpk-private-chip-group-filter-colour-stroke-icon-off-on-dark:#fff3;--bpk-private-chip-group-filter-dimensions-min-height:2.25rem;--bpk-private-chip-colour-bg-default-dismissible-hover:#05203c;--bpk-private-chip-colour-bg-default-on:#05203c;--bpk-private-chip-colour-bg-disabled:#e0e4e9;--bpk-private-chip-colour-bg-on-contrast-hover:#fff;--bpk-private-chip-colour-bg-on-contrast-on:#05203c;--bpk-private-chip-colour-bg-on-dark-dismissible-hover:#fff;--bpk-private-chip-colour-bg-on-dark-hover:#fff;--bpk-private-chip-colour-bg-on-dark-off:#fff0;--bpk-private-chip-colour-bg-on-dark-on:#fff;--bpk-private-chip-colour-bg-on-image-dismissible-hover:#05203c;--bpk-private-chip-colour-bg-on-image-on:#eff3f8;--bpk-private-chip-colour-border-default-dismissible-hover:#fff0;--bpk-private-chip-colour-border-default-hover:#05203c;--bpk-private-chip-colour-border-default-off:#c1c7cf;--bpk-private-chip-colour-border-on-contrast-off:#fff;--bpk-private-chip-colour-border-on-contrast-on:#05203c;--bpk-private-chip-colour-border-on-dark-dismissible-hover:#fff;--bpk-private-chip-colour-border-on-dark-hover:#fff;--bpk-private-chip-colour-border-on-dark-off:#fff3;--bpk-private-chip-colour-stroke-off-on-canvas-contrast-new:#fff0;--bpk-private-chip-colour-text-default-dismissible-hover:#fff;--bpk-private-chip-colour-text-dismissible-on-icon:#ffffff80;--bpk-private-chip-colour-text-on:#fff;--bpk-private-chip-colour-text-on-image:#fff;--bpk-private-chip-colour-text-on-image-dismissible-icon:#626971;--bpk-private-chip-colour-text-on-dark:#161616;--bpk-private-chip-colour-text-on-dark-dismissible-hover:#161616;--bpk-private-chip-colour-text-on-dark-dismissible-icon:#626971;--bpk-private-chip-dimension-border:0.0625rem;--bpk-private-chip-dimension-min-height-width:2rem;--bpk-private-chip-dimension-radius:0.5rem;--bpk-private-date-selector-cheapest-month-highlight:#154679;--bpk-private-date-selector-flexible-date-card:#eff3f8;--bpk-private-info-banner-default:#eff3f8;--bpk-private-info-banner-on-contrast:#fff;--bpk-private-map-cluster-pin:#05203c;--bpk-private-map-cluster-pin-previous-selection:#94c3ff;--bpk-private-map-marker-viewed:#fffc;--bpk-private-map-poi-pin:#8e47ba;--bpk-private-map-previous-selection:#cfe4ff;--bpk-private-navigation-tabs-hover:#154679;--bpk-private-navigation-tabs-outline:#fff3;--bpk-private-navigation-tabs-selected:#024daf;--bpk-private-radio-bg-default-disabled:#c1c7cf;--bpk-private-radio-bg-default-on:#0062e3;--bpk-private-radio-bg-on-contrast-off:#fff;--bpk-private-radio-bg-on-contrast-on:#fff;--bpk-private-radio-border:0.1875rem;--bpk-private-radio-border-default-off:#626971;--bpk-private-rating-bar-default:#e0e4e9;--bpk-private-rating-bar-on-contrast:#fff;--bpk-private-segmented-control-colour-bg-on-canvas-default-default:#eff3f8;--bpk-private-segmented-control-colour-bg-on-surface-contrast-default:#ffffff1a;--bpk-private-segmented-control-colour-bg-on-surface-contrast-selected:#024daf;--bpk-private-segmented-control-colour-bg-selected:#05203c;--bpk-private-segmented-control-colour-divider-default:#e0e4e9;--bpk-private-segmented-control-colour-divider-on-surface-contrast:#fff3;--bpk-private-segmented-control-dimension-bg-indicator-radius:0;--bpk-private-segmented-control-dimension-bg-track-radius:0.5rem;--bpk-private-segmented-control-dimension-min-height:2rem;--bpk-private-segmented-control-dimension-track-padding:0;--bpk-private-shadow-large-blur:0.875rem;--bpk-private-shadow-large-color:#16161640;--bpk-private-shadow-large-position-x:0;--bpk-private-shadow-large-position-y:0.25rem;--bpk-private-shadow-large-spread:0;--bpk-private-shadow-small-blur:0.1875rem;--bpk-private-shadow-small-color:#16161640;--bpk-private-shadow-small-position-x:0;--bpk-private-shadow-small-position-y:0.0625rem;--bpk-private-shadow-small-spread:0;--bpk-private-shadow-xl-blur:3.125rem;--bpk-private-shadow-xl-color:#16161640;--bpk-private-shadow-xl-position-x:0;--bpk-private-shadow-xl-position-y:0.75rem;--bpk-private-shadow-xl-spread:0;--bpk-private-skeleton-on-dark:#ffffff1a;--bpk-private-speech-bubble-colour-bg-contrast:#eff3f8;--bpk-private-speech-bubble-colour-bg-default:#fff;--bpk-private-trip-advisor:#00aa6c;--bpk-core-accent:#0062e3;--bpk-core-eco:#0fa1a9;--bpk-core-primary:#05203c;--bpk-other-overlay:#0003;--bpk-other-scrim:#000000b3;--bpk-other-shadow:#16161640;--bpk-other-line-default:#c1c7cf;--bpk-other-line-on-contrast:#fff3;--bpk-status-danger-spot:#e70866;--bpk-status-success-spot:#0c838a;--bpk-status-warning-spot:#f55d42;--bpk-surface-contrast:#05203c;--bpk-surface-danger-fill:#ffe9f9;--bpk-surface-default:#fff;--bpk-surface-elevated:#fff;--bpk-surface-hero:#0062e3;--bpk-surface-highlight:#e0e4e9;--bpk-surface-low-contrast:#f7f9fb;--bpk-surface-subtle:#e3f0ff;--bpk-surface-success-fill:#d4fff2;--bpk-surface-tint:#ffffff1a;--bpk-surface-warning-fill:#fff7cf;--bpk-surface-promo:#0062e3;--bpk-test:#ff1088;--bpk-text-disabled:#0003;--bpk-text-disabled-on-dark:#ffffff80;--bpk-text-error:#e70866;--bpk-text-inverse:#fff;--bpk-text-on-dark:#fff;--bpk-text-on-light:#161616;--bpk-text-primary:#161616;--bpk-text-secondary:#626971;--bpk-text-secondary-on-contrast:#ffffff80;--bpk-text-success:#0c838a;--bpk-text-deprecated-link:#0062e3;--bpk-text-hero:#0062e3;--bpk-title:true;--bpk-typography-family-sans-serif:"Skyscanner Relative";--bpk-typography-family-serif:Larken;--bpk-typography-kerning-default:0;--bpk-typography-kerning-loose:0;--bpk-typography-kerning-tight:0;--bpk-typography-style-body:400;--bpk-typography-style-headline:700;--bpk-typography-style-hero:900;--bpk-typography-style-label:700;--bpk-typography-style-subhead:300}:root[data-theme=dark]{--bpk-canvas-contrast:#010913;--bpk-canvas-default:#010913;--bpk-private-autosuggest-colour-bg-default:#fff;--bpk-private-autosuggest-colour-bg-hover:#fff;--bpk-private-autosuggest-colour-border-default:#fff;--bpk-private-autosuggest-colour-text-close:#fff;--bpk-private-badge-colour-bg-default:#243346;--bpk-private-badge-colour-bg-inverse:#243346;--bpk-private-badge-colour-bg-outline:#fff0;--bpk-private-badge-colour-bg-subtle:#243346;--bpk-private-badge-colour-stroke-outline:#fff;--bpk-private-badge-dimension-padding-horizontal-default:0.5rem;--bpk-private-badge-dimension-padding-horizontal-subtle:0.5rem;--bpk-private-badge-typography-tmp-badge-label:0.875rem;--bpk-private-button-colour-bg-destructive:#e0e4e9;--bpk-private-button-colour-bg-destructive-pressed:#ff649c;--bpk-private-button-colour-bg-disabled:#0b121d;--bpk-private-button-colour-bg-feature-pressed:#d1f7ff;--bpk-private-button-colour-bg-featured:#d1f7ff;--bpk-private-button-colour-bg-footer:#fff0;--bpk-private-button-colour-bg-footer-pressed:#fff0;--bpk-private-button-colour-bg-primary:#024daf;--bpk-private-button-colour-bg-primary-on-dark:#fff;--bpk-private-button-colour-bg-primary-on-dark-pressed:#c1c7cf;--bpk-private-button-colour-bg-primary-on-light:#fff;--bpk-private-button-colour-bg-primary-on-light-pressed:#002b4b;--bpk-private-button-colour-bg-secondary:#243346;--bpk-private-button-colour-bg-secondary-pressed:#010913;--bpk-private-button-colour-bg-secondary-on-contrast:#243346;--bpk-private-button-colour-bg-secondary-on-contrast-pressed:#010913;--bpk-private-button-colour-bg-secondary-on-dark:#ffffff1a;--bpk-private-button-colour-bg-secondary-on-dark-disabled:#0b121d;--bpk-private-button-colour-bg-secondary-on-dark-pressed:#fff3;--bpk-private-button-colour-text-disruptive:#ff649c;--bpk-private-button-colour-text-feature:#010913;--bpk-private-button-colour-text-footer:#fff0;--bpk-private-button-colour-text-link-on-dark:#fff;--bpk-private-button-colour-text-secondary:#fff;--bpk-private-button-dimension-radius:0.5rem;--bpk-private-button-dimension-min-height-default:2.25rem;--bpk-private-button-dimension-min-height-large:3rem;--bpk-private-button-dimension-min-weight-large:3rem;--bpk-private-button-dimension-padding-horizontal-default:1rem;--bpk-private-button-dimension-padding-horizontal-large:1rem;--bpk-private-button-typography-tmp-default-label:1rem;--bpk-private-card-button-contained-fill:#ffffff1a;--bpk-private-card-button-max-height:2.5rem;--bpk-private-carousel-trigger-bg-default:#ffffff80;--bpk-private-carousel-trigger-bg-default-hover:#fffc;--bpk-private-checkbox-bg-default-checked:#84e9ff;--bpk-private-checkbox-bg-default-intermediate:#84e9ff;--bpk-private-checkbox-bg-on-contrast-checked:#84e9ff;--bpk-private-checkbox-bg-on-contrast-intermediate:#84e9ff;--bpk-private-checkbox-border-default-disabled:#fff3;--bpk-private-checkbox-border-default-not-checked:#ffffff80;--bpk-private-checkbox-border-on-contrast-disabled:#fff3;--bpk-private-checkbox-border-on-contrast-not-checked:#ffffff80;--bpk-private-checkbox-icon-on-contrast:#161616;--bpk-private-checkbox-stroke:0.1875rem;--bpk-private-chip-group-filter-colour-bg-icon-hover-on-image:#010913;--bpk-private-chip-group-filter-colour-bg-icon-off-on-image:#131d2b;--bpk-private-chip-group-filter-colour-bg-icon-on-default:#054184;--bpk-private-chip-group-filter-colour-bg-icon-on-on-dark:#131d2b;--bpk-private-chip-group-filter-colour-bg-icon-on-on-image:#054184;--bpk-private-chip-group-filter-colour-stroke-icon-hover-default:#054184;--bpk-private-chip-group-filter-colour-stroke-icon-hover-on-dark:#131d2b;--bpk-private-chip-group-filter-colour-stroke-icon-off-default:#fff3;--bpk-private-chip-group-filter-colour-stroke-icon-off-on-dark:#fff3;--bpk-private-chip-group-filter-dimensions-min-height:2.25rem;--bpk-private-chip-colour-bg-default-dismissible-hover:#054184;--bpk-private-chip-colour-bg-default-on:#054184;--bpk-private-chip-colour-bg-disabled:#0b121d;--bpk-private-chip-colour-bg-on-contrast-hover:#131d2b;--bpk-private-chip-colour-bg-on-contrast-on:#054184;--bpk-private-chip-colour-bg-on-dark-dismissible-hover:#131d2b;--bpk-private-chip-colour-bg-on-dark-hover:#fff0;--bpk-private-chip-colour-bg-on-dark-off:#fff0;--bpk-private-chip-colour-bg-on-dark-on:#131d2b;--bpk-private-chip-colour-bg-on-image-dismissible-hover:#054184;--bpk-private-chip-colour-bg-on-image-on:#010913;--bpk-private-chip-colour-border-default-dismissible-hover:#fff0;--bpk-private-chip-colour-border-default-hover:#054184;--bpk-private-chip-colour-border-default-off:#fff3;--bpk-private-chip-colour-border-on-contrast-off:#131d2b;--bpk-private-chip-colour-border-on-contrast-on:#131d2b;--bpk-private-chip-colour-border-on-dark-dismissible-hover:#131d2b;--bpk-private-chip-colour-border-on-dark-hover:#fff;--bpk-private-chip-colour-border-on-dark-off:#fff3;--bpk-private-chip-colour-stroke-off-on-canvas-contrast-new:#fff0;--bpk-private-chip-colour-text-default-dismissible-hover:#fff;--bpk-private-chip-colour-text-dismissible-on-icon:#ffffff80;--bpk-private-chip-colour-text-on:#fff;--bpk-private-chip-colour-text-on-image:#fff;--bpk-private-chip-colour-text-on-image-dismissible-icon:#bdc4cb;--bpk-private-chip-colour-text-on-dark:#fff;--bpk-private-chip-colour-text-on-dark-dismissible-hover:#fff;--bpk-private-chip-colour-text-on-dark-dismissible-icon:#bdc4cb;--bpk-private-chip-dimension-border:0.0625rem;--bpk-private-chip-dimension-min-height-width:2rem;--bpk-private-chip-dimension-radius:0.5rem;--bpk-private-date-selector-cheapest-month-highlight:#fff;--bpk-private-date-selector-flexible-date-card:#243346;--bpk-private-info-banner-default:#131d2b;--bpk-private-info-banner-on-contrast:#131d2b;--bpk-private-map-cluster-pin:#fff;--bpk-private-map-cluster-pin-previous-selection:#94c3ff;--bpk-private-map-marker-viewed:#000c;--bpk-private-map-poi-pin:#8e47ba;--bpk-private-map-previous-selection:#cfe4ff;--bpk-private-navigation-tabs-hover:#002b4b;--bpk-private-navigation-tabs-outline:#fff3;--bpk-private-navigation-tabs-selected:#054184;--bpk-private-radio-bg-default-disabled:#ffffff80;--bpk-private-radio-bg-default-on:#84e9ff;--bpk-private-radio-bg-on-contrast-off:#fff0;--bpk-private-radio-bg-on-contrast-on:#84e9ff;--bpk-private-radio-border:0.1875rem;--bpk-private-radio-border-default-off:#ffffff80;--bpk-private-rating-bar-default:#243346;--bpk-private-rating-bar-on-contrast:#243346;--bpk-private-segmented-control-colour-bg-on-canvas-default-default:#131d2b;--bpk-private-segmented-control-colour-bg-on-surface-contrast-default:#131d2b;--bpk-private-segmented-control-colour-bg-on-surface-contrast-selected:#054184;--bpk-private-segmented-control-colour-bg-selected:#054184;--bpk-private-segmented-control-colour-divider-default:#e0e4e9;--bpk-private-segmented-control-colour-divider-on-surface-contrast:#fff3;--bpk-private-segmented-control-dimension-bg-indicator-radius:0;--bpk-private-segmented-control-dimension-bg-track-radius:0.5rem;--bpk-private-segmented-control-dimension-min-height:2rem;--bpk-private-segmented-control-dimension-track-padding:0;--bpk-private-shadow-large-blur:0.875rem;--bpk-private-shadow-large-color:#16161640;--bpk-private-shadow-large-position-x:0;--bpk-private-shadow-large-position-y:0.25rem;--bpk-private-shadow-large-spread:0;--bpk-private-shadow-small-blur:0.1875rem;--bpk-private-shadow-small-color:#16161640;--bpk-private-shadow-small-position-x:0;--bpk-private-shadow-small-position-y:0.0625rem;--bpk-private-shadow-small-spread:0;--bpk-private-shadow-xl-blur:3.125rem;--bpk-private-shadow-xl-color:#16161640;--bpk-private-shadow-xl-position-x:0;--bpk-private-shadow-xl-position-y:0.75rem;--bpk-private-shadow-xl-spread:0;--bpk-private-skeleton-on-dark:#243346;--bpk-private-speech-bubble-colour-bg-contrast:#131d2b;--bpk-private-speech-bubble-colour-bg-default:#131d2b;--bpk-private-trip-advisor:#9ce6c0;--bpk-core-accent:#84e9ff;--bpk-core-eco:#0fa1a9;--bpk-core-primary:#054184;--bpk-other-overlay:#fffc;--bpk-other-scrim:#000000b3;--bpk-other-shadow:#16161640;--bpk-other-line-default:#fff3;--bpk-other-line-on-contrast:#fff3;--bpk-status-danger-spot:#ff649c;--bpk-status-success-spot:#62f1c6;--bpk-status-warning-spot:#feeb87;--bpk-surface-contrast:#010913;--bpk-surface-danger-fill:#ffcadd;--bpk-surface-default:#131d2b;--bpk-surface-elevated:#243346;--bpk-surface-hero:#010913;--bpk-surface-highlight:#243346;--bpk-surface-low-contrast:#243346;--bpk-surface-subtle:#243346;--bpk-surface-success-fill:#b1ffe7;--bpk-surface-tint:#ffffff1a;--bpk-surface-warning-fill:#fbf1bb;--bpk-surface-promo:#243346;--bpk-test:red;--bpk-text-disabled:#fff3;--bpk-text-disabled-on-dark:#ffffff80;--bpk-text-error:#ff649c;--bpk-text-inverse:#010913;--bpk-text-on-dark:#fff;--bpk-text-on-light:#010913;--bpk-text-primary:#fff;--bpk-text-secondary:#bdc4cb;--bpk-text-secondary-on-contrast:#ffffff80;--bpk-text-success:#62f1c6;--bpk-text-deprecated-link:#84e9ff;--bpk-text-hero:#010913;--bpk-title:true;--bpk-typography-family-sans-serif:"Skyscanner Relative";--bpk-typography-family-serif:Larken;--bpk-typography-kerning-default:0;--bpk-typography-kerning-loose:0;--bpk-typography-kerning-tight:0;--bpk-typography-style-body:400;--bpk-typography-style-headline:700;--bpk-typography-style-hero:900;--bpk-typography-style-label:700;--bpk-typography-style-subhead:300}
19
+ *//*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:initial}[hidden],template{display:none}a{background-color:#0000;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:initial;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}html{box-sizing:border-box;font-size:100%}*,:after,:before{box-sizing:inherit}body{color:#161616;font-family:var(--bpk-base-font-stack,"Skyscanner Relative",-apple-system,BlinkMacSystemFont,"Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif);font-size:1rem;line-height:1.3rem}body.scaffold-font-size{font-size:13px}body.enable-font-smoothing{-webkit-font-smoothing:antialiased}:focus-visible,[type=button]:focus-visible,[type=reset]:focus-visible,[type=submit]:focus-visible,button:focus-visible{outline:.125rem solid #0062e3;outline-offset:.125rem}.hidden,.hide{display:none!important}.visually-hidden,.visuallyhidden{border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;clip:rect(0 0 0 0)}.visually-hidden.focusable:active,.visually-hidden.focusable:focus,.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{height:auto;margin:0;overflow:visible;position:static;width:auto;clip:auto}.invisible{visibility:hidden}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}:root{--bpk-border-1:0.0625rem;--bpk-border-2:0.125rem;--bpk-border-3:0.1875rem;--bpk-modal-200:12.5rem;--bpk-modal-400:25rem;--bpk-modal-512:32rem;--bpk-modal-600:37.5rem;--bpk-modal-800:50rem;--bpk-modal-1000:62.5rem;--bpk-modal-1024:64rem;--bpk-radius-none:0;--bpk-radius-full:62.4375rem;--bpk-radius-lg:1.5rem;--bpk-radius-md:0.75rem;--bpk-radius-nav-tabs:1.125rem;--bpk-radius-sm:0.5rem;--bpk-radius-xs:0.25rem;--bpk-spacing-base:1rem;--bpk-spacing-lg:1.5rem;--bpk-spacing-md:0.5rem;--bpk-spacing-none:0;--bpk-spacing-sm:0.25rem;--bpk-spacing-xl:2rem;--bpk-spacing-xs:0.125rem;--bpk-spacing-xxl:2.5rem;--bpk-spacing-xxs:0.0625rem;--bpk-spacing-xxxl:4rem;--bpk-spacing-xxxxl:6rem;--bpk-canvas-contrast:#eff3f8;--bpk-canvas-default:#fff;--bpk-private-autosuggest-colour-bg-default:#fff;--bpk-private-autosuggest-colour-bg-hover:#f5f7fa;--bpk-private-autosuggest-colour-border-default:#c1c7cf;--bpk-private-autosuggest-colour-text-close:#161616;--bpk-private-badge-colour-bg-default:#eff3f8;--bpk-private-badge-colour-bg-inverse:#fff;--bpk-private-badge-colour-bg-outline:#fff0;--bpk-private-badge-colour-bg-subtle:#eff3f8;--bpk-private-badge-colour-stroke-outline:#fff;--bpk-private-badge-dimension-padding-horizontal-default:0.5rem;--bpk-private-badge-dimension-padding-horizontal-subtle:0.5rem;--bpk-private-badge-typography-tmp-badge-label:0.875rem;--bpk-private-button-colour-bg-destructive:#e0e4e9;--bpk-private-button-colour-bg-destructive-pressed:#e70866;--bpk-private-button-colour-bg-disabled:#e0e4e9;--bpk-private-button-colour-bg-feature-pressed:#024daf;--bpk-private-button-colour-bg-featured:#0062e3;--bpk-private-button-colour-bg-footer:#fff0;--bpk-private-button-colour-bg-footer-pressed:#fff0;--bpk-private-button-colour-bg-primary:#05203c;--bpk-private-button-colour-bg-primary-on-dark:#fff;--bpk-private-button-colour-bg-primary-on-dark-pressed:#c1c7cf;--bpk-private-button-colour-bg-primary-on-light:#fff;--bpk-private-button-colour-bg-primary-on-light-pressed:#154679;--bpk-private-button-colour-bg-secondary:#e0e4e9;--bpk-private-button-colour-bg-secondary-pressed:#c1c7cf;--bpk-private-button-colour-bg-secondary-on-contrast:#e0e4e9;--bpk-private-button-colour-bg-secondary-on-contrast-pressed:#c1c7cf;--bpk-private-button-colour-bg-secondary-on-dark:#ffffff1a;--bpk-private-button-colour-bg-secondary-on-dark-disabled:#0b121d;--bpk-private-button-colour-bg-secondary-on-dark-pressed:#04182d;--bpk-private-button-colour-text-disruptive:#e70866;--bpk-private-button-colour-text-feature:#fff;--bpk-private-button-colour-text-footer:#fff0;--bpk-private-button-colour-text-link-on-dark:#fff;--bpk-private-button-colour-text-secondary:#161616;--bpk-private-button-dimension-radius:0.5rem;--bpk-private-button-dimension-min-height-default:2.25rem;--bpk-private-button-dimension-min-height-large:3rem;--bpk-private-button-dimension-min-weight-large:3rem;--bpk-private-button-dimension-padding-horizontal-default:1rem;--bpk-private-button-dimension-padding-horizontal-large:1rem;--bpk-private-button-typography-tmp-default-label:1rem;--bpk-private-card-button-contained-fill:#fffc;--bpk-private-card-button-max-height:2.5rem;--bpk-private-carousel-trigger-bg-default:#ffffff80;--bpk-private-carousel-trigger-bg-default-hover:#fffc;--bpk-private-checkbox-bg-default-checked:#0062e3;--bpk-private-checkbox-bg-default-intermediate:#0062e3;--bpk-private-checkbox-bg-on-contrast-checked:#0062e3;--bpk-private-checkbox-bg-on-contrast-intermediate:#0062e3;--bpk-private-checkbox-border-default-disabled:#e0e4e9;--bpk-private-checkbox-border-default-not-checked:#626971;--bpk-private-checkbox-border-on-contrast-disabled:#fff3;--bpk-private-checkbox-border-on-contrast-not-checked:#ffffff80;--bpk-private-checkbox-icon-on-contrast:#fff;--bpk-private-checkbox-stroke:0.1875rem;--bpk-private-chip-group-filter-colour-bg-icon-hover-on-image:#eff3f8;--bpk-private-chip-group-filter-colour-bg-icon-off-on-image:#fff;--bpk-private-chip-group-filter-colour-bg-icon-on-default:#05203c;--bpk-private-chip-group-filter-colour-bg-icon-on-on-dark:#fff;--bpk-private-chip-group-filter-colour-bg-icon-on-on-image:#05203c;--bpk-private-chip-group-filter-colour-stroke-icon-hover-default:#05203c;--bpk-private-chip-group-filter-colour-stroke-icon-hover-on-dark:#fff;--bpk-private-chip-group-filter-colour-stroke-icon-off-default:#c1c7cf;--bpk-private-chip-group-filter-colour-stroke-icon-off-on-dark:#fff3;--bpk-private-chip-group-filter-dimensions-min-height:2.25rem;--bpk-private-chip-colour-bg-default-dismissible-hover:#05203c;--bpk-private-chip-colour-bg-default-hover:#fff0;--bpk-private-chip-colour-bg-default-off:#fff0;--bpk-private-chip-colour-bg-default-on:#05203c;--bpk-private-chip-colour-bg-disabled:#e0e4e9;--bpk-private-chip-colour-bg-on-contrast-hover:#fff;--bpk-private-chip-colour-bg-on-contrast-on:#05203c;--bpk-private-chip-colour-bg-on-dark-dismissible-hover:#fff;--bpk-private-chip-colour-bg-on-dark-hover:#fff;--bpk-private-chip-colour-bg-on-dark-off:#fff0;--bpk-private-chip-colour-bg-on-dark-on:#fff;--bpk-private-chip-colour-bg-on-image-dismissible-hover:#05203c;--bpk-private-chip-colour-bg-on-image-on:#eff3f8;--bpk-private-chip-colour-border-default-dismissible-hover:#fff0;--bpk-private-chip-colour-border-default-hover:#05203c;--bpk-private-chip-colour-border-default-off:#c1c7cf;--bpk-private-chip-colour-border-on-contrast-off:#fff;--bpk-private-chip-colour-border-on-contrast-on:#05203c;--bpk-private-chip-colour-border-on-dark-dismissible-hover:#fff;--bpk-private-chip-colour-border-on-dark-hover:#fff;--bpk-private-chip-colour-border-on-dark-off:#fff3;--bpk-private-chip-colour-stroke-off-on-canvas-contrast-new:#fff0;--bpk-private-chip-colour-text-default-dismissible-hover:#fff;--bpk-private-chip-colour-text-dismissible-on-icon:#ffffff80;--bpk-private-chip-colour-text-on:#fff;--bpk-private-chip-colour-text-on-image:#fff;--bpk-private-chip-colour-text-on-image-dismissible-icon:#626971;--bpk-private-chip-colour-text-on-dark:#161616;--bpk-private-chip-colour-text-on-dark-dismissible-hover:#161616;--bpk-private-chip-colour-text-on-dark-dismissible-icon:#626971;--bpk-private-chip-dimension-border:0.0625rem;--bpk-private-chip-dimension-min-height-width:2rem;--bpk-private-chip-dimension-radius:0.5rem;--bpk-private-date-selector-cheapest-month-highlight:#154679;--bpk-private-date-selector-flexible-date-card:#eff3f8;--bpk-private-info-banner-default:#eff3f8;--bpk-private-info-banner-on-contrast:#fff;--bpk-private-map-cluster-pin:#05203c;--bpk-private-map-cluster-pin-previous-selection:#94c3ff;--bpk-private-map-marker-viewed:#fffc;--bpk-private-map-poi-pin:#8e47ba;--bpk-private-map-previous-selection:#cfe4ff;--bpk-private-navigation-tabs-hover:#154679;--bpk-private-navigation-tabs-outline:#fff3;--bpk-private-navigation-tabs-selected:#0062e3;--bpk-private-radio-bg-default-disabled:#c1c7cf;--bpk-private-radio-bg-default-on:#0062e3;--bpk-private-radio-bg-on-contrast-off:#fff;--bpk-private-radio-bg-on-contrast-on:#fff;--bpk-private-radio-border:0.1875rem;--bpk-private-radio-border-default-off:#626971;--bpk-private-rating-bar-default:#e0e4e9;--bpk-private-rating-bar-on-contrast:#fff;--bpk-private-segmented-control-colour-bg-on-canvas-default-default:#eff3f8;--bpk-private-segmented-control-colour-bg-on-surface-contrast-default:#ffffff1a;--bpk-private-segmented-control-colour-bg-on-surface-contrast-selected:#024daf;--bpk-private-segmented-control-colour-bg-selected:#05203c;--bpk-private-segmented-control-colour-divider-default:#e0e4e9;--bpk-private-segmented-control-colour-divider-on-surface-contrast:#fff3;--bpk-private-segmented-control-dimension-bg-indicator-radius:0;--bpk-private-segmented-control-dimension-bg-track-radius:0.5rem;--bpk-private-segmented-control-dimension-min-height:2rem;--bpk-private-segmented-control-dimension-track-padding:0;--bpk-private-shadow-large-blur:0.875rem;--bpk-private-shadow-large-color:#16161640;--bpk-private-shadow-large-position-x:0;--bpk-private-shadow-large-position-y:0.25rem;--bpk-private-shadow-large-spread:0;--bpk-private-shadow-small-blur:0.1875rem;--bpk-private-shadow-small-color:#16161640;--bpk-private-shadow-small-position-x:0;--bpk-private-shadow-small-position-y:0.0625rem;--bpk-private-shadow-small-spread:0;--bpk-private-shadow-xl-blur:3.125rem;--bpk-private-shadow-xl-color:#16161640;--bpk-private-shadow-xl-position-x:0;--bpk-private-shadow-xl-position-y:0.75rem;--bpk-private-shadow-xl-spread:0;--bpk-private-skeleton-on-dark:#ffffff1a;--bpk-private-slider-bg-knob:#0062e3;--bpk-private-slider-bg-track:#0062e3;--bpk-private-speech-bubble-colour-bg-contrast:#eff3f8;--bpk-private-speech-bubble-colour-bg-default:#fff;--bpk-private-trip-advisor:#00aa6c;--bpk-core-accent:#0062e3;--bpk-core-eco:#0fa1a9;--bpk-core-primary:#05203c;--bpk-other-overlay:#0003;--bpk-other-scrim:#000000b3;--bpk-other-shadow:#16161640;--bpk-other-line-default:#c1c7cf;--bpk-other-line-on-contrast:#fff3;--bpk-status-danger-spot:#e70866;--bpk-status-success-spot:#0c838a;--bpk-status-warning-spot:#f55d42;--bpk-surface-contrast:#05203c;--bpk-surface-danger-fill:#ffe9f9;--bpk-surface-default:#fff;--bpk-surface-elevated:#fff;--bpk-surface-hero:#0062e3;--bpk-surface-highlight:#e0e4e9;--bpk-surface-low-contrast:#f5f7fa;--bpk-surface-subtle:#e3f0ff;--bpk-surface-success-fill:#d4fff2;--bpk-surface-tint:#ffffff1a;--bpk-surface-warning-fill:#fff7cf;--bpk-surface-promo:#0062e3;--bpk-test:#ff1088;--bpk-text-disabled:#0003;--bpk-text-disabled-on-dark:#ffffff80;--bpk-text-error:#e70866;--bpk-text-inverse:#fff;--bpk-text-on-dark:#fff;--bpk-text-on-light:#161616;--bpk-text-primary:#161616;--bpk-text-secondary:#626971;--bpk-text-secondary-on-contrast:#ffffff80;--bpk-text-success:#0c838a;--bpk-text-deprecated-link:#0062e3;--bpk-text-hero:#0062e3;--bpk-title:true;--bpk-typography-family-sans-serif:"Skyscanner Relative";--bpk-typography-family-serif:Larken;--bpk-typography-kerning-default:0;--bpk-typography-kerning-loose:0;--bpk-typography-kerning-tight:0;--bpk-typography-line-heights-16:1rem;--bpk-typography-line-heights-20:1.25rem;--bpk-typography-line-heights-24:1.5rem;--bpk-typography-line-heights-28:1.75rem;--bpk-typography-line-heights-40:2.5rem;--bpk-typography-line-heights-48:3rem;--bpk-typography-line-heights-64:4rem;--bpk-typography-line-heights-76:4.75rem;--bpk-typography-line-heights-82:5.125rem;--bpk-typography-line-heights-96:6rem;--bpk-typography-line-heights-115:7.1875rem;--bpk-typography-line-heights-120:7.5rem;--bpk-typography-line-heights-153:9.625rem;--bpk-typography-line-heights-192:12rem;--bpk-typography-sizes-12:0.75rem;--bpk-typography-sizes-14:0.875rem;--bpk-typography-sizes-20:1.25rem;--bpk-typography-sizes-24:1.5rem;--bpk-typography-sizes-32:2rem;--bpk-typography-sizes-40:2.5rem;--bpk-typography-sizes-48:3rem;--bpk-typography-sizes-64:4rem;--bpk-typography-sizes-76:4.75rem;--bpk-typography-sizes-96:6rem;--bpk-typography-sizes-120:7.5rem;--bpk-typography-sizes-144:9rem;--bpk-typography-sizes-192:12rem;--bpk-typography-sizes-240:15rem;--bpk-typography-sizes-base:1rem;--bpk-typography-style-body:400;--bpk-typography-style-headline:700;--bpk-typography-style-hero:900;--bpk-typography-style-label:700;--bpk-typography-style-subhead:300}:root[data-theme=dark]{--bpk-canvas-contrast:#010913;--bpk-canvas-default:#010913;--bpk-private-autosuggest-colour-bg-default:#fff;--bpk-private-autosuggest-colour-bg-hover:#fff;--bpk-private-autosuggest-colour-border-default:#fff;--bpk-private-autosuggest-colour-text-close:#fff;--bpk-private-badge-colour-bg-default:#243346;--bpk-private-badge-colour-bg-inverse:#243346;--bpk-private-badge-colour-bg-outline:#fff0;--bpk-private-badge-colour-bg-subtle:#243346;--bpk-private-badge-colour-stroke-outline:#fff;--bpk-private-badge-dimension-padding-horizontal-default:0.5rem;--bpk-private-badge-dimension-padding-horizontal-subtle:0.5rem;--bpk-private-badge-typography-tmp-badge-label:0.875rem;--bpk-private-button-colour-bg-destructive:#e0e4e9;--bpk-private-button-colour-bg-destructive-pressed:#ff649c;--bpk-private-button-colour-bg-disabled:#0b121d;--bpk-private-button-colour-bg-feature-pressed:#d1f7ff;--bpk-private-button-colour-bg-featured:#d1f7ff;--bpk-private-button-colour-bg-footer:#fff0;--bpk-private-button-colour-bg-footer-pressed:#fff0;--bpk-private-button-colour-bg-primary:#024daf;--bpk-private-button-colour-bg-primary-on-dark:#fff;--bpk-private-button-colour-bg-primary-on-dark-pressed:#c1c7cf;--bpk-private-button-colour-bg-primary-on-light:#fff;--bpk-private-button-colour-bg-primary-on-light-pressed:#002b4b;--bpk-private-button-colour-bg-secondary:#243346;--bpk-private-button-colour-bg-secondary-pressed:#010913;--bpk-private-button-colour-bg-secondary-on-contrast:#243346;--bpk-private-button-colour-bg-secondary-on-contrast-pressed:#010913;--bpk-private-button-colour-bg-secondary-on-dark:#ffffff1a;--bpk-private-button-colour-bg-secondary-on-dark-disabled:#0b121d;--bpk-private-button-colour-bg-secondary-on-dark-pressed:#fff3;--bpk-private-button-colour-text-disruptive:#ff649c;--bpk-private-button-colour-text-feature:#010913;--bpk-private-button-colour-text-footer:#fff0;--bpk-private-button-colour-text-link-on-dark:#fff;--bpk-private-button-colour-text-secondary:#fff;--bpk-private-button-dimension-radius:0.5rem;--bpk-private-button-dimension-min-height-default:2.25rem;--bpk-private-button-dimension-min-height-large:3rem;--bpk-private-button-dimension-min-weight-large:3rem;--bpk-private-button-dimension-padding-horizontal-default:1rem;--bpk-private-button-dimension-padding-horizontal-large:1rem;--bpk-private-button-typography-tmp-default-label:1rem;--bpk-private-card-button-contained-fill:#ffffff1a;--bpk-private-card-button-max-height:2.5rem;--bpk-private-carousel-trigger-bg-default:#ffffff80;--bpk-private-carousel-trigger-bg-default-hover:#fffc;--bpk-private-checkbox-bg-default-checked:#84e9ff;--bpk-private-checkbox-bg-default-intermediate:#84e9ff;--bpk-private-checkbox-bg-on-contrast-checked:#84e9ff;--bpk-private-checkbox-bg-on-contrast-intermediate:#84e9ff;--bpk-private-checkbox-border-default-disabled:#fff3;--bpk-private-checkbox-border-default-not-checked:#ffffff80;--bpk-private-checkbox-border-on-contrast-disabled:#fff3;--bpk-private-checkbox-border-on-contrast-not-checked:#ffffff80;--bpk-private-checkbox-icon-on-contrast:#161616;--bpk-private-checkbox-stroke:0.1875rem;--bpk-private-chip-group-filter-colour-bg-icon-hover-on-image:#010913;--bpk-private-chip-group-filter-colour-bg-icon-off-on-image:#131d2b;--bpk-private-chip-group-filter-colour-bg-icon-on-default:#054184;--bpk-private-chip-group-filter-colour-bg-icon-on-on-dark:#131d2b;--bpk-private-chip-group-filter-colour-bg-icon-on-on-image:#054184;--bpk-private-chip-group-filter-colour-stroke-icon-hover-default:#054184;--bpk-private-chip-group-filter-colour-stroke-icon-hover-on-dark:#131d2b;--bpk-private-chip-group-filter-colour-stroke-icon-off-default:#fff3;--bpk-private-chip-group-filter-colour-stroke-icon-off-on-dark:#fff3;--bpk-private-chip-group-filter-dimensions-min-height:2.25rem;--bpk-private-chip-colour-bg-default-dismissible-hover:#054184;--bpk-private-chip-colour-bg-default-hover:#fff0;--bpk-private-chip-colour-bg-default-off:#fff0;--bpk-private-chip-colour-bg-default-on:#054184;--bpk-private-chip-colour-bg-disabled:#0b121d;--bpk-private-chip-colour-bg-on-contrast-hover:#131d2b;--bpk-private-chip-colour-bg-on-contrast-on:#054184;--bpk-private-chip-colour-bg-on-dark-dismissible-hover:#131d2b;--bpk-private-chip-colour-bg-on-dark-hover:#fff0;--bpk-private-chip-colour-bg-on-dark-off:#fff0;--bpk-private-chip-colour-bg-on-dark-on:#131d2b;--bpk-private-chip-colour-bg-on-image-dismissible-hover:#054184;--bpk-private-chip-colour-bg-on-image-on:#010913;--bpk-private-chip-colour-border-default-dismissible-hover:#fff0;--bpk-private-chip-colour-border-default-hover:#054184;--bpk-private-chip-colour-border-default-off:#fff3;--bpk-private-chip-colour-border-on-contrast-off:#131d2b;--bpk-private-chip-colour-border-on-contrast-on:#131d2b;--bpk-private-chip-colour-border-on-dark-dismissible-hover:#131d2b;--bpk-private-chip-colour-border-on-dark-hover:#fff;--bpk-private-chip-colour-border-on-dark-off:#fff3;--bpk-private-chip-colour-stroke-off-on-canvas-contrast-new:#fff0;--bpk-private-chip-colour-text-default-dismissible-hover:#fff;--bpk-private-chip-colour-text-dismissible-on-icon:#ffffff80;--bpk-private-chip-colour-text-on:#fff;--bpk-private-chip-colour-text-on-image:#fff;--bpk-private-chip-colour-text-on-image-dismissible-icon:#bdc4cb;--bpk-private-chip-colour-text-on-dark:#fff;--bpk-private-chip-colour-text-on-dark-dismissible-hover:#fff;--bpk-private-chip-colour-text-on-dark-dismissible-icon:#bdc4cb;--bpk-private-chip-dimension-border:0.0625rem;--bpk-private-chip-dimension-min-height-width:2rem;--bpk-private-chip-dimension-radius:0.5rem;--bpk-private-date-selector-cheapest-month-highlight:#fff;--bpk-private-date-selector-flexible-date-card:#243346;--bpk-private-info-banner-default:#131d2b;--bpk-private-info-banner-on-contrast:#131d2b;--bpk-private-map-cluster-pin:#fff;--bpk-private-map-cluster-pin-previous-selection:#94c3ff;--bpk-private-map-marker-viewed:#000c;--bpk-private-map-poi-pin:#8e47ba;--bpk-private-map-previous-selection:#cfe4ff;--bpk-private-navigation-tabs-hover:#002b4b;--bpk-private-navigation-tabs-outline:#fff3;--bpk-private-navigation-tabs-selected:#054184;--bpk-private-radio-bg-default-disabled:#ffffff80;--bpk-private-radio-bg-default-on:#84e9ff;--bpk-private-radio-bg-on-contrast-off:#fff0;--bpk-private-radio-bg-on-contrast-on:#84e9ff;--bpk-private-radio-border:0.1875rem;--bpk-private-radio-border-default-off:#ffffff80;--bpk-private-rating-bar-default:#243346;--bpk-private-rating-bar-on-contrast:#243346;--bpk-private-segmented-control-colour-bg-on-canvas-default-default:#131d2b;--bpk-private-segmented-control-colour-bg-on-surface-contrast-default:#131d2b;--bpk-private-segmented-control-colour-bg-on-surface-contrast-selected:#054184;--bpk-private-segmented-control-colour-bg-selected:#054184;--bpk-private-segmented-control-colour-divider-default:#e0e4e9;--bpk-private-segmented-control-colour-divider-on-surface-contrast:#fff3;--bpk-private-segmented-control-dimension-bg-indicator-radius:0;--bpk-private-segmented-control-dimension-bg-track-radius:0.5rem;--bpk-private-segmented-control-dimension-min-height:2rem;--bpk-private-segmented-control-dimension-track-padding:0;--bpk-private-shadow-large-blur:0.875rem;--bpk-private-shadow-large-color:#16161640;--bpk-private-shadow-large-position-x:0;--bpk-private-shadow-large-position-y:0.25rem;--bpk-private-shadow-large-spread:0;--bpk-private-shadow-small-blur:0.1875rem;--bpk-private-shadow-small-color:#16161640;--bpk-private-shadow-small-position-x:0;--bpk-private-shadow-small-position-y:0.0625rem;--bpk-private-shadow-small-spread:0;--bpk-private-shadow-xl-blur:3.125rem;--bpk-private-shadow-xl-color:#16161640;--bpk-private-shadow-xl-position-x:0;--bpk-private-shadow-xl-position-y:0.75rem;--bpk-private-shadow-xl-spread:0;--bpk-private-skeleton-on-dark:#243346;--bpk-private-slider-bg-knob:#84e9ff;--bpk-private-slider-bg-track:#84e9ff;--bpk-private-speech-bubble-colour-bg-contrast:#131d2b;--bpk-private-speech-bubble-colour-bg-default:#131d2b;--bpk-private-trip-advisor:#9ce6c0;--bpk-core-accent:#84e9ff;--bpk-core-eco:#0fa1a9;--bpk-core-primary:#054184;--bpk-other-overlay:#fffc;--bpk-other-scrim:#000000b3;--bpk-other-shadow:#16161640;--bpk-other-line-default:#fff3;--bpk-other-line-on-contrast:#fff3;--bpk-status-danger-spot:#ff649c;--bpk-status-success-spot:#62f1c6;--bpk-status-warning-spot:#feeb87;--bpk-surface-contrast:#010913;--bpk-surface-danger-fill:#ffcadd;--bpk-surface-default:#131d2b;--bpk-surface-elevated:#243346;--bpk-surface-hero:#010913;--bpk-surface-highlight:#243346;--bpk-surface-low-contrast:#243346;--bpk-surface-subtle:#243346;--bpk-surface-success-fill:#b1ffe7;--bpk-surface-tint:#ffffff1a;--bpk-surface-warning-fill:#fbf1bb;--bpk-surface-promo:#243346;--bpk-test:red;--bpk-text-disabled:#fff3;--bpk-text-disabled-on-dark:#ffffff80;--bpk-text-error:#ff649c;--bpk-text-inverse:#010913;--bpk-text-on-dark:#fff;--bpk-text-on-light:#010913;--bpk-text-primary:#fff;--bpk-text-secondary:#bdc4cb;--bpk-text-secondary-on-contrast:#ffffff80;--bpk-text-success:#62f1c6;--bpk-text-deprecated-link:#84e9ff;--bpk-text-hero:#010913;--bpk-title:true;--bpk-typography-family-sans-serif:"Skyscanner Relative";--bpk-typography-family-serif:Larken;--bpk-typography-kerning-default:0;--bpk-typography-kerning-loose:0;--bpk-typography-kerning-tight:0;--bpk-typography-line-heights-16:1rem;--bpk-typography-line-heights-20:1.25rem;--bpk-typography-line-heights-24:1.5rem;--bpk-typography-line-heights-28:1.75rem;--bpk-typography-line-heights-40:2.5rem;--bpk-typography-line-heights-48:3rem;--bpk-typography-line-heights-64:4rem;--bpk-typography-line-heights-76:4.75rem;--bpk-typography-line-heights-82:5.125rem;--bpk-typography-line-heights-96:6rem;--bpk-typography-line-heights-115:7.1875rem;--bpk-typography-line-heights-120:7.5rem;--bpk-typography-line-heights-153:9.625rem;--bpk-typography-line-heights-192:12rem;--bpk-typography-sizes-12:0.75rem;--bpk-typography-sizes-14:0.875rem;--bpk-typography-sizes-20:1.25rem;--bpk-typography-sizes-24:1.5rem;--bpk-typography-sizes-32:2rem;--bpk-typography-sizes-40:2.5rem;--bpk-typography-sizes-48:3rem;--bpk-typography-sizes-64:4rem;--bpk-typography-sizes-76:4.75rem;--bpk-typography-sizes-96:6rem;--bpk-typography-sizes-120:7.5rem;--bpk-typography-sizes-144:9rem;--bpk-typography-sizes-192:12rem;--bpk-typography-sizes-240:15rem;--bpk-typography-sizes-base:1rem;--bpk-typography-style-body:400;--bpk-typography-style-headline:700;--bpk-typography-style-hero:900;--bpk-typography-style-label:700;--bpk-typography-style-subhead:300}
@@ -89,6 +89,8 @@
89
89
  --bpk-private-chip-group-filter-colour-stroke-icon-off-on-dark: rgba(255, 255, 255, 0.2);
90
90
  --bpk-private-chip-group-filter-dimensions-min-height: 2.25rem;
91
91
  --bpk-private-chip-colour-bg-default-dismissible-hover: #054184;
92
+ --bpk-private-chip-colour-bg-default-hover: rgba(255, 255, 255, 0);
93
+ --bpk-private-chip-colour-bg-default-off: rgba(255, 255, 255, 0);
92
94
  --bpk-private-chip-colour-bg-default-on: #054184;
93
95
  --bpk-private-chip-colour-bg-disabled: #0b121d;
94
96
  --bpk-private-chip-colour-bg-on-contrast-hover: #131d2b;
@@ -165,6 +167,8 @@
165
167
  --bpk-private-shadow-xl-position-y: 0.75rem;
166
168
  --bpk-private-shadow-xl-spread: 0;
167
169
  --bpk-private-skeleton-on-dark: #243346;
170
+ --bpk-private-slider-bg-knob: #84e9ff;
171
+ --bpk-private-slider-bg-track: #84e9ff;
168
172
  --bpk-private-speech-bubble-colour-bg-contrast: #131d2b;
169
173
  --bpk-private-speech-bubble-colour-bg-default: #131d2b;
170
174
  --bpk-private-trip-advisor: #9ce6c0;
@@ -210,6 +214,35 @@
210
214
  --bpk-typography-kerning-default: 0;
211
215
  --bpk-typography-kerning-loose: 0;
212
216
  --bpk-typography-kerning-tight: 0;
217
+ --bpk-typography-line-heights-16: 1rem;
218
+ --bpk-typography-line-heights-20: 1.25rem;
219
+ --bpk-typography-line-heights-24: 1.5rem;
220
+ --bpk-typography-line-heights-28: 1.75rem;
221
+ --bpk-typography-line-heights-40: 2.5rem;
222
+ --bpk-typography-line-heights-48: 3rem;
223
+ --bpk-typography-line-heights-64: 4rem;
224
+ --bpk-typography-line-heights-76: 4.75rem;
225
+ --bpk-typography-line-heights-82: 5.125rem;
226
+ --bpk-typography-line-heights-96: 6rem;
227
+ --bpk-typography-line-heights-115: 7.1875rem;
228
+ --bpk-typography-line-heights-120: 7.5rem;
229
+ --bpk-typography-line-heights-153: 9.625rem;
230
+ --bpk-typography-line-heights-192: 12rem;
231
+ --bpk-typography-sizes-12: 0.75rem;
232
+ --bpk-typography-sizes-14: 0.875rem;
233
+ --bpk-typography-sizes-20: 1.25rem;
234
+ --bpk-typography-sizes-24: 1.5rem;
235
+ --bpk-typography-sizes-32: 2rem;
236
+ --bpk-typography-sizes-40: 2.5rem;
237
+ --bpk-typography-sizes-48: 3rem;
238
+ --bpk-typography-sizes-64: 4rem;
239
+ --bpk-typography-sizes-76: 4.75rem;
240
+ --bpk-typography-sizes-96: 6rem;
241
+ --bpk-typography-sizes-120: 7.5rem;
242
+ --bpk-typography-sizes-144: 9rem;
243
+ --bpk-typography-sizes-192: 12rem;
244
+ --bpk-typography-sizes-240: 15rem;
245
+ --bpk-typography-sizes-base: 1rem;
213
246
  --bpk-typography-style-body: 400;
214
247
  --bpk-typography-style-headline: 700;
215
248
  --bpk-typography-style-hero: 900;
@@ -22,7 +22,7 @@
22
22
  --bpk-canvas-contrast: #eff3f8;
23
23
  --bpk-canvas-default: #ffffff;
24
24
  --bpk-private-autosuggest-colour-bg-default: #ffffff;
25
- --bpk-private-autosuggest-colour-bg-hover: #f7f9fb;
25
+ --bpk-private-autosuggest-colour-bg-hover: #f5f7fa;
26
26
  --bpk-private-autosuggest-colour-border-default: #c1c7cf;
27
27
  --bpk-private-autosuggest-colour-text-close: #161616;
28
28
  --bpk-private-badge-colour-bg-default: #eff3f8;
@@ -89,6 +89,8 @@
89
89
  --bpk-private-chip-group-filter-colour-stroke-icon-off-on-dark: rgba(255, 255, 255, 0.2);
90
90
  --bpk-private-chip-group-filter-dimensions-min-height: 2.25rem;
91
91
  --bpk-private-chip-colour-bg-default-dismissible-hover: #05203c;
92
+ --bpk-private-chip-colour-bg-default-hover: rgba(255, 255, 255, 0);
93
+ --bpk-private-chip-colour-bg-default-off: rgba(255, 255, 255, 0);
92
94
  --bpk-private-chip-colour-bg-default-on: #05203c;
93
95
  --bpk-private-chip-colour-bg-disabled: #e0e4e9;
94
96
  --bpk-private-chip-colour-bg-on-contrast-hover: #ffffff;
@@ -130,7 +132,7 @@
130
132
  --bpk-private-map-previous-selection: #cfe4ff;
131
133
  --bpk-private-navigation-tabs-hover: #154679;
132
134
  --bpk-private-navigation-tabs-outline: rgba(255, 255, 255, 0.2);
133
- --bpk-private-navigation-tabs-selected: #024daf;
135
+ --bpk-private-navigation-tabs-selected: #0062e3;
134
136
  --bpk-private-radio-bg-default-disabled: #c1c7cf;
135
137
  --bpk-private-radio-bg-default-on: #0062e3;
136
138
  --bpk-private-radio-bg-on-contrast-off: #ffffff;
@@ -165,6 +167,8 @@
165
167
  --bpk-private-shadow-xl-position-y: 0.75rem;
166
168
  --bpk-private-shadow-xl-spread: 0;
167
169
  --bpk-private-skeleton-on-dark: rgba(255, 255, 255, 0.1);
170
+ --bpk-private-slider-bg-knob: #0062e3;
171
+ --bpk-private-slider-bg-track: #0062e3;
168
172
  --bpk-private-speech-bubble-colour-bg-contrast: #eff3f8;
169
173
  --bpk-private-speech-bubble-colour-bg-default: #ffffff;
170
174
  --bpk-private-trip-advisor: #00aa6c;
@@ -185,7 +189,7 @@
185
189
  --bpk-surface-elevated: #ffffff;
186
190
  --bpk-surface-hero: #0062e3;
187
191
  --bpk-surface-highlight: #e0e4e9;
188
- --bpk-surface-low-contrast: #f7f9fb;
192
+ --bpk-surface-low-contrast: #f5f7fa;
189
193
  --bpk-surface-subtle: #e3f0ff;
190
194
  --bpk-surface-success-fill: #d4fff2;
191
195
  --bpk-surface-tint: rgba(255, 255, 255, 0.1);
@@ -210,6 +214,35 @@
210
214
  --bpk-typography-kerning-default: 0;
211
215
  --bpk-typography-kerning-loose: 0;
212
216
  --bpk-typography-kerning-tight: 0;
217
+ --bpk-typography-line-heights-16: 1rem;
218
+ --bpk-typography-line-heights-20: 1.25rem;
219
+ --bpk-typography-line-heights-24: 1.5rem;
220
+ --bpk-typography-line-heights-28: 1.75rem;
221
+ --bpk-typography-line-heights-40: 2.5rem;
222
+ --bpk-typography-line-heights-48: 3rem;
223
+ --bpk-typography-line-heights-64: 4rem;
224
+ --bpk-typography-line-heights-76: 4.75rem;
225
+ --bpk-typography-line-heights-82: 5.125rem;
226
+ --bpk-typography-line-heights-96: 6rem;
227
+ --bpk-typography-line-heights-115: 7.1875rem;
228
+ --bpk-typography-line-heights-120: 7.5rem;
229
+ --bpk-typography-line-heights-153: 9.625rem;
230
+ --bpk-typography-line-heights-192: 12rem;
231
+ --bpk-typography-sizes-12: 0.75rem;
232
+ --bpk-typography-sizes-14: 0.875rem;
233
+ --bpk-typography-sizes-20: 1.25rem;
234
+ --bpk-typography-sizes-24: 1.5rem;
235
+ --bpk-typography-sizes-32: 2rem;
236
+ --bpk-typography-sizes-40: 2.5rem;
237
+ --bpk-typography-sizes-48: 3rem;
238
+ --bpk-typography-sizes-64: 4rem;
239
+ --bpk-typography-sizes-76: 4.75rem;
240
+ --bpk-typography-sizes-96: 6rem;
241
+ --bpk-typography-sizes-120: 7.5rem;
242
+ --bpk-typography-sizes-144: 9rem;
243
+ --bpk-typography-sizes-192: 12rem;
244
+ --bpk-typography-sizes-240: 15rem;
245
+ --bpk-typography-sizes-base: 1rem;
213
246
  --bpk-typography-style-body: 400;
214
247
  --bpk-typography-style-headline: 700;
215
248
  --bpk-typography-style-hero: 900;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyscanner/backpack-web",
3
- "version": "43.0.0",
3
+ "version": "43.2.0",
4
4
  "description": "Backpack Design System web library",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,7 +31,7 @@
31
31
  "@radix-ui/react-slider": "1.3.5",
32
32
  "@react-google-maps/api": "^2.19.3",
33
33
  "@skyscanner/bpk-foundations-web": "^24.6.0",
34
- "@skyscanner/bpk-svgs": "^20.11.0",
34
+ "@skyscanner/bpk-svgs": "^20.14.0",
35
35
  "tabbable": "^6.4.0",
36
36
  "d3-path": "^3.1.0",
37
37
  "d3-scale": "^4.0.2",
@@ -1,241 +0,0 @@
1
- /*
2
- * Backpack - Skyscanner's Design System
3
- *
4
- * Copyright 2016 Skyscanner Ltd
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
-
19
- /* stylelint-disable at-rule-disallowed-list */
20
-
21
- @use 'tokens';
22
- @use 'typography';
23
- @use 'radii';
24
- @use 'utils';
25
-
26
- ////
27
- /// @group badges
28
- ////
29
-
30
- /// Standard badge.
31
- ///
32
- /// @example scss
33
- /// .selector {
34
- /// @include bpk-badge();
35
- /// }
36
-
37
- @mixin bpk-badge {
38
- display: inline-flex;
39
- padding: tokens.bpk-spacing-sm() tokens.bpk-spacing-md();
40
- align-items: center;
41
-
42
- @include radii.bpk-border-radius-xs;
43
- @include typography.bpk-text;
44
- @include typography.bpk-footnote;
45
- }
46
-
47
- /// Centered badge. Modifies the bpk-badge mixin.
48
- ///
49
- /// @require {mixin} bpk-badge
50
- ///
51
- /// @example scss
52
- /// .selector {
53
- /// @include bpk-badge();
54
- /// @include bpk-badge--centered();
55
- /// }
56
-
57
- @mixin bpk-badge--centered {
58
- vertical-align: text-bottom;
59
- }
60
-
61
- /// Right-docked badge. Modifies the bpk-badge mixin.
62
- ///
63
- /// @require {mixin} bpk-badge
64
- ///
65
- /// @example scss
66
- /// .selector {
67
- /// @include bpk-badge();
68
- /// @include bpk-badge--docked-right();
69
- /// }
70
-
71
- @mixin bpk-badge--docked-right {
72
- position: absolute;
73
- top: 0;
74
- right: 0;
75
- border-top-left-radius: 0;
76
- border-top-right-radius: 0;
77
- border-bottom-right-radius: 0;
78
-
79
- @include utils.bpk-rtl {
80
- right: inherit;
81
- left: 0;
82
- border-bottom-left-radius: 0;
83
- border-bottom-right-radius: tokens.$bpk-border-radius-xs;
84
- }
85
- }
86
-
87
- /// Left-docked badge. Modifies the bpk-badge mixin.
88
- ///
89
- /// @require {mixin} bpk-badge
90
- ///
91
- /// @example scss
92
- /// .selector {
93
- /// @include bpk-badge();
94
- /// @include bpk-badge--docked-left();
95
- /// }
96
-
97
- @mixin bpk-badge--docked-left {
98
- position: absolute;
99
- top: 0;
100
- left: 0;
101
- border-top-left-radius: 0;
102
- border-top-right-radius: 0;
103
- border-bottom-left-radius: 0;
104
-
105
- @include utils.bpk-rtl {
106
- right: 0;
107
- left: inherit;
108
- border-bottom-left-radius: tokens.$bpk-border-radius-xs;
109
- border-bottom-right-radius: 0;
110
- }
111
- }
112
-
113
- /// Normal badge. Modifies the bpk-badge mixin.
114
- ///
115
- /// @require {mixin} bpk-badge
116
- ///
117
- /// @example scss
118
- /// .selector {
119
- /// @include bpk-badge();
120
- /// @include bpk-badge--normal();
121
- /// }
122
-
123
- @mixin bpk-badge--normal {
124
- background-color: tokens.$bpk-private-badge-background-normal-day;
125
- color: tokens.$bpk-text-primary-day;
126
- fill: tokens.$bpk-text-primary-day;
127
- }
128
-
129
- /// Warning badge. Modifies the bpk-badge mixin.
130
- ///
131
- /// @require {mixin} bpk-badge
132
- ///
133
- /// @example scss
134
- /// .selector {
135
- /// @include bpk-badge();
136
- /// @include bpk-badge--warning();
137
- /// }
138
-
139
- @mixin bpk-badge--warning {
140
- background-color: tokens.$bpk-private-badge-background-normal-day;
141
- color: tokens.$bpk-text-on-light-day;
142
- fill: tokens.$bpk-status-warning-spot-day;
143
- }
144
-
145
- /// Success badge. Modifies the bpk-badge mixin.
146
- ///
147
- /// @require {mixin} bpk-badge
148
- ///
149
- /// @example scss
150
- /// .selector {
151
- /// @include bpk-badge();
152
- /// @include bpk-badge--success();
153
- /// }
154
-
155
- @mixin bpk-badge--success {
156
- background-color: tokens.$bpk-private-badge-background-normal-day;
157
- color: tokens.$bpk-text-on-light-day;
158
- fill: tokens.$bpk-status-success-spot-day;
159
- }
160
-
161
- /// Critical badge. Modifies the bpk-badge mixin.
162
- ///
163
- /// @require {mixin} bpk-badge
164
- ///
165
- /// @example scss
166
- /// .selector {
167
- /// @include bpk-badge();
168
- /// @include bpk-badge--critical();
169
- /// }
170
-
171
- @mixin bpk-badge--critical {
172
- background-color: tokens.$bpk-private-badge-background-normal-day;
173
- color: tokens.$bpk-text-on-light-day;
174
- fill: tokens.$bpk-status-danger-spot-day;
175
- }
176
-
177
- /// Inverse badge. Modifies the bpk-badge mixin.
178
- ///
179
- /// @require {mixin} bpk-badge
180
- ///
181
- /// @example scss
182
- /// .selector {
183
- /// @include bpk-badge();
184
- /// @include bpk-badge--inverse();
185
- /// }
186
-
187
- @mixin bpk-badge--inverse {
188
- background-color: tokens.$bpk-surface-default-day;
189
- color: tokens.$bpk-text-primary-day;
190
- fill: tokens.$bpk-text-primary-day;
191
- }
192
-
193
- /// Outline badge. Modifies the bpk-badge mixin.
194
- ///
195
- /// @require {mixin} bpk-badge
196
- ///
197
- /// @example scss
198
- /// .selector {
199
- /// @include bpk-badge();
200
- /// @include bpk-badge--outline();
201
- /// }
202
-
203
- @mixin bpk-badge--outline {
204
- background-color: transparent;
205
- color: tokens.$bpk-text-on-dark-day;
206
- box-shadow: inset 0 0 0 tokens.$bpk-border-size-sm
207
- tokens.$bpk-text-on-dark-day;
208
- fill: tokens.$bpk-text-on-dark-day;
209
- }
210
-
211
- /// Strong badge. Modifies the bpk-badge mixin.
212
- ///
213
- /// @require {mixin} bpk-badge
214
- ///
215
- /// @example scss
216
- /// .selector {
217
- /// @include bpk-badge();
218
- /// @include bpk-badge--strong();
219
- /// }
220
-
221
- @mixin bpk-badge--strong {
222
- background-color: tokens.$bpk-core-primary-day;
223
- color: tokens.$bpk-text-on-dark-day;
224
- fill: tokens.$bpk-text-on-dark-day;
225
- }
226
-
227
- /// Brand badge. Modifies the bpk-badge mixin.
228
- ///
229
- /// @require {mixin} bpk-badge
230
- ///
231
- /// @example scss
232
- /// .selector {
233
- /// @include bpk-badge();
234
- /// @include bpk-badge--brand();
235
- /// }
236
-
237
- @mixin bpk-badge--brand {
238
- background-color: tokens.$bpk-core-accent-day;
239
- color: tokens.$bpk-text-primary-inverse-day;
240
- fill: tokens.$bpk-text-primary-inverse-day;
241
- }