/*
 * Site-owned overrides on top of the altery-theme build (assets/v2/css/styles.min.css).
 * Kept separate so theme syncs can replace styles.min.css without losing them.
 */

/*
 * Mega-menu height: the theme pins #modal-one / #modal-business to fixed
 * max-heights tuned for the design's mock menus. Our menus carry different item
 * counts, so on desktop size the menu panel to its content instead (still
 * capped at the viewport, scrolling if ever taller).
 */
@media (min-width: 992px) {
  #modal-one,
  #modal-business {
    height: auto;
    max-height: 100vh;
  }

  #modal-one .modal-dialog,
  #modal-business .modal-dialog,
  #modal-one .modal-content,
  #modal-business .modal-content {
    height: auto;
  }
}

/*
 * Fee tables (fees/*): the design greys the row labels and the second region
 * column while the first region column stays body-coloured. Done in CSS so the
 * live fee values in the templates stay untouched.
 */
.fees-v2 .comparison-table {
  font-weight: 500;
}

.fees-v2 .comparison-table tbody tr th[scope="row"],
.fees-v2 .comparison-table tbody tr td:last-child {
  /* The theme sets the row-label colour with !important. */
  color: var(--al-secondary-color) !important;
}

/*
 * Guide articles: section titles are h2.h4 (design), so the bare <h3>
 * sub-headings inside the live article HTML step down to h5 size instead of
 * rendering larger than their section title.
 */
.guide-article h3:not([class]) {
  margin-top: 2rem;
  margin-bottom: 1rem;
  font-size: 1.25rem;
}

/*
 * Blog posts: the live post HTML (h2.h3 / h3 / p / lists with <p> items) laid
 * out like the blog-single.html article column: h2 at h4 size with the
 * design's spacing, h3 one step down, design paragraph rhythm.
 */
.blog-article h2 {
  margin-top: 3rem;
  margin-bottom: 1.5rem;
  font-size: 1.5rem;
}

.blog-article h3 {
  margin-top: 2rem;
  margin-bottom: 1rem;
  font-size: 1.25rem;
}

.blog-article li > p {
  margin-bottom: .5rem;
}

@media (min-width: 768px) {
  .blog-article > div > p,
  .blog-article > div > ul,
  .blog-article > div > ol {
    margin-bottom: 1.5rem;
  }
}

/*
 * Invoice landing (Business, dark theme): the live line icons are drawn in
 * #181818, so on the dark cards they are flipped to light.
 */
[data-bs-theme="dark"] .invoice-icon {
  filter: invert(1);
}

/* Fee footnote lists: each number sits on the first line of its note, so a
   note that wraps (the Apple Pay pricing one) keeps it raised like the rest;
   tabular digits give every note the same text start. */
.fee-footnote-num {
  font-variant-numeric: tabular-nums;
}

/* Centre the info icon on the first line of the notice (one line on desktop,
   several on phones): the icon is 20px, the line box is 1lh of the same text. */
.early-access-strip .early-access-icon {
  margin-top: calc((1lh - 20px) / 2);
}

/*
 * en-cy early-access notice: it sits between the header and the page, so on
 * pages whose first section is a .bg-gradient hero it showed the body colour
 * as a separate strip above the gradient. There the strip takes the
 * gradient's start colour (theme --al-gradient: light #f8e6d8, dark
 * #1f1f1f), so the notice sits on the hero background with no seam.
 */
.early-access-strip:has(~ main > section.bg-gradient:first-of-type) {
  background-color: #f8e6d8;
}

[data-bs-theme="dark"] .early-access-strip:has(~ main > section.bg-gradient:first-of-type) {
  background-color: #1f1f1f;
}

/*
 * Locations block (home + business): vector world map
 * (assets/v2/img/global/world-map.svg, from Figma). Each country path is
 * filled with var(--m-<ISO>, var(--map-land)); a tab pane sets
 * --m-<ISO>: var(--map-highlight) for its countries. Borders take the card
 * colour, so one file serves the light (One) and dark (Business) themes.
 */
