{"version":3,"sources":["../src/avatar.tsx","../src/avatar-group.tsx","../src/row.tsx","../src/column.tsx","../src/group.tsx","../src/badge.tsx","../src/utils/get-sx-color.ts","../src/blockquote.tsx","../src/button.tsx","../src/link.tsx","../src/utils/get-size-styles.ts","../src/callout.tsx","../src/caption.tsx","../src/colorbar.tsx","../src/colors.tsx","../src/custom-404.tsx","../src/layout.tsx","../src/meta.tsx","../src/header/header.tsx","../src/logo.tsx","../src/header/menu.tsx","../src/header/header-icon.tsx","../src/header/navigation-menu.tsx","../src/header/search.tsx","../src/header/search-menu.tsx","../src/input.tsx","../src/footer.tsx","../src/monogram.tsx","../src/dimmer.tsx","../src/metadata.tsx","../src/gitsha.tsx","../src/fade-in.tsx","../src/scrollbar.tsx","../src/utils/get-scrollbar-width.ts","../src/guide.tsx","../src/settings.tsx","../src/expander.tsx","../src/figure.tsx","../src/figure-caption.tsx","../src/filter.tsx","../src/tag.tsx","../src/heading.tsx","../src/sidenote.tsx","../src/link-group.tsx","../src/select.tsx","../src/slider.tsx","../src/table.tsx","../src/table-caption.tsx","../src/toggle.tsx","../src/tray.tsx","../src/utils/format-date.ts","../src/utils/use-scrollbar-class.ts"],"sourcesContent":["import React from 'react'\nimport { Box, Image, BoxProps } from 'theme-ui'\n\nexport interface AvatarProps extends BoxProps {\n  color?: string\n  width?: string\n  maxWidth?: string | number\n  name?: string\n  github?: string\n  alt?: string\n  src?: string\n}\n\nconst Avatar = ({\n  color = 'transparent',\n  width = '90px',\n  maxWidth,\n  name,\n  github,\n  alt,\n  src,\n  sx,\n  ...props\n}: AvatarProps) => {\n  if (!name && !src && !github) {\n    console.warn('must specify either name, github, or src')\n  }\n\n  let srcProp, altProp\n  if (name) {\n    srcProp = `https://images.carbonplan.org/team/${name\n      .toLowerCase()\n      .replaceAll(' ', '-')}.png`\n    altProp = alt || name\n  } else if (github) {\n    srcProp = `https://github.com/${github}.png`\n    altProp = alt || github\n  } else {\n    srcProp = src\n    altProp = alt\n  }\n\n  return (\n    <Box\n      sx={{\n        width: width,\n        maxWidth: maxWidth,\n        height: 'auto',\n        borderRadius: '50%',\n        overflow: 'hidden',\n        position: 'relative',\n        display: 'inline-block',\n        verticalAlign: 'top',\n        ...sx,\n      }}\n      {...props}\n    >\n      <Image\n        alt={altProp}\n        src={srcProp}\n        sx={{\n          filter:\n            color && color !== 'transparent'\n              ? 'grayscale(100%) contrast(200%) brightness(100%)'\n              : 'none',\n          width: '100%',\n          display: 'block',\n        }}\n      />\n      {color && color !== 'transparent' && (\n        <Box\n          sx={{\n            position: 'absolute',\n            top: 0,\n            bg: color,\n            width: '100%',\n            height: '100%',\n            opacity: 0.75,\n            pointerEvents: 'none',\n          }}\n        />\n      )}\n    </Box>\n  )\n}\n\nexport default Avatar\n","import React from 'react'\nimport { Box, GridProps } from 'theme-ui'\nimport Avatar, { AvatarProps } from './avatar'\nimport Row, { RowProps } from './row'\nimport Column from './column'\nimport Group, { GroupProps } from './group'\n\nconst sizes = {\n  xs: [1],\n  sm: [3],\n  md: [5],\n  lg: [7],\n  xl: [9],\n}\n\ntype SizeKey = keyof typeof sizes\n\ntype BlankProps = {\n  overflow: number\n  maxWidth?: string | number\n}\n\nconst Blank = ({ overflow, maxWidth }: BlankProps) => {\n  return (\n    <Box\n      sx={{\n        bg: 'muted',\n        height: '100%',\n        maxWidth: maxWidth,\n        borderRadius: '50%',\n      }}\n    >\n      <Box\n        sx={{\n          display: 'flex',\n          justifyContent: 'center',\n          alignItems: 'center',\n          height: '100%',\n        }}\n      >\n        <Box\n          sx={{\n            fontFamily: 'mono',\n            letterSpacing: 'mono',\n            fontSize: [3, 3, 3, 4],\n          }}\n        >\n          +{overflow}\n        </Box>\n      </Box>\n    </Box>\n  )\n}\n\ntype Alignment = 'left' | 'right'\n\ntype StartValue = 'auto' | number | (number | 'auto')[]\n\nexport interface AvatarGroupProps extends RowProps, GroupProps {\n  members: AvatarProps[]\n  direction?: 'horizontal' | 'vertical'\n  align?: Alignment | Alignment[]\n  spacing?: SizeKey | GridProps['gap']\n  limit?: number\n  width?: string\n  maxWidth?: string | number\n  fixedCount?: number\n}\n\nconst AvatarGroup = ({\n  members,\n  direction = 'horizontal',\n  align,\n  spacing = 'md',\n  limit,\n  width,\n  maxWidth,\n  fixedCount,\n  sx,\n  ...props\n}: AvatarGroupProps) => {\n  let gap\n\n  if (typeof spacing === 'string' && spacing in sizes) {\n    gap = sizes[spacing as SizeKey]\n  } else {\n    gap = spacing\n  }\n\n  let start = (_idx: number): StartValue => 'auto'\n  if (align) {\n    const alignArray = Array.isArray(align) ? align : [align]\n    start = (idx) => {\n      return alignArray.map((d) => {\n        if (d === 'left') {\n          return 'auto'\n        } else if (d === 'right') {\n          const offset = Math.max(0, (fixedCount ?? 0) - members.length)\n          return ((offset + idx) % (fixedCount ?? 1)) + 1\n        } else {\n          throw Error(`alignment '${d}' not recognized`)\n        }\n      })\n    }\n  }\n\n  const excess = limit !== undefined && members.length > limit\n  const overflow = limit !== undefined ? members.length - limit + 1 : 0\n\n  return (\n    <>\n      {fixedCount && (\n        <Row columns={fixedCount} gap={gap} sx={sx} {...props}>\n          {members.map((props, idx) => (\n            <Column key={idx} start={start(idx)}>\n              {(!excess || (limit !== undefined && idx < limit - 1)) && (\n                <Avatar {...props} width={width} maxWidth={maxWidth} />\n              )}\n              {excess && limit !== undefined && idx === limit - 1 && (\n                <Blank overflow={overflow} maxWidth={maxWidth} />\n              )}\n            </Column>\n          ))}\n        </Row>\n      )}\n      {!fixedCount && (\n        <Group direction={direction} spacing={spacing} sx={sx} {...props}>\n          {members.map((props, idx) => (\n            <Avatar key={idx} {...props} width={width} maxWidth={maxWidth} />\n          ))}\n        </Group>\n      )}\n    </>\n  )\n}\n\nexport default AvatarGroup\n","import React from 'react'\nimport { Grid, GridProps } from 'theme-ui'\n\nexport type RowProps = GridProps\n\nconst Row = ({ children, sx, columns, gap, ...props }: GridProps) => {\n  const makeArray = (input: GridProps['gap']): GridProps['gap'] => {\n    if (!Array.isArray(input)) {\n      input = [input, input, input, input]\n    }\n    if (Array.isArray(input) && ![1, 2, 4].includes(input.length)) {\n      throw new Error('Array length must be 1, 2, or 4')\n    }\n    if (Array.isArray(input) && input.length === 1) {\n      input = input.map((d) => [d]).flat()\n    }\n    if (Array.isArray(input) && input.length === 2) {\n      input = input.map((d) => [d, d]).flat()\n    }\n    return input\n  }\n\n  let columnGap: GridProps['gap'], rowGap: GridProps['gap']\n  if (Number.isInteger(gap) || Array.isArray(gap)) {\n    gap = makeArray(gap)\n    columnGap = gap\n    rowGap = gap\n  } else {\n    columnGap = [4, 5, 5, 6]\n    rowGap = [0, 0, 0, 0]\n  }\n\n  if (Number.isInteger(columns) || Array.isArray(columns)) {\n    columns = makeArray(columns)\n  } else {\n    columns = [6, 8, 12, 12]\n  }\n\n  return (\n    <Grid\n      {...props}\n      columns={columns}\n      sx={{\n        columnGap: columnGap,\n        rowGap: rowGap,\n        ...sx,\n      }}\n    >\n      {children}\n    </Grid>\n  )\n}\n\nexport default Row\n","import React from 'react'\nimport { Box, BoxProps, ThemeUICSSObject } from 'theme-ui'\n\nexport interface ColumnProps extends BoxProps {\n  start?: number | 'auto' | (number | 'auto')[]\n  width?: number | 'auto' | (number | 'auto')[]\n  dl?: 0.5 | 1\n  dr?: 0.5 | 1\n}\n\ntype GridValue = number | 'auto'\n\nconst Column = ({\n  start,\n  width,\n  dl,\n  dr,\n  children,\n  sx,\n  ...props\n}: ColumnProps) => {\n  start = start || 'auto'\n  width = width || 'auto'\n\n  const makeArray = (input: GridValue | GridValue[]): GridValue[] => {\n    let arr: GridValue[] = Array.isArray(input) ? input : [input]\n\n    if (![1, 2, 4].includes(arr.length)) {\n      throw new Error('Array length must be 1, 2, or 4')\n    }\n\n    if (arr.length === 1) {\n      arr = arr.map((d) => [d, d, d, d]).flat()\n    } else if (arr.length === 2) {\n      arr = arr.map((d) => [d, d]).flat()\n    }\n\n    return arr\n  }\n\n  const startArray = makeArray(start)\n  const widthArray = makeArray(width)\n\n  const end = startArray.map((d, i) => {\n    if (d === 'auto' || widthArray[i] === 'auto') return 'auto'\n    return d + widthArray[i]\n  })\n\n  let ml: ThemeUICSSObject['ml'], mr: ThemeUICSSObject['mr']\n\n  if (dl) {\n    if (![0.5, 1].includes(dl)) {\n      throw new Error('dl must be 0.5 or 1')\n    }\n    if (dl === 0.5) {\n      ml = ['-12px', -3, -3, -4]\n    }\n    if (dl === 1) {\n      ml = [-4, -5, -5, -6]\n    }\n  }\n\n  if (dr) {\n    if (![0.5, 1].includes(dr)) {\n      throw new Error('dr must be 0.5 or 1')\n    }\n    if (dr === 0.5) {\n      mr = ['-12px', -3, -3, -4]\n    }\n    if (dr === 1) {\n      mr = [-4, -5, -5, -6]\n    }\n  }\n\n  return (\n    <Box\n      {...props}\n      sx={{\n        gridColumnStart: startArray,\n        gridColumnEnd: end,\n        ml: ml,\n        mr: mr,\n        ...sx,\n      }}\n    >\n      {children}\n    </Box>\n  )\n}\n\nexport default Column\n","import React from 'react'\nimport { Box, ResponsiveStyleValue, ThemeUIStyleObject } from 'theme-ui'\n\nconst sizes = {\n  xs: [1],\n  sm: [3],\n  md: [5],\n  lg: [7],\n  xl: [9],\n}\n\ntype SizeKey = keyof typeof sizes\ntype Direction = 'horizontal' | 'vertical'\ntype SpacingValue = SizeKey | ResponsiveStyleValue<number | string>\n\nexport interface GroupProps {\n  children?: React.ReactNode\n  direction?: Direction\n  spacing?: SpacingValue\n  sx?: ThemeUIStyleObject\n}\n\nconst Group = ({\n  children,\n  direction = 'vertical',\n  spacing = 'md',\n  sx,\n}: GroupProps) => {\n  let marginValue\n\n  if (typeof spacing === 'string' && spacing in sizes) {\n    marginValue = sizes[spacing as SizeKey]\n  } else {\n    marginValue = spacing\n  }\n\n  if (!['horizontal', 'vertical'].includes(direction)) {\n    throw new Error(\n      'Invalid direction value. Must be either horizontal or vertical'\n    )\n  }\n\n  const marginProperty = direction === 'vertical' ? 'mb' : 'mr'\n  const additionalStyles =\n    direction === 'horizontal' ? { display: 'inline-block' } : {}\n  return (\n    <Box sx={sx}>\n      {React.Children.map(children, (child, i) => {\n        const childrenCount = React.Children.count(children)\n        return (\n          <Box\n            sx={{\n              [marginProperty]: i < childrenCount - 1 ? marginValue : 0,\n              ...additionalStyles,\n            }}\n          >\n            {child}\n          </Box>\n        )\n      })}\n    </Box>\n  )\n}\n\nexport default Group\n","import React from 'react'\nimport { Box, BoxProps } from 'theme-ui'\nimport { transparentize } from '@theme-ui/color'\nimport getSxColor from './utils/get-sx-color'\n\nexport type BadgeProps = BoxProps\n\nconst Badge = ({ sx, children, ...props }: BadgeProps) => {\n  const color = getSxColor(sx)\n  return (\n    <Box\n      sx={{\n        display: 'inline-block',\n        width: 'fit-content',\n        height: ['24px', '24px', '24px', '26px'],\n        borderRadius: '5px',\n        backgroundColor:\n          color === 'primary' || color === 'secondary'\n            ? 'muted'\n            : transparentize(color, 0.7),\n        textAlign: 'center',\n        userSelect: 'none',\n        fontSize: [2, 2, 2, 3],\n        ...sx,\n      }}\n      {...props}\n    >\n      <Box\n        sx={{\n          letterSpacing: '0.02em',\n          fontFamily: 'mono',\n          mt: ['1px', '1px', '1px', '0px'],\n          px: [1, 1, 1, '5px'],\n          color: color,\n        }}\n      >\n        {children}\n      </Box>\n    </Box>\n  )\n}\n\nexport default Badge\n","import { ThemeUIStyleObject } from 'theme-ui'\n\nconst getSxColor = (sx?: ThemeUIStyleObject, fallback = 'primary'): string =>\n  sx && typeof sx === 'object' && 'color' in sx && typeof sx.color === 'string'\n    ? sx.color\n    : fallback\n\nexport default getSxColor\n","import React, { Children, PropsWithChildren } from 'react'\nimport { Box } from 'theme-ui'\n\nexport type BlockquoteProps = PropsWithChildren<{}>\n\nconst specialChars = ['“', '\"', \"'\", '‘']\n\nconst Blockquote = ({ children }: BlockquoteProps) => {\n  return (\n    <Box variant='styles.blockquote'>\n      {Children.map(children, (d: React.ReactNode) => {\n        let firstChar = ''\n        let remaining: React.ReactNode = d\n        if (React.isValidElement(d) && typeof d.props.children === 'string') {\n          firstChar = d.props.children.slice(0, 1)\n          remaining = d.props.children.slice(1)\n        } else if (typeof d === 'string') {\n          firstChar = d.slice(0, 1)\n          remaining = d.slice(1)\n        }\n\n        return (\n          <>\n            {specialChars.includes(firstChar) && (\n              <Box as='span' sx={{ position: 'absolute', ml: '-0.4em' }}>\n                {firstChar}\n              </Box>\n            )}\n            {specialChars.includes(firstChar) ? remaining : d}\n          </>\n        )\n      })}\n    </Box>\n  )\n}\n\nexport default Blockquote\n","import React, { forwardRef, cloneElement } from 'react'\nimport { Box, BoxProps, ThemeUIStyleObject } from 'theme-ui'\nimport Link, { LinkProps } from './link'\nimport getSizeStyles from './utils/get-size-styles'\n\nconst hasHoverProp = (comp: unknown): comp is { hover: ThemeUIStyleObject } => {\n  if (comp == null) return false\n  const isObjectOrFunction =\n    typeof comp === 'object' || typeof comp === 'function'\n  return isObjectOrFunction && 'hover' in comp\n}\n\nexport interface ButtonProps\n  extends Omit<BoxProps, 'prefix'>,\n    Omit<\n      React.ButtonHTMLAttributes<HTMLButtonElement>,\n      keyof BoxProps | 'prefix'\n    > {\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  align?:\n    | 'baseline'\n    | 'sub'\n    | 'super'\n    | 'text-top'\n    | 'text-bottom'\n    | 'middle'\n    | 'top'\n    | 'bottom'\n    | 'initial'\n  suffix?: (React.ReactElement & { props?: { sx?: ThemeUIStyleObject } }) | null\n  prefix?: (React.ReactElement & { props?: { sx?: ThemeUIStyleObject } }) | null\n  inverted?: boolean\n  href?: string\n  internal?: boolean\n}\n\nconst Button = (\n  {\n    size = 'sm',\n    prefix,\n    suffix,\n    inverted,\n    sx,\n    children,\n    align,\n    href,\n    internal,\n    ...props\n  }: ButtonProps,\n  ref: React.Ref<HTMLButtonElement | HTMLAnchorElement>\n) => {\n  if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {\n    throw new Error('Size must be xs, sm, md, lg, or xl')\n  }\n\n  const { color: sxColor, ...sxProp } = sx && typeof sx === 'object' ? sx : {}\n  const baseColor =\n    (typeof sxColor === 'string' && sxColor) ||\n    (inverted ? 'secondary' : 'primary')\n  const hoverColor = sxColor ? 'primary' : inverted ? 'primary' : 'secondary'\n\n  const sizeConfig = {\n    xs: {\n      margin: ['6px', '6px', '6px', '6px'],\n      height: [12, 12, 12, 13],\n      width: [12, 12, 12, 13],\n      strokeWidth: [1.5, 1.5, 1.5, 1.5],\n      offset: { transform: 'translateY(0.25px)' },\n    },\n    sm: {\n      margin: ['7px', '7px', '7px', '7px'],\n      height: [13, 13, 13, 18],\n      width: [13, 13, 13, 18],\n      strokeWidth: [1.5, 1.5, 1.5, 2],\n      offset: { transform: 'translateY(0.25px)' },\n    },\n    md: {\n      margin: ['8px', '8px', '8px', '8px'],\n      height: [18, 18, 18, 24],\n      width: [18, 18, 18, 24],\n      strokeWidth: [2, 2, 2, 3],\n      offset: {},\n    },\n    lg: {\n      margin: ['10px', '10px', '12px', '16px'],\n      height: [24, 24, 34, 46],\n      width: [24, 24, 34, 46],\n      strokeWidth: [3, 3, 4, 5],\n      offset: {},\n    },\n    xl: {\n      margin: ['12px', '16px', '18px', '20px'],\n      height: [34, 46, 56, 68],\n      width: [34, 46, 56, 68],\n      strokeWidth: [4, 5, 6, 7],\n      offset: {},\n    },\n  }\n\n  const { margin, height, width, strokeWidth, offset } = sizeConfig[size]\n\n  let prefixHover,\n    suffixHover,\n    prefixAlign,\n    suffixAlign,\n    prefixOffset,\n    suffixOffset\n\n  if (align) {\n    prefixAlign = align\n    suffixAlign = align\n  } else {\n    if (prefix && suffix) {\n      prefixAlign = 'initial'\n      suffixAlign = 'initial'\n    } else if (prefix) {\n      prefixAlign = 'initial'\n    } else if (suffix) {\n      suffixAlign = 'middle'\n    }\n  }\n\n  if (prefixAlign === 'middle') {\n    prefixOffset = {}\n  } else {\n    prefixOffset = offset\n  }\n\n  if (suffixAlign === 'middle') {\n    suffixOffset = {}\n  } else {\n    suffixOffset = offset\n  }\n\n  let clonedPrefix, clonedSuffix\n\n  if (prefix) {\n    prefixHover = {\n      '&:hover > #prefix-span > #prefix': {\n        color: hoverColor,\n        ...(hasHoverProp(prefix.type) ? prefix.type.hover : {}),\n      },\n    }\n    clonedPrefix = cloneElement(prefix, {\n      id: 'prefix',\n      sx: {\n        position: 'relative',\n        height: height,\n        width: width,\n        mr: children ? margin : [0],\n        strokeWidth: strokeWidth,\n        verticalAlign: prefixAlign,\n        transition: 'color 0.15s, transform 0.15s',\n        ...prefix.props?.sx,\n      },\n    })\n  }\n\n  if (suffix) {\n    suffixHover = {\n      '&:hover > #suffix-span >#suffix': {\n        color: hoverColor,\n        ...(hasHoverProp(suffix.type) ? suffix.type.hover : {}),\n      },\n    }\n    clonedSuffix = cloneElement(suffix, {\n      id: 'suffix',\n      sx: {\n        height: height,\n        width: width,\n        ml: children ? margin : [0],\n        strokeWidth: strokeWidth,\n        verticalAlign: suffixAlign,\n        transition: 'color 0.15s, transform 0.15s',\n        ...suffix.props?.sx,\n      },\n    })\n  }\n\n  let sizeStyles = getSizeStyles(size)\n\n  const style = {\n    ...sizeStyles,\n    lineHeight: 1.05,\n    border: 'none',\n    background: 'transparent',\n    display: 'block',\n    color: baseColor,\n    padding: [0],\n    textAlign: 'left' as const,\n    cursor: 'pointer',\n    width: 'fit-content',\n    '@media (hover: hover) and (pointer: fine)': {\n      '&:hover': {\n        color: hoverColor,\n      },\n      ...suffixHover,\n      ...prefixHover,\n    },\n    ...sxProp,\n  }\n\n  const Inner = (\n    <>\n      <Box\n        as='span'\n        id='prefix-span'\n        sx={{ display: 'inline-block', ...prefixOffset }}\n      >\n        {clonedPrefix}\n      </Box>\n      <Box as='span' sx={{ transition: 'color 0.15s' }}>\n        {children}\n      </Box>\n      <Box\n        as='span'\n        id='suffix-span'\n        sx={{ display: 'inline-block', ...suffixOffset }}\n      >\n        {clonedSuffix}\n      </Box>\n    </>\n  )\n\n  if (href) {\n    return (\n      <Link\n        ref={ref as React.Ref<HTMLAnchorElement>}\n        internal={internal}\n        sx={{\n          ...style,\n          textDecoration: 'none',\n        }}\n        {...(props as LinkProps)}\n        href={href}\n      >\n        {Inner}\n      </Link>\n    )\n  } else {\n    return (\n      <Box\n        ref={ref as React.Ref<HTMLButtonElement>}\n        as='button'\n        sx={style}\n        {...props}\n      >\n        {Inner}\n      </Box>\n    )\n  }\n}\n\nexport default forwardRef<HTMLAnchorElement | HTMLButtonElement, ButtonProps>(\n  Button\n)\n","import React, { forwardRef } from 'react'\nimport { Link as ThemedLink, LinkProps as ThemedLinkProps } from 'theme-ui'\nimport { default as NextLink } from 'next/link'\n\nexport interface LinkProps extends ThemedLinkProps {\n  href?: string\n  internal?: boolean\n}\n\nconst Link = (\n  { href, children, internal = false, ...props }: LinkProps,\n  ref: React.Ref<HTMLAnchorElement>\n) => {\n  if (href && (internal || href.startsWith('/'))) {\n    return (\n      <NextLink href={href} passHref legacyBehavior>\n        <ThemedLink ref={ref} {...props}>\n          {children}\n        </ThemedLink>\n      </NextLink>\n    )\n  } else {\n    return (\n      <ThemedLink ref={ref} href={href} {...props}>\n        {children}\n      </ThemedLink>\n    )\n  }\n}\n\nexport default forwardRef<HTMLAnchorElement, LinkProps>(Link)\n","const getSizeStyles = (size: 'xs' | 'sm' | 'md' | 'lg' | 'xl') => {\n  if (!['xs', 'sm', 'md', 'lg', 'xl'].includes(size)) {\n    throw new Error('Size must be xs, sm, md, lg, or xl')\n  }\n\n  let fontSize, fontFamily, letterSpacing, lineHeight\n\n  if (size === 'xs') {\n    fontSize = [2, 2, 2, 3]\n    fontFamily = 'body'\n    letterSpacing = 'body'\n    lineHeight = [1.2]\n  }\n\n  if (size === 'sm') {\n    fontSize = [3, 3, 3, 4]\n    fontFamily = 'body'\n    letterSpacing = 'body'\n    lineHeight = [1.2]\n  }\n\n  if (size === 'md') {\n    fontSize = [4, 4, 4, 5]\n    fontFamily = 'body'\n    letterSpacing = 'body'\n    lineHeight = [1.2]\n  }\n\n  if (size === 'lg') {\n    fontSize = [5, 5, 6, 7]\n    fontFamily = 'heading'\n    letterSpacing = 'heading'\n    lineHeight = [1.2, 1.2, 1.25, 1.25]\n  }\n\n  if (size === 'xl') {\n    fontSize = [6, 7, 8, 9]\n    fontFamily = 'heading'\n    letterSpacing = 'heading'\n    lineHeight = [1.25]\n  }\n\n  return { fontSize, fontFamily, letterSpacing, lineHeight }\n}\n\nexport default getSizeStyles\n","import React, { forwardRef, ReactNode } from 'react'\nimport { Box, ThemeUIStyleObject } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport Link from './link'\n\nexport interface CalloutProps\n  extends React.AnchorHTMLAttributes<HTMLElement>,\n    Omit<\n      React.ButtonHTMLAttributes<HTMLButtonElement>,\n      keyof React.AnchorHTMLAttributes<HTMLElement>\n    > {\n  label: ReactNode\n  children: ReactNode\n  inverted?: boolean\n  internal?: boolean\n  sx?: ThemeUIStyleObject\n}\n\ntype RefType = React.Ref<HTMLAnchorElement | HTMLButtonElement>\n\nconst Callout = (\n  {\n    label,\n    children,\n    inverted,\n    color,\n    href,\n    internal,\n    sx,\n    ...props\n  }: CalloutProps,\n  ref: RefType\n) => {\n  const baseColor = color || (inverted ? 'secondary' : 'primary')\n  const hoverColor = color ? 'primary' : inverted ? 'primary' : 'secondary'\n\n  const style = {\n    border: 'none',\n    padding: [0],\n    fontSize: [3, 3, 3, 4],\n    color: baseColor,\n    background: 'transparent',\n    textDecoration: 'none',\n    fontFamily: 'body',\n    lineHeight: 'h3',\n    letterSpacing: 'body',\n    width: 'fit-content',\n    cursor: 'pointer',\n    textAlign: 'left' as const,\n    mb: [1],\n    '@media (hover: hover) and (pointer: fine)': {\n      '&:hover > #container > #arrow': {\n        transform: 'rotate(45deg)',\n        fill: hoverColor,\n      },\n      '&:hover': {\n        color: hoverColor,\n      },\n    },\n    ...sx,\n  }\n\n  const Inner = (\n    <>\n      <Box sx={{ transition: '0.15s', letterSpacing: 'body', pb: ['6px'] }}>\n        {children}\n      </Box>\n      <Box\n        sx={{\n          transition: '0.15s',\n          display: 'inline-block',\n          textTransform: 'uppercase',\n          letterSpacing: 'smallcaps',\n          fontFamily: 'heading',\n          fontSize: [2, 2, 2, 3],\n        }}\n      >\n        {label}\n      </Box>\n      <Box\n        as='span'\n        id='container'\n        sx={{\n          ml: [2],\n          display: 'inline-block',\n        }}\n      >\n        <Arrow\n          id='arrow'\n          sx={{\n            transition: 'fill 0.15s, transform 0.15s',\n            position: 'relative',\n            top: ['2px'],\n            color: baseColor,\n            height: [15, 15, 15, 17],\n            width: [15, 15, 15, 17],\n          }}\n        />\n      </Box>\n    </>\n  )\n\n  if (href) {\n    return (\n      <Link\n        ref={ref as React.Ref<HTMLAnchorElement>}\n        href={href}\n        internal={internal}\n        sx={style}\n        {...props}\n      >\n        {Inner}\n      </Link>\n    )\n  } else {\n    return (\n      <Box\n        ref={ref as React.Ref<HTMLButtonElement>}\n        as='button'\n        sx={style}\n        {...props}\n      >\n        {Inner}\n      </Box>\n    )\n  }\n}\n\nexport default forwardRef<HTMLAnchorElement | HTMLButtonElement, CalloutProps>(\n  Callout\n)\n","import React, { ReactNode } from 'react'\nimport { Box, BoxProps } from 'theme-ui'\n\nexport interface CaptionProps {\n  as?: BoxProps['as']\n  number?: number\n  children: ReactNode\n  label?: string\n}\n\nconst Caption = ({\n  as = 'figcaption',\n  number,\n  children,\n  label = 'figure',\n}: CaptionProps) => {\n  return (\n    <Box\n      as={as}\n      sx={{\n        color: 'secondary',\n        display: 'block',\n        textAlign: 'left',\n        fontSize: [2, 2, 2, 3],\n        '& a': { color: 'secondary' },\n        '& a:hover': { color: 'primary' },\n        '& > p': {\n          display: 'inline',\n          fontSize: [2, 2, 2, 3],\n        },\n      }}\n    >\n      {number && (\n        <>\n          <Box\n            sx={{\n              textTransform: 'uppercase',\n              letterSpacing: 'smallcaps',\n              display: 'inline-block',\n            }}\n          >\n            {label} {number}\n          </Box>{' '}\n          <Box sx={{ display: 'inline-block', mx: [1], pr: [1] }}>/</Box>\n        </>\n      )}\n      {children}\n    </Box>\n  )\n}\n\nexport default Caption\n","import React, {\n  useState,\n  useEffect,\n  useRef,\n  ReactNode,\n  MouseEventHandler,\n} from 'react'\nimport {\n  Box,\n  Flex,\n  FlexProps,\n  ThemeUICSSObject,\n  ThemeUIStyleObject,\n  get,\n} from 'theme-ui'\n\ntype SetClim = (setter: (prev: [number, number]) => [number, number]) => void\n\nexport interface ColorbarProps extends FlexProps {\n  colormap: string[]\n  label?: ReactNode\n  clim?: [number, number]\n  setClim?: SetClim\n  setClimStep?: number\n  units?: ReactNode\n  width?: ThemeUICSSObject['width']\n  height?: ThemeUICSSObject['height']\n  format?: (d: number) => ReactNode\n  discrete?: boolean\n  horizontal?: boolean\n  bottom?: boolean\n  sxClim?: ThemeUIStyleObject\n}\nconst styles = {\n  clim: (setClim?: SetClim): ThemeUIStyleObject => {\n    return {\n      bg: 'unset',\n      border: 'none',\n      color: 'primary',\n      px: 0,\n      fontFamily: 'mono',\n      fontSize: ['9px', 0, 0, 1],\n      letterSpacing: 'smallcaps',\n      textTransform: 'uppercase' as const,\n      transition: 'border 0.15s',\n      // !important suffix isn't representable in CSS property types\n      userSelect: setClim ? ('none !important' as 'none') : 'unset',\n      width: 'fit-content',\n      minWidth: 'fit-content',\n    }\n  },\n}\n\nconst DIMENSIONS = {\n  width: ['10px', '16px', '16px', '17px'],\n  height: ['80px', '110px', '110px', '130px'],\n}\n\nconst hexToRgb = (hex: string) => {\n  let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n  return result\n    ? `${parseInt(result[1], 16)}, ${parseInt(result[2], 16)}, ${parseInt(\n        result[3],\n        16\n      )}`\n    : null\n}\n\nconst Gradient = ({\n  colormap,\n  discrete,\n  horizontal,\n  width,\n  height,\n}: Pick<\n  ColorbarProps,\n  'colormap' | 'discrete' | 'horizontal' | 'width' | 'height'\n>) => {\n  const hasColors = colormap.length > 0\n  const step = hasColors ? (1 / colormap.length) * 100 : 0\n  const firstColor = colormap[0]\n  const isHex = typeof firstColor === 'string' && firstColor.startsWith('#')\n  const values = colormap.map((color, i) => {\n    const normalizedColor = String(color)\n    const rgbColor = isHex ? hexToRgb(normalizedColor) : normalizedColor\n    const position = `${i * step}% ${\n      discrete && i < colormap.length - 1 ? `${(i + 1) * step}%` : ''\n    }`\n    return `rgb(${rgbColor}) ${position}`\n  })\n\n  const css =\n    values.length > 0\n      ? `linear-gradient(to ${horizontal ? 'right' : 'top'}, ${values.join(\n          ','\n        )})`\n      : 'none'\n\n  return (\n    <Box\n      sx={{\n        ...(horizontal\n          ? {\n              width: width || DIMENSIONS.height,\n              height: height || DIMENSIONS.width,\n            }\n          : {\n              width: width || DIMENSIONS.width,\n              minHeight: height || DIMENSIONS.height,\n            }),\n        mt: horizontal ? ['1px', '1px', '1px', 0] : 0,\n        border: (t) => `solid 1px ${get(t, 'colors.hinted')}`,\n        background: css,\n      }}\n    />\n  )\n}\n\nconst Label = ({\n  label,\n  units,\n  horizontal,\n}: Pick<ColorbarProps, 'label' | 'units' | 'horizontal'>) => (\n  <Box\n    sx={\n      horizontal\n        ? undefined\n        : {\n            width: ['13px', '17px', '17px', '19px'],\n            alignSelf: 'flex-end',\n          }\n    }\n  >\n    <Box\n      sx={{\n        mb: horizontal ? 0 : ['-4px', '-4px', '-4px', '-3px'],\n        fontFamily: 'mono',\n        fontSize: ['9px', 0, 0, 1],\n        letterSpacing: 'smallcaps',\n        textTransform: 'uppercase',\n        ...(horizontal\n          ? {}\n          : {\n              writingMode: 'vertical-rl',\n              transform: 'rotate(180deg)',\n              whiteSpace: 'nowrap',\n              display: 'inline-block',\n              overflow: 'visible',\n            }),\n      }}\n    >\n      {label}{' '}\n      <Box\n        as='span'\n        sx={{\n          textTransform: 'none',\n          color: 'secondary',\n          display: 'inline-block',\n        }}\n      >\n        {units}\n      </Box>\n    </Box>\n  </Box>\n)\n\nconst Colorbar = ({\n  colormap,\n  label,\n  clim,\n  setClim,\n  setClimStep = 1,\n  discrete,\n  units,\n  width,\n  height,\n  format = (d) => d,\n  horizontal = false,\n  bottom = false,\n  sx,\n  sxClim,\n  ...props\n}: ColorbarProps) => {\n  if (!Array.isArray(colormap)) {\n    throw new Error(`expected array for colormap, got '${colormap}'.`)\n  }\n\n  const climRef = [useRef<HTMLDivElement>(), useRef<HTMLDivElement>()]\n  const [climMinDragging, setClimMinDragging] = useState(false)\n  const [climMaxDragging, setClimMaxDragging] = useState(false)\n\n  let x: number,\n    y: number,\n    dx: number,\n    dy: number = 0\n  let id: null | string = null\n  let init: [number, number] = [0, 0]\n  let scale = setClimStep\n\n  const draggingFunction = (e: MouseEvent) => {\n    if (!setClim) return\n    if (id === 'min' && !climMinDragging) setClimMinDragging(true)\n    if (id === 'max' && !climMaxDragging) setClimMaxDragging(true)\n    dx = e.pageX - x\n    dy = e.pageY - y\n    if (horizontal) {\n      if (id === 'min')\n        setClim((prev) => [Math.min(init[0] + dx * scale, init[1]), prev[1]])\n      if (id === 'max')\n        setClim((prev) => [prev[0], Math.max(init[1] + dx * scale, init[0])])\n    } else {\n      if (id === 'min')\n        setClim((prev) => [Math.min(init[0] - dy * scale, init[1]), prev[1]])\n      if (id === 'max')\n        setClim((prev) => [prev[0], Math.max(init[1] - dy * scale, init[0])])\n    }\n  }\n\n  const handleMouseDown: MouseEventHandler<HTMLDivElement> = (e) => {\n    y = e.pageY\n    x = e.pageX\n    id = e.currentTarget.id\n    init = clim!\n\n    document.body.setAttribute(\n      'style',\n      horizontal\n        ? 'cursor: ew-resize !important'\n        : 'cursor: ns-resize !important'\n    )\n    document.addEventListener('mousemove', draggingFunction)\n    const updater = () => {\n      document.body.setAttribute('style', 'cursor: unset')\n      document.removeEventListener('mousemove', draggingFunction)\n      window.removeEventListener('mouseup', updater)\n      if (id === 'min') setClimMinDragging(false)\n      if (id === 'max') setClimMaxDragging(false)\n    }\n    window.addEventListener('mouseup', updater)\n  }\n\n  const increment = (e: KeyboardEvent) => {\n    if (!setClim) return\n\n    if (climRef[0].current === document.activeElement) {\n      e.preventDefault()\n      setClim((prev) => [Math.min(prev[0] + scale, prev[1]), prev[1]])\n      climRef[0].current.focus()\n    }\n    if (climRef[1].current === document.activeElement) {\n      e.preventDefault()\n      setClim((prev) => [prev[0], Math.max(prev[1] + scale, prev[0])])\n      climRef[1].current.focus()\n    }\n  }\n\n  const decrement = (e: KeyboardEvent) => {\n    if (!setClim) return\n\n    if (climRef[0].current === document.activeElement) {\n      e.preventDefault()\n      setClim((prev) => [Math.min(prev[0] - scale, prev[1]), prev[1]])\n      climRef[0].current.focus()\n    }\n    if (climRef[1].current === document.activeElement) {\n      e.preventDefault()\n      setClim((prev) => [prev[0], Math.max(prev[1] - scale, prev[0])])\n      climRef[1].current.focus()\n    }\n  }\n\n  useEffect(() => {\n    const listener = (e: KeyboardEvent) => {\n      if (\n        ['ArrowUp', 'ArrowRight'].includes(e.code) ||\n        ['ArrowUp', 'ArrowRight'].includes(e.key)\n      ) {\n        increment(e)\n      }\n      if (\n        ['ArrowDown', 'ArrowLeft'].includes(e.code) ||\n        ['ArrowDown', 'ArrowLeft'].includes(e.key)\n      ) {\n        decrement(e)\n      }\n    }\n    window.addEventListener('keydown', listener)\n\n    return () => {\n      window.removeEventListener('keydown', listener)\n    }\n  }, [clim])\n\n  const ClimMin = () => {\n    return (\n      <Box\n        id='min'\n        as={setClim ? 'button' : 'div'}\n        ref={climRef[0]}\n        tabIndex={0}\n        sx={{\n          ...styles.clim(setClim),\n          ml: label\n            ? horizontal\n              ? bottom\n                ? '0px'\n                : '10px'\n              : ['2px', '1px', '1px', '2px']\n            : 0,\n          mr: horizontal ? ['2px', '1px', '1px', '2px'] : 0,\n          mb: horizontal ? 0 : ['-2px', '-2px', '-2px', '-3px'],\n          borderBottom: setClim\n            ? (t) => `solid 1px ${get(t, 'colors.primary')}`\n            : 'unset',\n          cursor: setClim\n            ? horizontal\n              ? 'ew-resize'\n              : 'ns-resize'\n            : 'default',\n          ...sxClim,\n        }}\n        onMouseDown={setClim ? handleMouseDown : () => {}}\n        onClick={() => climRef[0].current?.focus()}\n      >\n        {format(clim![0])}\n      </Box>\n    )\n  }\n\n  const ClimMax = () => {\n    return (\n      <Box\n        id='max'\n        as={setClim ? 'button' : 'div'}\n        ref={climRef[1]}\n        tabIndex={0}\n        sx={{\n          ...styles.clim(setClim),\n          ml: horizontal\n            ? ['2px', '1px', '1px', '2px']\n            : ['2px', '1px', '1px', '2px'],\n          mt: horizontal ? 0 : ['-2px', '-3px', '-3px', '-3px'],\n          borderBottom: setClim\n            ? (t) => `solid 1px ${get(t, 'colors.primary')}`\n            : 'unset',\n          cursor: setClim\n            ? horizontal\n              ? 'ew-resize'\n              : 'ns-resize'\n            : 'default',\n          ...sxClim,\n        }}\n        onMouseDown={setClim ? handleMouseDown : () => {}}\n        onClick={() => climRef[1].current?.focus()}\n      >\n        {format(clim![1])}\n      </Box>\n    )\n  }\n\n  return (\n    <Flex\n      {...props}\n      sx={{\n        flexDirection: 'row',\n        alignItems: 'start',\n        justifyContent: 'flex-start',\n        gap: ['3px', '6px', '6px', '7px'],\n        height: !horizontal ? '100%' : 'unset',\n        ...sx,\n      }}\n    >\n      {label && <Label label={label} units={units} horizontal={horizontal} />}\n      <Flex\n        sx={{\n          flexGrow: horizontal ? 1 : 'unset',\n          flexDirection: 'column',\n          ml: bottom && label ? '4px' : '0px',\n          height: !horizontal ? '100%' : 'unset',\n        }}\n      >\n        <Flex\n          sx={{\n            gap: ['3px', '6px', '6px', '7px'],\n            height: !horizontal ? '100%' : 'unset',\n          }}\n        >\n          {horizontal && clim && !bottom && <ClimMin />}\n          <Gradient\n            colormap={colormap}\n            horizontal={horizontal}\n            discrete={discrete}\n            width={width}\n            height={height}\n          />\n          {horizontal && clim && !bottom && <ClimMax />}\n        </Flex>\n        {horizontal && clim && bottom && (\n          <Flex sx={{ justifyContent: 'space-between' }}>\n            <ClimMin />\n            <ClimMax />\n          </Flex>\n        )}\n      </Flex>\n\n      {!horizontal && (\n        <Flex\n          sx={{\n            flexDirection: 'column-reverse',\n            justifyContent: 'space-between',\n            height: height || DIMENSIONS.height,\n          }}\n        >\n          {clim && <ClimMin />}\n          {clim && <ClimMax />}\n        </Flex>\n      )}\n    </Flex>\n  )\n}\n\nexport default Colorbar\n","import React, { ReactNode } from 'react'\nimport { Box, BoxProps } from 'theme-ui'\n\ninterface InlineColorProps extends BoxProps {\n  color: string\n  children: ReactNode\n}\nconst InlineColor = ({ sx, color, children, ...props }: InlineColorProps) => {\n  return (\n    <Box\n      as='span'\n      sx={{ display: 'inline-block', color: color, ...sx }}\n      {...props}\n    >\n      {children}\n    </Box>\n  )\n}\n\ntype ColorProps = Omit<InlineColorProps, 'color'>\n\nexport const Primary = (props: ColorProps) => {\n  return <InlineColor color='primary' {...props} />\n}\n\nexport const Secondary = (props: ColorProps) => {\n  return <InlineColor color='secondary' {...props} />\n}\n\nexport const Background = (props: ColorProps) => {\n  return <InlineColor color='background' {...props} />\n}\n\nexport const Red = (props: ColorProps) => {\n  return <InlineColor color='red' {...props} />\n}\n\nexport const Orange = (props: ColorProps) => {\n  return <InlineColor color='orange' {...props} />\n}\n\nexport const Yellow = (props: ColorProps) => {\n  return <InlineColor color='yellow' {...props} />\n}\n\nexport const Green = (props: ColorProps) => {\n  return <InlineColor color='green' {...props} />\n}\n\nexport const Teal = (props: ColorProps) => {\n  return <InlineColor color='teal' {...props} />\n}\n\nexport const Blue = (props: ColorProps) => {\n  return <InlineColor color='blue' {...props} />\n}\n\nexport const Purple = (props: ColorProps) => {\n  return <InlineColor color='purple' {...props} />\n}\n\nexport const Pink = (props: ColorProps) => {\n  return <InlineColor color='pink' {...props} />\n}\n\nexport const Grey = (props: ColorProps) => {\n  return <InlineColor color='grey' {...props} />\n}\n","import React from 'react'\nimport { Box } from 'theme-ui'\nimport { PoopSad } from '@carbonplan/emoji'\nimport Layout from './layout'\nimport Row from './row'\nimport Column from './column'\n\nconst Custom404 = () => {\n  return (\n    <Layout\n      footer={false}\n      title={'404 – CarbonPlan'}\n      description={\n        \"Sorry but we can't seem to find the page you are looking for.\"\n      }\n    >\n      <Row sx={{ mb: [5, 0, 0], pt: [0, 0, 6] }}>\n        <Column start={[1, 1, 3, 3]} width={[6, 4, 4, 4]}>\n          <Box as='h1' variant='styles.h1'>\n            Oops!\n          </Box>\n          <Box\n            sx={{\n              fontSize: [4, 4, 4, 5],\n              lineHeight: 'h3',\n              mt: [3, 4, 4],\n              mb: [2, 3, 3],\n              maxWidth: ['90%', '90%', '400px'],\n            }}\n          >\n            Sorry but we can't seem to find the page you are looking for.\n          </Box>\n          <Box\n            sx={{\n              color: 'secondary',\n              fontFamily: 'mono',\n              letterSpacing: 'mono',\n              fontSize: [2, 2, 2, 3],\n              mt: [4, 5, 5],\n            }}\n          >\n            ERROR CODE 404\n          </Box>\n        </Column>\n        <Column start={[2, 5, 7, 7]} width={[4, 4, 4, 4]}>\n          <Box\n            sx={{\n              width: ['100%'],\n              mt: [2, 4, 4, 5],\n              fill: 'primary',\n            }}\n          >\n            <PoopSad sx={{ width: '100%', height: 'auto' }} />\n          </Box>\n        </Column>\n      </Row>\n    </Layout>\n  )\n}\n\nexport default Custom404\n","import React, { useEffect, ReactNode } from 'react'\nimport { useThemeUI, Container, Flex, Box } from 'theme-ui'\nimport Meta from './meta'\nimport Header from './header'\nimport Footer from './footer'\nimport Dimmer from './dimmer'\nimport Metadata from './metadata'\nimport FadeIn from './fade-in'\nimport Scrollbar from './scrollbar'\nimport Guide from './guide'\nimport Settings, { SettingsProps } from './settings'\n\nexport interface LayoutProps {\n  title?: string\n  description?: string\n  url?: string\n  card?: string\n  children?: ReactNode\n  status?: string\n  nav?: string\n  settings?: SettingsProps\n  footer?: boolean\n  header?: boolean\n  metadata?: 'mouse' | 'scroll' | boolean\n  links?: 'remote' | 'local' | 'homepage'\n  dimmer?: 'bottom' | 'top'\n  guide?: boolean | string\n  scrollbar?: boolean\n  fade?: boolean\n  container?: boolean\n  printable?: boolean\n}\n\nconst Layout = ({\n  title,\n  description,\n  url,\n  card,\n  children,\n  status,\n  nav,\n  settings,\n  footer = true,\n  header = true,\n  metadata = 'mouse',\n  links = 'remote',\n  dimmer = 'bottom',\n  guide = true,\n  scrollbar = false,\n  fade = true,\n  container = true,\n  printable = false,\n}: LayoutProps) => {\n  let content = children\n\n  if (fade) {\n    content = <FadeIn duration={250}>{content}</FadeIn>\n  }\n  if (container) {\n    content = (\n      <Box sx={{ mb: [8, 8, 9, 10] }}>\n        <Container>{content}</Container>\n      </Box>\n    )\n  }\n\n  const { theme } = useThemeUI()\n\n  const hideOnPrint = printable\n    ? {\n        '@media print': {\n          display: 'none',\n        },\n      }\n    : {}\n\n  useEffect(() => {\n    if (!theme) return\n\n    const handler = (e: MediaQueryListEvent) => {\n      if (e.matches && settings?.value && settings?.onClick) {\n        settings.onClick()\n      }\n    }\n\n    const query = window.matchMedia(\n      `(min-width: ${theme?.breakpoints?.[1] || '64em'})`\n    )\n    query.onchange = handler\n\n    return () => {\n      query.onchange = null\n    }\n  }, [theme?.breakpoints, settings?.value, settings?.onClick])\n\n  const menuItems = [\n    <Dimmer\n      key='dimmer'\n      sx={{\n        color: 'primary',\n        mt: '-2px',\n        display: [\n          'block',\n          'block',\n          dimmer === 'top' ? 'block' : 'none',\n          dimmer === 'top' ? 'block' : 'none',\n        ],\n      }}\n    />,\n  ]\n\n  if (settings) {\n    menuItems.push(\n      <Settings\n        key='settings'\n        sx={{ mr: ['2px'], display: ['inherit', 'inherit', 'none', 'none'] }}\n        {...settings}\n      />\n    )\n  }\n\n  return (\n    <>\n      {guide && <Guide color={typeof guide === 'string' ? guide : undefined} />}\n      {scrollbar && <Scrollbar />}\n      <Meta card={card} description={description} title={title} url={url} />\n      <Flex\n        sx={{\n          flexDirection: 'column',\n          minHeight: '100vh',\n        }}\n      >\n        {header && (\n          <Box\n            as='header'\n            sx={{\n              width: '100%',\n              borderStyle: 'solid',\n              borderColor: 'muted',\n              borderWidth: '0px',\n              borderBottomWidth: '1px',\n              position: 'sticky',\n              top: 0,\n              bg: 'background',\n              height: '56px',\n              zIndex: 2000,\n              ...hideOnPrint,\n            }}\n          >\n            <Container>\n              <Header\n                mode={links}\n                status={status}\n                nav={nav}\n                menuItems={menuItems}\n              />\n            </Container>\n          </Box>\n        )}\n        <Box\n          sx={{\n            width: '100%',\n            flex: '1 1 auto',\n          }}\n        >\n          {content}\n        </Box>\n        {footer && (\n          <Box\n            as='footer'\n            sx={{\n              width: '100%',\n              borderStyle: 'solid',\n              borderColor: 'muted',\n              borderWidth: '0px',\n              borderTopWidth: '1px',\n              ...hideOnPrint,\n            }}\n          >\n            <Container>\n              <Footer />\n            </Container>\n          </Box>\n        )}\n        {dimmer === 'bottom' && (\n          <Box\n            sx={{\n              display: ['none', 'none', 'initial', 'initial'],\n              position: ['fixed'],\n              right: [13],\n              bottom: [17, 17, 15, 15],\n            }}\n          >\n            <Dimmer />\n          </Box>\n        )}\n        {metadata && (\n          <Metadata mode={typeof metadata === 'string' ? metadata : 'mouse'} />\n        )}\n      </Flex>\n    </>\n  )\n}\n\nexport default Layout\n","import React from 'react'\nimport Head from 'next/head'\nimport { useThemeUI } from 'theme-ui'\n\nexport interface MetaProps {\n  title?: string\n  description?: string\n  card?: string\n  url?: string\n}\n\nconst Meta = ({ title, description, card, url }: MetaProps) => {\n  const { theme, colorMode } = useThemeUI()\n  if (!description) {\n    console.warn(\n      'a custom description should be used for search engine optimization'\n    )\n  }\n  if (!title) {\n    console.warn('a custom title should be used for search engine optimization')\n  }\n  const titleProp = title || 'CarbonPlan'\n  const descriptionProp =\n    description ||\n    'Improving the transparency and scientific integrity of climate solutions with open data and tools.'\n  const cardProp = card || 'https://images.carbonplan.org/social/homepage.png'\n  const urlProp = url || 'https://carbonplan.org'\n\n  return (\n    <Head>\n      <title>{titleProp}</title>\n      <meta name='description' content={descriptionProp} />\n      <meta name='viewport' content='initial-scale=1.0, width=device-width' />\n      {url && <link rel='canonical' href={url} />}\n      <link\n        rel='alternate icon'\n        type='image/png'\n        href='https://images.carbonplan.org/favicon.png'\n      />\n      <link\n        rel='icon'\n        type='image/svg+xml'\n        href='https://images.carbonplan.org/favicon.svg'\n      />\n      <link\n        rel='preload'\n        href='https://fonts.carbonplan.org/relative/relative-book-pro.woff2'\n        as='font'\n        type='font/woff2'\n        crossOrigin='anonymous'\n      />\n      <link\n        rel='preload'\n        href='https://fonts.carbonplan.org/relative/relative-medium-pro.woff2'\n        as='font'\n        type='font/woff2'\n        crossOrigin='anonymous'\n      />\n      <link\n        rel='preload'\n        href='https://fonts.carbonplan.org/relative/relative-mono-11-pitch-pro.woff2'\n        as='font'\n        type='font/woff2'\n        crossOrigin='anonymous'\n      />\n      <link\n        rel='preload'\n        href='https://fonts.carbonplan.org/relative/relative-faux-book-pro.woff2'\n        as='font'\n        type='font/woff2'\n        crossOrigin='anonymous'\n      />\n      <link rel='manifest' href='https://images.carbonplan.org/manifest.json' />\n      <meta\n        name='theme-color'\n        content={\n          typeof theme.colors?.background === 'string'\n            ? theme.colors.background\n            : ''\n        }\n      />\n      <meta\n        name='color-scheme'\n        content={colorMode === 'light' ? 'light' : 'dark'}\n      />\n      <link\n        rel='mask-icon'\n        href='https://images.carbonplan.org/safari-pinned-tab.svg'\n        color='#000000'\n      />\n      <link\n        rel='apple-touch-icon'\n        sizes='180x180'\n        href='https://images.carbonplan.org/apple-touch-icon.png'\n      />\n      <meta\n        name='msapplication-TileColor'\n        content={\n          typeof theme.colors?.background === 'string'\n            ? theme.colors.background\n            : ''\n        }\n      />\n      <meta\n        name='msapplication-TileImage'\n        content='https://images.carbonplan.org/mstile-144x144.png'\n      />\n      <meta\n        name='msapplication-config'\n        content='https://images.carbonplan.org/browserconfig.xml'\n      />\n      <meta property='og:title' content={titleProp} />\n      <meta property='og:description' content={descriptionProp} />\n      <meta property='og:image' content={cardProp} />\n      <meta property='og:url' content={urlProp} />\n      <meta name='twitter:title' content={titleProp} />\n      <meta name='twitter:description' content={descriptionProp} />\n      <meta name='twitter:image' content={cardProp} />\n      <meta name='twitter:card' content='summary_large_image' />\n      <meta name='format-detection' content='telephone=no' />\n    </Head>\n  )\n}\n\nexport default Meta\n","import React, { useState, useEffect, ReactNode } from 'react'\nimport { default as NextLink } from 'next/link'\nimport { Box, Flex, Container, Link } from 'theme-ui'\nimport Logo from '../logo'\nimport Row from '../row'\nimport Column from '../column'\nimport Menu from './menu'\nimport NavigationMenu from './navigation-menu'\nimport Search from './search'\nimport SearchMenu from './search-menu'\n\nexport interface HeaderProps {\n  status?: string\n  mode?: 'homepage' | 'local' | 'remote'\n  nav?: string\n  menuItems?: ReactNode\n}\n\nconst Header = ({ status, mode, nav, menuItems }: HeaderProps) => {\n  const [menuExpanded, setMenuExpanded] = useState(false)\n  const [searchExpanded, setSearchExpanded] = useState(false)\n  const expanded = searchExpanded || menuExpanded\n\n  useEffect(() => {\n    document.body.style.overflow = expanded ? 'hidden' : ''\n    return () => {\n      document.body.style.overflow = ''\n    }\n  }, [expanded])\n\n  return (\n    <Row\n      sx={{\n        pt: ['12px'],\n        pb: [3],\n      }}\n    >\n      <Column start={[1]} width={[2]}>\n        <Box\n          sx={{ pointerEvents: 'all', display: 'block', width: 'fit-content' }}\n        >\n          {(mode == 'homepage' || mode == 'local') && (\n            <NextLink href='/' passHref legacyBehavior>\n              <Link\n                aria-label='CarbonPlan Homepage'\n                sx={{\n                  display: 'block',\n                }}\n              >\n                <Logo\n                  id='logo'\n                  sx={{\n                    cursor: 'pointer',\n                    color: 'primary',\n                  }}\n                />\n              </Link>\n            </NextLink>\n          )}\n          {(mode == null || mode == 'remote') && (\n            <Link\n              href='https://carbonplan.org'\n              aria-label='CarbonPlan Homepage'\n              sx={{ display: 'block' }}\n            >\n              <Logo sx={{ cursor: 'pointer', color: 'primary' }} />\n            </Link>\n          )}\n        </Box>\n      </Column>\n      <Column\n        start={[4, 9]}\n        width={[2, 2]}\n        dr={1}\n        sx={{\n          display: [status ? 'flex' : 'none', 'flex', 'flex', 'flex'],\n          alignItems: 'center',\n        }}\n      >\n        <Box\n          sx={{\n            fontSize: [1, 2, 3],\n            position: 'relative',\n            top: ['-2px', '-3px', '-3px'],\n          }}\n        >\n          {status ? `(${status})` : ''}\n        </Box>\n      </Column>\n      <Column\n        start={[status ? 6 : 4, 6, 11, 11]}\n        width={[status ? 1 : 3, 3, 2, 2]}\n        sx={{ zIndex: 5000 }}\n      >\n        <Flex sx={{ pointerEvents: 'all', justifyContent: 'flex-end' }}>\n          <Box\n            sx={{\n              display: [status ? 'none' : 'flex', 'flex', 'flex', 'flex'],\n              mr: '18px',\n              gap: '18px',\n              opacity: expanded ? 0 : 1,\n              transition: 'opacity 0.15s',\n              justifyContent: 'space-between',\n              alignItems: 'center',\n            }}\n          >\n            {menuItems}\n          </Box>\n          <Flex sx={{ gap: 4 }}>\n            <Search\n              value={searchExpanded}\n              onClick={() => {\n                setSearchExpanded(!searchExpanded)\n                !searchExpanded && setMenuExpanded(false)\n              }}\n            />\n            <Menu\n              sx={{\n                flexShrink: 0,\n                mr: ['-2px'],\n              }}\n              value={menuExpanded}\n              onClick={() => {\n                setMenuExpanded(!menuExpanded)\n                !menuExpanded && setSearchExpanded(false)\n              }}\n            />\n          </Flex>\n        </Flex>\n      </Column>\n      <Box\n        sx={{\n          opacity: expanded ? 1 : 0,\n          pointerEvents: expanded ? 'all' : 'none',\n          position: 'fixed',\n          top: '0px',\n          right: '0px',\n          bottom: '0px',\n          minWidth: '0px',\n          maxHeight: '100vh',\n          width: '100vw',\n          backgroundColor: 'background',\n          zIndex: 4000,\n          pt: ['79px'],\n          transition: 'opacity 0.25s',\n          overflowY: 'auto',\n          overscrollBehavior: 'contain',\n        }}\n      >\n        <Container>\n          <Row>\n            {menuExpanded && (\n              <Column start={[2, 4, 7, 7]} width={[5, 4, 5, 5]}>\n                <Box as='nav' sx={{ mt: [5, 5, 5, 6] }}>\n                  <NavigationMenu\n                    nav={nav}\n                    mode={mode}\n                    setExpanded={setMenuExpanded}\n                  />\n                </Box>\n              </Column>\n            )}\n            {searchExpanded && !menuExpanded && (\n              <Column start={[1, 2, 2, 2]} width={[6, 6, 10, 10]}>\n                <SearchMenu mode={mode} setExpanded={setSearchExpanded} />\n              </Column>\n            )}\n          </Row>\n        </Container>\n      </Box>\n    </Row>\n  )\n}\n\nexport default Header\n","import React from 'react'\nimport { Box, BoxProps } from 'theme-ui'\n\nexport type LogoProps = BoxProps\n\nconst Logo = ({ ...props }: LogoProps) => {\n  return (\n    <Box\n      as='svg'\n      {...{\n        width: '150',\n        fill: 'currentColor',\n        stroke: 'none',\n        viewBox: '0 0 151.1 28.8',\n      }}\n      {...props}\n    >\n      <g>\n        <g>\n          <path\n            d='M9.7,20.1c-1.3-1.4-2-3.1-2-5.2c0-2.1,0.7-3.9,2-5.2c1.3-1.4,3-2,5.1-2c1.7,0,3.1,0.4,4.3,1.3\n    c1.1,0.9,1.8,2.1,2.1,3.5c0,0.1,0,0.2,0,0.3s-0.1,0.2-0.2,0.2h-2.3c-0.2,0-0.3-0.1-0.4-0.2c-0.3-0.8-0.7-1.4-1.3-1.8\n    c-0.6-0.4-1.4-0.6-2.2-0.6c-1.3,0-2.3,0.4-3,1.2c-0.8,0.8-1.1,1.9-1.1,3.4c0,1.5,0.4,2.6,1.1,3.4c0.8,0.8,1.8,1.2,3,1.2\n    c0.8,0,1.6-0.2,2.2-0.6c0.6-0.4,1.1-1,1.3-1.8c0.1-0.2,0.2-0.2,0.4-0.3H21c0.1,0,0.2,0.1,0.2,0.2c0,0.1,0,0.2,0,0.3\n    c-0.3,1.4-1,2.6-2.1,3.5c-1.1,0.9-2.5,1.3-4.3,1.3C12.7,22.1,11,21.4,9.7,20.1z'\n          />\n        </g>\n        <g>\n          <path\n            d='M22.5,17.6c0-1.5,0.5-2.6,1.6-3.5c1.1-0.8,2.4-1.2,4.1-1.2c1.1,0,2.4,0.2,3.7,0.6V13c0-0.9-0.3-1.6-0.8-2.1\n    c-0.5-0.5-1.2-0.8-2.2-0.8c-1.4,0-2.4,0.6-2.9,1.8c-0.1,0.2-0.2,0.2-0.4,0.2h-2.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0-0.3\n    c0.3-1.2,0.9-2.2,1.9-2.9c1-0.8,2.3-1.1,3.8-1.1C30.6,7.6,32,8.1,33,9c1,0.9,1.5,2.2,1.5,3.8V19c0,1.1,0.2,1.9,0.5,2.6\n    c0,0.1,0.1,0.1,0.1,0.1c0,0.1-0.1,0.1-0.3,0.1h-2.8c-0.2,0-0.3-0.1-0.3-0.3v-1c-1.1,1.1-2.5,1.6-4.3,1.6c-1.4,0-2.6-0.4-3.6-1.2\n    C23,20.1,22.5,19,22.5,17.6z M25.4,17.5c0,0.6,0.2,1.1,0.7,1.5c0.4,0.4,1.1,0.5,1.9,0.5c1.1,0,2-0.3,2.8-0.9\n    c0.8-0.6,1.1-1.5,1.1-2.6c-1.3-0.4-2.5-0.6-3.6-0.6c-0.8,0-1.5,0.2-2.1,0.5C25.7,16.3,25.4,16.8,25.4,17.5z'\n          />\n        </g>\n        <g>\n          <path\n            d='M37,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.1c1-1.1,2.3-1.6,3.7-1.6\n    c0.8,0,1.7,0.1,2.5,0.4c0.2,0.1,0.3,0.3,0.3,0.5v2.2c0,0.2-0.1,0.3-0.2,0.3c0,0-0.1,0-0.2-0.1c-1.1-0.5-2-0.8-2.9-0.8\n    c-0.9,0-1.7,0.4-2.3,1.1c-0.6,0.7-0.9,1.7-0.9,3v7.3c0,0.2-0.1,0.3-0.3,0.3h-2.2C37.1,21.8,37,21.7,37,21.6z'\n          />\n        </g>\n        <g>\n          <path\n            d='M47.6,21.6V2.7c0-0.2,0.1-0.3,0.3-0.3H50c0.2,0,0.3,0.1,0.3,0.3v6.5c1.3-1.1,2.7-1.6,4.3-1.6\n    c1.9,0,3.4,0.7,4.6,2c1.1,1.3,1.7,3.1,1.7,5.3c0,2.2-0.6,4-1.7,5.3c-1.1,1.3-2.7,2-4.6,2c-1.8,0-3.2-0.5-4.3-1.6v1\n    c0,0.2-0.1,0.3-0.3,0.3h-2.2C47.7,21.8,47.6,21.7,47.6,21.6z M51.2,11.5c-0.7,0.9-1.1,2-1.1,3.3c0,1.4,0.4,2.5,1.1,3.3\n    s1.7,1.3,2.9,1.3c1.2,0,2.2-0.4,2.9-1.3c0.7-0.9,1.1-2,1.1-3.3c0-1.4-0.4-2.5-1.1-3.3c-0.7-0.9-1.7-1.3-2.9-1.3\n    C52.9,10.2,51.9,10.7,51.2,11.5z'\n          />\n        </g>\n        <g>\n          <path\n            d='M64.3,20.1c-1.4-1.4-2.1-3.1-2.1-5.2c0-2.1,0.7-3.9,2.1-5.2c1.4-1.4,3.1-2,5.2-2c2.1,0,3.8,0.7,5.2,2\n    c1.4,1.4,2.1,3.1,2.1,5.2c0,2.1-0.7,3.9-2.1,5.2c-1.4,1.4-3.1,2-5.2,2C67.4,22.1,65.7,21.4,64.3,20.1z M66.4,11.5\n    c-0.8,0.8-1.2,2-1.2,3.4c0,1.4,0.4,2.5,1.2,3.4s1.9,1.3,3.1,1.3c1.3,0,2.3-0.4,3.1-1.3c0.8-0.8,1.2-2,1.2-3.4\n    c0-1.4-0.4-2.5-1.2-3.4c-0.8-0.8-1.9-1.3-3.1-1.3C68.2,10.2,67.2,10.7,66.4,11.5z'\n          />\n        </g>\n        <g>\n          <path\n            d='M78.7,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.3c1.3-1.2,2.7-1.8,4.4-1.8\n    c1.5,0,2.7,0.4,3.5,1.3c0.8,0.9,1.3,2,1.3,3.6v9.1c0,0.2-0.1,0.3-0.3,0.3h-2.2c-0.2,0-0.3-0.1-0.3-0.3v-8.3c0-2-0.9-3.1-2.8-3.1\n    c-1.1,0-1.9,0.4-2.7,1.2c-0.7,0.8-1.1,2-1.1,3.5v6.6c0,0.2-0.1,0.3-0.3,0.3h-2.2C78.7,21.8,78.7,21.7,78.7,21.6z'\n          />\n        </g>\n        <g>\n          <path\n            d='M101.7,27.1V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1c1.1-1.1,2.5-1.6,4.3-1.6\n    c1.9,0,3.4,0.7,4.6,2s1.7,3.1,1.7,5.3c0,2.2-0.6,4-1.7,5.3c-1.1,1.3-2.7,2-4.6,2c-1.5,0-3-0.5-4.3-1.6v6.6c0,0.2-0.1,0.3-0.3,0.3\n    H102C101.8,27.3,101.7,27.2,101.7,27.1z M105.3,11.5c-0.7,0.9-1.1,2-1.1,3.3c0,1.4,0.4,2.5,1.1,3.3s1.7,1.3,2.9,1.3\n    c1.2,0,2.2-0.4,2.9-1.3c0.7-0.9,1.1-2,1.1-3.3c0-1.4-0.4-2.5-1.1-3.3c-0.7-0.9-1.7-1.3-2.9-1.3C107,10.2,106,10.7,105.3,11.5z'\n          />\n        </g>\n        <g>\n          <path\n            d='M117.2,21.6V2.7c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v18.9c0,0.2-0.1,0.3-0.3,0.3h-2.2\n    C117.3,21.8,117.2,21.7,117.2,21.6z'\n          />\n        </g>\n        <g>\n          <path\n            d='M122,17.6c0-1.5,0.5-2.6,1.6-3.5c1.1-0.8,2.4-1.2,4.1-1.2c1.1,0,2.4,0.2,3.7,0.6V13c0-0.9-0.3-1.6-0.8-2.1\n    c-0.5-0.5-1.2-0.8-2.2-0.8c-1.4,0-2.4,0.6-2.9,1.8c-0.1,0.2-0.2,0.2-0.4,0.2h-2.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0-0.2,0-0.3\n    c0.3-1.2,0.9-2.2,1.9-2.9c1-0.8,2.3-1.1,3.8-1.1c1.7,0,3.1,0.5,4.2,1.4s1.5,2.2,1.5,3.8V19c0,1.1,0.2,1.9,0.5,2.6\n    c0,0.1,0.1,0.1,0.1,0.1c0,0.1-0.1,0.1-0.3,0.1h-2.8c-0.2,0-0.3-0.1-0.3-0.3v-1c-1.1,1.1-2.5,1.6-4.3,1.6c-1.4,0-2.6-0.4-3.6-1.2\n    C122.5,20.1,122,19,122,17.6z M124.9,17.5c0,0.6,0.2,1.1,0.7,1.5c0.4,0.4,1.1,0.5,1.9,0.5c1.1,0,2-0.3,2.8-0.9\n    c0.8-0.6,1.1-1.5,1.1-2.6c-1.3-0.4-2.5-0.6-3.6-0.6c-0.8,0-1.5,0.2-2.1,0.5C125.2,16.3,124.9,16.8,124.9,17.5z'\n          />\n        </g>\n        <g>\n          <path\n            d='M136.9,21.6V8.2c0-0.2,0.1-0.3,0.3-0.3h2.2c0.2,0,0.3,0.1,0.3,0.3v1.3c1.3-1.2,2.7-1.8,4.4-1.8\n    c1.5,0,2.7,0.4,3.5,1.3c0.8,0.9,1.3,2,1.3,3.6v9.1c0,0.2-0.1,0.3-0.3,0.3h-2.2c-0.2,0-0.3-0.1-0.3-0.3v-8.3c0-2-0.9-3.1-2.8-3.1\n    c-1.1,0-1.9,0.4-2.7,1.2c-0.7,0.8-1.1,2-1.1,3.5v6.6c0,0.2-0.1,0.3-0.3,0.3h-2.2C137,21.8,136.9,21.7,136.9,21.6z'\n          />\n        </g>\n        <path\n          d='M97.6,14.9c0,4.2-0.6,8.3-1.6,12.3c0,0.1-0.1,0.2-0.2,0.2h-2.4c-0.1,0-0.2-0.1-0.2-0.3c1.1-3.9,1.7-8,1.7-12.2\n  s-0.6-8.3-1.7-12.2c0-0.1,0.1-0.3,0.2-0.3l2.4,0c0.1,0,0.2,0.1,0.2,0.2C97.1,6.5,97.6,10.6,97.6,14.9z'\n        />\n        <path\n          d='M1.4,14.9C1.4,10.6,2,6.5,3,2.6c0-0.1,0.1-0.2,0.2-0.2l2.4,0c0.1,0,0.2,0.1,0.2,0.3c-1.1,3.9-1.7,8-1.7,12.2\n  s0.6,8.3,1.7,12.2c0,0.1-0.1,0.3-0.2,0.3H3.3c-0.1,0-0.2-0.1-0.2-0.2C2,23.2,1.4,19.1,1.4,14.9z'\n        />\n      </g>\n    </Box>\n  )\n}\n\nexport default Logo\n","import React from 'react'\nimport HeaderIcon, { HeaderIconProps } from './header-icon'\n\nexport type MenuProps = HeaderIconProps\n\nconst Menu = (props: HeaderIconProps) => {\n  return (\n    <HeaderIcon {...props}>\n      <line x1='52' y1='29.9' x2='16' y2='29.9' />\n      <line x1='52' y1='6.1' x2='16' y2='6.1' />\n      <line x1='52' y1='18' x2='16' y2='18' />\n    </HeaderIcon>\n  )\n}\n\nexport default Menu\n","import React from 'react'\nimport { IconButton, IconButtonProps } from 'theme-ui'\n\nexport interface HeaderIconProps extends Omit<IconButtonProps, 'value'> {\n  value?: boolean\n  label?: string\n}\n\nconst HeaderIcon = ({\n  label = 'Toggle Menu',\n  children,\n  value,\n  sx,\n  ...props\n}: HeaderIconProps) => {\n  return (\n    <IconButton\n      sx={{\n        cursor: 'pointer',\n        fill: 'none',\n        strokeWidth: '2px',\n        stroke: 'text',\n        '.paren': {\n          opacity: '0',\n        },\n        '@media (hover: hover) and (pointer: fine)': {\n          '&:hover .paren': {\n            opacity: '1',\n          },\n        },\n        ...sx,\n      }}\n      aria-label={label}\n      {...props}\n    >\n      {!value && (\n        <svg\n          style={{\n            width: '50px',\n            height: '30px',\n            marginTop: '-3px',\n            flexShrink: 0,\n          }}\n          xmlns='http://www.w3.org/2000/svg'\n          viewBox='0 0 68 36'\n        >\n          {children}\n          <path\n            style={{ transition: 'all 0.2s' }}\n            className='paren'\n            d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n          />\n          <path\n            style={{ transition: 'all 0.2s' }}\n            className='paren'\n            d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n          />\n        </svg>\n      )}\n      {value && (\n        <svg\n          style={{\n            width: '50px',\n            height: '30px',\n            marginTop: '-3px',\n            flexShrink: 0,\n          }}\n          xmlns='http://www.w3.org/2000/svg'\n          viewBox='0 0 68 36'\n        >\n          <line x1='50.85' y1='29.79' x2='17.15' y2='6.21' />\n          <line x1='17.15' y1='29.79' x2='50.85' y2='6.21' />\n          <path\n            style={{ transition: 'all 0.2s' }}\n            className='paren'\n            d='M6.4,1.2c-6.3,10.3-6.3,23.3,0,33.6'\n          />\n          <path\n            style={{ transition: 'all 0.2s' }}\n            className='paren'\n            d='M61.6,34.8c6.3-10.3,6.3-23.3,0-33.6'\n          />\n        </svg>\n      )}\n    </IconButton>\n  )\n}\n\nexport default HeaderIcon\n","import React, { useEffect } from 'react'\nimport { default as NextLink } from 'next/link'\nimport { Link, ThemeUIStyleObject } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\n\nconst sx = {\n  link: (\n    current: string | undefined,\n    label: string,\n    first = false\n  ): ThemeUIStyleObject => {\n    return {\n      width: 'auto',\n      color: current === label ? 'secondary' : 'text',\n      fontSize: [6, 6, 7, 8],\n      fontFamily: 'heading',\n      letterSpacing: 'heading',\n      borderStyle: 'solid',\n      borderColor: 'muted',\n      borderWidth: '0px',\n      borderBottomWidth: '1px',\n      borderTopWidth: first ? '1px' : '0px',\n      py: [3, 3, 4, 5],\n      textDecoration: 'none',\n      display: 'block',\n      position: 'relative',\n      transition: 'color 0.15s',\n      '@media (hover: hover) and (pointer: fine)': {\n        '&:hover > #arrow': {\n          opacity: 1,\n        },\n      },\n      '&:hover': {\n        color: current == label ? 'secondary' : 'text',\n      },\n    }\n  },\n}\n\nconst links = [\n  { url: 'about', display: 'About' },\n  { url: 'research', display: 'Research' },\n  { url: 'blog', display: 'Blog' },\n  { url: 'press', display: 'Press' },\n]\n\nconst HoverArrow = () => {\n  return (\n    <Arrow\n      id='arrow'\n      sx={{\n        pointerEvents: 'none',\n        display: 'inline-block',\n        position: 'absolute',\n        left: ['-60px', '-68px', '-80px', '-104px'],\n        top: ['32px', '32px', '46px', '62px'],\n        opacity: 0,\n        transition: 'opacity 0.2s ease-out',\n        transform: 'rotate(45deg)',\n        width: [36, 36, 48, 56],\n        height: [36, 36, 48, 56],\n      }}\n    />\n  )\n}\n\ninterface NavProps {\n  link: { url: string; display: string }\n  mode?: 'homepage' | 'local' | 'remote'\n  nav?: string\n  first: boolean\n  setExpanded: (expanded: boolean) => void\n}\n\nconst Nav = ({ link, mode, nav, first, setExpanded }: NavProps) => {\n  const { url, display } = link\n  const href = mode === 'remote' ? 'https://carbonplan.org/' + url : '/' + url\n\n  if (mode === 'homepage' || (mode === 'local' && nav === url)) {\n    return (\n      <NextLink href={href} passHref legacyBehavior>\n        <Link\n          onClick={() => {\n            if (nav === url) setExpanded(false)\n          }}\n          sx={sx.link(nav, url, first)}\n        >\n          <HoverArrow />\n          {display}\n        </Link>\n      </NextLink>\n    )\n  } else {\n    return (\n      <Link href={href} sx={sx.link(nav, url, first)}>\n        <HoverArrow />\n        {display}\n      </Link>\n    )\n  }\n}\n\ninterface NavigationMenuProps {\n  nav?: string\n  mode?: 'homepage' | 'local' | 'remote'\n  setExpanded: (expanded: boolean) => void\n}\n\nconst NavigationMenu = ({ nav, mode, setExpanded }: NavigationMenuProps) => {\n  useEffect(() => {\n    const handler = (e: KeyboardEvent) => {\n      if (e.key === 'Escape') setExpanded(false)\n    }\n    document.addEventListener('keydown', handler)\n    return () => document.removeEventListener('keydown', handler)\n  }, [setExpanded])\n\n  return (\n    <>\n      {links.map((d, i) => (\n        <Nav\n          key={i}\n          link={d}\n          mode={mode}\n          nav={nav}\n          first={i === 0}\n          setExpanded={setExpanded}\n        />\n      ))}\n    </>\n  )\n}\n\nexport default NavigationMenu\n","import React from 'react'\nimport { Search as SearchIcon } from '@carbonplan/icons'\nimport HeaderIcon, { HeaderIconProps } from './header-icon'\n\nconst Search = (props: HeaderIconProps) => {\n  return (\n    <HeaderIcon {...props} label='Toggle Search'>\n      <SearchIcon width={50} height={30} x={8} y={1} />\n    </HeaderIcon>\n  )\n}\n\nexport default Search\n","import React, { useEffect, useState } from 'react'\nimport { Box, Flex, Link, ThemeUIStyleObject } from 'theme-ui'\nimport { Arrow, RotatingArrow } from '@carbonplan/icons'\nimport Input from '../input'\nimport Row from '../row'\nimport Column from '../column'\nimport Button from '../button'\n\nconst HoverArrow = ({ sx }: { sx: ThemeUIStyleObject }) => {\n  return (\n    <Arrow\n      id='arrow'\n      sx={{\n        display: 'inline-block',\n        position: 'absolute',\n        right: ['4px', '-68px', '-80px', '-104px'],\n        top: [undefined, undefined, '46px', '62px'],\n        bottom: ['4px', '4px', undefined, undefined],\n        opacity: 0,\n        transition: 'opacity 0.2s ease-out',\n        transform: 'rotate(45deg)',\n        width: [24, 36, 48, 56],\n        height: [24, 36, 48, 56],\n        ...sx,\n      }}\n    />\n  )\n}\n\nconst RESOURCES = [\n  {\n    label: 'Carbon accounting',\n    links: [],\n  },\n  {\n    label: 'Climate impacts',\n    links: [],\n  },\n  {\n    label: 'Organization',\n    links: [],\n  },\n]\n\nconst sx = {\n  highlight: {\n    mb: [2, 2, 3, 3],\n    fontSize: [3, 3, 3, 4],\n    fontFamily: 'heading',\n    letterSpacing: 'smallcaps',\n    textTransform: 'uppercase',\n    color: 'secondary',\n  },\n}\n\ntype Resource = {\n  label: string\n  links: { href: string; label: string }[]\n}\n\nconst SearchMenu = ({\n  setExpanded,\n  mode,\n}: {\n  setExpanded: (value: boolean) => void\n  mode?: 'homepage' | 'local' | 'remote'\n}) => {\n  const [value, setValue] = useState('')\n  const [resources, setResources] = useState<Resource[]>(RESOURCES)\n  const baseUrl = mode === 'remote' ? 'https://carbonplan.org' : ''\n  const destination = `${baseUrl}/search?query=${encodeURIComponent(\n    value.trim()\n  )}`\n\n  useEffect(() => {\n    fetch(`${baseUrl}/resources.json`)\n      .then((res) => res.json())\n      .then((res: Resource[]) => {\n        if (res.every((el) => el.label && Array.isArray(el.links))) {\n          setResources(res)\n        }\n      })\n      .catch(() => {\n        setResources(RESOURCES)\n      })\n  }, [])\n\n  useEffect(() => {\n    const handler = (e: KeyboardEvent) => {\n      if (e.key === 'Escape') setExpanded(false)\n    }\n    document.addEventListener('keydown', handler)\n    return () => document.removeEventListener('keydown', handler)\n  }, [setExpanded])\n\n  return (\n    <>\n      <Row columns={[6, 6, 10, 10]}>\n        <Column start={1} width={[6, 6, 10, 10]}>\n          <Flex\n            as='form'\n            onSubmit={(e) => {\n              e.preventDefault()\n              if (value.trim()) {\n                window.location.href = destination\n              }\n            }}\n            sx={{\n              flexDirection: ['column', 'column', 'row', 'row'],\n              gap: [0, 0, 7, 7],\n              mt: ['1px', 0, 2, '29px'],\n              position: 'relative',\n              borderStyle: 'solid',\n              borderColor: ['secondary', 'secondary', 'muted', 'muted'],\n              borderWidth: '0px',\n              borderBottomWidth: '1px',\n              '@media (hover: hover) and (pointer: fine)': {\n                '&:hover  #arrow': {\n                  opacity: 1,\n                },\n              },\n            }}\n          >\n            <Box\n              as='label'\n              {...{ htmlFor: 'search' }}\n              sx={{\n                color: 'primary',\n                fontSize: [6, 6, 7, 8],\n                fontFamily: 'heading',\n                letterSpacing: 'heading',\n                py: [0, 3, 4, 5],\n                textDecoration: 'none',\n                display: 'block',\n                transition: 'color 0.15s',\n              }}\n            >\n              Search\n            </Box>\n            <Input\n              autoFocus\n              id='search'\n              size='xl'\n              value={value}\n              onChange={(e) => setValue(e.target.value)}\n              sx={{\n                borderBottomWidth: 0,\n                fontSize: [4, 6, 7, 8],\n                flexShrink: 0,\n              }}\n              color='secondary'\n            />\n            <Link href={destination}>\n              <HoverArrow\n                sx={{\n                  opacity: value ? 1 : [1, 1, 0, 0],\n                  pointerEvents: value ? 'all' : 'none',\n                }}\n              />\n            </Link>\n          </Flex>\n        </Column>\n      </Row>\n\n      <Row\n        columns={[6, 6, 10, 10]}\n        sx={{\n          mt: [6, 7, 8, 8],\n          rowGap: [5, 4, 6, 7],\n        }}\n      >\n        {resources.map((group, i) => (\n          <Column\n            start={[1, 1 + ((i * 3) % 6), 2 + ((i * 3) % 9), 2 + ((i * 3) % 9)]}\n            width={[6, 3, 3, 3]}\n            key={group.label}\n          >\n            <Box sx={sx.highlight}>{group.label}</Box>\n            {group.links.map(({ label, href }) => (\n              <Button\n                key={href}\n                href={href}\n                size='md'\n                sx={{ mb: [1] }}\n                suffix={<RotatingArrow />}\n              >\n                {label}\n              </Button>\n            ))}\n          </Column>\n        ))}\n      </Row>\n    </>\n  )\n}\n\nexport default SearchMenu\n","import React, { forwardRef } from 'react'\nimport { Input as ThemedInput } from 'theme-ui'\nimport getSizeStyles from './utils/get-size-styles'\n\nexport interface InputProps\n  extends Omit<React.ComponentPropsWithRef<typeof ThemedInput>, 'size'> {\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  inverted?: boolean\n}\n\nconst Input = (\n  { size = 'sm', inverted, sx, ...props }: InputProps,\n  ref: React.Ref<HTMLInputElement>\n) => {\n  const defaultColor = inverted ? 'secondary' : 'primary'\n\n  const styles = {\n    color: defaultColor,\n    borderColor: 'secondary',\n    borderStyle: 'solid',\n    borderWidth: '0px',\n    borderBottomWidth: '1px',\n    borderRadius: '0px',\n    transition: 'border 0.15s',\n    width: 'calc(min(15ch, 100%))',\n    p: [0],\n    py: ['2px'],\n    'input::-webkit-outer-spin-button': {\n      WebkitAppearance: 'none' as const,\n      margin: 0,\n    },\n    'input::-webkit-inner-spin-button': {\n      WebkitAppearance: 'none' as const,\n      margin: 0,\n    },\n    ':focus': {\n      borderColor: 'primary',\n    },\n    ':focus-visible': {\n      outline: 'none !important',\n      background: 'none !important',\n    },\n    ...getSizeStyles(size),\n    ...sx,\n  }\n  return <ThemedInput {...props} ref={ref} sx={styles} />\n}\n\nexport default forwardRef<HTMLInputElement, InputProps>(Input)\n","import React, { useState, useEffect } from 'react'\nimport { Box, Flex, Link } from 'theme-ui'\nimport { default as NextLink } from 'next/link'\nimport Monogram from './monogram'\nimport Row from './row'\nimport Column from './column'\n\nconst Footer = () => {\n  const [year, setYear] = useState<number | null>(null)\n  useEffect(() => {\n    setYear(new Date().getFullYear())\n  }, [])\n\n  return (\n    <Box\n      sx={{\n        mt: [7, 7, 7, 8],\n        mb: [7, 7, 7, 8],\n        pb: [2, 1, 0, 0],\n      }}\n    >\n      <Row sx={{ mb: [0, 0, 4, 5] }}>\n        <Column start={[1, 2]} width={[3, 3]}>\n          <Box>\n            <Box\n              sx={{\n                fontSize: [2, 2, 2, 3],\n                fontFamily: 'heading',\n                letterSpacing: 'mono',\n                mb: [2],\n              }}\n            >\n              EMAIL\n            </Box>\n            <Link\n              href='mailto:hello@carbonplan.org'\n              sx={{\n                textDecoration: 'none',\n                fontSize: [2, 2, 2, 3],\n              }}\n            >\n              hello@carbonplan.org\n            </Link>\n          </Box>\n        </Column>\n        <Column\n          start={[5]}\n          width={[1]}\n          dl={1}\n          dr={1}\n          sx={{\n            display: ['flex', 'none', 'none', 'none'],\n            justifyContent: ['center'],\n          }}\n        >\n          <Monogram sx={{ mt: ['-4px'], width: '60px', height: '60px' }} />\n        </Column>\n        <Column start={[1, 5, 5, 5]} width={[3, 3]} sx={{ mt: [3, 0, 0, 0] }}>\n          <Box>\n            <Box\n              sx={{\n                fontSize: [2, 2, 2, 3],\n                fontFamily: 'heading',\n                letterSpacing: 'mono',\n                mb: [2],\n              }}\n            >\n              NEWSLETTER\n            </Box>\n            <Link\n              href='https://carbonplan.org/newsletter'\n              sx={{\n                textDecoration: 'none',\n                fontSize: [2, 2, 2, 3],\n              }}\n            >\n              Subscribe\n            </Link>\n          </Box>\n        </Column>\n        <Column\n          start={[1, 9]}\n          width={[5, 4, 3, 3]}\n          sx={{ mt: ['42px', '42px', 0, 0], mb: [3, 3, 0, 0] }}\n        >\n          <Box>\n            <Box\n              sx={{\n                fontSize: [2, 2, 2, 3],\n                fontFamily: 'body',\n                color: 'secondary',\n              }}\n            >\n              CarbonPlan is a registered nonprofit public benefit corporation in\n              California with 501(c)(3) status.\n            </Box>\n          </Box>\n        </Column>\n      </Row>\n      <Row sx={{ mb: ['2px'], mt: [5, 5, 4] }}>\n        <Column\n          start={[1, 1, 2, 2]}\n          width={[3, 2, 3, 3]}\n          sx={{\n            display: 'flex',\n            alignItems: ['flex-start', 'flex-start', 'flex-end'],\n          }}\n        >\n          <Box\n            sx={{\n              bottom: '0px',\n              borderStyle: 'solid',\n              borderColor: 'muted',\n              borderWidth: '0px',\n              borderTopWidth: '1px',\n              display: 'inline-block',\n              pt: [2],\n            }}\n          >\n            <Box\n              sx={{\n                color: 'secondary',\n                fontSize: [1, 1, 1, 2],\n                fontFamily: 'mono',\n                letterSpacing: 'mono',\n              }}\n            >\n              <Flex\n                sx={{\n                  flexDirection: ['column', 'column', 'row', 'row'],\n                  gap: [0, 0, '10px', '12px'],\n                }}\n              >\n                <Box>(c) {year}</Box>\n                <Box>CARBONPLAN</Box>\n              </Flex>\n            </Box>\n          </Box>\n        </Column>\n        <Column\n          start={[4, 3, 5, 5]}\n          width={[3, 3, 4, 4]}\n          sx={{\n            display: 'flex',\n            alignItems: ['flex-start', 'flex-start', 'flex-end'],\n            mt: [0, 0, 0, 0],\n          }}\n        >\n          <Box\n            sx={{\n              bottom: '0px',\n              borderStyle: 'solid',\n              borderColor: 'muted',\n              borderWidth: '0px',\n              borderTopWidth: '1px',\n              pt: [2],\n            }}\n          >\n            <Flex\n              sx={{\n                color: 'secondary',\n                fontSize: [1, 1, 1, 2],\n                fontFamily: 'mono',\n                letterSpacing: 'mono',\n                flexDirection: ['column', 'column', 'row', 'row'],\n                gap: [0, 0, '10px', '12px'],\n              }}\n            >\n              <NextLink href='/terms' passHref legacyBehavior>\n                <Box\n                  as='a'\n                  sx={{\n                    color: 'secondary',\n                    '&:hover': {\n                      color: 'primary',\n                    },\n                  }}\n                >\n                  TERMS OF USE\n                </Box>\n              </NextLink>\n              <Box sx={{ display: ['none', 'none', 'initial', 'initial'] }}>\n                {' / '}\n              </Box>\n              <NextLink href='/privacy' passHref legacyBehavior>\n                <Box\n                  as='a'\n                  sx={{\n                    color: 'secondary',\n                    '&:hover': {\n                      color: 'primary',\n                    },\n                  }}\n                >\n                  PRIVACY POLICY\n                </Box>\n              </NextLink>\n            </Flex>\n          </Box>\n        </Column>\n        <Column\n          start={[5, 7, 9, 9]}\n          width={[2, 2, 3, 3]}\n          sx={{ display: ['none', 'initial', 'initial', 'initial'] }}\n        >\n          <Monogram\n            sx={{\n              width: 80,\n              height: 80,\n              mt: [0, '-10px', 4, 5],\n              mb: ['-12px'],\n            }}\n          />\n        </Column>\n      </Row>\n    </Box>\n  )\n}\n\nexport default Footer\n","import React from 'react'\nimport { Box, BoxProps } from 'theme-ui'\n\nexport type MonogramProps = BoxProps\n\nconst Monogram = ({ ...props }: MonogramProps) => {\n  return (\n    <Box\n      as='svg'\n      {...{\n        width: '80',\n        stroke: 'none',\n        fill: 'currentColor',\n        viewBox: '0 0 32 32',\n      }}\n      {...props}\n    >\n      <path d='M21.9395,14.9395 L17.5005,19.3785 L17.5005,7.0005 L14.5005,7.0005 L14.5005,19.3785 L10.0605,14.9395 L7.9395,17.0605 L14.9395,24.0605 C15.2325,24.3535 15.6165,24.5005 16.0005,24.5005 C16.3835,24.5005 16.7675,24.3535 17.0605,24.0605 L24.0605,17.0605 L21.9395,14.9395 Z'></path>\n      <path d='M27.5986,4 L22.8966,4 C26.5556,6.303 28.9996,10.366 28.9996,15 C28.9996,20.4 25.6896,25.039 20.9926,27 L26.5586,27 C29.8886,24.068 31.9996,19.785 31.9996,15 C31.9996,10.734 30.3196,6.868 27.5986,4'></path>\n      <path d='M3,15 C3,10.366 5.444,6.303 9.104,4 L4.401,4 C1.68,6.868 0,10.734 0,15 C0,19.785 2.112,24.068 5.441,27 L11.008,27 C6.311,25.039 3,20.4 3,15'></path>\n    </Box>\n  )\n}\n\nexport default Monogram\n","import React from 'react'\nimport { IconButton, useColorMode, IconButtonProps } from 'theme-ui'\nimport { useCallback } from 'react'\nimport { Sun } from '@carbonplan/icons'\n\nexport type DimmerProps = IconButtonProps\n\nconst Dimmer = ({ sx = {}, ...props }: DimmerProps) => {\n  const [colorMode, setColorMode] = useColorMode()\n\n  const toggle = useCallback(() => {\n    setColorMode(colorMode === 'light' ? 'dark' : 'light')\n  }, [colorMode])\n\n  return (\n    <IconButton\n      aria-label='Toggle dark mode'\n      onClick={toggle}\n      role='checkbox'\n      sx={{\n        width: 32,\n        height: 32,\n        display: 'inline-block',\n        cursor: 'pointer',\n        color: 'secondary',\n        ...sx,\n      }}\n      {...props}\n    >\n      <Sun\n        sx={{\n          strokeWidth: '1.75',\n          transition: 'stroke 0.15s',\n          '@media (hover: hover) and (pointer: fine)': {\n            '&:hover': {\n              stroke: 'primary',\n            },\n          },\n        }}\n      />\n    </IconButton>\n  )\n}\n\nexport default Dimmer\n","import React from 'react'\nimport { Box, Text } from 'theme-ui'\nimport { useState, useEffect } from 'react'\nimport GitSha from './gitsha'\n\nexport interface MetadataProps {\n  mode: 'mouse' | 'scroll'\n}\n\nconst Value = ({ mode }: MetadataProps) => {\n  const [display, setDisplay] = useState(init(mode))\n\n  useEffect(() => {\n    if (mode === 'mouse') {\n      const setFromEvent = (e: MouseEvent) => {\n        const x = format(e.clientX, 4)\n        const y = format(e.clientY, 4)\n        setDisplay(`X,Y: ${x},${y}`)\n      }\n      window.addEventListener('mousemove', setFromEvent)\n      return () => {\n        window.removeEventListener('mousemove', setFromEvent)\n      }\n    }\n    if (mode === 'scroll') {\n      const setFromEvent = () => {\n        const y = scrollFraction(window, document)\n        setDisplay(`SCROLL: 0.${format((y * 100).toFixed(0), 2)}`)\n      }\n      window.addEventListener('scroll', setFromEvent)\n      return () => {\n        window.removeEventListener('scroll', setFromEvent)\n      }\n    }\n  }, [])\n\n  return (\n    <Text\n      sx={{\n        whiteSpace: 'nowrap',\n        display: 'inline-block',\n        mr: '-6px',\n        fontFamily: 'mono',\n        letterSpacing: 'body',\n        color: 'secondary',\n        fontSize: [1],\n        textTransform: 'uppercase',\n      }}\n    >\n      {display}\n    </Text>\n  )\n}\n\nconst Metadata = ({ mode }: MetadataProps) => {\n  return (\n    <Box\n      sx={{\n        userSelect: 'none' as const,\n        position: 'fixed',\n        bottom: '42px',\n        right: '24px',\n        transformOrigin: 'right',\n        transform: 'rotate(90deg)',\n        display: ['none', 'none', 'initial'],\n      }}\n    >\n      <Value mode={mode} />\n      <GitSha />\n    </Box>\n  )\n}\n\nfunction init(mode: MetadataProps['mode']) {\n  if (mode === 'mouse') {\n    return `X,Y: ${format(0, 4)},${format(0, 4)}`\n  } else if (mode === 'scroll') {\n    return `SCROLL: 0.${format((0).toFixed(0), 2)}`\n  } else {\n    return mode\n  }\n}\n\nfunction format(num: number | string, pad: number) {\n  return num.toString().padStart(pad, '0')\n}\n\nfunction scrollFraction(window: Window, document: Document) {\n  return Math.min(window.scrollY / (document.body.offsetHeight - 770), 0.99)\n}\n\nexport default Metadata\n","import React from 'react'\nimport { Box, Text, Link, useThemeUI } from 'theme-ui'\n\nconst GitSha = () => {\n  const sha = process.env.NEXT_PUBLIC_VERCEL_GIT_COMMIT_SHA\n  const owner = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_OWNER\n  const slug = process.env.NEXT_PUBLIC_VERCEL_GIT_REPO_SLUG\n\n  const { theme } = useThemeUI()\n\n  const color = theme.rawColors?.secondary\n\n  if (sha && owner && slug) {\n    const shortSha = sha.substring(0, 7)\n    const href = 'https://github.com/' + owner + '/' + slug + '/tree/' + sha\n\n    return (\n      <Box sx={{ display: 'inline-block', width: '87px' }}>\n        <Separator color={typeof color === 'string' ? color : undefined} />\n        <Link\n          href={href}\n          sx={{\n            whiteSpace: 'nowrap',\n            display: 'inline-block',\n            ml: [2],\n            fontFamily: 'mono',\n            letterSpacing: 'body',\n            color: color,\n            fontSize: [1],\n            textTransform: 'uppercase',\n            textDecoration: 'none',\n          }}\n        >\n          {shortSha}\n        </Link>\n      </Box>\n    )\n  } else {\n    // fallback\n    return (\n      <Box sx={{ display: 'inline-block', width: '87px' }}>\n        <Separator color={typeof color === 'string' ? color : undefined} />\n        <Text\n          sx={{\n            whiteSpace: 'nowrap',\n            display: 'inline-block',\n            ml: [2],\n            fontFamily: 'mono',\n            letterSpacing: 'body',\n            color: color,\n            fontSize: [1],\n            textTransform: 'uppercase',\n          }}\n        >\n          {typeof color === 'string' ? color : ''}\n        </Text>\n      </Box>\n    )\n  }\n}\n\nconst Separator = ({ color = 'secondary' }: { color?: string }) => {\n  return (\n    <svg fill={color} opacity='0.8' viewBox='0 0 24 24' width='24' height='24'>\n      <circle r={5} cx={19} cy={19} />\n    </svg>\n  )\n}\n\nexport default GitSha\n","import React from 'react'\nimport { Box, BoxProps } from 'theme-ui'\nimport { keyframes } from '@emotion/react'\n\nconst fade = keyframes({\n  from: {\n    opacity: 0,\n  },\n  to: {\n    opacity: 1,\n  },\n})\n\nexport interface FadeInProps extends BoxProps {\n  duration?: number\n  delay?: number\n}\n\nconst FadeIn = ({\n  duration = 300,\n  delay = 0,\n  children,\n  ...delegated\n}: FadeInProps) => {\n  return (\n    <Box\n      {...delegated}\n      sx={{\n        animationDuration: duration + 'ms',\n        animationDelay: delay + 'ms',\n        animationName: fade.toString(),\n        animationFillMode: 'backwards',\n        willChange: 'opacity',\n      }}\n    >\n      {children}\n    </Box>\n  )\n}\n\nexport default FadeIn\n","import { useEffect } from 'react'\nimport getScrollbarWidth from './utils/get-scrollbar-width'\n\nconst Scrollbar = () => {\n  useEffect(() => {\n    if (typeof document !== 'undefined') {\n      const delta = getScrollbarWidth(document)\n      if (delta > 0) {\n        document.body.classList.add('custom-scrollbar')\n        document\n          .getElementsByTagName('html')[0]\n          .classList.add('custom-scrollbar')\n      }\n    }\n  }, [])\n  return null\n}\n\nexport default Scrollbar\n","const getScrollbarWidth = (document: Document) => {\n  const outer = document.createElement('div')\n  outer.style.visibility = 'hidden'\n  outer.style.width = '100px'\n  document.body.appendChild(outer)\n  outer.style.overflow = 'scroll'\n  const inner = document.createElement('div')\n  inner.style.width = '100%'\n  outer.appendChild(inner)\n  const delta = outer.offsetWidth - inner.offsetWidth\n  document.body.removeChild(outer)\n  return delta\n}\n\nexport default getScrollbarWidth\n","import React, { useState, useEffect } from 'react'\nimport { Box, Container } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nexport interface GuideProps {\n  color?: string\n}\n\nconst Guide = ({ color = 'muted' }: GuideProps) => {\n  const [display, setDisplay] = useState(false)\n\n  useEffect(() => {\n    function handler(event: KeyboardEvent) {\n      const { key, metaKey } = event\n      if (key === ';' && metaKey) {\n        setDisplay((prev) => !prev)\n      }\n    }\n\n    document.addEventListener('keydown', handler)\n    return () => {\n      document.removeEventListener('keydown', handler)\n    }\n  }, [])\n\n  return (\n    <Box\n      sx={{\n        position: 'fixed',\n        width: '100%',\n        left: 0,\n        top: 0,\n        zIndex: color === 'teal' ? 5000 : -1,\n        pointerEvents: 'none',\n        display: display ? 'initial' : 'none',\n      }}\n    >\n      <Container>\n        <Box sx={{ display: ['none', 'none', 'initial', 'initial'] }}>\n          <GuideColumns\n            indices={[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}\n            color={color}\n          />\n        </Box>\n        <Box sx={{ display: ['none', 'initial', 'none', 'none'] }}>\n          <GuideColumns indices={[1, 2, 3, 4, 5, 6, 7, 8]} color={color} />\n        </Box>\n        <Box sx={{ display: ['initial', 'none', 'none', 'none'] }}>\n          <GuideColumns indices={[1, 2, 3, 4, 5, 6]} color={color} />\n        </Box>\n      </Container>\n    </Box>\n  )\n}\n\nconst colorCycle = [\n  'red',\n  'orange',\n  'yellow',\n  'green',\n  'teal',\n  'blue',\n  'purple',\n  'pink',\n]\n\nfunction GuideColumns({\n  indices,\n  color,\n}: {\n  indices: number[]\n  color: string\n}) {\n  const sx = {\n    outerGuideColumn: {\n      borderStyle: 'solid',\n      borderWidth: '0px',\n      borderLeftWidth: color === 'teal' ? '0px' : '1px',\n      borderRightWidth: color === 'teal' ? '0px' : '1px',\n      opacity: color === 'teal' ? 0.4 : 1,\n    },\n    innerGuideColumn: {\n      borderStyle: 'solid',\n      borderWidth: '0px',\n      borderLeftWidth: '0px',\n      borderRightWidth: '0px',\n      opacity: color === 'teal' ? 0.4 : 1,\n    },\n  }\n\n  return (\n    <Row>\n      {indices.map((i) => {\n        return (\n          <Column\n            key={i}\n            start={[i]}\n            width={[1, 1]}\n            dl={0.5}\n            dr={0.5}\n            sx={{\n              bg: color === 'teal' ? 'teal' : 'transparent',\n              height: '100vh',\n              ...sx.innerGuideColumn,\n            }}\n          >\n            <Box\n              sx={{\n                mx: ['12px', 3, 3, 4],\n                bg: color === 'teal' ? 'background' : 'transparent',\n                height: '100%',\n                borderLeftColor:\n                  color === 'rainbow' ? colorCycle[i % 8] : 'muted',\n                borderRightColor:\n                  color === 'rainbow' ? colorCycle[i % 8] : 'muted',\n                ...sx.outerGuideColumn,\n              }}\n            ></Box>\n          </Column>\n        )\n      })}\n    </Row>\n  )\n}\n\nexport default Guide\n","import React from 'react'\nimport HeaderIcon, { HeaderIconProps } from './header/header-icon'\n\nexport interface SettingsProps extends Omit<HeaderIconProps, 'onClick'> {\n  onClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void\n}\n\nconst Settings = (props: SettingsProps) => {\n  return (\n    <HeaderIcon label='Toggle Settings' {...props}>\n      <line x1='24' y1='2.1' x2='24' y2='6.1' />\n      <line x1='24' y1='24.1' x2='24' y2='33.9' />\n      <line x1='44' y1='2.1' x2='44' y2='12.1' />\n      <line x1='44' y1='30.1' x2='44' y2='33.9' />\n      <circle cx='24' cy='15.1' r='5' />\n      <circle cx='44' cy='21.1' r='5' />\n    </HeaderIcon>\n  )\n}\n\nexport default Settings\n","import React from 'react'\nimport { IconButton, IconButtonProps } from 'theme-ui'\n\nexport interface ExpanderProps {\n  value: IconButtonProps['aria-checked']\n  id?: IconButtonProps['id']\n  onClick: IconButtonProps['onClick']\n  sx?: IconButtonProps['sx']\n}\nconst Expander = ({ value, id, onClick, sx }: ExpanderProps) => {\n  return (\n    <IconButton\n      onClick={onClick}\n      id={id}\n      role='checkbox'\n      aria-checked={value}\n      aria-label='Expand'\n      sx={{\n        display: 'inline-block',\n        width: 24,\n        height: 24,\n        p: [1],\n        cursor: 'pointer',\n        fill: 'secondary',\n        stroke: 'secondary',\n        '@media (hover: hover) and (pointer: fine)': {\n          '&:hover': {\n            fill: 'primary',\n            stroke: 'primary',\n          },\n        },\n        ...sx,\n      }}\n    >\n      <svg viewBox='0 0 16 16'>\n        <path\n          d='M8,0 V16 M0,8 H16'\n          style={{\n            strokeWidth: 2,\n            transition: '0.25s all',\n            transformOrigin: '8px 8px',\n            transform: value ? 'rotate(45deg)' : 'rotate(0deg)',\n          }}\n        />\n      </svg>\n    </IconButton>\n  )\n}\n\nexport default Expander\n","import React from 'react'\nimport { Box, ThemeUIStyleObject } from 'theme-ui'\n\nimport Group from './group'\n\nexport interface FigureProps {\n  as?: React.ElementType\n  children?: React.ReactNode\n  sx?: ThemeUIStyleObject\n}\n\nconst Figure = ({ as = 'figure', children, sx }: FigureProps) => {\n  // try to use figure/table number as id for anchoring\n  const childrenArray = React.Children.toArray(children)\n  const captionElement = childrenArray.find((child) => {\n    if (!React.isValidElement(child)) return false\n    const type = child.type\n    return (\n      typeof type !== 'string' &&\n      'displayName' in type &&\n      (type.displayName === 'FigureCaption' ||\n        type.displayName === 'TableCaption')\n    )\n  })\n\n  const captionProps = React.isValidElement<{ number?: number }>(captionElement)\n    ? captionElement.props\n    : undefined\n  const captionType = React.isValidElement(captionElement)\n    ? captionElement.type\n    : undefined\n  const elementNumber = captionProps?.number\n  const elementType =\n    typeof captionType !== 'string' &&\n    captionType &&\n    'displayName' in captionType &&\n    captionType.displayName === 'TableCaption'\n      ? 'table'\n      : 'figure'\n  const id = elementNumber ? `${elementType}-${elementNumber}` : undefined\n\n  return (\n    <Box\n      as={as}\n      id={id}\n      sx={{\n        my: [6, 6, 6, 7],\n        scrollMarginTop: '60px', // account for header height\n        '@media print': {\n          breakInside: 'avoid',\n        },\n        ...sx,\n      }}\n    >\n      <Group spacing={[4, 4, 4, 5]}>{children}</Group>\n    </Box>\n  )\n}\n\nexport default Figure\n","import React from 'react'\nimport Caption, { CaptionProps } from './caption'\n\nexport type FigureCaptionProps = CaptionProps\n\nconst FigureCaption = ({\n  as = 'figcaption',\n  number,\n  children,\n}: CaptionProps) => {\n  return (\n    <Caption as={as} number={number} label='figure'>\n      {children}\n    </Caption>\n  )\n}\n\nFigureCaption.displayName = 'FigureCaption'\n\nexport default FigureCaption\n","import React, { ReactNode, useMemo } from 'react'\nimport { Box, BoxProps } from 'theme-ui'\nimport Tag from './tag'\n\nexport interface FilterProps<T> extends BoxProps {\n  values: { [Property in keyof T]: boolean }\n  setValues: (updated: { [Property in keyof T]: boolean }) => void\n  order?: (keyof T)[]\n  colors?: { [Property in keyof T]: string }\n  labels?: { [Property in keyof T]: ReactNode }\n  label?: ReactNode\n  showAll?: boolean\n  multiSelect?: boolean\n}\nconst sx = {\n  label: {\n    fontFamily: 'mono',\n    letterSpacing: 'mono',\n    fontSize: [1, 1, 1, 2],\n    color: 'secondary',\n    userSelect: 'none' as const,\n    textTransform: 'uppercase' as const,\n  },\n}\n\nconst duplicateOptions = <T,>(\n  options: { [Property in keyof T]: boolean },\n  defaultValue: boolean,\n  overrides: Partial<{ [Property in keyof T]: boolean }> = {}\n): { [Property in keyof T]: boolean } => {\n  let result = { ...options }\n  Object.keys(options).forEach((key) => {\n    result[key as keyof T] = !!overrides[key as keyof T] || defaultValue\n  })\n\n  return result\n}\n\nconst isAll = <T,>(option: FilterProps<T>['values']) => {\n  return (\n    Object.keys(option).filter((d) => option[d as keyof T]).length ===\n    Object.keys(option).length\n  )\n}\n\nconst updateValues = <T,>({\n  values,\n  multiSelect,\n  setValues,\n  value,\n}: {\n  values: FilterProps<T>['values']\n  multiSelect: FilterProps<T>['multiSelect']\n  setValues: FilterProps<T>['setValues']\n  value: keyof T | 'all'\n}) => {\n  const isAllAlreadySelected = isAll(values)\n\n  let updatedToggle\n\n  if (value === 'all') {\n    if (!isAllAlreadySelected) {\n      // select all\n      updatedToggle = duplicateOptions(values, true)\n    } else if (multiSelect) {\n      // deselect all\n      updatedToggle = duplicateOptions(values, false)\n    }\n    // else: !multiSelect && isAllAlreadySelected -> do nothing\n  } else if (multiSelect) {\n    // de/select value, inherit other values\n    updatedToggle = { ...values, [value]: !values[value] }\n  } else {\n    // select only value\n    updatedToggle = duplicateOptions(values, false, {\n      [value]: true,\n    } as Partial<{ [Property in keyof T]: boolean }>)\n  }\n\n  if (updatedToggle) {\n    setValues(updatedToggle)\n  }\n}\n\nconst Filter = <T,>({\n  values,\n  setValues,\n  label,\n  colors,\n  order,\n  labels,\n  showAll = false,\n  multiSelect = false,\n  ...props\n}: FilterProps<T>) => {\n  const keys = useMemo(() => {\n    if (order) {\n      return order\n    } else {\n      return Object.keys(values) as (keyof T)[]\n    }\n  }, [order, ...Object.keys(values).sort()])\n\n  return (\n    <Box {...props}>\n      {label && <Box sx={sx.label}>{label}</Box>}\n      <Box sx={{ mt: label ? [3] : 0 }}>\n        {showAll && (\n          <Tag\n            label='all'\n            onClick={() =>\n              updateValues({\n                values: values,\n                multiSelect,\n                setValues: setValues,\n                value: 'all',\n              })\n            }\n            value={isAll(values)}\n            sx={{ mr: [2] }}\n          >\n            All\n          </Tag>\n        )}\n        {keys.map((d, i) => (\n          <Tag\n            label={String(d)}\n            onClick={() =>\n              updateValues({\n                values: values,\n                multiSelect,\n                setValues: setValues,\n                value: d,\n              })\n            }\n            onDoubleClick={() =>\n              updateValues({\n                values: values,\n                multiSelect: false,\n                setValues: setValues,\n                value: d,\n              })\n            }\n            key={i}\n            value={values[d]}\n            sx={{\n              width: 'max-content',\n              color: colors ? colors[d] : 'primary',\n              mr: [2],\n              mb: [1],\n            }}\n          >\n            {labels ? labels[d] : String(d)}\n          </Tag>\n        ))}\n      </Box>\n    </Box>\n  )\n}\n\nexport default Filter\n","import React from 'react'\nimport { Box, BoxProps } from 'theme-ui'\nimport getSxColor from './utils/get-sx-color'\n\nexport interface TagProps\n  extends BoxProps,\n    Omit<\n      React.ButtonHTMLAttributes<HTMLButtonElement>,\n      keyof BoxProps | 'value'\n    > {\n  label?: BoxProps['aria-label']\n  value?: boolean\n}\nconst Tag = ({ label, value, sx, children, ...props }: TagProps) => {\n  const color = getSxColor(sx)\n  const isClickable = props && (props.onClick || props.onDoubleClick)\n\n  return (\n    <Box\n      as={isClickable ? 'button' : 'span'}\n      role='checkbox'\n      aria-checked={value}\n      aria-label={label}\n      sx={{\n        display: 'inline-block',\n        fontSize: [1, 1, 1, 2],\n        fontFamily: 'mono',\n        letterSpacing: 'mono',\n        cursor: isClickable ? 'pointer' : 'inherit',\n        color: color,\n        backgroundColor: 'transparent',\n        borderStyle: 'solid',\n        borderColor: color,\n        lineHeight: 'body',\n        borderWidth: '0px',\n        borderBottomWidth: '1px',\n        textTransform: 'uppercase',\n        userSelect: 'none',\n        transition: 'opacity 0.05s',\n        pt: ['1px'],\n        pb: ['2px'],\n        px: [0],\n        m: [0],\n        opacity: value == null || value ? 1 : color === 'primary' ? 0.24 : 0.33,\n        ...sx,\n      }}\n      {...props}\n    >\n      {children}\n    </Box>\n  )\n}\n\nexport default Tag\n","import React, { ReactNode } from 'react'\nimport { Box, ThemeUIStyleObject } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\nimport Sidenote from './sidenote'\n\nexport interface HeadingProps {\n  children: ReactNode\n  sidenote?: ReactNode\n  variant?: 'h1' | 'h2'\n  description?: ReactNode\n  descriptionStart?: number[]\n  descriptionWidth?: number[]\n  sx?: ThemeUIStyleObject\n}\n\nconst Heading = ({\n  children,\n  sidenote,\n  variant = 'h1',\n  description,\n  descriptionStart = [1, 3, 5, 5],\n  descriptionWidth = [5, 5, 5, 4],\n  sx,\n}: HeadingProps) => {\n  let titleWidth = [6, 6, 6, 6]\n  if (description) {\n    titleWidth[1] = descriptionStart[1] - 1\n    titleWidth[2] = descriptionStart[2] - 2\n    titleWidth[3] = descriptionStart[3] - 2\n  }\n\n  if (!['h1', 'h2'].includes(variant)) {\n    throw new Error(`variant must be 'h1' or 'h2' but got '${variant}'`)\n  }\n\n  return (\n    <Row sx={{ mt: [5, 6, 7, 8], mb: [5, 6, 7, 8], ...sx }}>\n      <Column start={[1, 1, 2, 2]} width={titleWidth}>\n        {variant === 'h1' && (\n          <Box as='h1' variant='styles.h1' sx={{ my: [0, 0, 0, 0] }}>\n            {children}\n          </Box>\n        )}\n        {variant === 'h2' && (\n          <Box as='h2' variant='styles.h2' sx={{ my: [0, 0, 0, 0] }}>\n            {children}\n          </Box>\n        )}\n      </Column>\n      {sidenote && <Sidenote variant={variant}>{sidenote}</Sidenote>}\n      {description && (\n        <Column start={descriptionStart} width={descriptionWidth}>\n          <Box\n            sx={{\n              mt: [4, '5px', '20px', '31px'],\n              fontSize: [2, 2, 2, 3],\n            }}\n          >\n            {description}\n          </Box>\n        </Column>\n      )}\n    </Row>\n  )\n}\n\nexport default Heading\n","import React, { ReactNode } from 'react'\nimport { Box } from 'theme-ui'\nimport Column from './column'\n\nexport interface SidenoteProps {\n  children: ReactNode\n  variant?: 'h1' | 'h2'\n}\n\nconst Sidenote = ({ children, variant = 'h1' }: SidenoteProps) => {\n  let mt\n  if (variant === 'h1') mt = [4, '27px', '42px', '54px']\n  if (variant === 'h2') mt = [4, 4, '14px', '25px']\n  return (\n    <>\n      <Column start={[1, 4, 8, 8]} width={[1, 1, 1, 1]}>\n        <Box\n          sx={{\n            mt: mt,\n            fontFamily: 'faux',\n            letterSpacing: 'faux',\n            fontSize: [2, 2, 2, 3],\n            textAlign: 'right',\n          }}\n        >\n          /\n        </Box>\n      </Column>\n      <Column start={[2, 5, 9, 9]} width={[3, 3, 2, 2]}>\n        <Box\n          sx={{\n            mt: mt,\n            fontFamily: 'faux',\n            letterSpacing: 'faux',\n            fontSize: [2, 2, 2, 3],\n            height: ['100%', '0px', '0px', '0px'],\n          }}\n        >\n          {children}\n        </Box>\n      </Column>\n    </>\n  )\n}\n\nexport default Sidenote\n","import React from 'react'\nimport { Flex, ThemeUICSSObject, ThemeUIStyleObject } from 'theme-ui'\nimport { RotatingArrow } from '@carbonplan/icons'\nimport Button from './button'\n\nexport interface LinkGroupProps {\n  members: { href: string; label: string }[]\n  color?: string\n  inverted?: boolean\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  rowGap?: ThemeUICSSObject['rowGap']\n  columnGap?: ThemeUICSSObject['columnGap']\n  direction?: 'horizontal' | 'vertical'\n  sx?: ThemeUIStyleObject\n}\n\nconst LinkGroup = ({\n  members,\n  color,\n  inverted,\n  size = 'xs',\n  rowGap = [2, 2, 2, 3],\n  columnGap = [3, 3, 3, 4],\n  direction = 'horizontal',\n  sx,\n}: LinkGroupProps) => {\n  return (\n    <Flex\n      sx={{\n        flexDirection: direction === 'horizontal' ? 'row' : 'column',\n        rowGap,\n        columnGap,\n        flexWrap: 'wrap',\n        ...sx,\n      }}\n    >\n      {members.map((d, i) => {\n        return (\n          <Button\n            key={i}\n            href={d.href}\n            size={size}\n            sx={{ color: color }}\n            inverted={inverted}\n            suffix={<RotatingArrow />}\n          >\n            {d.label}\n          </Button>\n        )\n      })}\n    </Flex>\n  )\n}\n\nexport default LinkGroup\n","import React, { useRef } from 'react'\nimport { Box, BoxProps, ThemeUIStyleObject } from 'theme-ui'\nimport { Arrow } from '@carbonplan/icons'\nimport getSizeStyles from './utils/get-size-styles'\nimport getSxColor from './utils/get-sx-color'\n\nexport interface SelectProps\n  extends Omit<BoxProps, 'onChange'>,\n    Omit<\n      React.SelectHTMLAttributes<HTMLSelectElement>,\n      keyof BoxProps | 'onChange' | 'size'\n    > {\n  size?: 'xs' | 'sm' | 'md'\n  sxSelect?: ThemeUIStyleObject\n  onChange?: React.ChangeEventHandler<HTMLSelectElement>\n}\n\nconst Select = ({\n  children,\n  size = 'sm',\n  sx,\n  sxSelect,\n  onChange,\n  ...props\n}: SelectProps) => {\n  const color = getSxColor(sx)\n  const sizeStyles = getSizeStyles(size)\n  const ref = useRef<HTMLSelectElement>(null)\n\n  if (!['xs', 'sm', 'md'].includes(size)) {\n    throw new Error('Size must be xs, sm, or md')\n  }\n\n  const sizeConfig = {\n    xs: {\n      height: [14, 14, 14, 16],\n      width: [14, 14, 14, 14],\n      top: ['1px'],\n      ml: ['-14px', '-14px', '-14px', '-16px'],\n    },\n    sm: {\n      height: [15, 15, 15, 20],\n      width: [15, 15, 15, 20],\n      top: ['1px'],\n      ml: ['-16px', '-16px', '-16px', '-20px'],\n    },\n    md: {\n      height: [20, 20, 20, 20],\n      width: [20, 20, 20, 20],\n      top: ['2px'],\n      ml: ['-20px', '-20px', '-20px', '-20px'],\n    },\n  }\n\n  const { height, width, top, ml } = sizeConfig[size]\n  const pr = width.map((d) => d + 12)\n\n  return (\n    <Box\n      sx={{\n        display: 'inline-block',\n        ...sx,\n      }}\n    >\n      <Box\n        as='select'\n        ref={ref}\n        onChange={(e) => {\n          ref.current?.blur()\n          // theme-ui Box doesn't narrow event types for `as='select'`\n          if (onChange)\n            onChange(e as unknown as React.ChangeEvent<HTMLSelectElement>)\n        }}\n        sx={{\n          ...sizeStyles,\n          lineHeight: 'normal',\n          cursor: 'pointer',\n          WebkitAppearance: 'none',\n          MozAppearance: 'none',\n          pb: ['5px'],\n          bg: 'background',\n          pr: pr,\n          border: 'none',\n          borderBottomStyle: 'solid',\n          borderBottomWidth: '1px',\n          borderBottomColor: 'primary',\n          borderRadius: '0px',\n          width: 'fit-content',\n          color: color,\n          userSelect: 'none' as const,\n          '@media (hover: none) and (pointer: coarse)': {\n            '&:focus-visible': {\n              outline: 'none !important',\n              background: 'transparent !important',\n            },\n          },\n          ...sxSelect,\n        }}\n        {...props}\n      >\n        {children}\n      </Box>\n      <Arrow\n        sx={{\n          width: width,\n          height: height,\n          position: 'relative',\n          ml: ml,\n          top: top,\n          fill: 'secondary',\n          transform: 'rotate(135deg)',\n          pointerEvents: 'none',\n        }}\n      />\n    </Box>\n  )\n}\n\nexport default Select\n","import React, { forwardRef } from 'react'\nimport { useThemeUI, Slider as ThemeSlider } from 'theme-ui'\nimport getSxColor from './utils/get-sx-color'\n\nexport type SliderProps = React.ComponentPropsWithRef<typeof ThemeSlider>\n\nconst Slider = (\n  { sx, ...props }: SliderProps,\n  ref: React.Ref<HTMLInputElement>\n) => {\n  const color = getSxColor(sx)\n  const {\n    theme: { rawColors: colors },\n  } = useThemeUI()\n\n  return (\n    <ThemeSlider\n      ref={ref}\n      sx={{\n        '&::-webkit-slider-thumb': {\n          height: [22, 18, 16],\n          width: [22, 18, 16],\n          boxShadow: `0 0 0 0px ${colors?.secondary}`,\n          transition: 'box-shadow .15s ease',\n        },\n        '&::-moz-range-thumb': {\n          height: [22, 18, 16],\n          width: [22, 18, 16],\n          boxShadow: `0 0 0 0px ${colors?.secondary}`,\n          transition: 'box-shadow .15s ease',\n        },\n        ':focus-visible': {\n          outline: 'none !important',\n          background: `${colors?.secondary} !important`,\n        },\n        ':focus': {\n          color: color,\n          '&::-webkit-slider-thumb': {\n            boxShadow: `0 0 0 4px ${colors?.secondary}`,\n          },\n          '&::-moz-range-thumb': {\n            boxShadow: `0 0 0 4px ${colors?.secondary}`,\n          },\n        },\n        color: color,\n        ...sx,\n      }}\n      {...props}\n    />\n  )\n}\n\nexport default forwardRef<HTMLInputElement, SliderProps>(Slider)\n","import React, { ReactNode } from 'react'\nimport { Box, ThemeUIStyleObject } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\n/**\n * A responsive value that maps to screen breakpoints\n * `[mobile (<40em), tablet (≥40em), desktop (≥64em), large (≥102em)]`.\n * A single number applies to all breakpoints; an array specifies per-breakpoint values.\n *\n * Arrays of length 1, 2, or 4 are supported:\n * - `[n]` — same value at all breakpoints\n * - `[a, b]` — `a` for mobile and tablet, `b` for desktop and large\n * - `[mobile, tablet, desktop, large]` — explicit value at each breakpoint\n *\n * Note: this differs from theme-ui's native responsive arrays (e.g. in `sx`),\n * where the last value carries forward to all larger breakpoints. Here, `[a, b]`\n * is expanded to `[a, a, b, b]` (split at 64em), whereas theme-ui would treat it\n * as `a` below 40em and `b` at 40em+ (split at 40em).\n */\ntype ResponsiveNumber = number | number[]\n\nconst styles = {\n  reset: {\n    verticalAlign: 'baseline' as const,\n    border: 0,\n    outline: 0,\n    margin: 0,\n    padding: 0,\n  },\n  row: {\n    borderStyle: 'solid',\n    borderWidth: '0px',\n    borderTopWidth: '1px',\n    borderColor: 'muted',\n    pt: [3, 3, 3, '20px'],\n    pb: [3, 3, 3, '20px'],\n    mb: ['2px'],\n  },\n  header: {\n    display: 'block',\n    textTransform: 'uppercase' as const,\n    letterSpacing: 'smallcaps',\n    fontFamily: 'heading',\n    fontSize: [2, 2, 2, 3],\n  },\n  index: {\n    display: 'block',\n    textTransform: 'uppercase' as const,\n    letterSpacing: 'smallcaps',\n    fontFamily: 'heading',\n    fontSize: [2, 2, 2, 3],\n  },\n  entry: {\n    display: 'block',\n    fontSize: [2, 2, 2, 3],\n    fontFamily: 'faux',\n    letterSpacing: 'faux',\n    mb: ['1px'],\n    mt: [2, 0, 0, 0],\n  },\n}\n\n/**\n * A table built on the CarbonPlan grid system.\n *\n * `start` and `width` are arrays with one entry per table column.\n * Each entry is a {@link ResponsiveNumber} controlling that column's\n * grid position or span.\n *\n * @example\n * // 2-column table: stacked on mobile, side-by-side on tablet+\n * // (from soil-protocols-explainer/metric-table)\n * <Table\n *   columns={[6]}\n *   start={[\n *     [1, 1, 1, 1],\n *     [1, 3, 3, 3],\n *   ]}\n *   width={[\n *     [6, 2, 2, 2],\n *     [6, 4, 4, 4],\n *   ]}\n *   data={[\n *     ['Rigor', 'Approach to quantifying soil carbon...'],\n *     ['Additionality', 'Approach to analyzing causal relationship...'],\n *   ]}\n * />\n */\nexport interface TableProps {\n  /**\n   * The tabular data as a 2D array: `data[row][tableColumn]`.\n   * Each inner array is a row; each element becomes a `<td>`.\n   * Elements can be strings, numbers, or React nodes.\n   */\n  data: ReactNode[][]\n  /**\n   * Total number of grid columns the table spans, as a responsive value.\n   * This is passed to the underlying `Row` component and controls the\n   * grid template, not the number of visible table columns.\n   *\n   * @example\n   * columns={[6]}              // 6 grid columns at all breakpoints\n   * columns={[4, 6, 6, 6]}    // 4 on mobile, 6 on tablet+\n   */\n  columns: ResponsiveNumber\n  /**\n   * Grid column where each table column starts, as an array with one entry\n   * per table column. Each entry is a {@link ResponsiveNumber}.\n   *\n   * - Outer array length = number of table columns (must match `data[n].length`)\n   * - Inner value = grid column start position, optionally responsive\n   *\n   * @example\n   * // 2 table columns: stacked on mobile, side-by-side on tablet+\n   * // (from soil-protocols-explainer/metric-table)\n   * start={[\n   *   [1, 1, 1, 1],    // table col 0 starts at grid col 1 at all breakpoints\n   *   [1, 3, 3, 3],    // table col 1 starts at grid col 1 on mobile, 3 on tablet+\n   * ]}\n   *\n   * // 5 table columns: stacked on mobile, spread across grid on tablet+\n   * // (from ton-year-explainer/examples-table)\n   * start={[\n   *   [1, 1, 1, 1],    // table col 0 at grid col 1\n   *   [1, 3, 3, 3],    // table col 1 at grid col 1 on mobile, 3 on tablet+\n   *   [2, 4, 4, 4],    // table col 2 at grid col 2 on mobile, 4 on tablet+\n   *   [3, 5, 5, 5],    // ...\n   *   [4, 6, 6, 6],\n   * ]}\n   */\n  start: ResponsiveNumber[]\n  /**\n   * Number of grid columns each table column spans, as an array with one\n   * entry per table column. Each entry is a {@link ResponsiveNumber}.\n   *\n   * - Outer array length = number of table columns (must match `data[n].length`)\n   * - Inner value = grid column span, optionally responsive\n   *\n   * @example\n   * // 2 table columns: full-width on mobile, split on tablet+\n   * // (from soil-protocols-explainer/metric-table)\n   * width={[\n   *   [6, 2, 2, 2],    // table col 0 spans 6 grid cols on mobile, 2 on tablet+\n   *   [6, 4, 4, 4],    // table col 1 spans 6 grid cols on mobile, 4 on tablet+\n   * ]}\n   *\n   * // 5 table columns: label full-width on mobile, all 1-col on tablet+\n   * // (from ton-year-explainer/examples-table)\n   * width={[\n   *   [4, 2, 2, 2],    // table col 0 (label) spans 4 on mobile, 2 on tablet+\n   *   [1, 1, 1, 1],    // table cols 1-4 always span 1 grid col\n   *   [1, 1, 1, 1],\n   *   [1, 1, 1, 1],\n   *   [1, 1, 1, 1],\n   * ]}\n   */\n  width: ResponsiveNumber[]\n  /** Whether to style the first table column as an index with uppercase heading font. @default true */\n  index?: boolean\n  /** Whether to render a border below the last row. @default true */\n  borderBottom?: boolean\n  /** Whether to render a border above the first row. @default true */\n  borderTop?: boolean\n  /** Theme UI style overrides applied to the outer `<table>` element. */\n  sx?: ThemeUIStyleObject\n  /** Theme UI color for the header row text (e.g. `'secondary'`, `'orange'`). */\n  color?: string\n  /** Content rendered in a header row above the data rows. */\n  header?: ReactNode\n}\n\nconst Table = ({\n  data,\n  sx,\n  color,\n  header,\n  columns,\n  start,\n  width,\n  index = true,\n  borderBottom = true,\n  borderTop = true,\n}: TableProps) => {\n  if (!start || !columns || !width) {\n    throw new Error('Must provide columns, start, and width')\n  }\n  return (\n    <Box as='table' sx={{ display: 'block', ...sx }}>\n      <Box as='tbody' sx={{ display: 'block' }}>\n        {header && (\n          <Row\n            as='tr'\n            sx={{\n              ...styles.reset,\n              ...styles.header,\n              ...styles.row,\n              color: color,\n              borderTopWidth: !borderTop ? '0px' : '1px',\n            }}\n          >\n            <Column as='td' start={[1]} width={columns} sx={styles.index}>\n              {header}\n            </Column>\n          </Row>\n        )}\n        {data.map((row, i) => {\n          return (\n            <Row\n              as='tr'\n              columns={columns}\n              key={i}\n              sx={{\n                ...styles.reset,\n                ...styles.row,\n                pb:\n                  borderBottom && i === data.length - 1\n                    ? ['18px', '18px', '18px', '22px']\n                    : [3, 3, 3, '20px'],\n                borderBottomWidth:\n                  borderBottom && i === data.length - 1 ? '1px' : '0px',\n                borderTopWidth:\n                  !borderTop && i === 0 && !header ? '0px' : '1px',\n              }}\n            >\n              {row.map((column, j) => {\n                return (\n                  <Column\n                    as='td'\n                    key={j}\n                    start={start[j]}\n                    width={width[j]}\n                    sx={\n                      j === 0 && index\n                        ? { ...styles.reset, ...styles.index }\n                        : { ...styles.reset, ...styles.entry }\n                    }\n                  >\n                    {column}\n                  </Column>\n                )\n              })}\n            </Row>\n          )\n        })}\n      </Box>\n    </Box>\n  )\n}\n\nexport default Table\n","import React, { ReactNode } from 'react'\nimport { BoxProps } from 'theme-ui'\nimport Caption from './caption'\n\nexport interface TableCaptionProps {\n  as?: BoxProps['as']\n  number?: number\n  children: ReactNode\n}\n\nconst TableCaption = ({\n  as = 'figcaption',\n  number,\n  children,\n}: TableCaptionProps) => {\n  return (\n    <Caption as={as} number={number} label='table'>\n      {children}\n    </Caption>\n  )\n}\n\nTableCaption.displayName = 'TableCaption'\n\nexport default TableCaption\n","import React, { forwardRef } from 'react'\nimport { Box, BoxProps } from 'theme-ui'\nimport { transparentize } from '@theme-ui/color'\nimport getSxColor from './utils/get-sx-color'\n\nexport interface ToggleProps\n  extends Omit<BoxProps, 'value'>,\n    Omit<\n      React.ButtonHTMLAttributes<HTMLButtonElement>,\n      keyof BoxProps | 'value'\n    > {\n  value?: boolean\n}\n\nconst Toggle = (\n  { value, onClick, disabled, sx, ...props }: ToggleProps,\n  ref: React.Ref<HTMLButtonElement>\n) => {\n  const color = getSxColor(sx)\n  const active = disabled ? false : value\n  return (\n    <Box\n      ref={ref}\n      as='button'\n      onClick={onClick}\n      role='checkbox'\n      aria-checked={active}\n      aria-label='Toggle'\n      sx={{\n        border: 'none',\n        background: 'none',\n        cursor: disabled ? 'default' : 'pointer',\n        p: [0],\n        m: [0],\n        display: 'inline-block',\n        ...sx,\n      }}\n      {...props}\n    >\n      <Box\n        sx={{\n          width: '50px',\n          height: '20px',\n          borderRadius: '20px',\n          backgroundColor: active\n            ? transparentize(color, color === 'primary' ? 0.5 : 0.45)\n            : 'muted',\n          position: 'relative',\n          transition: '0.15s',\n          display: 'inline-block',\n        }}\n      >\n        <Box\n          sx={{\n            width: '14px',\n            height: '14px',\n            borderRadius: '7px',\n            position: 'absolute',\n            left: active ? '32px' : '4px',\n            top: '3px',\n            backgroundColor: active ? color : 'secondary',\n            transition: '0.15s',\n          }}\n        ></Box>\n      </Box>\n    </Box>\n  )\n}\n\nexport default forwardRef<HTMLButtonElement, ToggleProps>(Toggle)\n","import React, { ReactNode } from 'react'\nimport { Box, ThemeUIStyleObject } from 'theme-ui'\nimport Row from './row'\nimport Column from './column'\n\nexport interface TrayProps {\n  expanded: boolean\n  sx?: ThemeUIStyleObject\n  children: ReactNode\n}\n\nconst Tray = ({ expanded, sx, children }: TrayProps) => {\n  return (\n    <>\n      <Box\n        sx={{\n          position: 'fixed',\n          top: '56px',\n          bottom: '0px',\n          left: '0px',\n          width: 'calc(100vw)',\n          mt: ['56px'],\n          bg: 'background',\n          zIndex: 1000,\n          transition: 'opacity 0.15s',\n          opacity: expanded ? 0.9 : 0,\n          pointerEvents: expanded ? 'all' : 'none',\n        }}\n      />\n      <Box\n        sx={{\n          position: 'fixed',\n          width: 'calc(100vw)',\n          top: '0px',\n          mt: ['56px'],\n          pb: [6, 7, 7, 8],\n          pt: [5, 6, 7, 8],\n          bg: 'background',\n          zIndex: 1100,\n          borderStyle: 'solid',\n          borderColor: 'muted',\n          borderWidth: '0px',\n          borderBottomWidth: '1px',\n          transition: 'transform 0.15s',\n          ml: [-3, -4, -5, -6],\n          pl: [3, 4, 5, 6],\n          pr: [3, 4, 5, 6],\n          transform: expanded ? 'translateY(0)' : 'translateY(-100%)',\n          ...sx,\n        }}\n      >\n        <Row>\n          <Column start={[1, 1, 1, 1]} width={[6, 8, 10, 10]}>\n            {children}\n          </Column>\n        </Row>\n      </Box>\n    </>\n  )\n}\n\nexport default Tray\n","interface FormatDateOptions {\n  month?: string | boolean\n  day?: string | boolean\n  year?: string | boolean\n  separator?: string\n}\n\nconst defaultOptions = {\n  month: 'short',\n  day: 'numeric',\n  year: 'numeric',\n}\n\nconst formatDateElement = (\n  date: Date,\n  element: 'month' | 'day' | 'year',\n  option: string | boolean | undefined\n) => {\n  if (!option) {\n    return null\n  }\n\n  const format = typeof option === 'string' ? option : defaultOptions[element]\n\n  const result = date.toLocaleString('default', {\n    [element]: format,\n  })\n\n  if (format === 'numeric' && ['day', 'month'].includes(element)) {\n    return result.padStart(2, '0')\n  } else {\n    return result\n  }\n}\nconst formatDate = (\n  date: string,\n  options: FormatDateOptions = defaultOptions\n) => {\n  const d = new Date(date.replace(/-/g, '/'))\n\n  const month = formatDateElement(d, 'month', options.month)\n  const day = formatDateElement(d, 'day', options.day)\n  const year = formatDateElement(d, 'year', options.year)\n\n  return [month, day, year].filter(Boolean).join(options.separator ?? ' ')\n}\n\nexport default formatDate\n","import { useEffect, useState } from 'react'\n\nimport getScrollbarWidth from './get-scrollbar-width'\n\nconst useScrollbarClass = () => {\n  const [className, setClassName] = useState<string | null>(null)\n\n  useEffect(() => {\n    if (document && getScrollbarWidth(document) > 0) {\n      setClassName('custom-scrollbar')\n    }\n  }, [])\n\n  return className\n}\n\nexport default useScrollbarClass\n"],"mappings":"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","names":["sx","React","Box","React","sx","React","React","Box","sx","React","Box","React","Box","sx","React","Box","sizes","React","Box","sx","props","React","Box","sx","sx","React","Box","React","Box","React","forwardRef","Box","React","React","sx","_b","_a","React","Box","forwardRef","React","forwardRef","Box","sx","React","Box","forwardRef","React","Box","React","Box","React","Box","format","sx","init","_a","React","Box","sx","React","Box","React","Box","React","useEffect","useThemeUI","Container","Flex","Box","React","React","useState","useEffect","NextLink","Box","Flex","Link","React","Box","React","Box","React","React","sx","React","React","React","useEffect","NextLink","Link","Arrow","React","React","React","useEffect","useState","Box","Flex","Link","Arrow","React","forwardRef","sx","styles","React","forwardRef","HoverArrow","sx","React","Arrow","useState","useEffect","Flex","Box","Link","useState","useEffect","React","Box","NextLink","Link","Flex","React","useState","useEffect","Box","Flex","Link","NextLink","React","Box","React","Box","useState","useEffect","React","Box","Link","Flex","NextLink","React","IconButton","sx","React","IconButton","React","Box","Text","useState","useEffect","React","Box","Link","useThemeUI","useState","useEffect","React","Text","Box","window","document","React","Box","React","Box","useEffect","document","useEffect","React","useState","useEffect","Box","Container","useState","useEffect","React","Box","Container","sx","React","React","links","fade","React","Box","Container","useThemeUI","useEffect","Flex","React","Box","React","IconButton","sx","React","IconButton","React","Box","sx","React","Box","React","React","React","Box","React","Box","sx","React","Box","sx","React","Box","React","Box","React","Box","React","Box","sx","React","Box","React","Flex","RotatingArrow","sx","React","Flex","RotatingArrow","React","useRef","Box","Arrow","sx","useRef","React","Box","_a","Arrow","React","forwardRef","useThemeUI","sx","useThemeUI","React","forwardRef","React","Box","styles","sx","React","Box","React","React","React","forwardRef","Box","transparentize","sx","React","Box","transparentize","forwardRef","React","Box","sx","React","Box","format","useEffect","useState","useState","useEffect"]}