@royaloperahouse/harmonic 1.0.5-a → 1.0.5-c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,17 +1,35 @@
1
- ## [1.0.4]
1
+ ## [1.0.5-c]
2
+ - Harmonic :
3
+ - Added new CustomStrategy filter
4
+ - Fixed alignment between title and sponsor logo upon Header
5
+ - extended HighlightsCarousel to change infinit from false to true
6
+
7
+ ## [Proposed: 1.0.5]
8
+ - CastFilter: prevent duplicate screen reader announcements for actor images and ensure tapping an actor image ring toggles selection.
9
+
10
+ ## [Proposed: 1.0.4]
2
11
  - Castfilter: fix NDVA issues
3
12
 
4
13
  ## [1.0.3]
5
14
  - Carousel title realignment following font change
6
15
 
7
- ## [1.0.2]
8
- - AnchorTabBar: fix focused element
16
+ ## [Proposed: 1.0.2]
17
+ - CastFilter: fix VoiceOver selection semantics and option activation (desktop/iOS).
18
+ - CastFilter: add stable id-based selection support (`selectedIds`, `onSelectId`, `onApplyIds`) with backward compatibility for legacy index-based API.
19
+ - ModalWindow: add `closeButtonAriaLabel` and set close icon `aria-hidden="true"`
20
+
21
+ ## [Proposed: 1.0.1]
22
+ - Accessibility fixes to CastFilter component
23
+
24
+ ## [0.19.3]
25
+ - Carousel title realignment following font change
26
+
9
27
 
10
28
  ## [1.0.1]
11
29
  - Carousel: fix first click
12
30
 
13
31
  ## [1.0.0]
14
- Addressed some tech debt:
32
+ Addressed some tech debt:
15
33
  - all components are now exported for consumption from top-level public API export.
16
34
  - Removed Radio, RadioGroup and Select components.
17
35
  - cleaned up import/export structure of components
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { IDropdownProps } from '../../../types/types';
3
- declare const Dropdown: ({ title, titleLink, selected, options, onChange, iconName, isMobileBehaviour, withOptionsInMobile, withIcon, className, role, ariaLabel, trimTabText, }: IDropdownProps) => React.JSX.Element;
3
+ declare const Dropdown: ({ title, titleLink, selected, options, onChange, iconName, isMobileBehaviour, withOptionsInMobile, withIcon, className, role, ariaLabel, tabLinkId, trimTabText, }: IDropdownProps) => React.JSX.Element;
4
4
  export default Dropdown;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { ITabProps } from '../../../types/types';
3
- declare const Tab: ({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, color, dataTestId, isOpen, }: ITabProps) => React.JSX.Element;
3
+ declare const Tab: ({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, tabLinkId, color, dataTestId, isOpen, }: ITabProps) => React.JSX.Element;
4
4
  export default Tab;
@@ -1,8 +1,8 @@
1
1
  import { DisplayHeader, HarmonicHeader, HarmonicSubtitle, BodyCopyHarmonic, HarmonicOverline, ButtonText, Caption, NavigationText } from './Typography';
2
2
  import { Account, AltHeader, BodyText, CinemaBadge, ControlledDropdown, Dropdown, Grid, GridItem, Header, Icon, ImageAspectRatioWrapper, Logo, Overline, Person, PrimaryButton, Progress, Radio2, RotatorButtons, Search, SecondaryButton, SecondaryLogo, TertiaryButton, SectionSplitter, SocialLinks, SponsorLogo, Sponsorship, Stepper, StreamBadge, Subtitle, Tab, TabLink, TextLogo, TextArea, TextField, TextFieldLegacy, TextLink, Tickbox, Tickbox2, Timer, TypeTags, VideoControls } from './atoms';
3
3
  import { AnchorTabBar, Footer, Navigation, StickyBar, TitleWithCTA, UpsellSection, Carousel, MinimalCarousel, HighlightsCarousel, HighlightsCarouselCinema, HighlightsCarouselCore, HighlightsCarouselStream, ModalWindow } from './organisms';