.locations-map {
  --map-land: #e5e1e1;
  --map-highlight: var(--al-primary);
  --map-stroke: var(--al-card-bg, #fff);
}

[data-bs-theme="dark"] .locations-map {
  --map-land: #2a2a2a;
}

/*
 * Button states (Figma 819:95512): hover is slightly lighter than the resting
 * colour, press returns to the resting colour.
 *   Primary (orange)        #fb5b0a → hover #fb6b23 → press #fb5b0a (both themes)
 *   Secondary (black)       .btn-dark on light pages: #000 → #181818 → #000
 *   Tertiary (light beige)  .btn-secondary on light pages: #faf3ed → #faf5f1 → #faf3ed
 */
.btn-primary {
  --al-btn-hover-bg: #fb6b23;
  --al-btn-hover-border-color: #fb6b23;
  --al-btn-active-bg: #fb5b0a;
  --al-btn-active-border-color: #fb5b0a;
}

[data-bs-theme="light"] .btn-dark {
  --al-btn-bg: #000;
  --al-btn-border-color: #000;
  --al-btn-hover-bg: #181818;
  --al-btn-hover-border-color: #181818;
  --al-btn-active-bg: #000;
  --al-btn-active-border-color: #000;
}

[data-bs-theme="light"] .btn-secondary {
  --al-btn-color: #1d1d1f;
  --al-btn-bg: #faf3ed;
  --al-btn-border-color: #faf3ed;
  --al-btn-hover-color: #1d1d1f;
  --al-btn-hover-bg: #faf5f1;
  --al-btn-hover-border-color: #faf5f1;
  --al-btn-active-color: #1d1d1f;
  --al-btn-active-bg: #faf3ed;
  --al-btn-active-border-color: #faf3ed;
}

/*
 * Cookie consent banner (Cloudflare Zaraz, Figma 4658:161435 One / 4684:111786
 * Business). Zaraz injects .zaraz-consent-dialog as a body child and styles it
 * from an adopted stylesheet with single-class selectors, so every rule here is
 * prefixed with `html` to win. Only the look changes — the copy and buttons
 * come from the Zaraz settings in Cloudflare.
 */
html .zaraz-consent-dialog {
  --zc-bg: #fff;
  --zc-edge: #faf5f1;
  --zc-text: #1d1d1f;
  --zc-reject-bg: #faf3ed;
  --zc-reject-hover-bg: #faf5f1;
  --zc-reject-text: #1d1d1f;
  left: 50%;
  right: auto;
  bottom: 1.5rem;
  width: min(39.75rem, 100% - 2rem);
  padding: 0;
  transform: translateX(-50%);
}

html[data-bs-theme="dark"] .zaraz-consent-dialog {
  --zc-bg: #181818;
  --zc-edge: #000;
  --zc-text: #fff;
  --zc-reject-bg: #262626;
  --zc-reject-hover-bg: #303030;
  --zc-reject-text: #fff;
}

html .zaraz-consent-dialog_border {
  max-width: none;
  gap: 0.75rem;
  padding: 1rem;
  background-color: var(--zc-bg);
  border: 1px solid var(--zc-edge);
  border-radius: 1.5rem;
  box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.08);
  -webkit-backdrop-filter: blur(100px);
  backdrop-filter: blur(100px);
  font-family: var(--al-body-font-family, inherit);
}

html .zaraz-consent-dialog_title {
  color: var(--zc-text);
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5rem;
}

html .zaraz-consent-dialog_body {
  color: var(--zc-text);
  font-size: 0.875rem;
  line-height: 1.25rem;
}

html .zaraz-consent-dialog_body a {
  color: inherit;
  text-decoration: underline;
}

html .zaraz-consent-dialog_footer {
  gap: 0.75rem;
  margin-top: 0.5rem;
}

html .zaraz-consent-dialog_footer button {
  flex: 0 0 auto;
  height: 2.75rem;
  padding: 0.625rem 0.75rem;
  border-radius: 2.5rem;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.5rem;
  opacity: 1;
  transition: background-color 0.2s ease-in-out;
}

html .zaraz-consent-dialog_footer button:hover {
  opacity: 1;
}

html .zaraz-consent-dialog_rejectAll {
  background-color: var(--zc-reject-bg);
  color: var(--zc-reject-text);
}

html .zaraz-consent-dialog_rejectAll:hover {
  background-color: var(--zc-reject-hover-bg);
}

html .zaraz-consent-dialog_acceptAll {
  background-color: #fb5b0a;
  color: #fff;
}

html .zaraz-consent-dialog_acceptAll:hover {
  background-color: #fb6b23;
}

@media (max-width: 767.98px) {
  /* Mobile: 16px gutters (the sticky CTA hides while the banner is shown). */
  html .zaraz-consent-dialog {
    bottom: 1rem;
  }
}

/*
 * Locations map block (Figma 4008:55349): the country list scrolls above a
 * pinned "See full list" link (18px medium, 6px gap, 20px arrow), 48px apart.
 */
.locations-full-list .btn {
  gap: 6px;
  font-size: 18px;
  font-weight: 500;
  line-height: 24px;
}
.locations-full-list .ai-arrow-right {
  font-size: 20px;
}
@media (min-width: 768px) {
  .simplebar-locations {
    max-height: 578px;
  }
}

/*
 * Send money destinations grid (Figma 4473:95951): 40px flag, 14px gap,
 * 16px medium name; the "Open country guide" caption appears under the name
 * on hover/focus only, positioned so the row does not jump.
 */
.sm-country { gap: 14px; min-height: 40px; }
.sm-country .nav-link { font-size: 16px; line-height: 24px; }
.sm-country-caption {
  position: absolute;
  top: 100%;
  left: 0;
  white-space: nowrap;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.15s ease-in-out;
}
.sm-country:hover .sm-country-caption,
.sm-country:focus-within .sm-country-caption {
  opacity: 1;
  visibility: visible;
}

/* Blog article disclaimer note: no trailing paragraph margin, so the card's
   padding is even top and bottom. */
.blog-article-note > :last-child {
  margin-bottom: 0;
}
@media (min-width: 768px) {
  /* Figma: 40px from the intro to the destinations grid. */
  .sm-countries-intro { margin-bottom: 0; padding-bottom: 40px !important; }
}

