﻿: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;--max-width: 1200px;--max-width-plus-padding: calc(var(--max-width) + 40px * 2);--max-extended-width: 1600px;--max-width-reading-material: 800px;--variable-px: Min(1px, 0.15vw);--page-edge-padding: 40px;--border-thickness: 2px;--font-size-link: calc(1rem * 4 / 3)}html,body{color:var(--color-navy);background:var(--color-white);font-family:"Inter",sans-serif;line-height:1.5;font-weight:500;font-size:18px;tab-size:4;width:100%;height:100%;margin:0}@media screen and (max-width: 780px){:root{--font-size-link: calc(1rem * 24 / 18);--page-edge-padding: 28px;--border-thickness: 1px}html,body{font-size:16px}}@media print,screen and (max-width: 500px){:root{--page-edge-padding: 20px}}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: 780px){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{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,body>.page header nav .row .right a.button{min-height:0;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.button::before,body>.page header nav .row .right a.button::before{content:none}body>.page header nav .row .left a:not(.button),body>.page header nav .row .right a:not(.button){color:inherit}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: 1000px){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{--button-padding: 14px;--nav-font-size: 20px}}@media print,screen and (max-width: 900px){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: 13px;--nav-font-size: 18px}}@media print,screen and (max-width: 780px){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{--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: 580px){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;--nav-font-size: 13px}}@media screen and (max-width: 520px){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: 460px){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: 420px){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{--nav-font-size: 10px}}@media screen and (max-width: 380px){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{--nav-font-size: 9px}}@media screen and (max-width: 350px){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{--nav-font-size: 8px}}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: 1400px){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:calc(120*var(--variable-px)) var(--page-edge-padding)}body>.page main>section{max-width:var(--max-width);margin-left:auto;margin-right:auto;position:relative;z-index:1}body>.page main>section~section{margin-top:calc(120*var(--variable-px))}body>.page main>section p img{max-width:100%}body>.page main>section pre{box-sizing:border-box;overflow:auto}body>.page main>section details{width:100%}body>.page footer{display:flex;flex-direction:column;align-items:center;padding:40px;padding-top:0;color:var(--color-walnut)}@media screen and (max-width: 1400px){body>.page footer hr{width:100%}body>.page footer hr::before,body>.page footer hr::after{border:none;background:currentColor;width:calc(var(--page-edge-padding) + 40px);height:var(--border-thickness)}}body>.page footer nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 40px;margin-top: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: 780px){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;margin-top:40px}:is(h1,h2,h3,h4,article>:first-child)~:is(p,ul,ol,ol li p,img,a:has(>img:only-child)),:is(h1,p)~.feature-icons,p~:is(h1,h2,h3,h4,details summary,blockquote,.image-comparison,.video-background,.video-embed),.video-embed+:is(p,.link,.button),p+p>.button,p+:is(.link,section),img+.link,article{margin-top:20px}*{min-width:0;min-height:0}h1{font-size:2.6666666667rem;font-family:"Bona Nova",Palatino,serif;font-feature-settings:"lnum";line-height:1.25;font-weight:700;display:inline-block;margin:0}h1~h2{margin-top:40px}h1~hr{margin-top:40px;margin-bottom:20px}h2,h3,h4,h5,h6{font-family:"Inter",sans-serif;line-height:1.5;font-weight:800;display:inline-block;margin:0}h2{font-size:1.7777777778rem;font-weight:700}h3{font-size:1.3333333333rem}h4,h5,h6{font-size:1rem}p{margin:0;-webkit-hyphens:auto;hyphens:auto;text-align:justify}h1~img,h1~iframe,h1~a>img:only-child,h2~img,h2~iframe,h2~a>img:only-child,h3~img,h3~iframe,h3~a>img:only-child,h4~img,h4~iframe,h4~a>img:only-child,h5~img,h5~iframe,h5~a>img:only-child,h6~img,h6~iframe,h6~a>img:only-child,p~img,p~iframe,p~a>img:only-child{width:100%;height:auto}a{color:var(--color-crimson)}img{vertical-align:top}table{margin:20px -20px;width:calc(100% + 40px)}table th,table td{border:20px solid rgba(0,0,0,0);vertical-align:top;margin:0;padding:0}table th:not(:first-child) img,table td:not(:first-child) img{max-width:100%}table th:empty{border:none}ul,ol{margin:0}ul+p,ol+p{margin-top:0}ul li,ol li{margin-top:.5em}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:700;font-style:italic;-webkit-user-select:none;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;-webkit-user-select:none;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}kbd{outline:calc(var(--border-thickness)/2) solid var(--color-navy);padding:0 8px;margin:0 4px;color:inherit;font-family:inherit}summary{cursor:pointer}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}.reading-material.reading-material{max-width:var(--max-width-reading-material)}.reading-material.reading-material article{width:100%}.reading-material.reading-material article h2{margin-top:80px}.reading-material.reading-material article h3{margin-top:40px}.reading-material.reading-material article h4{margin-top:20px}.reading-material.reading-material article h1,.reading-material.reading-material article h2,.reading-material.reading-material article h3,.reading-material.reading-material article h4,.reading-material.reading-material article h5,.reading-material.reading-material article h6{display:block}.reading-material.reading-material article h1:first-child,.reading-material.reading-material article h2:first-child,.reading-material.reading-material article h3:first-child,.reading-material.reading-material article h4:first-child,.reading-material.reading-material article h5:first-child,.reading-material.reading-material article h6:first-child{margin-top:0}.reading-material.reading-material article p:has(>img)+center:has(>em){margin-top:10px}.reading-material.reading-material article p~img{width:auto;max-width:100%}.reading-material.reading-material article hr{margin-top:40px;margin-bottom:40px}.reading-material.reading-material article+hr{margin-top:calc(80*var(--variable-px));margin-bottom:calc(40*var(--variable-px))}.block{display:flex;flex-direction:column;align-items:flex-start;width:100%}.block.centered{align-items:center}.info-box,.feature-box-outer{padding:calc(80*var(--variable-px));background-image:url("https://static.graphite.rs/textures/noise.png");background-blend-mode:overlay;background-position:center}@media screen and (max-width: 1000px){.feature-box-outer.feature-box-outer{margin-left:calc(-1*var(--page-edge-padding));margin-right:calc(-1*var(--page-edge-padding));padding-left:var(--page-edge-padding);padding-right:var(--page-edge-padding)}}.feature-box-outer.feature-box-outer{max-width:unset}.feature-box-outer .feature-box-inner{max-width:var(--max-width);margin:0 auto}.feature-box-outer .feature-box-inner h1.feature-box-header{font-family:"Inter",sans-serif;line-height:1.5;font-size:var(--font-size-link);font-weight:800;text-transform:uppercase}.feature-box-outer .feature-box-inner h1.feature-box-header span{white-space:pre}.feature-box-outer .feature-box-inner h1.feature-box-header~hr{margin-top:20px;margin-bottom:40px}.diptych,.triptych{display:flex;flex-wrap:wrap;gap:calc(80*var(--variable-px))}.diptych .block,.triptych .block{flex:1 1 0}.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)}.diptych .block{min-width:320px}.triptych .block{min-width:280px}@media screen and (max-width: 520px){.diptych .block{min-width:200px}.triptych .block{min-width:280px}}.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{display:inline-block;border:var(--border-thickness) solid currentColor;min-height:calc(var(--font-size-link)*2);font-size:var(--font-size-link);padding:0 var(--font-size-link);box-sizing:border-box;text-align:left;text-decoration:none;font-weight:800;color:var(--color-crimson)}.button::before{content:"";line-height:calc(var(--font-size-link)*2 - 2*var(--border-thickness))}.button img{height:calc(var(--font-size-link)*1.5);margin-right:calc(var(--font-size-link)/2)}.button img,.button span{vertical-align:middle}.arrow::after{content:" »";font-family:"Inter",sans-serif}.status-flag{background:var(--color-crimson);white-space:nowrap;color:#fff;font-size:1rem;padding:.25em .5em;vertical-align:middle;font-family:"Bona Nova",Palatino,serif;line-height:1.2;font-weight:500}.demo-artwork{display:flex;align-items:center;justify-content:center;margin-top:20px}.demo-artwork>a{flex:0 0 auto}.demo-artwork>a img{height:128px;border:12px solid var(--color-walnut);vertical-align:top;flex:0 0 auto}.demo-artwork p{display:flex;flex-direction:column;max-width:300px;margin-left:40px;text-align:left}.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;user-select:none;flex:0 0 auto;padding:0 20px}.carousel .carousel-slide img:first-child,.carousel .carousel-slide img:last-child{filter:Invert(calc(var(--over-slide-factor)/2)) Brightness(calc(1 + var(--over-slide-factor))) Grayscale(var(--over-slide-factor))}.carousel .carousel-slide img:first-child{margin-left:-20px}.carousel .carousel-slide img:last-child{margin-right:-20px}.carousel:not(.dragging,.jostling) .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:160px;margin-left:-160px;-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:160px;margin-right:-160px;-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:2px 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)}}@media screen and (max-width: 1280px){.carousel .carousel-slide.torn{display:none}}.atlas{object-fit:cover;object-position:calc(-48px*var(--atlas-index)) 0;width:48px;height:48px}.feature-icons{display:flex;flex-wrap:wrap;margin-bottom:20px;width:100%;gap:16px}.feature-icons .feature-icon{display:flex;align-items:center}.feature-icons .feature-icon img{flex:0 0 auto}.feature-icons:not(.stacked) .feature-icon{padding:16px;gap:16px;flex:1 0 calc(50% - 32px - 8px)}@media screen and (max-width: 1100px){.feature-icons:not(.stacked) .feature-icon{flex:1 0 calc(100% - 32px)}}.feature-icons:not(.no-background) .feature-icon{background:rgba(0,0,0,.0625)}.feature-icons.four-wide .feature-icon{flex:1 0 calc(25% - 64px - 4px)}@media screen and (max-width: 1200px){.feature-icons.four-wide .feature-icon{flex:1 0 calc(50% - 32px - 8px)}}@media screen and (max-width: 840px){.feature-icons.four-wide .feature-icon{flex:1 0 calc(100% - 32px)}}.feature-icons.stacked{justify-content:space-between;margin:0 -10px;width:calc(100% + 20px);gap:0}.feature-icons.stacked .feature-icon{flex-direction:column;flex:0 1 auto;margin:0 10px}@media screen and (max-width: 1100px){.feature-icons.stacked .feature-icon{width:calc(33.3333333333% - 40px)}}@media screen and (max-width: 400px){.feature-icons.stacked .feature-icon{width:calc(50% - 20px)}}.feature-icons.stacked .feature-icon img{width:72px;height:72px;object-position:calc(-72px*var(--atlas-index)) 0;margin-bottom:8px}.feature-icons.stacked .feature-icon span{text-align:center}