*,
*::before,
*::after{
  box-sizing:border-box;
}

html{
  -moz-text-size-adjust:none;
  -webkit-text-size-adjust:none;
  text-size-adjust:none;
}

body,
h1,
h2,
h3,
h4,
p,
figure,
blockquote,
dl,
dd{
  margin-block:0;
}

ul[role='list'],
ol[role='list']{
  list-style:none;
}

body{
  min-height:100vh;
  line-height:1.5;
}

h1,
h2,
h3,
h4,
button,
input,
label{
  line-height:1.1;
}

h1,
h2,
h3,
h4{
  text-wrap:balance;
}

a:not([class]){
  text-decoration-skip-ink:auto;
  color:currentColor;
}

img,
picture{
  max-width:100%;
  display:block;
}

input,
button,
textarea,
select{
  font:inherit;
}

textarea:not([rows]){
  min-height:10em;
}

:target{
  scroll-margin-block:5ex;
}

@supports not (font-size-adjust: from-font){
  :is(code, kbd, samp){
    font-size:0.8em;
  }
}

pre:has(code){
  width:max-content;
  max-width:100%;
  overflow-x:auto;
}

pre code{
  border:none;
  background:none;
  padding:0;
}

kbd{
  border:1px solid;
  padding-block-end:0.1em;
}

var{
  font-style:normal;
  font-weight:var(--font-medium);
}

q{
  font-style:italic;
}