/*
 * Mobile rhythm (One mobile review, Figma mobile frames):
 * - section subtitles 16px (were 20/18px);
 * - large buttons: 16px label, 56px tall;
 * - every page section 40px top and bottom, so blocks sit 80px apart;
 * - "Money made simple" banner keeps the design's 343x620 proportions.
 */
@media (max-width: 767.98px) {
  main p.fs-xl,
  main p.fs-lg {
    font-size: 16px !important;
    line-height: 24px;
  }
  .btn-lg {
    --al-btn-font-size: 16px;
    padding: 15px 24px;
    line-height: 24px;
  }
  main.content-wrapper > section {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding-top: 40px !important;
    padding-bottom: 40px !important;
  }
  main.content-wrapper > section > .container {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
  .home-cta-card {
    aspect-ratio: 343 / 620;
  }
  .home-cta-card h2 {
    margin-bottom: 12px;
    font-size: 32px;
    line-height: 40px;
    letter-spacing: -0.02em;
  }
  .home-cta-card h2 + p {
    margin-bottom: 20px;
    padding-bottom: 0 !important;
    font-size: 14px;
    line-height: 20px;
  }
}

/*
 * Burger (One mobile review): two lines instead of three, black on light pages.
 * Only the closed state changes — the open state still morphs into the X
 * (bar + :after rotate), so the middle bar is hidden just while closed.
 */
.navbar-toggler:not(.active):not([aria-expanded="true"]) .navbar-toggler-icon {
  background-color: transparent;
}
.navbar-toggler:not(.active):not([aria-expanded="true"]) .navbar-toggler-icon::before {
  top: -4px;
  width: 1.375rem;
}
.navbar-toggler:not(.active):not([aria-expanded="true"]) .navbar-toggler-icon::after {
  bottom: -4px;
}
[data-bs-theme="light"] .navbar-toggler-icon,
[data-bs-theme="light"] .navbar-toggler-icon::before,
[data-bs-theme="light"] .navbar-toggler-icon::after {
  --al-navbar-color: #000;
}
[data-bs-theme="light"] .navbar-toggler:not(.active):not([aria-expanded="true"]) .navbar-toggler-icon {
  background-color: transparent;
}

/* Footer divider between the large logo and the legal text (Figma footers):
   black 10% on One, #262626 on Business. */
footer .border-top.border-translucent {
  border-top-color: rgba(0, 0, 0, 0.1) !important;
}
[data-bs-theme="dark"] footer .border-top.border-translucent {
  border-top-color: #262626 !important;
}

@media (max-width: 767.98px) {
  /* Send money destinations on mobile: no caption (no hover on touch), names
     underlined to show they are tappable (Figma 4473:98968). */
  .sm-country-caption { display: none !important; }
  .sm-country .nav-link {
    text-decoration: underline !important;
    text-underline-offset: 3px;
  }
}

/*
 * Site switcher must not shift when a mega-menu opens.
 *
 * Opening #modal-one / #modal-business hides the page scrollbar and Bootstrap
 * compensates with padding-right on <body>, so the body narrows by the
 * scrollbar width. The modal itself is position:fixed at full viewport width
 * and gets no such padding, so the centred .container inside it sits half a
 * scrollbar further right (7.5px at a 15px scrollbar) than the one in the
 * header — the switcher and its icons visibly jump on hover.
 *
 * Reserving the scrollbar gutter permanently keeps the layout width constant,
 * so Bootstrap's compensation is no longer needed and is neutralised.
 */
html { scrollbar-gutter: stable; }
body.modal-open { padding-right: 0 !important; }

/*
 * The header switcher uses <button class="btn">, the one in the menu header a
 * <div class="btn"> wrapping an <a>. Inline layout aligns the icon on the text
 * baseline differently in the two, costing another 1px vertically. Flex
 * centring makes both identical.
 */
.site-switcher .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.site-switcher .btn > a {
  display: inline-flex;
  align-items: center;
}

/*
 * "Financial services, your way" (Use cases) cards are links via
 * .stretched-link but had no hover state, so nothing signalled they were
 * clickable. Figma 6518:208974 lifts the card from #181818 to #262626 —
 * #262626 is the same step the theme uses for active surfaces on dark.
 */
.uc-card { transition: background-color .2s ease-in-out; }
.uc-card:hover,
.uc-card:focus-within { background-color: #262626; }

[data-bs-theme="light"] .uc-card:hover,
[data-bs-theme="light"] .uc-card:focus-within {
  background-color: var(--al-tertiary-bg);
}

/*
 * Blurred backdrop behind every modal (country list, industry modal, …).
 *
 * The theme already sets backdrop-filter: blur(100px) on .modal-backdrop, but
 * .modal-backdrop.show keeps it at --al-backdrop-opacity (0.7). A translucent
 * backdrop composites the blurred layer back over the sharp page, so the page
 * stays legible through it. Full opacity gives the frosted panel the design
 * asks for; the backdrop is only a 20% tint, so nothing goes dark.
 *
 * _personal_app_download_modal.html already did this for its own modal — this
 * generalises it instead of repeating the override per modal.
 */
.modal-backdrop.show { opacity: 1; }

/*
 * Sticky mobile CTA slides out of the way while the hero CTA is on screen
 * (see the observer in partials/_sticky_cta.html). Transform rather than
 * display so the change animates; pointer-events keep the hidden bar from
 * swallowing taps near the bottom edge.
 */
[data-sticky-cta] {
  transition: transform .3s ease, opacity .3s ease;
}
[data-sticky-cta].sticky-cta-hidden {
  transform: translateY(130%);
  opacity: 0;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  [data-sticky-cta] { transition: none; }
}

/*
 * "Grow faster with Altery Business" banner: gap between the description and
 * the CTA is 20px on mobile and 32px on desktop (replaces Bootstrap's pb-4,
 * which is 24px at both sizes). Same banner appears on the business landing
 * and on Business account.
 */
.biz-cta-desc { padding-bottom: 20px; }
@media (min-width: 768px) {
  .biz-cta-desc { padding-bottom: 32px; }
}

/*
 * Contacts: the map sits directly above the footer, and the section's default
 * 40px bottom padding reads as a gap between them on mobile. Desktop keeps it.
 */
@media (max-width: 767.98px) {
  .contacts-map { padding-bottom: 0; }
}

/*
 * Mega-menu: no shadow line under the open panel.
 *
 * The theme drops a shadow under .modal-content (0 8px 32px -4px). On the dark
 * Business menu it is rgba(8,11,18,.25) and invisible against black, but on the
 * light One menu it resolves to rgba(103,111,123,.1) and reads as a grey rule
 * across the full width where the panel meets the page. The panel is already
 * separated by its own background, so the shadow only adds that line.
 */
#modal-one .modal-content,
#modal-business .modal-content { box-shadow: none; }

/*
 * …and no focus ring around the modal container — this is the line that
 * stayed under the open mega-menu after the shadow was gone.
 *
 * Bootstrap focuses the .modal element itself on show (it carries
 * tabindex="-1" for the focus trap). The mega-menu opens on hover, with no
 * click, so Chrome and Safari treat that programmatic focus as :focus-visible,
 * and the theme's global `html :focus-visible` rule draws a 4px outline in
 * --al-focus-ring-color around the whole modal. Its top and sides fall off
 * screen; its bottom edge lands exactly under the panel: white 10% on the dark
 * menu, near-black 10% on the light one.
 *
 * Bootstrap means modals to have no outline (.modal { outline: 0 }), but the
 * theme's selector outranks it. The container is never something the user
 * tabs to — focus rings still show on the links and buttons inside — so this
 * restores Bootstrap's intent, the same exception the theme already makes for
 * .offcanvas:focus-visible.
 *
 * Opening the menu from a script does not trip the focus-visible heuristic,
 * so the line never shows in automated screenshots; reproduce it with a key
 * press before focusing the modal.
 */
.modal:focus-visible { outline: 0; }

/*
 * Mobile mega-menu spacing (Figma: segment control 20pt from the edge, the
 * links below 28pt, 8pt between the header and the control).
 *
 * The theme gives .modal-body 32px of top padding, which pushes the segment
 * control far from the header, and .container contributes the 16px side
 * padding the rest of the menu is aligned to — 4px short of the control's 20.
 * The links keep the container's 16px plus their own 12px, landing on 28.
 */
@media (max-width: 575.98px) {
  #modal-one .modal-body,
  #modal-business .modal-body { padding-top: 8px; }
  .menu-switcher-row { margin-inline: 4px; }
}

/*
 * Burger and close icon stay fully white on the dark Business chrome; the
 * theme renders them at 80% opacity, which greys them out against black.
 */
[data-bs-theme="dark"] .navbar-toggler,
[data-bs-theme="dark"] .navbar-toggler-icon,
#modal-business .navbar-toggler,
#modal-business .navbar-toggler-icon { color: #fff; }

/*
 * Decorative background video (partials/_bg_video.html).
 *
 * The <video> covers its positioned parent, sitting under the panel content.
 * It starts transparent so the poster — painted by the element itself — is what
 * shows until "canplay" adds .is-ready; without that the browser paints an
 * empty box for a beat on slower connections.
 */
.bg-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  opacity: 0;
  transition: opacity .6s ease;
  pointer-events: none;
}
.bg-video.is-ready { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  /* No video is loaded in this mode; show the poster through the element. */
  .bg-video { opacity: 1; transition: none; }
}

/*
 * Business hero: notification chips as markup over a clean photo.
 *
 * The chips used to be part of the hero JPEG, so their copy could not be
 * translated, restyled or reached by assistive tech. The photo now carries no
 * text and these sit on top.
 *
 * Desktop geometry: Figma 1336:99749 / 1336:99790 against a 1296px hero.
 * Mobile geometry:  Figma 1179:12306 / 1179:12347 against a 343px hero.
 * Everything is in cqw/% so both track the image instead of one breakpoint.
 *
 * The two layouts invert the icon: dark circle with a white glyph on desktop,
 * light circle with a dark glyph on mobile — hence the inline SVG on
 * currentColor rather than two files.
 */
.biz-hero { container-type: inline-size; }

.biz-hero-chip {
  position: absolute;
  display: flex;
  align-items: center;
  color: #fff;
  white-space: nowrap;
  pointer-events: none;
  background-color: rgba(255, 255, 255, 0.15);
}
.biz-hero-chip-card-art { height: auto; flex-shrink: 0; }
.biz-hero-chip-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  flex-shrink: 0;
}
.biz-hero-chip-avatar svg { display: block; }

