.SkipLink-skipLink-NVcZ7 {
  position: absolute !important;
  background: var(--color-background-highlighted-emphasis-base) !important;
}

  @media (prefers-reduced-motion: no-preference) {.SkipLink-skipLink-NVcZ7 {
    transition: var(--motion-property-primary) var(--motion-duration-200)
}
  }

/* visually hidden when not focused */
.SkipLink-skipLink-NVcZ7:not(:focus-visible) {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
  width: 1px;
  transform: translateY(-100%);
}

.SkipLink-skipLink-NVcZ7:focus-visible {
  transform: translateY(0%);
  top: var(--unit-space-75);
  left: var(--unit-space-75);
  z-index: var(--elevation-zIndex-xxl) !important;
}

.Toaster-toastRack-_XJg5 {
  position: fixed;
  top: var(--unit-space-300);
  left: 0;
  right: 0;
  margin: 0 auto;
  width: -moz-fit-content;
  width: fit-content;
  z-index: var(--elevation-zIndex-xxl);
}

  .Toaster-toastRack-_XJg5 > div:first-child {
    margin-block-end: var(--unit-space-75);
  }

.context-shell-RdWVZ {
  /* Gap and clip-delta jump when pin/peek bits change. The few boxes that
   * consume them (spacer, nav, header padding, page lock) interpolate their
   * used width/padding/margin. Do not @property-animate these on the shell —
   * inherited interpolated custom properties restyle the whole app every frame. */
  /* The drawer curve and press scale are component-specific motion values with
   * no exact Ascent tokens. Keep them centralized instead of approximating. */
  --desktop-navigation-easing: cubic-bezier(0.32, 0.72, 0, 1);
  --desktop-navigation-motion-duration: 250ms;
  /* Matches Component Library NavSidebar geometry. The 60px rail, 14px
   * gutter, and 6px row padding have no exact global spacing tokens; token
   * arithmetic would hide the geometry rather than make it semantic. */
  --desktop-navigation-rail-width: 60px;
  --desktop-navigation-gap: var(--desktop-navigation-width, 240px);
  --peek-clip-delta: 0px;
  --desktop-navigation-inline-gutter: 14px;
  --desktop-navigation-row-inline-padding: 6px;
  --desktop-navigation-child-label-padding: var(--unit-space-175);
  /* A 1px sibling rhythm is part of the navigation layout, not a border. */
  --desktop-navigation-item-gap: 1px;
  --desktop-navigation-press-scale: 0.985;
  --desktop-navigation-press-duration: var(--motion-duration-500);

  display: contents;
}

.context-shell-RdWVZ[data-desktop-navigation-open='false']:not(
    [data-desktop-navigation-preview='true']
  ) {
  --desktop-navigation-gap: var(--desktop-navigation-rail-width);
}

.context-shell-RdWVZ[data-desktop-navigation-open='false'][data-desktop-navigation-preview='true'] {
  --peek-clip-delta: calc(
    var(--desktop-navigation-width, 240px) -
      var(--desktop-navigation-rail-width)
  );
}

.AppShell-siteBodyWithNavigation-CYQ_m {
  background-color: var(--color-surface-app-background);
}

/* Keep overflow visible so the sidebar header can cover the page header,
 * but min-height: 0 so the body still shrinks and the page card can scroll.
 * ID beats Site.module `.base .siteBody { overflow: hidden }`. */
#AppShell-SiteBody.AppShell-siteBodyWithNavigation-CYQ_m:not(
    .AppShell-siteBodyMobileResponsive-GhHcA
  ) {
  overflow: visible;
  min-height: 0;
}

/* Search sits in a real center track. Only the right column is floored to
 * the actions width — the left can collapse so the field slides left instead
 * of overlapping the icons on a narrow window. */
