@keyframes DataFlowDiagram_pulse__nqLr6{0%{stroke-dashoffset:0}to{stroke-dashoffset:200px}}@media (max-width:630px){.DataFlowDiagram_container__K22eB{transform:scale(.66);transform-origin:top center;height:35.3rem}}@media (max-width:440px){.DataFlowDiagram_container__K22eB{transform:scale(.55);transform-origin:top center;height:29.5rem}}@media (max-width:380px){.DataFlowDiagram_container__K22eB{transform:scale(.5);transform-origin:top center;height:26.8rem}}@media (max-width:340px){.DataFlowDiagram_container__K22eB{transform:scale(.45);transform-origin:top center;height:24.2rem}}@media (max-width:300px){.DataFlowDiagram_container__K22eB{transform:scale(.38);transform-origin:top center;height:21rem}}.DataFlowDiagram_diagram-label__rYTFs{background:#fff!important}:root{--reach-dialog:1}[data-reach-dialog-overlay]{background:rgba(0,0,0,.33);position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}[data-reach-dialog-content]{width:50vw;margin:10vh auto;background:#fff;padding:2rem;outline:none}.project_blog__yQgtT{font-size:1.16em}.project_heading__RACmf:after{content:"";position:absolute;height:6px;left:0;right:0;bottom:0;background:linear-gradient(90deg,#fff 50%,#f9a8d4,#6366f1)}.project_heading-description__eD8e9 a{-webkit-text-decoration:underline;text-decoration:underline}.project_content__MmqPb{padding-left:2rem;padding-right:2rem}.project_content__MmqPb>aside{--tw-text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--tw-text-opacity));position:relative;margin:2em 0;display:block;font-weight:300;line-height:1.6em}.project_content__MmqPb>aside:before{margin-bottom:2rem;height:.5rem;width:12rem;max-width:100%;content:"";display:block;background:linear-gradient(270deg,#fff 50%,#f9a8d4,#6366f1)}.project_content__MmqPb h2{font-size:4rem;font-weight:700;padding-top:1.6em;line-height:1.1em;margin-bottom:.42em}@media (max-width:650px){.project_content__MmqPb h2{font-size:2.7rem}}.project_content__MmqPb h3{font-size:2.4rem;font-weight:medium;padding-top:1.6em;margin-bottom:.3em}@media (max-width:650px){.project_content__MmqPb h3{font-size:2rem}}.project_content__MmqPb h4{font-size:1.4rem;font-weight:medium;padding-top:1.6em;line-height:1.1em;margin-bottom:.42em}@media (max-width:650px){.project_content__MmqPb h4{font-size:1.6rem}}.project_content__MmqPb ul{padding-left:1.5em}.project_content__MmqPb ol{padding-left:1.5em;list-style:decimal}.project_content__MmqPb li{line-height:1.7em;margin-top:.3rem;margin-bottom:.7rem;padding-left:.5em}.project_content__MmqPb li::marker{--tw-text-opacity:1;color:#818cf8;color:rgba(129,140,248,var(--tw-text-opacity));font-weight:300;font-size:.9em}.project_content__MmqPb ul li::marker{content:"•"}.project_content__MmqPb [role=listitem] a,.project_content__MmqPb aside a,.project_content__MmqPb li a,.project_content__MmqPb p a,.project_content__MmqPb table a,.project_fancy-link__6VWOV{color:#6366f1;padding:.2em;--tw-bg-opacity:1;background-color:#f3f4f6;background-color:rgba(243,244,246,var(--tw-bg-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.project_content__MmqPb [role=listitem] a:hover,.project_content__MmqPb aside a:hover,.project_content__MmqPb li a:hover,.project_content__MmqPb p a:hover,.project_fancy-link__6VWOV:hover{--tw-bg-opacity:1;background-color:#e0e7ff;background-color:rgba(224,231,255,var(--tw-bg-opacity))}.project_content__MmqPb .bg-indigo-50 a{background-color:hsla(0,0%,100%,.8);background-color:rgba(255,255,255,var(--tw-bg-opacity));--tw-bg-opacity:0.8}.project_content__MmqPb code:not([class*=language-]){background:#f4f4f4;font-size:.86em;padding:.3em .5em}.project_content__MmqPb p{margin-top:.8em;margin-bottom:.8em;line-height:1.7em}.project_content__MmqPb p+p{margin-top:1.3em}.project_content__MmqPb a{word-wrap:break-word}@media (min-width:1280px){.project_content__MmqPb{padding-left:0;padding-right:0;display:grid;grid-template-columns:auto 3fr 1fr minmax(20em,50em) 1fr 3fr auto;grid-column-gap:1rem;width:100%}.project_content__MmqPb .icon-link{position:relative}.project_content__MmqPb .icon-link:before{--tw-text-opacity:1;color:#a5b4fc;color:rgba(165,180,252,var(--tw-text-opacity));content:"#";position:absolute;left:-1em;font-style:italic;opacity:0}.project_content__MmqPb a:focus .icon-link:before,.project_content__MmqPb h2:hover .icon-link:before,.project_content__MmqPb h3:hover .icon-link:before,.project_content__MmqPb h4:hover .icon-link:before{opacity:1}.project_content__MmqPb>*{grid-column:4}.project_content__MmqPb>.wide{grid-column:3/6}.project_content__MmqPb>.full{grid-column:2/7}.project_content__MmqPb>.full-no-margin{grid-column:1/8}.project_content__MmqPb>aside{grid-column:5/7;margin:1.4em 2em 2em;text-align:right;padding-right:1rem;font-size:.76em;letter-spacing:.01em;orphans:2}.project_content__MmqPb>aside:before{margin-left:auto;margin-bottom:1rem;background:linear-gradient(90deg,#fff 50%,#f9a8d4,#6366f1)}.project_content__MmqPb>aside b{color:rgba(36,41,46,var(--tw-text-opacity));font-weight:500}}@media (max-width:1280px){.project_content__MmqPb>.full-no-margin{margin-left:-2rem;width:calc(100% + 4rem)}}@media (max-width:768px){.project_content__MmqPb>.mobile-full{margin-left:-2rem;width:calc(100% + 4rem)}}.project_scrolly-card__SrQmu{border-width:6px;border-style:solid}.project_blog__yQgtT video::-webkit-media-controls-panel{background:none!important;filter:brightness(.4)}.project_blog__yQgtT video::-webkit-media-controls{background:none!important}@media (min-width:1024px){.project_active-card__2jR6A{border-image-slice:1;border-image-source:linear-gradient(270deg,#fff 50%,#f9a8d4,#6366f1)}}.project_blog__yQgtT blockquote{font-size:1.5rem;line-height:2rem;font-weight:300;--tw-text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--tw-text-opacity))}.project_blog__yQgtT blockquote:before{position:relative;display:block;height:.25rem;width:100%;content:"";background:linear-gradient(270deg,#fff 50%,#f9a8d4,#6366f1)}.project_blog__yQgtT blockquote:after{position:relative;display:block;height:.25rem;width:100%;content:"";background:linear-gradient(90deg,#fff 50%,#f9a8d4,#6366f1)}.project_blog__yQgtT pre[class*=language]{grid-column-start:3;grid-column-end:6}.project_content__MmqPb table{width:100%}.project_content__MmqPb tbody>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - 0));border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * 0);border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.project_content__MmqPb table th,.project_content__MmqPb tbody td{padding-top:.5rem;padding-bottom:.5rem}.project_content__MmqPb table th{font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em}.project_project-meta__bzFlW{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:2rem;gap:2rem}.project_project-meta__bzFlW dt{font-size:.75rem;line-height:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;opacity:1}@keyframes project_sparkle-animation__RGNOZ{0%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.5)}}.project_content__MmqPb .sparkle-animation{opacity:0;animation:project_sparkle-animation__RGNOZ .8s ease-in-out;animation-fill-mode:forwards}.ProjectLinkLargePill_pill__qQgVV{background-position:0 3rem;background-size:100% 100%;background-repeat:repeat-x}.ProjectLinkLargePill_pill__qQgVV:hover{background-position:0 0}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}