/* --- Desktop (≥768px): hero is 1296px wide in the design --- */
@media (min-width: 768px) {
  .biz-hero-chip {
    transform: translateX(-50%);
    border-radius: 1.08cqw;                 /* 14px */
    -webkit-backdrop-filter: blur(2.5cqw);  /* 32.408px */
    backdrop-filter: blur(2.5cqw);
    box-shadow:
      0 0.417cqw 0.313cqw rgba(0, 0, 0, 0.05),
      inset 0 0.052cqw 0.052cqw rgba(255, 255, 255, 0.25),
      inset 0 -0.052cqw 0.052cqw rgba(255, 255, 255, 0.1);
    font-weight: 600;
    line-height: 0.917;
  }
  .biz-hero-chip-card {
    bottom: 15.13%;                         /* 102.91px */
    left: calc(50% - 19.875%);              /* 257.58px left of centre */
    gap: 1.2cqw;
    padding: 0.926cqw 1.543cqw;
    background-color: rgba(255, 255, 255, 0.1);
    font-size: 1.2cqw;                      /* 15.556px */
  }
  .biz-hero-chip-card-art { width: 2.26cqw; }
  .biz-hero-chip-payment {
    bottom: 27.5%;                          /* 187px */
    left: calc(50% + 20.31%);               /* 263.23px right of centre */
    gap: 1.173cqw;
    padding: 0.926cqw 1.235cqw;
    font-size: 1.173cqw;                    /* 15.202px */
  }
  .biz-hero-chip-avatar {
    width: 3.704cqw;                        /* 48px */
    height: 3.704cqw;
    background-color: #000;
    color: #fff;
  }
  .biz-hero-chip-avatar svg { width: 2.006cqw; height: 2.006cqw; }
  /* Figma leaves 50.672px between the name group and the amount; the row gap
     already supplies 1.173cqw of it. */
  .biz-hero-chip-amount { margin-left: 2.737cqw; }
}