4
- import { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CreditListing, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, NavTop, PersonDetails, PersonCard, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlight, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Table, Tabs, UpsellCard, UpsellCards, VideoWithControls, SkipToMain } from './molecules';
4
+ import { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CreditListing, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, CustomStrategyTabsFilter, NavTop, PersonDetails, PersonCard, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlight, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Table, Tabs, UpsellCard, UpsellCards, VideoWithControls, SkipToMain } from './molecules';
5
5
  import ThemeProvider from '../styles/ThemeProvider';
6
6
  import GlobalStyles from '../styles/GlobalStyles';
7
7
  export { DisplayHeader, HarmonicHeader, HarmonicSubtitle, BodyCopyHarmonic, HarmonicOverline, ButtonText, Caption, NavigationText, SkipToMain, };
8
- export { Accordion, Accordions, Account, AnchorBar, AnnouncementBanner, AltHeader, AnchorTabBar, AuxiliaryNav, Basket, BodyContent, BodyText, Card, Cards, Carousel, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CinemaBadge, ControlledDropdown, Dropdown, CreditListing, Editorial, Footer, GlobalStyles, Grid, GridItem, HighlightsCarousel, HighlightsCarouselCinema, HighlightsCarouselCore, HighlightsCarouselStream, Header, HotFilters, Icon, ImageAspectRatioWrapper, ImageWithCaption, Information, Logo, MinimalCarousel, MiniCard, ModalWindow, NavTop, Navigation, Overline, Person, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingHighlight, PageHeadingPromo, PageHeadingHighlightCarousel, Pagination, PasswordStrength, Paywall, PeopleListing, PolicyLinks, PrimaryButton, Progress, PromoWithTags, PromoWithTitle, Quote, Radio2, RadioGroup2, ReadMore, RotatorButtons, Search, SecondaryButton, SecondaryLogo, SocialLinks, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SponsorLogo, SignUpForm, Swipe, SwipeRef, Sponsorship, Stepper, StickyBar, StreamBadge, Subtitle, TertiaryButton, ThemeProvider, TitleWithCTA, SectionSplitter, Tab, TabLink, Table, Tabs, TextArea, TextField, TextFieldLegacy, TextLink, TextLogo, Tickbox, Tickbox2, Timer, TypeTags, UpsellCard, UpsellCards, UpsellSection, VideoControls, VideoWithControls, };
8
+ export { Accordion, Accordions, Account, AnchorBar, AnnouncementBanner, AltHeader, AnchorTabBar, AuxiliaryNav, Basket, BodyContent, BodyText, Card, Cards, Carousel, CastFilter, ContactNewsletter, ContactCard, ContentSummary, CinemaBadge, ControlledDropdown, CustomStrategyTabsFilter, Dropdown, CreditListing, Editorial, Footer, GlobalStyles, Grid, GridItem, HighlightsCarousel, HighlightsCarouselCinema, HighlightsCarouselCore, HighlightsCarouselStream, Header, HotFilters, Icon, ImageAspectRatioWrapper, ImageWithCaption, Information, Logo, MinimalCarousel, MiniCard, ModalWindow, NavTop, Navigation, Overline, Person, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingPanel, PageHeadingHighlight, PageHeadingPromo, PageHeadingHighlightCarousel, Pagination, PasswordStrength, Paywall, PeopleListing, PolicyLinks, PrimaryButton, Progress, PromoWithTags, PromoWithTitle, Quote, Radio2, RadioGroup2, ReadMore, RotatorButtons, Search, SecondaryButton, SecondaryLogo, SocialLinks, StatusBanner, SearchBar, SectionTitle, Select2, Select2Async, SponsorLogo, SignUpForm, Swipe, SwipeRef, Sponsorship, Stepper, StickyBar, StreamBadge, Subtitle, TertiaryButton, ThemeProvider, TitleWithCTA, SectionSplitter, Tab, TabLink, Table, Tabs, TextArea, TextField, TextFieldLegacy, TextLink, TextLogo, Tickbox, Tickbox2, Timer, TypeTags, UpsellCard, UpsellCards, UpsellSection, VideoControls, VideoWithControls, };
@@ -0,0 +1,19 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { IconNameType, TCustomStrategyTabsFilterProps, ThemeColor } from '../../../types';
3
+ export interface ICustomConfig {
4
+ selectIcon: IconNameType;
5
+ backgroundColor: {
6
+ select: ThemeColor;
7
+ unselect: ThemeColor;
8
+ };
9
+ textColor: {
10
+ select: ThemeColor;
11
+ unselect: ThemeColor;
12
+ };
13
+ hoveredColor: ThemeColor;
14
+ pressedColor: ThemeColor;
15
+ }
16
+ declare const CustomStrategyTabsFilter: FunctionComponent<TCustomStrategyTabsFilterProps & {
17
+ customViewConfig?: ICustomConfig;
18
+ }>;
19
+ export default CustomStrategyTabsFilter;
@@ -0,0 +1,2 @@
1
+ import CustomStrategyTabsFilter from './CustomStrategyTabsFilter';
2
+ export default CustomStrategyTabsFilter;
@@ -0,0 +1,18 @@
1
+ export declare const ScrollContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export declare const TabsContainerWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
3
+ export declare const StyledTab: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<{
4
+ children: import("react").ReactNode;
5
+ onClick?: ((event: import("react").MouseEvent<HTMLAnchorElement, MouseEvent>) => void) | undefined;
6
+ className?: string | undefined;
7
+ } & {
8
+ iconName?: "AddToMyList" | "Arrow" | "ArrowPagination" | "AudioDescription" | "Back10" | "BalletAndDance" | "Basket" | "BasketFull" | "BritishSignLanguage" | "BookTickets" | "CarouselArrow" | "ChooseDates" | "Cinema" | "Clips" | "Clock" | "Close" | "Captioned" | "ClosedCaptions" | "Confirm" | "CreditCard" | "Delete" | "Detract" | "DropdownArrow" | "EditMyList" | "Email" | "Expand" | "Expand12px" | "ExternalLink" | "Facebook" | "FamilyFriendly" | "Favourite" | "FavouriteFull" | "Filter" | "FindAScreening" | "Forward10" | "FullScreen" | "GridView" | "Home" | "Info" | "Instagram" | "LastPageArrow" | "List" | "ListView" | "LiveStream" | "Location" | "Menu" | "Minimise" | "Muted" | "NavLogoMobile" | "NavLogoNoCrest" | "NavLogoWithCrest" | "OnMyList" | "OpenCaptions" | "OperaAndMusic" | "Pause" | "PDF" | "Phone" | "Play" | "Print" | "Refresh" | "RelaxedPerformance" | "Reminder" | "Remove" | "Remove12px" | "Restart" | "Search" | "Seat" | "Secure" | "Settings" | "Shift" | "Space" | "Standing" | "Star" | "Subscribe" | "Subtitles" | "Tick" | "Tickets" | "Tiktok" | "TouchTour" | "Trailer" | "Twitter" | "User" | "UserSignedIn" | "Volume" | "Watch" | "Wheelchair" | "X" | "Youtube" | undefined;
9
+ iconDirection?: "left" | "right" | "up" | "down" | "reverse" | undefined;
10
+ iconClassName?: string | undefined;
11
+ } & import("react").AnchorHTMLAttributes<HTMLAnchorElement> & Pick<{
12
+ textColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
13
+ backgroundColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
14
+ borderColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
15
+ hoveredColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
16
+ pressedColor?: "primary" | "primary-red" | "primary-black" | "base-white" | "base-black" | "base-dark-grey" | "base-mid-grey" | "base-light-grey" | "base-transparent" | "state-error" | "state-medium" | "state-good" | "state-focused" | "state-disabled" | "rbo-red-hovered" | "rbo-red-pressed" | "rbo-black-hovered" | "rbo-black-pressed" | "black-hovered" | "black-pressed" | "white-hovered" | "white-pressed" | "secondary-yellow" | "secondary-pink" | "secondary-orange" | "secondary-blue" | undefined;
17
+ disabled?: boolean | undefined;
18
+ }, "textColor" | "backgroundColor" | "hoveredColor" | "pressedColor" | "disabled"> & import("react").RefAttributes<HTMLAnchorElement>>, any, {}, never>;
@@ -1,11 +1,12 @@
1
1
  export interface IPageHeadingWrapperProps {
2
2
  isPageHeadingWithoutTitle?: boolean;
3
+ isMultipleRow?: boolean;
3
4
  }
