/* ==========================================================================
   Site chrome (Claude): the header and footer patterns on every page.
   Loaded everywhere by includes/site-chrome.php; the landing page's own
   stylesheet (hero-claude.scss) loads after it. Tokens follow the POAST brand kit.
   ========================================================================== */
/* ---- Fonts (self-hosted): the two the header and footer set. The landing
   page adds its Grift display weights in its own stylesheet. ---- */
@font-face {
  font-family: Outfit;
  src: url("../../fonts/outfit/Outfit-Variable-latin.woff2") format("woff2");
  font-weight: 300 900;
  font-display: swap;
}
@font-face {
  font-family: "JetBrains Mono";
  src: url("../../fonts/jetbrains-mono/JetBrainsMono-Variable-latin.woff2") format("woff2");
  font-weight: 400 800;
  font-display: swap;
}
/* ==========================================================================
   Header (Claude): resend.com's glass bar in the brand palette
   ========================================================================== */
/* Only the root scrolls, so the lock never turns <body> into a scroll
   container (which would un-stick the bar). While the menu is open the bar
   is pinned outright; its flow footprint is zero anyway. */
html.sahc-nav-lock {
  overflow: hidden;
}

.sahc-nav.is-menu-open {
  position: fixed;
  /* stylelint-disable-next-line length-zero-no-unit */
  inset: var(--wp-admin--admin-bar--height, 0px) 0 auto;
  transform: none;
  transition: none;
}