/* --- Mobile (<768px): hero is 343px wide in the design --- */
@media (max-width: 767.98px) {
  .biz-hero-chip {
    transform: translate(-50%, -50%);
    left: 50%;
    font-weight: 500;
  }
  .biz-hero-chip-card {
    top: 71.58%;                            /* centre + 94.95px of 440 */
    gap: 4.136cqw;
    padding: 3.19cqw 6.38cqw;
    border-radius: 3.722cqw;                /* 12.767px */
    -webkit-backdrop-filter: blur(8.62cqw); /* 29.554px */
    backdrop-filter: blur(8.62cqw);
    box-shadow: 0 1.437cqw 1.078cqw rgba(0, 0, 0, 0.05);
    font-size: 3.722cqw;
    line-height: 1.019;
  }
  .biz-hero-chip-card-art { width: 7.788cqw; }
  .biz-hero-chip-payment {
    top: 82.52%;                            /* centre + 143.07px of 440 */
    justify-content: space-between;
    /* 262.903px of Section Info + 2x14.048px padding = 291px of the 343px hero.
       The back chip is content-width (~265px), so the front one is wider and
       the pair reads as a stack. */
    width: 84.84%;
    gap: 3.511cqw;
    padding: 3.511cqw 4.096cqw;
    border-radius: 4.096cqw;                /* 14.048px */
    -webkit-backdrop-filter: blur(9.48cqw); /* 32.52px */
    backdrop-filter: blur(9.48cqw);
    box-shadow: 0 1.581cqw 1.186cqw rgba(0, 0, 0, 0.05);
    font-size: 4.096cqw;
    line-height: 1.019;
  }
  .biz-hero-chip-avatar {
    width: 14.043cqw;                       /* 48.166px */
    height: 14.043cqw;
    background-color: #f9f6f2;
    color: #000;
  }
  .biz-hero-chip-avatar svg { width: 7.606cqw; height: 7.606cqw; }
  .biz-hero-chip-amount { margin-left: auto; }
}

/*
 * One hero: notification chips as markup over a clean photo — same reasoning as
 * the Business hero, so the copy stays translatable.
 *
 * Desktop geometry: Figma 6401:179192 / 6401:179228 against a 1296px hero.
 * Mobile geometry:  Figma 6420:179289 against a 343px hero, where the design
 * keeps only the card chip.
 *
 * Only the default locale gets these; en-cy ships a different photo.
 */
.one-hero { container-type: inline-size; }

.one-hero-chip {
  position: absolute;
  display: flex;
  align-items: center;
  background-color: rgba(255, 255, 255, 0.1);
  color: #fff;
  white-space: nowrap;
  pointer-events: none;
}
.one-hero-chip-card-art { height: auto; flex-shrink: 0; }
.one-hero-chip-avatar { border-radius: 50%; flex-shrink: 0; object-fit: cover; }