4
5
  export declare const PageHeadingWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
5
- export declare const PageHeadingGrid: import("styled-components").StyledComponent<"div", any, {}, never>;
6
+ export declare const PageHeadingGrid: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
6
7
  export declare const BadgeWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
7
8
  export declare const TitleWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
8
9
  export declare const ChildrenWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
9
10
  export declare const TextWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
10
11
  export declare const LogoWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
11
- export declare const ButtonWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
12
+ export declare const ButtonWrapper: import("styled-components").StyledComponent<"div", any, IPageHeadingWrapperProps, never>;
@@ -1,6 +1,6 @@
1
1
  interface FocusableTabProps {
2
2
  hide?: boolean;
3
3
  }
4
- export declare const FocusableTab: import("styled-components").StyledComponent<({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, color, dataTestId, isOpen, }: import("../../../types/types").ITabProps) => import("react").JSX.Element, any, FocusableTabProps, never>;
4
+ export declare const FocusableTab: import("styled-components").StyledComponent<({ title, titleLink, onClick, onFocus, onReset, selected, iconName, iconDirection, withIcon, withTextInMobile, trimText, className, role, ariaLabel, tabLinkId, color, dataTestId, isOpen, }: import("../../../types/types").ITabProps) => import("react").JSX.Element, any, FocusableTabProps, never>;
5
5
  export declare const HiddenBlock: import("styled-components").StyledComponent<"div", any, {}, never>;