.AppShell-navigationSiteHead-gAkRP header {
  --desktop-navigation-search-max-width: 600px;

  display: grid;
  grid-template-columns:
    minmax(0, 1fr)
    minmax(0, var(--desktop-navigation-search-max-width))
    minmax(max-content, 1fr);
  align-items: center;
}

.AppShell-navigationSiteHead-gAkRP header .context-container,
.AppShell-navigationSiteHead-gAkRP header .actions {
  width: auto;
  min-width: 0;
}

.AppShell-navigationSiteHead-gAkRP header .context-container {
  justify-self: start;
}

.AppShell-navigationSiteHead-gAkRP header .actions {
  justify-self: end;
  z-index: 1;
}

.AppShell-navigationSiteHead-gAkRP header .children-container {
  width: 100%;
  min-width: 0;
}

.AppShell-navigationSiteHead-gAkRP header .children-container > * {
  min-width: 0;
  max-width: 100%;
}

/* Header padding follows pin, not peek. Collapsed uses the rail so search
 * is already centered on the page card — no extra margin that would snap
 * off when open flips. Pin / unpin eases padding on the drawer curve. */
.AppShell-navigationSiteHead-gAkRP {
  background-color: var(--color-surface-app-background);
  padding-inline-start: var(--desktop-navigation-width, 240px);
}

[data-desktop-navigation-open='false'] .AppShell-navigationSiteHead-gAkRP {
  padding-inline-start: var(--desktop-navigation-rail-width, 60px);
}

@media (prefers-reduced-motion: no-preference) {

[data-desktop-navigation-animate='true'] .AppShell-navigationSiteHead-gAkRP {
    transition: padding-inline-start var(--desktop-navigation-motion-duration)
      var(--desktop-navigation-easing)
}
  }

.AppShell-siteMainWithNavigation-mSG7o {
  position: relative;
  z-index: var(--elevation-zIndex-component-sm);
  flex-basis: 0;
  min-width: 0;
  min-height: 0;
  background-color: var(--color-surface-primary-base);
  border-radius: var(--unit-border-radius-xl);
  border: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
  margin-block-end: var(--unit-space-50);
  margin-inline-end: var(--unit-space-50);
}

/* Beat Site.module `.base .siteMain { overflow: auto }` so peek clips.
 * Scroll lives on the Page-shaped lock below (Site already lets `.Page`
 * shrink; Page.base’s overflow:hidden is overridden here). */
#AppShell-SiteBody.AppShell-siteBodyWithNavigation-CYQ_m .AppShell-siteMainWithNavigation-mSG7o {
  overflow: hidden;
}

#AppShell-SiteBody.AppShell-siteBodyWithNavigation-CYQ_m
  .AppShell-siteMainWithNavigation-mSG7o
  > .AppShell-pageLock-kb9P6 {
  overflow: auto;
}

.AppShell-siteMainWithNavigation-mSG7o::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  /* ::before sits on the padding box, 1px inside the card border. Inherit
   * would reuse the outer radius on a smaller box and read as a second curve. */
  border-radius: calc(
    var(--unit-border-radius-xl) - var(--unit-border-width-xs)
  );
  pointer-events: none;
  box-shadow: var(--elevation-shadow-inset-200);
  opacity: 0;
}

@media (prefers-reduced-motion: no-preference) {

[data-desktop-navigation-animate='true']
  .AppShell-siteMainWithNavigation-mSG7o::before {
    transition: opacity var(--desktop-navigation-motion-duration)
      var(--desktop-navigation-easing)
}
  }

[data-desktop-navigation-open='false'][data-desktop-navigation-preview='true']
  .AppShell-siteMainWithNavigation-mSG7o::before {
  opacity: 1;
}

.AppShell-pageLock-kb9P6 {
  min-width: 0;
  min-height: 0;
  width: calc(100% + var(--peek-clip-delta, 0px));
  margin-inline-start: calc(-1 * var(--peek-clip-delta, 0px));
}