/* --- Desktop (≥768px) --- */
@media (min-width: 768px) {
  .one-hero-chip {
    border-radius: 1.08cqw;                 /* 14px */
    -webkit-backdrop-filter: blur(2.5cqw);  /* 32.408px */
    backdrop-filter: blur(2.5cqw);
    box-shadow:
      0 0.417cqw 0.313cqw rgba(0, 0, 0, 0.05),
      inset 0 0.052cqw 0.052cqw rgba(255, 255, 255, 0.25),
      inset 0 -0.052cqw 0.052cqw rgba(255, 255, 255, 0.1);
    font-weight: 600;
    line-height: 0.917;
  }
  .one-hero-chip-card {
    left: 62.35%;                           /* 808px */
    top: 27.21%;                            /* 185px */
    gap: 1.2cqw;
    padding: 0.926cqw 1.543cqw;
    font-size: 1.2cqw;                      /* 15.556px */
  }
  .one-hero-chip-card-art { width: 2.26cqw; }
  .one-hero-chip-payment {
    left: 8.87%;                            /* 115px */
    top: 71.18%;                            /* 484px */
    width: 23.3%;                           /* 302px */
    height: 5.556cqw;                       /* 72px — fixed in the design */
    justify-content: space-between;
    gap: 1.173cqw;
    padding: 0.926cqw 1.235cqw;
    font-size: 1.173cqw;                    /* 15.202px */
  }
  .one-hero-chip-avatar { width: 3.47cqw; height: 3.47cqw; }
  .one-hero-chip-amount { margin-left: auto; }
}

/* --- Mobile (<768px): card chip only, centred --- */
@media (max-width: 767.98px) {
  .one-hero-chip-card {
    left: 50%;
    top: 85.23%;                            /* centre + 155px of 440 */
    transform: translate(-50%, -50%);
    width: 71.14%;                          /* 244px of 343 */
    gap: 4.136cqw;
    padding: 3.19cqw 6.38cqw;
    border-radius: 3.722cqw;                /* 12.767px */
    background-color: rgba(255, 255, 255, 0.15);
    -webkit-backdrop-filter: blur(8.62cqw); /* 29.554px */
    backdrop-filter: blur(8.62cqw);
    box-shadow: 0 1.437cqw 1.078cqw rgba(0, 0, 0, 0.05);
    font-weight: 500;
    font-size: 3.722cqw;                    /* 12.767px */
    line-height: 1.019;
  }
  .one-hero-chip-card-art { width: 7.788cqw; }
}

/* ==========================================================================
   Guides — in-article CTA banner
   ==========================================================================
   Figma gives the banner 48px top/bottom and 40px left/right inside, and 48px
   of air from the body copy; on mobile 32px / 24px inside and 32px of air.
   Bootstrap's spacing scale has no 2rem step and `p-*` sets all four sides at
   once, so the box carries its own paddings rather than stacking utilities.
   Desktop: Guide / Desktop -> Banner 1483:115755.
   Mobile:  Guide / Mobile  -> Banner 4477:114155.
   -------------------------------------------------------------------------- */
.guide-cta {
  margin-block: 2rem;                       /* 32px */
}

.guide-cta-box {
  padding: 2rem 1.5rem;                     /* 32px / 24px */
}

@media (min-width: 768px) {
  .guide-cta {
    margin-block: 3rem;                     /* 48px */
  }
  .guide-cta-box {
    padding: 3rem 2.5rem;                   /* 48px / 40px */
  }
}

/* ==========================================================================
   /business/ "Global transfers" banner — transfer interface over the video
   ==========================================================================
   Used to be four PNGs with the copy baked in. As markup the strings
   translate, and the glass actually blurs the video: a backdrop-filter on an
   opaque <img> had nothing to show through.

   Mobile and desktop are separate frames in Figma, not one scaled: the order
   flips, card metrics and type sizes change, and the Send button exists only
   on desktop. Base rules are the mobile frame, the md block is desktop.
     Mobile:  Business Main / Mobile → Banner_vertical_container → 1179:12373 (305px)
     Desktop: Business Main → Interface 1336:99855 (504px)
   The fractional values are Figma's own (the mock-up is a scaled component).
   -------------------------------------------------------------------------- */
.cta-iface {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-width: 31.5rem;                       /* 504px, the desktop frame */
  color: #fff;
}

.cta-iface-currencies {
  display: flex;
  gap: 8px;
}
.cta-iface-currencies > .cta-iface-card {
  flex: 1 0 0;
  min-width: 0;
}

/* Mobile leads with the send card, desktop with the balances. */
.cta-iface-send { order: -1; }

.cta-iface-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  overflow: hidden;                         /* mobile stepper runs off the edge, as drawn */
  border-radius: 20px;
  background-color: rgba(255, 255, 255, 0.15);
  -webkit-backdrop-filter: blur(32.408px);
  backdrop-filter: blur(32.408px);
  box-shadow:
    inset 0 -0.675px 0.675px rgba(255, 255, 255, 0.1),
    inset 0 0.675px 0.675px rgba(255, 255, 255, 0.25),
    0 5.403px 4.052px rgba(0, 0, 0, 0.05);
}