@font-face{
	font-family:"Figtree";
	font-style:italic;
	font-weight:300 900;
	font-display:swap;
	src:url(/static/fonts/Figtree-Italic[wght].woff2) format("woff2");
	unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face{
	font-family:"Figtree";
	font-style:normal;
	font-weight:300 900;
	font-display:swap;
	src:url(/static/fonts/Figtree[wght].woff2) format("woff2");
	unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face{
	font-family:"Hepta Slab";
	font-style:normal;
	font-weight:1 900;
	font-display:swap;
	src:url(/static/fonts/HeptaSlab.woff2) format("woff2");
	unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
	--color-surface:rgb(240, 240, 240);
	--color-surface-alt:rgb(250, 250, 250);
	--color-surface-contrast:rgb(29, 33, 44);
	--color-surface-contrast-alt:rgb(0, 0, 0);
	--color-text:rgb(2, 2, 2);
	--color-text-contrast:rgb(255, 255, 255);
	--color-text-secondary:rgb(159, 164, 182);
	--color-primary:rgb(102, 84, 183);
	--color-primary-light:rgb(140, 126, 207);
	--color-primary-dark:rgb(72, 58, 140);
	--color-focus:var(--color-primary);
	--color-error:rgb(230, 36, 22);
	--color-success:rgb(1, 178, 105);
	--shadow-subtle:0 1px 2px rgba(0, 0, 0, 0.05);
	--shadow-default:0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
	--shadow-prominent:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
	--stroke-width:1px;
	--stroke:var(--stroke-width) dashed var(--color-surface-contrast);
	--stroke-solid:var(--stroke-width) solid var(--color-surface-contrast);
	--space-xs:clamp(0.4375rem, 0.42rem + 0.1vw, 0.5rem);
	--space-s:clamp(0.875rem, 0.83rem + 0.2vw, 1rem);
	--space-m:clamp(1.3125rem, 1.25rem + 0.29vw, 1.5rem);
	--space-l:clamp(2.1875rem, 2.09rem + 0.49vw, 2.5rem);
	--space-xl:clamp(3.0625rem, 2.92rem + 0.69vw, 3.5rem);
	--space-2xl:clamp(3.5rem, 3.34rem + 0.78vw, 4rem);
	--space-3xl:clamp(4.375rem, 4.17rem + 0.98vw, 5rem);
	--space-4xl:clamp(6.5625rem, 6.26rem + 1.47vw, 7.5rem);
	--space-xs-l:clamp(0.4375rem, -0.23rem + 3.24vw, 2.5rem);
	--space-m-l:clamp(1.3125rem, 0.93rem + 1.86vw, 2.5rem);
	--space-2xl-4xl:clamp(3.5rem, 2.21rem + 6.27vw, 7.5rem);
	--radius-s:0.2rem;
	--radius-m:0.75rem;
	--radius-l:2.5rem;
	--font-base:Figtree, system-ui, sans-serif;
	--font-header:"Hepta Slab", Rockwell, "Rockwell Nova", "Roboto Slab", "DejaVu Serif", "Sitka Small", serif;
	--font-regular:400;
	--font-medium:500;
	--font-bold:700;
	--font-black:900;
	--size-step-000:clamp(0.740625rem, 0.73rem + 0.06vw, 0.78125rem);
	--size-step-00:clamp(0.833125rem, 0.8rem + 0.16vw, 0.9375rem);
	--size-step-0:clamp(0.9375rem, 0.88rem + 0.29vw, 1.125rem);
	--size-step-1:clamp(1.055rem, 0.96rem + 0.46vw, 1.35rem);
	--size-step-2:clamp(1.18625rem, 1.05rem + 0.68vw, 1.62rem);
	--size-step-3:clamp(1.335rem, 1.14rem + 0.95vw, 1.94375rem);
	--size-step-4:clamp(1.501875rem, 1.23rem + 1.3vw, 2.3325rem);
	--size-step-5:clamp(1.689375rem, 1.33rem + 1.74vw, 2.799375rem);
	--size-step-6:clamp(1.900625rem, 1.43rem + 2.29vw, 3.359375rem);
	--size-step-7:clamp(2.138125rem, 1.53rem + 2.97vw, 4.03125rem);
	--size-step-8:clamp(2.405625rem, 1.62rem + 3.81vw, 4.8375rem);
	--size-step-9:clamp(2.70625rem, 1.7rem + 4.86vw, 5.805rem);
	--size-step-10:clamp(3.03125rem, 1.76rem + 6.17vw, 6.965625rem);
	--size-step-11:clamp(3.78875rem, 1.63rem + 10.45vw, 10.448125rem);
	--size-step-12:clamp(3.78875rem, 0.36rem + 16.61vw, 14.375rem);
	--leading-micro:0.85;
	--leading-flat:1;
	--leading-fine:1.2;
	--leading-standard:1.4;
	--leading-loose:1.7;
	--transition-fast:150ms ease;
	--transition-normal:300ms ease;
	--transition-slow:500ms ease;
	--wrapper-max-width:1360px;
	--gutter:var(--space-m-l);
}

body{
	background:var(--color-surface);
	color:var(--color-text);
	font-size:var(--size-step-1);
	font-family:var(--font-base);
	font-optical-sizing:auto;
	font-weight:var(--font-regular);
	font-style:normal;
	line-height:var(--leading-standard);
	font-size-adjust:from-font;
	margin:0;
}

h1,
h2,
h3,
h4,
h5,
h6{
	font-family:var(--font-header);
}

:is(h1, h2, h3, h4){
	line-height:var(--leading-fine);
	text-wrap:balance;
}

h1{
	font-size:var(--size-step-6);
	max-width:20ch;
}

h2{
	font-size:var(--size-step-5);
	max-width:35ch;
}

h3{
	font-size:var(--size-step-4);
	max-width:35ch;
}

:is(h4, h5, h6){
	font-size:var(--size-step-3);
}

p,
li{
	max-width:70ch;
}

small{
	font-size:var(--size-step-0);
}

ul:not([class]){
	padding-inline-start:1.7ch;
	list-style-type:disc;
}

ul:not([class]) > li{
	padding-inline-start:var(--space-xs);
}

ul ::marker{
	font-size:0.8lh;
}

ol ::marker{
	font-size:1em;
	font-weight:var(--font-bold);
}

[role="list"][class],
[role="tablist"][class]{
	list-style:none;
	margin-block:0;
	padding:0;
}

img{
	height:auto;
	max-width:100%;
	display:block;
}

figcaption{
	padding-block-start:0.5em;
	font-size:var(--size-step-0);
	font-family:monospace;
}

:focus{
	outline:none;
}

:focus-visible{
	outline:2px solid var(--color-focus, currentColor);
	outline-offset:var(--focus-offset, 0.2lh);
}

@supports (-moz-appearance: none){
	:root{
		--focus-offset:0.08em;
	}
}

:target,
[id]{
	scroll-margin-block:5lh;
}

::selection{
	color:var(--color-text-contrast);
	background:var(--color-surface-contrast);
}

svg:not([class]){
	width:auto;
	height:1lh;
}

svg{
	flex-shrink:0;
}

svg[role="img"][width][height]{
	width:revert;
	height:revert;
	background:var(--color-surface);
	padding:var(--space-xs);
}

form{
	max-width:60ch;
}

form > * + *{
	margin-top:var(--flow-space, 1rem);
}

:is(input, select, textarea){
	accent-color:var(--color-primary);
}

:is(input:not([type="checkbox"], [type="radio"], [type="color"]), select, textarea){
	padding:0.5em 0.8em;
	border-radius:var(--radius-s);
	border:var(--stroke-solid);
	background:var(--color-surface);
	color:var(--color-text);
	width:100%;
}

:is(input:not([type="checkbox"],[type="radio"],[type="color"]),select,textarea)::placeholder{
		color:var(--color-text-secondary);
		opacity:1;
	}

label{
	line-height:var(--leading-fine);
	font-weight:var(--font-medium);
}

label::after{
	content:"\A";
	white-space:pre;
}

label:has(input){
	display:flex;
	align-items:baseline;
	gap:var(--space-s);
	font-weight:var(--font-normal);
}

label:has(input) + label:has(input){
	--flow-spce:var(--space-s-m);
}

label:has(input) input{
	transform:translateY(-0.1ex);
}

label:hover{
	cursor:pointer;
}

input:disabled{
	background:var(--color-surface-alt);
}

input:disabled,
label input:disabled + *{
	cursor:not-allowed;
}

fieldset{
	border:var(--stroke);
	padding:var(--space-s);
}

legend{
	font-weight:var(--font-medium);
	padding-inline:var(--space-xs);
}

a:not([class]){
	color:var(--color-primary);
	text-decoration-thickness:0.1ex;
	transition:text-decoration-thickness 0.3s ease;
}

a:not([class]):hover{
	text-underline-offset:0.2lh;
	color:var(--color-primary-dark);
	text-decoration-thickness:0.3ex;
}

:is(h1, h2, h3, h4) a:not([class]){
	text-decoration-thickness:0.1ex;
	text-underline-offset:0.2ex;
}

:is(h1, h2, h3, h4) a:not([class]):hover{
	text-underline-offset:0.3ex;
}

a:not([class]):active{
	filter:brightness(0.9);
}

.text--secondary{
	color:var(--color-text-secondary);
}

[data-animate]{
	opacity:1;
	transform:translateY(0);
}

.js [data-animate]{
	opacity:0;
	transform:translateY(30px);
	transition:opacity 0.6s ease, transform 0.6s ease;
}

@media (prefers-reduced-motion: reduce){
	.js [data-animate]{
		transition:none;
	}
}

.js [data-animate].is-visible{
	opacity:1;
	transform:translateY(0);
}

.about{
}

summary{
}

summary:hover{
	cursor:pointer;
}

.accordion__heading{
	font-size:var(--card-heading-font-size, var(--size-step-1));
	max-width:100%;
}

.accordion__content{
	padding-block:var(--off-screen-menu-panel-padding, var(--space-m));
}

.article{
	--sidebar-content-min-width:65%;
	--sidebar-target-width:25rem;
}

.headline__heading{
	font-size:var(--size-step-8);
}

.button{
	--button-bg:var(--color-primary);
	--button-text:var(--color-text-contrast);
	--button-x-padding:2em;
	--button-y-padding:1.1em;
	--button-gutter:0.5ch;
	--focus-color:var(--color-primary);

	display:inline-flex;
	gap:var(--button-gutter);
	align-items:center;
	line-height:var(--leading-flat);
	position:relative;
	border:none;
	cursor:pointer;
	background:var(--button-bg);
	color:var(--button-text);
	padding:var(--button-y-padding) var(--button-x-padding);
	letter-spacing:var(--uppercase-kerning);
	text-decoration:none;
	font-size:var(--size-step-00);
	font-weight:var(--font-medium);

	border-radius:var(--radius-s);
	transition:background-color 0.3s ease;
}

.button:active{
	transform:scale(99%);
}

.button:hover,
.button:focus{
	background-color:var(--color-primary-dark);
}

.closer{
	background:var(--color-surface-contrast-alt);
	color:var(--color-text-contrast);
	padding-block:clamp(10rem, 50vb, 20rem) var(--gutter);
	font-weight:var(--font-bold);
}

.closer svg[role="img"][width][height]{
	width:100%;
	height:auto;
	background:unset;
	padding:unset;
}

.form-feedback{
	font-weight:var(--font-medium);
	margin-block-start:var(--space-m);
}

.form-feedback--error{
	color:var(--color-error);
}

.form-feedback--success{
	color:var(--color-success);
}

.form--submitting{
	opacity:0.7;
	pointer-events:none;
}

.form--success{
  opacity:0.7;
}

.form--success:hover,
.form--success input,
.form--success textarea,
.form--success button{
  pointer-events:none;
  cursor:not-allowed
}

.prose{
	--flow-space:var(--space-l);
}

.prose :is(h1, h2, h3){
	overflow-wrap:anywhere;
	hyphens:auto;
}

.prose :is(p, li, dl, figcaption, blockquote){
	max-width:60ch;
	text-wrap:pretty;
}

.prose :is(h1, h2, h3, h4) + *:not([class]){
	--flow-space:var(--space-m);
}

.prose :is(figure, table),
.prose :is(figure, table) + *{
	--flow-space:var(--space-2xl);
}

.prose * + :is(h1, h2, h3, h4):not([class]){
	--flow-space:var(--space-xl);
}

.prose :is(ul, ol):not([class]) li + li,
.prose :is(ul, ol):not([class]) li > :is(ol, ul){
	--flow-space:var(--space-xs);
}

.prose :is(ul, ol):not([class]){
	--flow-space:var(--space-m);
}

.prose hr{
	--flow-space:var(--space-2xl);
}

.prose :is(img, picture, video){
	border:var(--stroke-solid);
}

@media screen and (min-width: 768px){
	.prose :is(h1, h2, h3){
		overflow-wrap:unset;
		hyphens:unset;
	}
}

.services{
	background-color:var(--color-surface-contrast);
	color:var(--color-text-contrast);
}

.services .sidebar{
	--sidebar-target-width:40%;
}

@media (min-width: 1000px){
	.services .grid .service:nth-child(even){
		margin-block-start:var(--space-2xl-4xl);
		margin-block-start:var(--space-2xl);
	}
}

.site-footer{

	background:var(--color-surface-contrast-alt);
	color:var(--color-text-contrast);
}

.site-footer > *{
	font-size:var(--size-step-00);
}

.site-header{
	padding-block:var(--space-s);
	box-shadow:var(--shadow-prominent);
	position:relative;
	z-index:1;
	background-color:var(--color-surface-alt);
}

.brand{
	display:block;
}

.brand__image{
	height:auto;
	width:100%;
}

@media (min-width: 40em){
	.brand__image{
		max-width:calc(10rem + var(--gutter) * 2);
	}
}

.primary-nav ul li{
	--gutter:var(--space-2xs) var(--space-s-m);
	margin:0;
}

.primary-nav ul li a{
	color:inherit;
	text-decoration:none;
	transition:all 0.3s ease;
}

.primary-nav ul li a:hover,
.primary-nav ul li a:focus{
	text-decoration:underline;
	color:var(--color-primary-dark);
	text-decoration-thickness:0.3ex;
}

.cluster{
	display:flex;
	flex-wrap:wrap;
	gap:var(--gutter, var(--space-m));
	justify-content:var(--cluster-horizontal-alignment, flex-start);
	align-items:var(--cluster-vertical-alignment, center);
	flex-direction:var(--cluster-direction, row);
}

.flow > * + *{
  margin-block-start:var(--flow-space, 1em);
}

.grid{
  display:grid;
  grid-template-columns:repeat(
    var(--grid-placement, auto-fill),
    minmax(var(--grid-min-item-size, 16rem), 1fr)
  );
  gap:var(--gutter, var(--space-l));
}

.grid[data-layout='50-50']{
  --grid-placement:auto-fit;
  --grid-min-item-size:clamp(16rem, 50vw, 33rem);
}

.grid[data-layout='thirds']{
  --grid-placement:auto-fit;
  --grid-min-item-size:clamp(16rem, 33%, 20rem);
}

.repel{
	display:flex;
	flex-wrap:wrap;
	justify-content:space-between;
	align-items:var(--repel-vertical-alignment, center);
	gap:var(--gutter, var(--space-m));
}

.repel[data-nowrap]{
	flex-wrap:nowrap;
}

.sidebar{
  display:flex;
  flex-wrap:wrap;
  gap:var(--gutter, var(--space-s-l));
}

.sidebar:not([data-direction]) > :first-child{
  flex-basis:var(--sidebar-target-width, 20rem);
  flex-grow:1;
}

.sidebar:not([data-direction]) > :last-child{
  flex-basis:0;
  flex-grow:999;
  min-width:var(--sidebar-content-min-width, 50%);
}

.sidebar[data-reversed]{
  flex-direction:row-reverse;
}

.sidebar[data-direction='rtl'] > :last-child{
  flex-basis:var(--sidebar-target-width, 20rem);
  flex-grow:1;
}

.sidebar[data-direction='rtl'] > :first-child{
  flex-basis:0;
  flex-grow:999;
  min-width:var(--sidebar-content-min-width, 50%);
}

.wrapper{
	margin-inline:auto;
	max-width:var(--wrapper-max-width, 1360px);
	padding-left:var(--gutter);
	padding-right:var(--gutter);
	position:relative;
}

.wrapper[data-wrapper-type="inner"]{
	min-width:100%;
	padding-block:var(--gutter-wrapper-inner-block, var(--gutter));
	padding-inline:var(--gutter-wrapper-inner-inline, var(--gutter));
}

.region{
  padding-block:var(--region-space, var(--space-l));
  position:relative;
}

.visually-hidden{
	border:0;
	clip:rect(0 0 0 0);
	height:0;
	margin:0;
	overflow:hidden;
	padding:0;
	position:absolute;
	width:1px;
	white-space:nowrap;
}