6
6
  export {};
@@ -11,6 +11,7 @@ import ContactNewsletter from './ContactNewsletter';
11
11
  import ContentSummary from './ContentSummary';
12
12
  import Editorial from './Editorial';
13
13
  import HotFilters from './HotFilters';
14
+ import CustomStrategyTabsFilter from './CustomStrategyTabsFilter';
14
15
  import Information from './Information';
15
16
  import { PageHeading, PageHeadingImpact, PageHeadingPanel, PageHeadingCompact, PageHeadingPromo, PageHeadingHighlight, PageHeadingHighlightCarousel } from './PageHeading';
16
17
  import Pagination from './Pagination';
@@ -43,4 +44,4 @@ import AnchorBar from './AnchorBar';
43
44
  import SkipToMain from './SkipToMain';
44
45
  import Paywall from './Paywall';
45
46
  import UpsellCards from './UpsellCards';
46
- export { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactCard, ContactNewsletter, ContentSummary, CreditListing, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, NavTop, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingHighlight, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SectionTitle, SearchBar, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Tabs, Table, UpsellCard, UpsellCards, VideoWithControls, SkipToMain, };
47
+ export { Accordion, Accordions, AnchorBar, AnnouncementBanner, AuxiliaryNav, Basket, BodyContent, Card, Cards, CastFilter, ContactCard, ContactNewsletter, ContentSummary, CreditListing, CustomStrategyTabsFilter, Editorial, HotFilters, ImageWithCaption, Information, MiniCard, NavTop, PersonCard, PersonDetails, PageHeading, PageHeadingCompact, PageHeadingImpact, PageHeadingHighlight, PageHeadingPanel, PageHeadingPromo, PageHeadingHighlightCarousel, PasswordStrength, Pagination, Paywall, PeopleListing, PolicyLinks, PromoWithTags, PromoWithTitle, Quote, RadioGroup2, ReadMore, StatusBanner, SectionTitle, SearchBar, Select2, Select2Async, SignUpForm, Swipe, SwipeRef, Tabs, Table, UpsellCard, UpsellCards, VideoWithControls, SkipToMain, };
@@ -1,6 +1,16 @@
1
1
  import { FunctionComponent } from 'react';