/* --- Balance cards --- */
.cta-iface-currency {
  gap: 24px;
  padding: 14px;
}
.cta-iface-flag {
  display: block;
  width: 40px;
  height: 40px;
}
.cta-iface-currency-text {
  display: flex;
  flex-direction: column;
  gap: 10px;
  filter: drop-shadow(0 7.629px 11.097px rgba(141, 156, 160, 0.15));
}
.cta-iface-currency-name {
  font-weight: 400;
  font-size: 12px;
  line-height: 11.097px;
  letter-spacing: 0.12px;
}
.cta-iface-currency-amount {
  font-weight: 600;
  font-size: 16.646px;
  line-height: 16.646px;
  letter-spacing: -0.1665px;
  white-space: nowrap;
}

/* --- Send card --- */
.cta-iface-send {
  gap: 48px;
  padding: 18px;
}
.cta-iface-steps {
  display: flex;
  align-items: center;
  gap: 7px;
  width: max-content;
  font-size: 7px;
  line-height: 8.93px;
  letter-spacing: 0.07px;
  white-space: nowrap;
}
.cta-iface-step {
  display: flex;
  align-items: center;
  gap: 3.907px;
  opacity: 0.3;
}
.cta-iface-step.is-active {
  opacity: 1;
  font-weight: 500;                         /* mobile only — desktop's active label is regular */
}
.cta-iface-step-num {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 13.396px;
  height: 13.396px;
  border-radius: 50%;
  background-color: #7d7d7d;
  color: #fff;
  font-weight: 500;
  font-size: 6.698px;
  letter-spacing: 0.067px;
}
.cta-iface-step.is-active .cta-iface-step-num {
  background-color: #fff;
  color: #000;
}
.cta-iface-step-line {                      /* same SVG as desktop at 0.6035 scale */
  display: block;
  flex-shrink: 0;
  width: 20.094px;
  height: 0.558px;
}
.cta-iface-send-text {
  display: flex;
  flex-direction: column;
  gap: 4.465px;
}
.cta-iface-send-lead {
  font-weight: 500;
  font-size: 12px;
  line-height: 1.4;
}
.cta-iface-send-title {
  font-family: Onest;                       /* mobile frame says Museo Sans 700 — legacy font, see commit */
  font-weight: 600;
  font-size: 22.326px;
  line-height: 33.489px;
  letter-spacing: -0.4465px;
  white-space: nowrap;
}
.cta-iface .cta-iface-btn { display: none; }

/* --- Desktop: Interface 1336:99855 --- */
@media (min-width: 768px) {
  .cta-iface,
  .cta-iface-currencies { gap: 7.399px; }
  .cta-iface-send { order: 0; }
  .cta-iface-card { border-radius: 24px; }

  .cta-iface-currency {
    gap: 48px;
    padding: 18px;
  }
  .cta-iface-flag {
    width: 36.993px;
    height: 36.993px;
  }
  .cta-iface-currency-text {
    gap: 7.399px;
    filter: drop-shadow(0 10.173px 14.797px rgba(141, 156, 160, 0.15));
  }
  .cta-iface-currency-name {
    font-size: 12.948px;
    line-height: 14.797px;
    letter-spacing: 0.1295px;
  }
  .cta-iface-currency-amount {
    font-size: 22.196px;
    line-height: 22.196px;
    letter-spacing: -0.222px;
  }

  .cta-iface-steps {
    gap: 9.75px;                            /* Figma's hand-placed 7.7–11.1, averaged */
    font-size: 12px;
    line-height: 18px;
    letter-spacing: 0;
  }
  .cta-iface-step {
    gap: 6.474px;
    opacity: 0.5;
  }
  .cta-iface-step.is-active { font-weight: 400; }
  .cta-iface-step-num {
    width: 22.196px;
    height: 22.196px;
    font-size: 11.098px;
    line-height: 14.797px;
    letter-spacing: 0.111px;
  }
  .cta-iface-step-line {
    width: 33.294px;
    height: 0.925px;
  }

  .cta-iface-send-text { gap: 7.399px; }
  .cta-iface-send-lead {
    font-size: 16px;
    line-height: 24px;
  }
  .cta-iface-send-title {
    font-size: 32px;
    line-height: 40px;
    letter-spacing: -0.64px;
  }

  /* 84×44 "secondary small" — between the theme's btn-sm (32) and btn (52). */
  .cta-iface .cta-iface-btn {
    display: inline-flex;
    justify-content: center;
    min-width: 84px;
    padding: 10px 12px;
    border: 0;                              /* theme .btn adds 1px; the design has none (44 tall) */
    font-size: 16px;
    line-height: 24px;
    pointer-events: none;
  }
}

/*
 * Mega-menu and phone menu, per Figma "Menu" (New Website Django 6571:118957):
 * One — phone 4357:109292, opened 4448:168622, desktop 4448:186760;
 * Business — phone 4449:189107, desktop 4449:189056.
 *
 * The panel is white (the theme's tertiary background; #181818 on the dark
 * Business pages) instead of the beige gradient — set in the template.
 */

