﻿:root{--color-black: #000000;--color-white: #ffffff;--color-fog: #eeeeee;--color-parchment: #f5edeb;--color-mustard: #e5c299;--color-navy: #16323f;--color-walnut: #473a3a;--color-crimson: #803847;--color-lilac: #cabdc8;--color-lime: #c5e0af;--color-lemon: #efe2b2;--color-ale: #cd8f7a;--color-flamingo: #d2697c;--color-seaside: #b0d6cb;--color-seaside-rgb: 176, 214, 203;--color-cove: #83c0b9;--color-storm: #627088;--color-sage: #91b99a;--font-size-intro-heading: calc(var(--font-size-heading-h1) * 1.25);--font-size-intro-body: 22px;--font-size-link: 24px;--font-size-heading-h1: 48px;--font-size-heading-h2: 42px;--font-size-subheading: 24px;--font-size-body: 18px;--font-size-article-h2: 30px;--font-size-article-h3: 24px;--font-size-article-h4: 18px;--max-width: 1600px;--max-width-plus-padding: calc(var(--max-width) + 40px * 2);--variable-px: Min(1px, 0.15vw);--page-edge-padding: 40px;--border-thickness: 2px}@media screen and (max-width: 760px){:root{--font-size-intro-heading: 40px;--font-size-intro-body: 18px;--font-size-link: 20px;--font-size-heading-h1: 38px;--font-size-heading-h2: 36px;--font-size-body: 16px;--page-edge-padding: 28px;--border-thickness: 1px}}@media screen and (max-width: 500px){:root{--font-size-intro-heading: 32px;--font-size-intro-body: 16px;--font-size-link: 16px;--font-size-heading-h1: 34px;--font-size-heading-h2: 32px;--font-size-body: 16px;--page-edge-padding: 20px}}@media screen and (max-width: 400px){:root{--font-size-intro-heading: 24px;--font-size-intro-body: 14px;--font-size-link: 14px;--font-size-heading-h1: 28px;--font-size-heading-h2: 26px;--font-size-body: 16px;--page-edge-padding: 12px}}html,body{width:100%;height:100%;margin:0;background:var(--color-white);font-family:"Inter",sans-serif;line-height:1.5;font-weight:500;font-size:var(--font-size-body);color:var(--color-navy);tab-size:4}*{min-width:0;min-height:0}a{color:var(--color-crimson)}h1.box-header{font-family:"Inter",sans-serif;line-height:1.5;font-size:var(--font-size-link);font-weight:800;text-transform:uppercase}h1.box-header span{white-space:pre}h1.box-header~hr{margin-top:20px}h1.box-header+hr+*{margin-top:40px}h1{font-family:"Bona Nova",Palatino,serif;font-feature-settings:"lnum";line-height:1.25;font-weight:700;font-size:var(--font-size-heading-h1)}h2{font-family:"EB Garamond",Garamond,serif;font-feature-settings:"lnum";line-height:1.2;font-weight:500;font-size:var(--font-size-heading-h2)}h3{font-size:var(--font-size-subheading)}h1,h2,h3,h4,h5,h6{margin:0;display:inline-block}p{margin:0;-webkit-hyphens:auto;hyphens:auto;text-align:justify}p~img,p~iframe{width:100%;height:auto}p~p{margin-top:1.5em}h1~p,h1~ol li p,h1~img,h2~p,h2~ol li p,h2~img,h3~p,h3~ol li p,h3~img,h4~p,h4~ol li p,h4~img{margin-top:20px}h1~.informational-group,p~h1,p~h2,p~h3,p~h4,p~details summary,p~blockquote,p~.informational-group,p~.image-comparison,p+.link,p+section,p+table,p~.video-background,p~.video-embed,.video-embed+p,.video-embed+.link,.video-embed+.button,img+.link{margin-top:20px}h1~h2{margin-top:40px}h1~hr{margin-top:40px;margin-bottom:20px}ol+p{margin-top:0}li{margin-top:.5em}table{margin:-20px}table th,table td{margin:0;padding:0}table td{vertical-align:top;border:20px solid rgba(0,0,0,0)}code{background:var(--color-fog);color:var(--color-black);padding:0 4px;overflow-wrap:anywhere;-webkit-hyphens:none;hyphens:none}pre{display:flex;max-width:100%;color:var(--color-fog);transform:translate(0)}pre,pre.z-code{background:var(--color-navy)}pre .z-path,pre.z-code .z-path{color:#679f70}pre .z-path span,pre.z-code .z-path span{color:#e6e1dc}pre code{background:initial;color:inherit;display:block;overflow-x:auto;padding:20px;width:0;flex:1 1 auto}pre[data-lang]{padding-top:28px}pre[data-lang]::before{content:attr(data-lang);color:rgba(var(--color-seaside-rgb), .5);text-transform:lowercase;font-family:"Inter",sans-serif;font-size:.75em;font-weight:bold;font-style:italic;user-select:none;pointer-events:none;position:fixed;top:0;line-height:28px;display:block;width:100%;text-indent:20px;background:rgba(0,0,0,.25)}pre[data-lang]::before[data-lang=sh]{content:"Shell"}pre[data-lang]::before[data-lang=rs]{content:"Rust"}pre[data-lang]::before[data-lang=js]{content:"JavaScript"}pre[data-lang]::before[data-lang=ts]{content:"TypeScript"}pre[data-linenos] table{border-spacing:0;margin:-20px}pre[data-linenos] table tr:first-child td{padding-top:20px}pre[data-linenos] table tr:last-child td{padding-bottom:20px}pre[data-linenos] table tr td:first-child{padding-left:20px;padding-right:10px;user-select:none;vertical-align:top;text-align:right;background:rgba(0,0,0,.25)}pre[data-linenos] table tr td:last-child{padding-left:10px;padding-right:20px}.atlas{object-fit:cover;object-position:calc(-48px*var(--atlas-index)) 0;width:48px;height:48px}kbd{background:var(--color-fog);border-radius:calc(var(--variable-px)*2);outline:calc(var(--border-thickness)/2) solid var(--color-navy);padding:0 8px;margin:0 4px;color:inherit;font-family:inherit}summary{cursor:pointer}.reading-material.reading-material.reading-material{max-width:800px}.reading-material.reading-material.reading-material hr{margin-top:40px;margin-bottom:40px}.reading-material.reading-material.reading-material article{margin-top:20px}.reading-material.reading-material.reading-material article h1,.reading-material.reading-material.reading-material article h2,.reading-material.reading-material.reading-material article h3,.reading-material.reading-material.reading-material article h4{font-family:"Inter",sans-serif;line-height:1.5;font-weight:800}.reading-material.reading-material.reading-material article h2{font-size:var(--font-size-article-h2);margin-top:80px}.reading-material.reading-material.reading-material article h3{font-size:var(--font-size-article-h3);margin-top:40px}.reading-material.reading-material.reading-material article h4{font-size:var(--font-size-article-h4);margin-top:20px}.reading-material.reading-material.reading-material article h1,.reading-material.reading-material.reading-material article h2,.reading-material.reading-material.reading-material article h3,.reading-material.reading-material.reading-material article h4,.reading-material.reading-material.reading-material article h5,.reading-material.reading-material.reading-material article h6{display:block}.reading-material.reading-material.reading-material article h1:first-child,.reading-material.reading-material.reading-material article h2:first-child,.reading-material.reading-material.reading-material article h3:first-child,.reading-material.reading-material.reading-material article h4:first-child,.reading-material.reading-material.reading-material article h5:first-child,.reading-material.reading-material.reading-material article h6:first-child{margin-top:0}.video-embed{position:relative;width:100%}.video-embed.aspect-16x9{padding-top:56.25%}.video-embed img,.video-embed iframe{position:absolute;width:100%;height:100%;top:0;left:0}.video-embed img{cursor:pointer}.video-background{position:relative;font-size:0}.video-background video{max-width:min(100%,1280px)}.video-background::after{content:"";position:absolute;inset:0;border:2px solid #fff;pointer-events:none}.image-comparison{position:relative;touch-action:pan-y pinch-zoom;max-width:min(100%,512px)}.image-comparison .crop-container{height:100%}.image-comparison .crop-container:nth-child(2){overflow:hidden;width:calc(100% - var(--comparison-percent))}.image-comparison .crop-container:nth-child(2),.image-comparison .crop-container:nth-child(2) img{position:absolute;top:0;right:0}.image-comparison .crop-container.crop-container.crop-container img{display:block;width:auto;height:100%}.image-comparison .crop-container.crop-container.crop-container:first-child img{width:100%}.image-comparison .slide-bar{position:absolute;background:var(--color-navy);margin-left:-2px;width:4px;height:100%;top:0;left:var(--comparison-percent);box-shadow:0 0 2px rgba(255,255,255,.5)}.image-comparison .slide-bar .arrows{position:absolute;top:calc(50% - 20px);left:2px;width:0;height:0;opacity:1;transition:opacity .25s}.image-comparison .slide-bar .arrows svg{position:absolute;width:6.5px;height:11px;top:-5.5px;fill:var(--color-white)}@keyframes pulse-left{from{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes pulse-right{from{transform:scaleX(-1) translateX(3px)}to{transform:scaleX(-1) translateX(-3px)}}@keyframes pulse-opacity{0%{opacity:0}40%{opacity:1}90%{opacity:1}100%{opacity:0}}.image-comparison .slide-bar .arrows svg:nth-of-type(1){right:6px;animation:3s infinite ease-out pulse-left,3s infinite ease-out pulse-opacity}.image-comparison .slide-bar .arrows svg:nth-of-type(2){left:6px;animation:3s infinite ease-out pulse-right,3s infinite ease-out pulse-opacity}.image-comparison .slide-bar .arrows div{content:"";position:absolute;background:var(--color-navy);top:0;left:0;width:32px;height:32px;transform:translate(-50%, -50%) rotate(45deg);box-shadow:0 0 2px rgba(255,255,255,.5)}.image-comparison .slide-bar .arrows::after{content:"";position:absolute;background:var(--color-navy);left:-2px;top:-24px;width:4px;height:48px}.image-comparison:hover .slide-bar .arrows{opacity:0}.carousel{margin-top:calc(80*var(--variable-px));transform:translate(0)}.carousel .carousel-slide{display:flex;white-space:nowrap;touch-action:pan-y pinch-zoom;cursor:grab}.carousel .carousel-slide img{position:relative;display:inline-block;flex:0 0 auto;padding:0 20px}.carousel .carousel-slide img:first-child{margin-left:-20px}.carousel .carousel-slide img:last-child{margin-right:-20px}.carousel:not(.dragging) .carousel-slide img{transition:transform 500ms}.carousel .carousel-slide:not(.torn){overflow:hidden}.carousel .carousel-slide.torn{position:fixed;top:0;z-index:-1;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.carousel .carousel-slide.torn.left{padding-left:80px;margin-left:-80px;-webkit-mask-image:url("https://static.graphite.rs/textures/torn-edge-left.png");mask-image:url("https://static.graphite.rs/textures/torn-edge-left.png");-webkit-mask-position:top left;mask-position:top left}.carousel .carousel-slide.torn.right{padding-right:120px;margin-right:-120px;-webkit-mask-image:url("https://static.graphite.rs/textures/torn-edge-right.png");mask-image:url("https://static.graphite.rs/textures/torn-edge-right.png");-webkit-mask-position:top right;mask-position:top right}.carousel .screenshot-details{display:flex;margin:20px 0;gap:20px 40px}@media screen and (max-width: 800px){.carousel .screenshot-details{flex-wrap:wrap;justify-content:center}}.carousel .screenshot-details .carousel-controls{display:flex;align-items:center;flex:0 0 auto}.carousel .screenshot-details .carousel-controls button{outline:none;background:none;border:none;padding:0;color:inherit;cursor:pointer}.carousel .screenshot-details .carousel-controls button svg{display:block}.carousel .screenshot-details .carousel-controls button+button{margin-left:20px}.carousel .screenshot-details .carousel-controls .direction{fill:currentColor}.carousel .screenshot-details .carousel-controls .dot{width:16px;height:16px;box-sizing:border-box;border-radius:50%;border:var(--border-thickness) solid currentColor}.carousel .screenshot-details .carousel-controls .dot.active{border:none;background:var(--color-crimson)}.carousel .screenshot-details .screenshot-description{display:flex;align-items:center;min-height:3em}.carousel .screenshot-details .screenshot-description p+p{margin:0}.carousel .screenshot-details .screenshot-description p:not(.active){display:none}.carousel.center .screenshot-details{justify-content:center}.carousel.window-size-1 .carousel-slide img{width:100%}.carousel.window-size-2 .carousel-slide img{width:calc(50% - 10px);padding:0 10px}.carousel.window-size-2 .carousel-slide img:first-child{margin-left:-10px}.carousel.window-size-2 .carousel-slide img:last-child{margin-right:-10px}.carousel.window-size-3 .carousel-slide img{width:calc(33.3333333333% - 13.3333333333px);padding:0 10px}.carousel.window-size-3 .carousel-slide img:first-child{margin-left:-10px}.carousel.window-size-3 .carousel-slide img:last-child{margin-right:-10px}@media screen and (max-width: 1000px){.carousel{margin-left:calc(-1*var(--page-edge-padding));margin-right:calc(-1*var(--page-edge-padding))}.carousel .screenshot-details{margin-left:var(--page-edge-padding);margin-right:var(--page-edge-padding)}.carousel hr{width:calc(100% - (32px + var(--page-edge-padding))*2);margin-left:auto;margin-right:auto}}@media screen and (max-width: 1600px){.carousel .carousel-slide.torn{display:none}}.link{display:inline-block;font-size:var(--font-size-link);font-weight:800;text-decoration:none;color:var(--color-crimson);white-space:nowrap}.link:not(.not-uppercase){text-transform:uppercase}.button.button.button.button{color:var(--color-crimson);display:inline-block;border:var(--border-thickness) solid currentColor;height:calc(var(--font-size-link)*2);line-height:calc(var(--font-size-link)*2 - 2*var(--border-thickness));font-size:var(--font-size-link);padding:0 var(--font-size-link);box-sizing:border-box;text-decoration:none;font-weight:800;white-space:nowrap}.button.button.button.button img{height:calc(var(--font-size-link)*1.5);margin-right:calc(var(--font-size-link)/2)}.button.button.button.button img,.button.button.button.button span{vertical-align:middle}.arrow::after{content:" »";font-family:"Inter",sans-serif}hr{overflow:visible}hr,.ripple{width:calc(100% - 64px);height:var(--border-thickness);margin:0 32px;background:currentColor;position:relative;border:none}hr::before,.ripple::before{left:-40px;border-width:0 0 var(--border-thickness) 40px}hr::after,.ripple::after{right:-40px;border-width:0 40px var(--border-thickness) 0}hr::before,hr::after,.ripple::before,.ripple::after{content:"";display:block;width:0;height:0;position:absolute;border-color:rgba(0,0,0,0) rgba(0,0,0,0) currentColor rgba(0,0,0,0);border-style:solid}.graphic{max-width:200px;flex:1 1 100%;display:flex}.graphic img{display:block;width:100%;object-fit:contain}@media screen and (max-width: 800px){.graphic img{width:auto;height:120px}}.section{display:flex;flex-direction:column;align-items:flex-start;width:100%}.section.centered{align-items:center}.info-box{margin-top:calc(40*var(--variable-px));padding:calc(80*var(--variable-px));background-image:url("https://static.graphite.rs/textures/noise.png");background-blend-mode:overlay;background-position:center}.feature-box{padding:calc(80*var(--variable-px));background-image:url("https://static.graphite.rs/textures/noise.png");background-blend-mode:overlay;background-position:center}.feature-box.feature-box.feature-box{max-width:unset}@media screen and (max-width: 1000px){.feature-box.feature-box.feature-box{margin-left:calc(-1*var(--page-edge-padding));margin-right:calc(-1*var(--page-edge-padding))}}.feature-box .box{max-width:var(--max-width);margin:0 auto}.feature-box .box .section h2+.graphic{margin-top:20px}.feature-box .box .section h2+.graphic img{margin:auto}.diptych,.triptych{display:flex;flex-wrap:wrap;gap:calc(80*var(--variable-px))}.diptych .section,.triptych .section{flex:1 1 0}.diptych.diptych .section,.triptych.diptych .section{min-width:320px}.diptych.triptych .section,.triptych.triptych .section{min-width:280px}@media screen and (max-width: 600px){.diptych.diptych .section,.diptych.triptych .section,.triptych.diptych .section,.triptych.triptych .section{min-width:100%}}.diptych img[alt=""],.triptych img[alt=""]{display:block}.diptych img[alt=""]::after,.triptych img[alt=""]::after{content:"";display:block;width:100%;height:240px;background:var(--color-crimson)}.informational-group{display:flex;flex-wrap:wrap;width:100%;margin-bottom:20px}.informational-group.features{gap:16px}.informational-group.features .informational{padding:16px;gap:16px;background:rgba(0,0,0,.0625);flex:1 0 calc(50% - 32px - 8px)}@media screen and (max-width: 1100px){.informational-group.features .informational{flex:1 0 calc(100% - 32px)}}.informational-group.features.four-wide .informational{flex:1 0 calc(25% - 64px - 4px)}@media screen and (max-width: 1100px){.informational-group.features.four-wide .informational{flex:1 0 calc(50% - 32px - 8px)}}@media screen and (max-width: 840px){.informational-group.features.four-wide .informational{flex:1 0 calc(100% - 32px)}}.informational-group.concepts{justify-content:space-between;margin:0 -10px;width:calc(100% + 20px)}.informational-group.concepts .informational{flex-direction:column;flex:0 1 auto;margin:0 10px}@media screen and (max-width: 1100px){.informational-group.concepts .informational{width:calc(33.3333333333% - 40px)}}@media screen and (max-width: 400px){.informational-group.concepts .informational{width:calc(50% - 20px)}}.informational-group.concepts .informational img{width:72px;height:72px;object-position:calc(-72px*var(--atlas-index)) 0;margin-bottom:8px}.informational-group.concepts .informational span{text-align:center}.informational-group .informational{display:flex;align-items:center}.informational-group .informational img{flex:0 0 auto}blockquote{padding:32px 80px;background:rgba(0,0,0,.0625);position:relative;border-left:4px solid var(--color-navy)}blockquote::before,blockquote::after{content:"“";font-family:"EB Garamond",Garamond,serif;font-weight:500;font-size:8em;line-height:1;position:absolute;opacity:.25}blockquote::before{top:-8px;left:8px}blockquote::after{transform:rotate(180deg);bottom:-8px;right:8px}body>.page{box-sizing:border-box;min-width:320px}body>.page header{padding:0 var(--page-edge-padding);color:var(--color-walnut);position:relative;z-index:1000}body>.page header nav{margin:auto;max-width:var(--max-width)}body>.page header nav .row{display:flex;justify-content:space-between;--nav-padding-above-below: 30px;padding-top:var(--nav-padding-above-below);padding-bottom:calc(var(--nav-padding-above-below) - 16px);margin-bottom:calc(var(--nav-padding-above-below) - 16px);background:#fff}@media screen and (max-width: 760px){body>.page header nav .row{--nav-padding-above-below: 24px}}body>.page header nav .row .left,body>.page header nav .row .right{z-index:1;display:flex;align-items:center;gap:40px}body>.page header nav .row .left a,body>.page header nav .row .right a{color:inherit;font-family:"Bona Nova",Palatino,serif;font-feature-settings:"lnum";line-height:1.25;font-weight:700;text-decoration:none;--height: 60px;--button-padding: 24px;--nav-font-size: 28px;font-size:var(--nav-font-size)}body>.page header nav .row .left a.button.button,body>.page header nav .row .right a.button.button{height:var(--height);padding-left:var(--button-padding);padding-right:var(--button-padding);line-height:calc(var(--height) - 2*var(--border-thickness));font-size:var(--nav-font-size)}body>.page header nav .row .left a img,body>.page header nav .row .right a img{display:block;width:var(--height);height:var(--height)}body>.page header nav .row .left.left img,body>.page header nav .row .right.left img{font-size:0}@media screen and (max-width: 1200px){body>.page header nav .row .left,body>.page header nav .row .right{gap:30px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 50px;--button-padding: 16px;--nav-font-size: 24px}}@media screen and (max-width: 960px){body>.page header nav .row .left,body>.page header nav .row .right{gap:30px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 50px;--button-padding: 16px;--nav-font-size: 20px}}@media screen and (max-width: 880px){body>.page header nav .row .left,body>.page header nav .row .right{gap:20px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 40px;--button-padding: 12px;--nav-font-size: 16px}}@media screen and (max-width: 680px){body>.page header nav .row .left,body>.page header nav .row .right{gap:16px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 30px;--button-padding: 8px;--nav-font-size: 14px}}@media screen and (max-width: 600px){body>.page header nav .row .left,body>.page header nav .row .right{gap:12px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 24px;--button-padding: 8px;--nav-font-size: 13px}}@media screen and (max-width: 540px){body>.page header nav .row .left,body>.page header nav .row .right{gap:10px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 22px;--button-padding: 6px;--nav-font-size: 12px}}@media screen and (max-width: 480px){body>.page header nav .row .left,body>.page header nav .row .right{gap:8px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 20px;--button-padding: 4px;--nav-font-size: 11px}}@media screen and (max-width: 430px){body>.page header nav .row .left,body>.page header nav .row .right{gap:6px}body>.page header nav .row .left a,body>.page header nav .row .right a{--height: 20px;--button-padding: 4px;--nav-font-size: 10px}}body>.page header .ripple{display:block;background:none;fill:#fff;stroke:currentColor;--ripple-height: 16px;height:var(--ripple-height);margin-top:calc(-1*var(--ripple-height) + var(--border-thickness));margin-bottom:calc(-1*var(--border-thickness));stroke-width:var(--border-thickness)}body>.page header .ripple::before,body>.page header .ripple::after{content:none}body>.page header hr{background:none}@media screen and (max-width: 1824px){body>.page header .ripple{width:calc(100% + var(--page-edge-padding)*2);margin-left:calc(-1*var(--page-edge-padding));margin-right:calc(-1*var(--page-edge-padding))}body>.page header hr{display:none}}body>.page main{padding:0 var(--page-edge-padding)}body>.page main .content{padding:calc(120*var(--variable-px)) 0}body>.page main .content section{max-width:var(--max-width);margin-left:auto;margin-right:auto;position:relative;z-index:1}body>.page main .content section~section{margin-top:calc(120*var(--variable-px))}body>.page main .content section p img{max-width:100%}body>.page main .content section pre{box-sizing:border-box;overflow:auto}body>.page main .content section details{width:100%}body>.page footer{display:flex;flex-direction:column;align-items:center;gap:40px;padding:40px;padding-top:0;color:var(--color-walnut)}body>.page footer nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 40px}body>.page footer nav a{color:var(--color-walnut)}@media screen and (max-width: 900px){body>.page footer nav{max-width:500px}}@media screen and (max-width: 760px){body>.page footer nav{max-width:440px}}@media screen and (max-width: 400px){body>.page footer nav{gap:6px 20px}}body>.page footer span{text-align:center}.fundraising{margin-top:20px;width:100%}.fundraising .fundraising-bar{width:100%;height:32px;border-radius:10000px;background:var(--color-fog);overflow:hidden}.fundraising .fundraising-bar .fundraising-bar-progress{width:calc(var(--fundraising-percent) - 8px - 24px);padding-left:24px;height:calc(100% - 8px);margin:4px;border-radius:10000px;background:linear-gradient(to right, var(--color-navy), var(--color-crimson));transition:opacity 1s,width 2s}.fundraising .goal-metrics{display:flex;justify-content:space-between;font-weight:800;margin-top:8px;margin-left:20px;width:calc(100% - 40px)}.fundraising .goal-metrics>span{transition:opacity 1s}.fundraising.fundraising.loading .goal-metrics>span,.fundraising.fundraising.loading .fundraising-bar .fundraising-bar-progress{opacity:0}