2
2
  import { IHighlightsCarouselProps } from '../../../../types/carousel';
3
+ import { HarmonicSize, TypographyLevel } from '../../../../types/typography';
4
+ interface IDefaultConfig {
5
+ title: {
6
+ className: string;
7
+ size?: HarmonicSize | undefined;
8
+ titleSemanticLevel: TypographyLevel;
9
+ };
10
+ }
3
11
  declare const HighlightsCarousel: FunctionComponent<IHighlightsCarouselProps & Partial<{
4
12
  titleFontFamily: 'Victor' | 'Grey' | undefined;
5
- }>>;
13
+ }> & {
14
+ customConfig?: Partial<IDefaultConfig> | undefined;
15
+ }>;
6
16
  export default HighlightsCarousel;
@@ -350,6 +350,325 @@
350
350
  font-display: swap;
351
351
  }
352
352
 
353
+ /* ~~~~~ General Styling Classes ~~~~~ */
354
+ .typography_color-primary__LOfDi {
355
+ color: var(--color-primary);
356
+ }
357
+
358
+ .typography_color-black__6MHRL {
359
+ color: var(--color-base-black);
360
+ }
361
+
362
+ .typography_color-white__PfW5s {
363
+ color: var(--color-base-white);
364
+ }
365
+
366
+ .typography_color-red__iPlbG {
367
+ color: var(--color-primary-red);
368
+ }
369
+
370
+ .typography_color-grey__GA1c2 {
371
+ color: var(--color-base-dark-grey);
372
+ }
373
+
374
+ .typography_color-inherit__RDd0Y {
375
+ color: inherit;
376
+ }
377
+
378
+ .typography_em__E6tX- {
379
+ font-style: italic;
380
+ }
381
+ /* ~~~ */
382
+
383
+ /* Display Headers */
384
+ .typography_display__-F3p4 {
385
+ margin: 0;
386
+ font-family: var(--font-family-sans);
387
+ line-height: 100%;
388
+
389
+ &.typography_large__uq0zC {
390
+ font-size: 96px;
391
+ font-weight: 700;
392
+ letter-spacing: -5px;
393
+ }
394
+
395
+ &.typography_small__wfQ0K {
396
+ font-size: 68px;
397
+ font-weight: 500;
398
+ letter-spacing: -3px;
399
+ }
400
+
401
+ /* Serif and Italic styles */
402
+ &.typography_serif__VSO38,
403
+ &.typography_em__E6tX- {
404
+ font-family: var(--font-family-serif);
405
+ font-weight: 500;
406
+ }
407
+
408
+ /* Serif and Italic adjustments */
409
+ &.typography_large__uq0zC.typography_serif__VSO38,
410
+ &.typography_large__uq0zC.typography_em__E6tX- {
411
+ letter-spacing: -3px;
412
+ }
413
+
414
+ &.typography_small__wfQ0K.typography_serif__VSO38,
415
+ &.typography_small__wfQ0K.typography_em__E6tX- {
416
+ letter-spacing: -2px;
417
+ }
418
+
419
+ @media (max-width: 699px) {
420
+ &.typography_large__uq0zC {
421
+ font-size: 38px;
422
+ letter-spacing: -1.5px;
423
+ }
424
+
425
+ &.typography_small__wfQ0K {
426
+ font-size: 32px;
427
+ letter-spacing: -1.5px;
428
+ }
429
+
430
+ &.typography_large__uq0zC.typography_serif__VSO38,
431
+ &.typography_large__uq0zC.typography_em__E6tX-,
432
+ &.typography_small__wfQ0K.typography_serif__VSO38,
433
+ &.typography_small__wfQ0K.typography_em__E6tX- {
434
+ letter-spacing: -0.5px;
435
+ }
436
+ }
437
+ }
438
+
439
+ /* Headers */
440
+ .typography_header__BexiD {
441
+ margin: 0;
442
+ font-family: var(--font-family-sans);
443
+ font-weight: 500;
444
+
445
+ &.typography_large__uq0zC {
446
+ font-size: 44px;
447
+ line-height: 48px;
448
+ letter-spacing: -1.5px;
449
+ }
450
+
451
+ &.typography_medium__K0uZD {
452
+ font-size: 34px;
453
+ line-height: 40px;
454
+ letter-spacing: -1px;
455
+ }
456
+
457
+ &.typography_small__wfQ0K {
458
+ font-size: 26px;
459
+ line-height: 32px;
460
+ letter-spacing: -0.5px;
461
+ }
462
+
463
+ /* Serif and Italic styles */
464
+ &.typography_serif__VSO38,
465
+ &.typography_em__E6tX- {
466
+ font-family: var(--font-family-serif);
467
+ }
468
+
469
+ /* Serif and Italic letter-spacing overrides */
470
+ &.typography_large__uq0zC.typography_serif__VSO38,
471
+ &.typography_large__uq0zC.typography_em__E6tX- {
472
+ letter-spacing: -0.5px;
473
+ }
474
+
475
+ &.typography_medium__K0uZD.typography_serif__VSO38,
476
+ &.typography_medium__K0uZD.typography_em__E6tX- {
477
+ letter-spacing: -0.5px;
478
+ }
479
+
480
+ &.typography_small__wfQ0K.typography_serif__VSO38,
481
+ &.typography_small__wfQ0K.typography_em__E6tX- {
482
+ letter-spacing: -0.5px;
483
+ }
484
+
485
+ @media (max-width: 699px) {
486
+ &.typography_large__uq0zC {
487
+ font-size: 28px;
488
+ line-height: 34px;
489
+ letter-spacing: -1.5px;
490
+ }
491
+
492
+ &.typography_medium__K0uZD {
493
+ font-size: 24px;
494
+ line-height: 28px;
495
+ letter-spacing: -1px;
496
+ }
497
+
498
+ &.typography_small__wfQ0K {
499
+ font-size: 20px;
500
+ line-height: 26px;
501
+ letter-spacing: -0.75px;
502
+ }
503
+
504
+ /* Mobile overrides for serif/italic letter-spacing */
505
+ &.typography_large__uq0zC.typography_serif__VSO38,
506
+ &.typography_large__uq0zC.typography_em__E6tX-,
507
+ &.typography_medium__K0uZD.typography_serif__VSO38,
508
+ &.typography_medium__K0uZD.typography_em__E6tX-,
509
+ &.typography_small__wfQ0K.typography_serif__VSO38,
510
+ &.typography_small__wfQ0K.typography_em__E6tX- {
511
+ letter-spacing: -0.5px;
512
+ }
513
+ }
514
+ }
515
+
516
+ /* Subtitle */
517
+ .typography_subtitle__aoFTV {
518
+ margin: 0;
519
+ font-family: var(--font-family-sans);
520
+ font-weight: 500;
521
+
522
+ &.typography_large__uq0zC {
523
+ font-size: 19px;
524
+ line-height: 26px;
525
+ letter-spacing: -0.5px;
526
+ }
527
+
528
+ &.typography_small__wfQ0K {
529
+ font-size: 17px;
530
+ line-height: 24px;
531
+ letter-spacing: -0.5px;
532
+ }
533
+
534
+ @media (max-width: 699px) {
535
+ &.typography_large__uq0zC {
536
+ font-size: 17px;
537
+ line-height: 24px;
538
+ letter-spacing: -0.5px;
539
+ }
540
+
541
+ &.typography_small__wfQ0K {
542
+ font-size: 14px;
543
+ line-height: 20px;
544
+ letter-spacing: -0.2px;
545
+ }
546
+ }
547
+ }
548
+
549
+ /* Body Copy */
550
+ .typography_bodycopy__vYtQ8 {
551
+ margin: 0;
552
+ font-family: var(--font-family-sans);
553
+ font-weight: 400;
554
+
555
+ &.typography_large__uq0zC {
556
+ font-size: 19px;
557
+ line-height: 26px;
558
+ letter-spacing: -0.5px;
559
+ }
560
+
561
+ &.typography_medium__K0uZD {
562
+ font-size: 17px;
563
+ line-height: 24px;
564
+ letter-spacing: -0.5px;
565
+ }
566
+
567
+ &.typography_small__wfQ0K {
568
+ font-size: 14px;
569
+ line-height: 20px;
570
+ letter-spacing: -0.5px;
571
+ }
572
+
573
+ @media (max-width: 699px) {
574
+ &.typography_large__uq0zC {
575
+ font-size: 17px;
576
+ line-height: 24px;
577
+ letter-spacing: -0.5px;
578
+ }
579
+
580
+ &.typography_medium__K0uZD {
581
+ font-size: 14px;
582
+ line-height: 20px;
583
+ letter-spacing: -0.2px;
584
+ }
585
+
586
+ &.typography_small__wfQ0K {
587
+ font-size: 11px;
588
+ line-height: 16px;
589
+ letter-spacing: -0.2px;
590
+ }
591
+ }
592
+ }
593
+
594
+ /* Overline */
595
+ .typography_overline__EnUK3 {
596
+ margin: 0;
597
+ font-family: var(--font-family-sans);
598
+ font-weight: 500;
599
+ text-transform: uppercase;
600
+
601
+ &.typography_large__uq0zC {
602
+ font-size: 14px;
603
+ line-height: 18px;
604
+ letter-spacing: 0.3px;
605
+ }
606
+
607
+ &.typography_small__wfQ0K {
608
+ font-size: 12px;
609
+ line-height: 14px;
610
+ letter-spacing: 0.2px;
611
+ }
612
+
613
+ @media (max-width: 699px) {
614
+ &.typography_large__uq0zC {
615
+ line-height: 17px;
616
+ letter-spacing: 0.3px; /* Added to ensure it stays */
617
+ }
618
+
619
+ &.typography_small__wfQ0K {
620
+ line-height: 14px;
621
+ letter-spacing: 0.3px;
622
+ }
623
+ }
624
+ }
625
+
626
+ /* Button Text */
627
+ .typography_buttontext__vcxNi {
628
+ margin: 0;
629
+ font-family: var(--font-family-sans);
630
+ font-size: 17px;
631
+ line-height: 20px;
632
+ letter-spacing: -0.5px;
633
+ font-weight: 400;
634
+
635
+ @media (max-width: 699px) {
636
+ font-weight: 500;
637
+ line-height: 17px;
638
+ }
639
+ }
640
+
641
+ /* Caption Text */
642
+ .typography_captiontext__91UFb {
643
+ margin: 0;
644
+ font-family: var(--font-family-sans);
645
+ font-weight: 400;
646
+ font-size: 17px;
647
+ line-height: 24px;
648
+ letter-spacing: -0.5px;
649
+
650
+ @media (max-width: 699px) {
651
+ font-size: 14px;
652
+ line-height: 20px;
653
+ letter-spacing: -0.2px;
654
+ }
655
+ }
656
+
657
+ /* Navigation Text */
658
+ .typography_navigationtext__YfGf7 {
659
+ margin: 0;
660
+ font-family: var(--font-family-sans);
661
+ font-size: 19px;
662
+ line-height: 19px;
663
+ letter-spacing: 0.4px;
664
+ font-weight: 500;
665
+
666
+ @media (max-width: 699px) {
667
+ font-size: 17px;
668
+ line-height: 17px;
669
+ }
670
+ }
671
+
353
672
  .core-theme-module_coreTheme__pWxYB {
354
673
  /* RBO Red */
355
674
  /* Primary Palette */