/* "Explore Altery One / Business": a text link with a 20px arrow 4px after it. */
.menu-explore-link {
  --al-btn-border-width: 0;
  --al-btn-color: var(--al-body-color);
  --al-btn-hover-color: var(--al-primary);
  --al-btn-active-color: var(--al-primary);
  gap: 4px;
  padding: .5rem .75rem;
  font-size: 1rem;
  line-height: 1.5rem;
}
.menu-explore-link .ai-arrow-right { margin: 0; font-size: 1.25rem; }

/* Header pill CTA ("Get the app" / "Open account"), Figma header 4448:185239:
 * 44px tall from 10/12 padding and a 24px line, no border. */
.header-cta {
  --al-btn-border-width: 0;
  padding: 10px 12px;
  font-size: 1rem;
  line-height: 1.5rem;
}

/* The page you are on: a soft pill (Figma neutral-2, radius 24). */
.modal-menu .nav-link.active {
  background-color: #faf3ed;
  border-radius: 1.5rem;
}
[data-bs-theme="dark"] .modal-menu .nav-link.active { background-color: rgba(255, 255, 255, .08); }

/* Menu items: 36px rows, 40px apart (14px text on a 20px line, 8/16 padding). */
.modal-menu .nav-link { line-height: 1.25rem; }
/* Group headings (Features, Pricing…): 14px on a 20px line, 12 above the items. */
.menu-group > .fs-sm.fw-medium { line-height: 1.25rem; }

/* Desktop panel: 20 above "Explore", 60 under the columns. */
@media (min-width: 992px) {
  #modal-one .modal-body,
  #modal-business .modal-body { padding: 20px 0 60px; }
}

/* Promo card (Figma 4448:186825 / Business banner): 306 x 394, 32 padding,
 * Onest 21/28 title, a neutral-2 "Discover" pill 56px tall. */
.menu-banner-body { padding: 2rem; }
.menu-banner-title {
  max-width: 242px;
  font-family: Onest, var(--al-body-font-family);
  font-size: 1.3125rem;
  font-weight: 600;
  line-height: 1.75rem;
  letter-spacing: -.42px;
}
.menu-banner-btn {
  --al-btn-border-width: 0;
  --al-btn-bg: #faf3ed;
  --al-btn-color: #1d1d1f;
  --al-btn-hover-bg: #fff;
  --al-btn-hover-color: #1d1d1f;
  --al-btn-active-bg: #fff;
  --al-btn-active-color: #1d1d1f;
  gap: 6px;
  padding: 1rem 1.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
}
.menu-banner-btn .ai-arrow-right { margin: 0; font-size: 1.25rem; }

/* Bottom CTA on phones: a dark pill on the light menu, a light one on the dark. */
.menu-footer-cta {
  --al-btn-border-width: 0;
  --al-btn-bg: #181818;
  --al-btn-color: #fff;
  --al-btn-border-color: #181818;
  --al-btn-hover-bg: #000;
  --al-btn-hover-color: #fff;
  --al-btn-hover-border-color: #000;
  --al-btn-active-bg: #000;
  --al-btn-active-color: #fff;
  --al-btn-active-border-color: #000;
  padding: 1rem 1.5rem;
  border-radius: 2.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
}
[data-bs-theme="dark"] .menu-footer-cta {
  --al-btn-bg: #fff;
  --al-btn-color: #181818;
  --al-btn-border-color: #fff;
  --al-btn-hover-bg: #eceae8;
  --al-btn-hover-color: #181818;
  --al-btn-hover-border-color: #eceae8;
  --al-btn-active-bg: #eceae8;
  --al-btn-active-color: #181818;
  --al-btn-active-border-color: #eceae8;
}

/* The rule closing each opened group (Figma: a 24px divider row). */
.menu-divider {
  margin: .75rem .25rem;
  color: var(--al-secondary-bg);
}

@media (max-width: 575.98px) {
  /* Phone order differs from the desktop columns: on desktop One's Pricing
   * sits under Features, on phones it comes third (Features, Use cases,
   * Pricing…). The columns dissolve so the groups can be ordered with
   * Bootstrap's order-* classes set in the template (Business needs no
   * reordering — its Pricing already follows Solutions); the padding
   * restores the gutter the column used to give them. */
  /* !important: the columns carry .d-flex, which is itself !important. */
  #modal-one-nav > .menu-col,
  #modal-business-nav > .menu-col { display: contents !important; }
  #modal-one-nav > .menu-col > .menu-group,
  #modal-business-nav > .menu-col > .menu-group {
    width: 100%;
    margin-top: var(--al-gutter-y);
    padding-inline: calc(var(--al-gutter-x) * .5);
  }

  /* Text on the 28pt line (16 container + 12), 40pt rows, 18px "Explore". */
  .menu-explore-link { font-size: 1.125rem; }
  .menu-group > .btn[data-bs-toggle="collapse"] {
    --al-btn-border-width: 0;
    padding-inline: .75rem;
    line-height: 1.5rem;
  }
  .menu-group .modal-menu { gap: 0 !important; }
  .menu-group .modal-menu .nav-link {
    padding: .75rem;
    line-height: 1.25rem;
  }

  /* Bottom sheet: 20pt sides, 12pt above the button, 40pt below. */
  .menu-footer { padding: .75rem 0 2.5rem; }
  .menu-footer > .container { padding-inline: 20px; }
}