.sahc-nav {
  /* One height at all times. The bar sits over the hero's background; the*/
  /* hero's content starts below it.*/
  --sahc-nav-h: 68px;
  position: sticky;
  /* stylelint-disable-next-line length-zero-no-unit -- the fallback must carry a unit inside calc() elsewhere; kept alike here */
  top: var(--wp-admin--admin-bar--height, 0px);
  z-index: 40;
  height: 68px;
  margin-bottom: -68px;
  color: #E8E4DD;
  font-family: Outfit, sans-serif;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
  /* Slides away while the page scrolls down, back on the first scroll up
     (the script toggles the class). */
  /* The bar: edge to edge, near-black and a little see-through, with the
     MVP header's hairline along its bottom edge. */
  /* The theme's blur-up loader must not touch the logo or card art. */
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-nav.is-hidden {
  transform: translateY(calc(-100% - 2px));
}
.sahc-nav *,
.sahc-nav *::before,
.sahc-nav *::after {
  box-sizing: border-box;
}
.sahc-nav :where(ul, li, p) {
  margin: 0;
  padding: 0;
  list-style: none;
}
.sahc-nav::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  z-index: 0;
  height: var(--sahc-nav-h);
  border-bottom: 1px solid rgba(255, 255, 255, 0.07);
  background: rgba(13, 14, 16, 0.9);
  backdrop-filter: blur(10px);
  transition: height 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.sahc-nav img {
  animation: none !important;
  background: none !important;
}

/* The site's circuit lines, faint, clipped to the box. */
.sahc-nav__lines {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  z-index: 1;
  height: var(--sahc-nav-h);
  overflow: hidden;
  transition: height 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.sahc-nav__lines::before, .sahc-nav__lines::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: min(50%, 760px);
  background: rgba(232, 228, 221, 0.022);
  mask-repeat: no-repeat;
  mask-size: 100% auto;
}
.sahc-nav__lines::before {
  left: 0;
  mask-image: url("../../img/left-pattern-full.svg");
  mask-position: top right;
}
.sahc-nav__lines::after {
  right: 0;
  mask-image: url("../../img/right-pattern-full.svg");
  mask-position: top left;
}

.sahc-nav__inner {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  width: calc(100% - 64px);
  height: var(--sahc-nav-h);
  margin-inline: auto;
  transition: height 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.sahc-nav__start {
  display: flex;
  flex: 1;
  align-items: center;
  min-width: 0;
}

/* Only the mark itself is the link; the row around it is not. */
.sahc-nav__logo {
  display: inline-flex;
  flex: none;
  align-items: center;
  padding: 0;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-nav__logo img {
  display: block;
  width: auto;
  height: 32px;
}

.sahc-nav__menu {
  display: flex;
}

/* The centre section: an outlined pill, as on the site. */
.sahc-nav__list {
  display: flex;
  align-items: center;
  height: 40px;
  padding: 0;
  border: 1px solid rgba(232, 228, 221, 0.12);
  border-radius: 999px;
  background: rgba(13, 14, 16, 0.5);
}

.sahc-nav .sahc-nav__item {
  display: flex;
  gap: 7px;
  align-items: center;
  height: 38px;
  margin: 0;
  padding: 0 18px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: #E8E4DD;
  font: inherit;
  font-size: 15px;
  font-weight: 400;
  line-height: 1;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  appearance: none;
  -webkit-user-select: none;
          user-select: none;
  transition: color 0.15s ease-in-out;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-nav .sahc-nav__item:hover, .sahc-nav .sahc-nav__item:focus-visible {
  color: #F7B041;
}
.sahc-nav .sahc-nav__item[aria-expanded=true] {
  color: #F7B041;
  background: rgba(232, 228, 221, 0.08);
}
.sahc-nav .sahc-nav__item:focus-visible {
  outline: 2px solid rgba(247, 176, 65, 0.7);
  outline-offset: -4px;
  border-radius: 999px;
}
.sahc-nav .sahc-nav__item svg {
  width: 15px;
  height: 15px;
  opacity: 0.7;
  transition: transform 0.2s ease-in;
}
.sahc-nav .sahc-nav__item[aria-expanded=true] svg {
  transform: translateY(2px);
}

.sahc-nav__actions {
  display: flex;
  flex: 1;
  gap: 16px;
  align-items: center;
  justify-content: flex-end;
}

/* Newsletter: the ghost pill. Also dresses the site's modal and logout buttons when
   they carry this class, so every declaration a button needs is here. */
.sahc-nav .sahc-nav__text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  margin: 0;
  padding: 0 20px;
  border: 1px solid rgba(232, 228, 221, 0.22);
  border-radius: 999px;
  /* The bar's own surface, solid: the pill reads as clear, and the circuit
     lines behind the bar stop at its edge instead of showing through. */
  background: #0D0E10;
  color: #E8E4DD;
  font-family: Outfit, sans-serif;
  font-size: 15px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  appearance: none;
  transition: color 0.2s ease-in-out, border-color 0.2s ease-in-out, background-color 0.2s ease-in-out;
}
.sahc-nav .sahc-nav__text:focus {
  outline: none;
}
.sahc-nav .sahc-nav__text:hover, .sahc-nav .sahc-nav__text:focus-visible {
  border-color: rgba(247, 176, 65, 0.6);
  background: color-mix(in srgb, #F7B041 8%, #0D0E10);
  color: #F7B041;
}
.sahc-nav .sahc-nav__text:focus-visible {
  outline: 2px solid #F7B041;
  outline-offset: 3px;
}

/* The login button: the amber pill. The site's modal button block renders it as a <button>
   with this class, so every declaration a button needs is here. */
.sahc-nav .sahc-nav__cta {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  margin: 0;
  padding: 0 20px;
  border: 0;
  border-radius: 999px;
  background: #F7B041;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 4px 14px rgba(247, 176, 65, 0.14);
  color: #060608;
  font-family: Outfit, sans-serif;
  font-size: 15px;
  font-weight: 600;
  line-height: 24px;
  letter-spacing: 0.2px;
  text-transform: none;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  appearance: none;
  transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}
.sahc-nav .sahc-nav__cta:focus {
  outline: none;
}
.sahc-nav .sahc-nav__cta:hover, .sahc-nav .sahc-nav__cta:focus {
  color: #060608;
  background: #F9B95A;
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25), 0 6px 18px rgba(247, 176, 65, 0.22);
}
.sahc-nav .sahc-nav__cta:active {
  transform: scale(0.97);
}
.sahc-nav .sahc-nav__cta:focus-visible {
  outline: 4px solid rgba(247, 176, 65, 0.3);
  outline-offset: 0;
}

/* ---- Menu panel: one popup that resizes and slides between the menus ---- */
/* The tray hangs straight off the bar's bottom edge, square where they
   meet, a shade lighter than the bar, with a small pointer rising into the
   bar under the open trigger, so the menu reads as pulled down from that
   item. */
.sahc-nav__popup {
  position: absolute;
  top: var(--sahc-nav-h);
  left: var(--sahc-pop-x, 50%);
  z-index: 50;
  width: 560px;
  height: 220px;
  border: 1px solid rgba(232, 228, 221, 0.12);
  border-top-color: rgba(232, 228, 221, 0.16);
  border-radius: 0 0 22px 22px;
  background: rgba(13, 14, 16, 0.9);
  backdrop-filter: blur(20px);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.35);
  opacity: 0;
  transform: translate(-50%, -8px);
  transform-origin: top center;
  /* The pointer under the trigger: a solid notch that rises out of the
     tray's top edge and breaks the bar's hairline, and two lit edges on
     it. Nothing is drawn inside the tray, so no shape shows there. */
  transition: opacity 0.35s cubic-bezier(0.22, 1, 0.36, 1), transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), width 0.35s cubic-bezier(0.22, 1, 0.36, 1), height 0.35s cubic-bezier(0.22, 1, 0.36, 1), left 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.sahc-nav__popup::before {
  content: "";
  position: absolute;
  top: -11px;
  left: var(--sahc-caret-x, 50%);
  z-index: 2;
  width: 20px;
  height: 12px;
  background: #0D0E10;
  clip-path: polygon(50% 0, 100% 83%, 100% 100%, 0 100%, 0 83%);
  transform: translateX(-50%);
  transition: left 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}
.sahc-nav__popup::after {
  content: "";
  position: absolute;
  top: -8px;
  left: var(--sahc-caret-x, 50%);
  z-index: 3;
  width: 14px;
  height: 14px;
  border-top: 1px solid rgba(232, 228, 221, 0.16);
  border-left: 1px solid rgba(232, 228, 221, 0.16);
  border-radius: 3px 0 0 0;
  transform: translateX(-50%) rotate(45deg);
  transition: left 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.sahc-nav__popup.is-open {
  opacity: 1;
  transform: translate(-50%, 0);
  pointer-events: auto;
}

.sahc-nav__viewport {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: inherit;
}

.sahc-nav__panel {
  position: absolute;
  top: 0;
  left: 0;
  width: max-content;
  padding: 28px;
  opacity: 0;
  transform: translate3d(var(--sahc-out, 0), 0, 0);
  transition: opacity 0.35s cubic-bezier(0.22, 1, 0.36, 1), transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.sahc-nav__panel.is-active {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

/* Left of the cards: the columns, and under them the "view all" link,
   so the two sides fill the same height. */
.sahc-nav__main {
  display: flex;
  flex-direction: column;
  gap: 18px;
  justify-content: space-between;
}

.sahc-nav .sahc-nav__all {
  display: inline-flex;
  gap: 6px;
  align-self: flex-start;
  align-items: center;
  margin: 0 4px;
  color: #E8E4DD;
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
  transition: color 0.15s ease-in-out;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-nav .sahc-nav__all:hover {
  color: #F7B041;
}
.sahc-nav .sahc-nav__all svg {
  width: 12px;
  height: 12px;
}

/* Tight columns, so the two cards on the right get the room. */
.sahc-nav__panel-body {
  display: flex;
  gap: 28px;
  align-items: stretch;
}

.sahc-nav__cols {
  display: flex;
  gap: 28px;
  padding: 4px 4px 0;
}

.sahc-nav__links {
  display: grid;
  gap: 14px;
  align-content: start;
  min-width: 168px;
}

.sahc-nav .sahc-nav__link {
  display: block;
  color: #E8E4DD;
  font-size: 15px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.0125rem;
  white-space: nowrap;
  text-decoration: none;
  transition: color 0.15s ease-in-out;
}
.sahc-nav .sahc-nav__link:hover, .sahc-nav .sahc-nav__link:focus-visible {
  color: #F7B041;
}

/* Two cards beside the links, like resend.com's product cards. */
.sahc-nav__cards {
  display: flex;
  gap: 10px;
  align-items: stretch;
  width: 380px;
}

.sahc-nav .sahc-nav__card {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 208px;
  overflow: hidden;
  padding: 14px;
  border: 1px solid transparent;
  border-radius: 16px;
  background: rgba(232, 228, 221, 0.03);
  box-shadow: 0 4px 20px 2px rgba(0, 0, 0, 0.18);
  color: #E8E4DD;
  text-decoration: none;
  transition: border-color 0.3s cubic-bezier(0.36, 0.66, 0.6, 1), background-color 0.3s cubic-bezier(0.36, 0.66, 0.6, 1);
}
.sahc-nav .sahc-nav__card::before {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  background: linear-gradient(180deg, rgba(232, 228, 221, 0.08), transparent 60%);
  opacity: 0.5;
  pointer-events: none;
}
.sahc-nav .sahc-nav__card:hover {
  border-color: rgba(232, 228, 221, 0.18);
  background: rgba(232, 228, 221, 0.05);
}

.sahc-nav .sahc-nav__card-tag {
  position: relative;
  align-self: flex-start;
  margin-bottom: 8px;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(247, 176, 65, 0.12);
  font-family: "JetBrains Mono", monospace;
  font-size: 9.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #F7B041;
}

.sahc-nav .sahc-nav__card-title {
  position: relative;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.3;
}

.sahc-nav .sahc-nav__card-sub {
  position: relative;
  margin-top: 4px;
  font-size: 13px;
  line-height: 1.4;
  color: #8A8690;
}

.sahc-nav .sahc-nav__card-img {
  position: absolute;
  right: -12%;
  bottom: -14%;
  width: 78%;
  height: auto;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 12px;
  opacity: 0.55;
  filter: saturate(0.85);
  transition: opacity 0.3s ease, transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.sahc-nav .sahc-nav__card:hover .sahc-nav__card-img {
  opacity: 0.85;
  transform: translateY(-4px);
}

/* Tool cards carry the circuit lines in the brand gradient instead of art. */
.sahc-nav .sahc-nav__card-art {
  position: absolute;
  right: -30%;
  bottom: -35%;
  left: -10%;
  height: 80%;
  background: linear-gradient(180deg, rgba(247, 176, 65, 0.28), rgba(38, 201, 216, 0.16));
  mask-image: url("../../img/right-pattern-full.svg");
  mask-size: cover;
  mask-repeat: no-repeat;
  opacity: 0.55;
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.sahc-nav .sahc-nav__card:hover .sahc-nav__card-art {
  opacity: 0.85;
}

/* ---- Phones: burger and the full-screen menu ---- */
.sahc-nav .sahc-nav__burger {
  display: none;
  position: relative;
  flex-direction: column;
  gap: 6px;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  margin: 0 0 0 auto;
  padding: 0;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: #E8E4DD;
  cursor: pointer;
  appearance: none;
  transition: background-color 0.2s ease-in-out;
}
.sahc-nav .sahc-nav__burger:hover {
  background: rgba(232, 228, 221, 0.08);
}

.sahc-nav__burger-bar {
  display: block;
  width: 20px;
  height: 2px;
  border-radius: 1px;
  background: currentcolor;
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

.sahc-nav.is-menu-open .sahc-nav__burger-bar:first-child {
  transform: translateY(4px) rotate(45deg);
}

.sahc-nav.is-menu-open .sahc-nav__burger-bar:last-child {
  transform: translateY(-4px) rotate(-45deg);
}

.sahc-nav__mobile {
  position: fixed;
  /* stylelint-disable-next-line length-zero-no-unit -- a unitless 0 would make the calc() invalid when the toolbar is absent */
  inset: calc(var(--sahc-nav-h) + var(--wp-admin--admin-bar--height, 0px)) 0 0;
  z-index: 45;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 16px 24px 48px;
  background: #0D0E10;
  opacity: 0;
  transition: opacity 0.25s ease;
  pointer-events: none;
}

.sahc-nav.is-menu-open .sahc-nav__mobile {
  opacity: 1;
  pointer-events: auto;
}

.sahc-nav__mobile-in {
  position: relative;
  max-width: 640px;
  margin-inline: auto;
}

.sahc-nav__mobile-view {
  transition: opacity 0.3s ease, transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.sahc-nav__mobile-view--root {
  display: grid;
  gap: 8px;
}

.sahc-nav__mobile-view--sub {
  position: absolute;
  inset: 0 0 auto;
  opacity: 0;
  transform: translate3d(24px, 0, 0);
  pointer-events: none;
}
.sahc-nav__mobile-view--sub.is-active {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

.sahc-nav__mobile:not([data-view=root]) .sahc-nav__mobile-view--root {
  opacity: 0;
  transform: translate3d(-24px, 0, 0);
  pointer-events: none;
}

.sahc-nav .sahc-nav__cta--wide {
  width: 100%;
  height: 50px;
  margin-top: 8px;
  border-radius: 999px;
  font-size: 16px;
}

.sahc-nav .sahc-nav__text--center {
  justify-content: center;
  width: 100%;
  height: 50px;
  margin-bottom: 20px;
  font-size: 16px;
}

/* Signed in: the profile menu block stands where the login button was. Its
   trigger is the amber pill with the member's avatar and a caret in a small
   dark well; the panel opens from the pill's corner with a short fade and
   settle, and its sections arrive a beat apart. */
.sahc-nav .sahc-nav__profile {
  position: relative;
  /* The initial: a dark disc lit from the top left, with a hairline of the
     amber inside its edge that brightens on hover. */
  /* Off: the sections wait a touch above their place. */
  /* Rows. */
  /* The panel keeps its place while hidden so it can fade and settle both
     ways; visibility keeps it out of the accessibility tree meanwhile. */
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  height: 40px;
  margin: 0;
  padding: 4px 6px 4px 4px;
  border: 0;
  border-radius: 999px;
  background: #F7B041;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
  cursor: pointer;
  appearance: none;
  transition: background-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  /* The caret turns over while the panel is open; its well shows on hover. */
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button:hover {
  background: #F9B95A;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.22);
  transform: translateY(-1px);
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button:active {
  transform: translateY(0) scale(0.98);
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button:focus {
  outline: none;
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button:focus-visible {
  outline: 2px solid rgba(232, 228, 221, 0.9);
  outline-offset: 3px;
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button svg {
  width: 22px;
  height: 22px;
  padding: 4px;
  border-radius: 999px;
  background: transparent;
  transition: transform 0.32s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.18s ease;
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button svg path {
  stroke: #131416;
  stroke-width: 2;
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button:hover svg {
  background: rgba(19, 20, 22, 0.12);
}
.sahc-nav .sahc-nav__profile:has(> .profile-menu-container:not([hidden])) .semianalysis-profile-menu__button svg {
  background: rgba(19, 20, 22, 0.16);
  transform: rotate(180deg);
}
.sahc-nav .sahc-nav__profile .avatar,
.sahc-nav .sahc-nav__profile .avatar-initials {
  width: 32px;
  height: 32px;
  min-width: 32px;
  min-height: 32px;
  border-radius: 999px;
}
.sahc-nav .sahc-nav__profile .avatar-initials {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(120% 120% at 30% 24%, #1F2026 0%, #131416 62%);
  box-shadow: inset 0 0 0 1px rgba(247, 176, 65, 0.28), 0 1px 2px rgba(0, 0, 0, 0.35);
  color: #F7B041;
  font-family: Outfit, sans-serif;
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.02em;
  transition: box-shadow 0.18s ease;
}
.sahc-nav .sahc-nav__profile .avatar:not(.avatar-initials) {
  box-shadow: inset 0 0 0 1px rgba(19, 20, 22, 0.2);
}
.sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button:hover .avatar-initials {
  box-shadow: inset 0 0 0 1px rgba(247, 176, 65, 0.6), 0 1px 2px rgba(0, 0, 0, 0.35);
}
.sahc-nav .sahc-nav__profile .profile-menu-header {
  padding: 16px 16px 12px;
}
.sahc-nav .sahc-nav__profile .profile-menu-header,
.sahc-nav .sahc-nav__profile .profile-menu-body,
.sahc-nav .sahc-nav__profile .profile-menu-footer {
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity 0.12s ease, transform 0.12s ease;
}
.sahc-nav .sahc-nav__profile .user-display-name {
  margin-bottom: 2px;
  font-size: 15px;
  font-weight: 600;
  color: #E8E4DD;
}
.sahc-nav .sahc-nav__profile .user-email {
  font-size: 13px;
  color: #8A8690;
}
.sahc-nav .sahc-nav__profile .profile-menu-body,
.sahc-nav .sahc-nav__profile .profile-menu-footer {
  padding: 8px;
  border-top: 1px solid rgba(232, 228, 221, 0.1);
  font-size: 14px;
}
.sahc-nav .sahc-nav__profile .profile-menu-body a,
.sahc-nav .sahc-nav__profile .profile-menu-body button,
.sahc-nav .sahc-nav__profile .wp-block-passport-manage-account-link .passport-link,
.sahc-nav .sahc-nav__profile .wp-block-passport-logout a {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-height: 40px;
  margin: 0;
  padding: 8px 12px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: #E8E4DD;
  font: inherit;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: color 0.18s ease, background-color 0.18s ease;
}
.sahc-nav .sahc-nav__profile .profile-menu-body a:hover, .sahc-nav .sahc-nav__profile .profile-menu-body a:focus-visible,
.sahc-nav .sahc-nav__profile .profile-menu-body button:hover,
.sahc-nav .sahc-nav__profile .profile-menu-body button:focus-visible,
.sahc-nav .sahc-nav__profile .wp-block-passport-manage-account-link .passport-link:hover,
.sahc-nav .sahc-nav__profile .wp-block-passport-manage-account-link .passport-link:focus-visible,
.sahc-nav .sahc-nav__profile .wp-block-passport-logout a:hover,
.sahc-nav .sahc-nav__profile .wp-block-passport-logout a:focus-visible {
  background: rgba(232, 228, 221, 0.06);
  color: #F7B041;
}
.sahc-nav .sahc-nav__profile .profile-menu-container {
  top: calc(100% + 10px);
  right: 0;
  z-index: 60;
  display: block;
  min-width: 272px;
  max-width: none;
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(232, 228, 221, 0.12);
  border-radius: 16px;
  background: rgba(13, 14, 16, 0.96);
  backdrop-filter: blur(20px);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.35);
  color: #E8E4DD;
  font-family: Outfit, sans-serif;
  transform-origin: top right;
  visibility: hidden;
  opacity: 0;
  transform: translateY(-6px) scale(0.98);
  pointer-events: none;
  transition: opacity 0.16s ease, transform 0.16s ease, visibility 0s linear 0.16s;
}
.sahc-nav .sahc-nav__profile .profile-menu-container::before {
  content: "";
  position: absolute;
  top: 0;
  right: 24px;
  left: 24px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(232, 228, 221, 0.22), transparent);
}
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) {
  visibility: visible;
  opacity: 1;
  transform: none;
  pointer-events: auto;
  transition: opacity 0.2s cubic-bezier(0.22, 1, 0.36, 1), transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s;
  /* Its three sections arrive a beat apart. */
}
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) .profile-menu-header,
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) .profile-menu-body,
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) .profile-menu-footer {
  opacity: 1;
  transform: none;
  transition: opacity 0.24s ease, transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) .profile-menu-header {
  transition-delay: 0.04s;
}
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) .profile-menu-body {
  transition-delay: 0.08s;
}
.sahc-nav .sahc-nav__profile .profile-menu-container:not([hidden]) .profile-menu-footer {
  transition-delay: 0.12s;
}

/* stylelint-disable no-descending-specificity */
@media (prefers-reduced-motion: reduce) {
  .sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button,
  .sahc-nav .sahc-nav__profile .semianalysis-profile-menu__button svg,
  .sahc-nav .sahc-nav__profile .profile-menu-container,
  .sahc-nav .sahc-nav__profile .profile-menu-header,
  .sahc-nav .sahc-nav__profile .profile-menu-body,
  .sahc-nav .sahc-nav__profile .profile-menu-footer,
  .sahc-nav .sahc-nav__profile .profile-menu-body a {
    transition: none;
  }
}
/* stylelint-enable no-descending-specificity */
.sahc-nav__mobile-list {
  display: grid;
}

.sahc-nav .sahc-nav__mobile-row {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin: 0;
  padding: 16px 0;
  border: 0;
  border-bottom: 1px solid rgba(232, 228, 221, 0.1);
  background: transparent;
  color: #E8E4DD;
  font: inherit;
  font-size: 17px;
  font-weight: 500;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  appearance: none;
  transition: color 0.2s ease-in-out;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-nav .sahc-nav__mobile-row:hover, .sahc-nav .sahc-nav__mobile-row:active, .sahc-nav .sahc-nav__mobile-row:focus-visible {
  color: #F7B041;
}
.sahc-nav .sahc-nav__mobile-row svg {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
}

.sahc-nav__mobile-list > li:last-child .sahc-nav__mobile-row {
  border-bottom: 0;
}

.sahc-nav .sahc-nav__mobile-row--all {
  color: #F7B041;
}

.sahc-nav .sahc-nav__back {
  display: inline-flex;
  gap: 10px;
  align-items: center;
  margin: 8px 0 20px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #E8E4DD;
  font: inherit;
  font-size: 15px;
  font-weight: 400;
  cursor: pointer;
  appearance: none;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-nav .sahc-nav__back svg {
  width: 20px;
  height: 20px;
  transform: rotate(180deg);
}
.sahc-nav .sahc-nav__back:hover, .sahc-nav .sahc-nav__back:active, .sahc-nav .sahc-nav__back:focus-visible {
  color: #F7B041;
}

.sahc-nav__mobile-cards {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 8px;
}

.sahc-nav .sahc-nav__card--mobile {
  min-height: 200px;
}

@media (max-width: 1023px) {
  .sahc-nav__menu,
  .sahc-nav__actions,
  .sahc-nav__popup {
    display: none;
  }
  .sahc-nav .sahc-nav__burger {
    display: inline-flex;
  }
  .sahc-nav__inner {
    width: calc(100% - 40px);
  }
}
@media (max-width: 1180px) and (min-width: 1024px) {
  .sahc-nav .sahc-nav__item {
    padding: 0 9px;
    font-size: 15px;
  }
  .sahc-nav__actions {
    gap: 8px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sahc-nav,
  .sahc-nav__popup,
  .sahc-nav__panel,
  .sahc-nav__mobile,
  .sahc-nav__mobile-view {
    transition-duration: 0.01s !important;
  }
}
/* ==========================================================================
   Footer (Claude): resend.com's layout in the brand palette
   ========================================================================== */
/* The live site's folder: a box set 8px in from the page edges, its top
   edge chamfered at the left and stepping down twice at the right end,
   rounded at the bottom. The shape is drawn with hairlines: two cap SVGs
   carrying the live site's clip paths, a flat strip between them, and the
   body below. A 12px band above the folder keeps it off whatever section
   ends the page. */
.sahc-foot {
  position: relative;
  z-index: 2;
  padding: 12px 0 0;
  background: #090A0C;
  color: #E8E4DD;
  font-family: Outfit, sans-serif;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-foot *,
.sahc-foot *::before,
.sahc-foot *::after {
  box-sizing: border-box;
}
.sahc-foot :where(ul, li, p) {
  margin: 0;
  padding: 0;
  list-style: none;
}
.sahc-foot img {
  animation: none !important;
  background: none !important;
}

.sahc-foot__shape {
  --sahc-foot-paper: #0D0D0E;
  --sahc-foot-line: rgba(232, 228, 221, 0.12);
  position: relative;
  margin: 0 8px 8px;
}

.sahc-foot__tabrow {
  position: relative;
  z-index: 1;
  display: flex;
  height: 57px;
}

.sahc-foot__tab {
  flex: 1;
  border-top: 1px solid var(--sahc-foot-line);
}

.sahc-foot__cap {
  flex: 0 0 236px;
  width: 236px;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-foot__cap svg {
  display: block;
  width: 236px;
  height: 57px;
  overflow: visible;
}

.sahc-foot__cap--l {
  flex-basis: 52px;
  width: 52px;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-foot__cap--l svg {
  width: 52px;
}

.sahc-foot__cap-line {
  fill: none;
  stroke: var(--sahc-foot-line);
  stroke-width: 1;
}

.sahc-foot__box {
  position: relative;
  z-index: 1;
  border: 1px solid var(--sahc-foot-line);
  border-top: 0;
  border-radius: 0 0 10px 10px;
}

/* Paper and circuit lines sit on layers clipped to the folder
   silhouette (its rounded corners approximated with short segments), so
   they run under the tab row as well as the body. The lines are the models
   section's spans at the header's line opacity, lit by the script once most
   of the footer is on screen; they rise and settle on an inner wrapper so
   the clip itself never moves. */
.sahc-foot__paper,
.sahc-foot__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  clip-path: polygon(0 29px, 1px 24.5px, 3.5px 20.5px, 20.5px 3.5px, 24.5px 1px, 29px 0, calc(100% - 156px) 0, calc(100% - 151.5px) 1px, calc(100% - 147.5px) 3.5px, calc(100% - 130.5px) 20.5px, calc(100% - 126.5px) 23px, calc(100% - 122px) 24px, calc(100% - 29px) 24px, calc(100% - 24.5px) 25px, calc(100% - 20.5px) 27.5px, calc(100% - 3.5px) 44.5px, calc(100% - 1px) 48.5px, 100% 53px, 100% calc(100% - 10px), calc(100% - 0.76px) calc(100% - 6.17px), calc(100% - 2.93px) calc(100% - 2.93px), calc(100% - 6.17px) calc(100% - 0.76px), calc(100% - 10px) 100%, 10px 100%, 6.17px calc(100% - 0.76px), 2.93px calc(100% - 2.93px), 0.76px calc(100% - 6.17px), 0 calc(100% - 10px));
  pointer-events: none;
}

.sahc-foot__paper {
  background: var(--sahc-foot-paper);
}

.sahc-foot__bg {
  overflow: hidden;
}

.sahc-foot__bg-in {
  position: absolute;
  inset: 0;
  opacity: 0;
  transform: translate3d(0, 28px, 0) scale(1.03);
  transition: opacity 1.5s ease, transform 1.8s cubic-bezier(0.22, 1, 0.36, 1);
  /* The site's circuit-line pattern, one span per side masked by the
     pattern SVG, as the landing page's sections draw it. */
  /* The right-hand lines hang off the bottom edge with their upper half
     showing: the span takes the pattern's own proportions, then drops by
     half its height. */
}
.sahc-foot__bg-in .sahc-foot__lines {
  position: absolute;
  top: 0;
  bottom: 0;
  width: min(46%, 760px);
  background: rgba(232, 228, 221, 0.022);
  mask-repeat: no-repeat;
  mask-size: 100% auto;
  mask-position: top left;
}
.sahc-foot__bg-in .sahc-foot__lines--l {
  left: 0;
  mask-image: url("../../img/left-pattern-full.svg");
  mask-position: top right;
}
.sahc-foot__bg-in .sahc-foot__lines--r {
  top: auto;
  right: 0;
  bottom: 0;
  height: auto;
  aspect-ratio: 955/710;
  mask-image: url("../../img/right-pattern-full.svg");
  mask-position: top left;
  transform: translateY(50%);
}

.sahc-foot__bg.is-lit .sahc-foot__bg-in {
  opacity: 1;
  transform: none;
}

.sahc-foot__inner {
  position: relative;
  z-index: 1;
  display: flex;
  gap: 40px;
  width: calc(100% - 94px); /* 56px from the page edge */
  margin-inline: auto;
  padding: 16px 0 104px;
}

.sahc-foot__brand {
  display: flex;
  flex-direction: column;
  gap: 26px;
  align-items: flex-start;
  min-width: 300px;
}

/* stylelint-disable-next-line no-descending-specificity */
.sahc-foot__logo img {
  display: block;
  width: auto;
  height: 40px;
}

.sahc-foot .sahc-foot__tagline {
  max-width: 30ch;
  font-size: 14px;
  line-height: 1.6;
  color: #8A8690;
}

.sahc-foot__social {
  display: flex;
  gap: 12px;
}

/* Each icon lights in its own brand color on hover. */
.sahc-foot .sahc-foot__social a {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 1px solid rgba(232, 228, 221, 0.14);
  border-radius: 50%;
  color: #B8B4AD;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-foot .sahc-foot__social a:hover, .sahc-foot .sahc-foot__social a:focus-visible {
  border-color: color-mix(in srgb, var(--sahc-brand, #F7B041) 55%, transparent);
  background: color-mix(in srgb, var(--sahc-brand, #F7B041) 14%, transparent);
  color: var(--sahc-brand, #F7B041);
  transform: translateY(-1px);
}
.sahc-foot .sahc-foot__social a svg {
  width: 15px;
  height: 15px;
}
.sahc-foot .sahc-foot__social a .sahc-foot__social-inner {
  fill: transparent;
  transition: fill 0.2s ease;
}
.sahc-foot .sahc-foot__social a:hover .sahc-foot__social-inner, .sahc-foot .sahc-foot__social a:focus-visible .sahc-foot__social-inner {
  fill: #FFF;
}

/* Account buttons under the social links: the ghost one is the site's
   modal button (Log in, or Log out once signed in), the amber one a link. */
.sahc-foot__account {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.sahc-foot .sahc-foot__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  margin: 0;
  padding: 0 18px;
  border-radius: 999px;
  font-family: Outfit, sans-serif;
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
  text-decoration: none;
  cursor: pointer;
  appearance: none;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
}
.sahc-foot .sahc-foot__btn:focus {
  outline: none;
}
.sahc-foot .sahc-foot__btn:focus-visible {
  outline: 2px solid #F7B041;
  outline-offset: 3px;
}

.sahc-foot .sahc-foot__btn--primary {
  border: 0;
  background: #F7B041;
  color: #060608;
}
.sahc-foot .sahc-foot__btn--primary:hover, .sahc-foot .sahc-foot__btn--primary:focus {
  background: #F9B95A;
  color: #060608;
}

.sahc-foot .sahc-foot__btn--ghost {
  border: 1px solid rgba(232, 228, 221, 0.22);
  /* The folder's paper, solid, so the circuit lines stop at the button's
     edge while it still reads as clear. */
  background: var(--sahc-foot-paper);
  color: #E8E4DD;
}
.sahc-foot .sahc-foot__btn--ghost:hover, .sahc-foot .sahc-foot__btn--ghost:focus {
  border-color: rgba(247, 176, 65, 0.6);
  background: color-mix(in srgb, #F7B041 8%, var(--sahc-foot-paper));
  color: #F7B041;
}

.sahc-foot__account .wp-block-passport-logout {
  display: contents;
}

.sahc-foot .sahc-foot__copy {
  font-size: 13px;
  color: #6F6B78;
}

/* Four equal link groups; the models group is the tall one. */
.sahc-foot__grid {
  display: grid;
  flex: 1;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 40px;
}

.sahc-foot__col {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

.sahc-foot .sahc-foot__col-title {
  font-size: 15px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: #E8E4DD;
}

.sahc-foot .sahc-foot__col-title--also {
  margin-top: 14px;
}

/* The theme's list line-height would make these rows 40px tall. */
.sahc-foot__links {
  display: flex;
  flex-direction: column;
  gap: 11px;
  font-size: 14px;
  line-height: 1.45;
}

.sahc-foot .sahc-foot__link {
  display: inline-block;
  color: #B8B4AD;
  font-size: 14px;
  line-height: 1.45;
  text-decoration: none;
  transition: color 0.2s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.sahc-foot .sahc-foot__link:hover, .sahc-foot .sahc-foot__link:focus-visible {
  color: #F7B041;
  transform: translateX(2px);
}

/* "View all models": bold, spaced like a list row, turning amber with the
   arrow arriving on hover as on the tool cards. */
.sahc-foot .sahc-foot__more {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  align-self: flex-start;
  margin-top: -3px;
  color: #E8E4DD;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  transition: color 0.2s cubic-bezier(0.2, 0.8, 0.2, 1);
  /* stylelint-disable-next-line no-descending-specificity */
}
.sahc-foot .sahc-foot__more svg {
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity 0.25s ease, transform 0.25s ease;
}
.sahc-foot .sahc-foot__more:hover, .sahc-foot .sahc-foot__more:focus-visible {
  color: #F7B041;
}
.sahc-foot .sahc-foot__more:hover svg, .sahc-foot .sahc-foot__more:focus-visible svg {
  opacity: 1;
  transform: none;
}

@media (max-width: 1023px) {
  .sahc-foot__inner {
    flex-direction: column;
    gap: 44px;
    width: calc(100% - 48px);
    padding: 48px 0 56px;
  }
  .sahc-foot__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 36px 28px;
  }
}
@media (max-width: 640px) {
  .sahc-foot__shape {
    margin: 0 6px 6px;
  }
  .sahc-foot__tabrow {
    height: 36px;
  }
  .sahc-foot__cap {
    flex-basis: 149px;
  }
  .sahc-foot__cap svg {
    width: 149px;
    height: 36px;
  }
  .sahc-foot__cap--l {
    flex-basis: 33px;
  }
  .sahc-foot__cap--l svg {
    width: 33px;
  }
  .sahc-foot__paper,
  .sahc-foot__bg {
    clip-path: polygon(0 18.32px, 0.63px 15.47px, 2.21px 12.95px, 12.95px 2.21px, 15.47px 0.63px, 18.32px 0, calc(100% - 98.53px) 0, calc(100% - 95.68px) 0.63px, calc(100% - 93.16px) 2.21px, calc(100% - 82.42px) 12.95px, calc(100% - 79.89px) 14.53px, calc(100% - 77.05px) 15.16px, calc(100% - 18.32px) 15.16px, calc(100% - 15.47px) 15.79px, calc(100% - 12.95px) 17.37px, calc(100% - 2.21px) 28.11px, calc(100% - 0.63px) 30.63px, 100% 33.47px, 100% calc(100% - 10px), calc(100% - 0.76px) calc(100% - 6.17px), calc(100% - 2.93px) calc(100% - 2.93px), calc(100% - 6.17px) calc(100% - 0.76px), calc(100% - 10px) 100%, 10px 100%, 6.17px calc(100% - 0.76px), 2.93px calc(100% - 2.93px), 0.76px calc(100% - 6.17px), 0 calc(100% - 10px));
  }
  .sahc-foot__grid {
    grid-template-columns: minmax(0, 1fr);
  }
  .sahc-foot__brand {
    min-width: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .sahc-foot__bg-in {
    transition: opacity 0.6s ease;
  }
}
/* ==========================================================================
   Site chrome: the header and footer patterns on every page
   ========================================================================== */
/* The theme's header and footer template parts hold the patterns; their
   wrappers give way so the bar sticks against the page rather than a
   one-bar-tall parent, and the footer keeps its own margins. */
.wp-block-template-part:has(> .sahc-nav),
.wp-block-template-part:has(> .sahc-foot) {
  display: contents;
}

/* Off the landing page the bar takes its own room (nothing is designed to
   sit under it) and the footer follows the content on the page's ground. */
body:not(.sahc-page) .sahc-nav {
  margin-bottom: 0;
}

body:not(.sahc-page) .sahc-foot {
  background: transparent;
}

/* Other pages' sticky pieces, set against a header that used to scroll
   away. The careers index no longer sticks; the rest move down by the bar's
   height and stack beneath it (the bar is 40, the phone menu 45). */
body:not(.sahc-page) .sacx-index__sticky {
  position: relative;
  top: auto;
}
body:not(.sahc-page) .samx-overview__rail {
  top: 152px;
}
body:not(.sahc-page) .samx-cbar {
  top: 80px;
}
body:not(.sahc-page) .sacx-output__head {
  top: 106px;
}

/* Section tabs (the model pages, the team pages, the STEEL Lab page) take
   turns with the bar: they stick while the page scrolls down and the bar is
   away; as the bar comes back on a scroll up they slide out above it, so the
   two never share the top of the screen. The header script flags the bar's
   state on <html>. */
body:not(.sahc-page) .samx-tabs {
  position: sticky;
  top: 10px;
  z-index: 30;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.3s ease;
}

html:not(.sahc-nav-hidden) body:not(.sahc-page) .samx-tabs.is-stuck {
  transform: translateY(calc(-100% - 12px));
  opacity: 0;
  pointer-events: none;
}

@media (min-width: 1040px) {
  body.single-articles:not(.sahc-page) .sa-article-body > .sa-article-body__toc {
    top: calc(88px + var(--wp-admin--admin-bar--height, 0px));
  }
}
@media (max-width: 1039px) {
  body.single-articles:not(.sahc-page) .sa-article-body > .sa-article-body__toc.is-position-sticky {
    top: 68px;
  }
}
/* ==========================================================================
   Phone pass (Claude): the drawer
   ========================================================================== */
/* stylelint-disable no-descending-specificity */
/* While the menu is open the bar goes solid in the drawer's paper and drops
   its lines, so nothing behind it shows through as the drawer scrolls. */
.sahc-nav.is-menu-open::after {
  background: #0D0E10;
  backdrop-filter: none;
}

.sahc-nav.is-menu-open .sahc-nav__lines {
  display: none;
}

@media (max-width: 760px) {
  .sahc-foot__inner {
    gap: 36px;
    padding: 24px 0 48px;
  }
}
/* stylelint-enable no-descending-specificity */
/*# sourceMappingURL=site-chrome.css.map */