@media (prefers-reduced-motion: no-preference) {

[data-desktop-navigation-animate='true'] .AppShell-pageLock-kb9P6 {
    transition:
      width var(--desktop-navigation-motion-duration)
        var(--desktop-navigation-easing),
      margin-inline-start var(--desktop-navigation-motion-duration)
        var(--desktop-navigation-easing)
}
  }

.AppShell-siteBodyMobileResponsive-GhHcA {
  position: relative;
}

/* With the sidebar hidden on the mobile shell, give the content card
   symmetric edge spacing (desktop relies on the sidebar for the left gap). */
.AppShell-siteBodyMobileResponsive-GhHcA .AppShell-siteMainWithNavigation-mSG7o {
  margin-inline: var(--unit-space-75);
}

/* Carries inert/aria-hidden without generating a layout box. */
.AppShell-layoutlessWrapper-wtJpy {
  display: contents;
}

.AppShell-mobileNavOverlay-Qy8CI {
  position: absolute;
  inset: 0;
  z-index: var(--elevation-zIndex-lg);
  background-color: var(--color-surface-app-background);
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.AppShell-mobileNavActions-tN1Sa {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--unit-space-50);
  padding: var(--unit-space-75);
}

.AppShell-mobileNavBody-yg5sY {
  flex: 1 1 auto;
  min-height: 0;
}

/* Closed-but-mounted: hidden from layout, paint, and the accessibility tree. */
.AppShell-mobileNavOverlayClosed-Ob4xo {
  display: none;
}

/* Box API does not support single-side border; keep block-end border only here */
.AppShell-headerFallbackBorder-O1XOK {
  border-block-end: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
}

.AppShell-composerPanelRail-AEPyT {
  --app-shell-composer-panel-easing: cubic-bezier(0.23, 1, 0.32, 1);

  box-sizing: border-box;
  flex: 0 0 auto;
  position: relative;
  width: 0;
  min-width: 0;
  overflow: hidden;
  transition: width 200ms var(--app-shell-composer-panel-easing);
}

.AppShell-composerPanelRail-AEPyT.AppShell-composerPanelExpanded-gBD7G {
  width: calc(
    var(--app-shell-composer-panel-width, 400px) + var(--unit-space-50)
  );
  transition-duration: 250ms;
}

.AppShell-composerPanelRail-AEPyT.AppShell-composerPanelResizing-fkr3x {
  transition-duration: 0s;
}

.AppShell-composerPanelSurface-qBvi2 {
  position: absolute;
  box-sizing: border-box;
  inset-block-start: 0;
  inset-block-end: var(--unit-space-50);
  inset-inline-end: var(--unit-space-50);
  width: var(--app-shell-composer-panel-width, 400px);
  min-width: 0;
  overflow: hidden;
  isolation: isolate;
  background: var(--color-background-input-base);
  border: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
  border-radius: var(--unit-border-radius-xl);
  opacity: 0;
  filter: blur(2px);
  scale: 0.98;
  transform-origin: 65% center;
  pointer-events: none;
  transition:
    opacity 200ms var(--app-shell-composer-panel-easing),
    filter 200ms var(--app-shell-composer-panel-easing),
    scale 200ms var(--app-shell-composer-panel-easing);
}

.AppShell-composerPanelSurface-qBvi2.AppShell-composerPanelVisible-fPuFQ {
  opacity: 1;
  filter: none;
  scale: 1;
  pointer-events: auto;
  transform: translateZ(0);
  contain: layout paint;
  transition-duration: 250ms;
}

.AppShell-composerPanelSurface-qBvi2.AppShell-composerPanelResizing-fkr3x {
  transition-duration: 0s;
}

.AppShell-composerPanelContent-tBK9s {
  position: absolute;
  inset: 0;
  display: flex;
  min-width: 0;
  min-height: 0;
}

@media (prefers-reduced-motion: reduce) {
  .AppShell-composerPanelRail-AEPyT,
  .AppShell-composerPanelSurface-qBvi2 {
    transition: none;
  }
}

