.tm{box-sizing:border-box;border:1px solid var(--gf-fg-12);background:var(--gf-fg-04);width:28px;height:28px;color:var(--gf-text-72);transition:color .2s var(--gf-ease-hover);border-radius:0;flex:none;place-items:center;text-decoration:none;display:inline-grid}.tm--dark:is(:hover,:focus-visible),:is(a,button):is(:hover,:focus-visible)>.tm--dark{color:var(--gf-fg)}.tm__glyph{width:var(--tm-w,16px);height:var(--tm-h,16px);-webkit-mask:var(--tm-file) center / contain no-repeat;-webkit-mask:var(--tm-file) center / contain no-repeat;mask:var(--tm-file) center / contain no-repeat;background-color:currentColor;display:block}.tm__letters{font:400 11px/1 var(--gf-mono,"JetBrains Mono", ui-monospace, monospace);letter-spacing:0;text-transform:uppercase}.tm--light{width:20px;height:20px;color:var(--gf-dark);background:0 0;border:0}.tm--brand{color:var(--gf-dark)}.tm--brand.tm--dark{border-color:var(--gf-fg-12);background:var(--gf-white)}.tm--brand .tm__glyph{background-color:var(--tm-brand,var(--gf-dark))}@media (hover:none),(pointer:coarse){a.tm{position:relative}a.tm:after{content:"";position:absolute;inset:-8px -4px}}@media (prefers-reduced-motion:reduce){.tm{transition:none}}@media (forced-colors:active){.tm__glyph{forced-color-adjust:none;background-color:canvastext}}.gp{--gf-line:var(--gf-fg-14);--gp-body:var(--gf-text-76);--gp-accent:var(--gf-accent);background:var(--gf-bg)}.gp-link,.gp-byline a{color:var(--gp-accent);text-decoration:underline;-webkit-text-decoration-color:var(--gf-accent-40);text-decoration-color:var(--gf-accent-40);text-underline-offset:3px;transition:text-decoration-color .2s var(--gf-ease-hover)}@media (hover:hover) and (pointer:fine){.gp-link:hover,.gp-byline a:hover{text-decoration-color:currentColor}}.gp-hero{isolation:isolate;border-bottom:1px solid var(--gf-line);place-items:center;min-height:380px;display:grid;position:relative;overflow:hidden}.gp-hero__glow{z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 30% 120%,var(--gf-haze-28),transparent 68%);position:absolute;inset:0}.gp-hero__copy{text-align:center;flex-direction:column;align-items:center;gap:18px;width:min(700px,100%);padding:64px 24px;display:flex}.gp-hero h1{text-wrap:balance;font-size:56px;line-height:1}.gp-hero__lede{max-width:520px;color:var(--gf-muted);text-wrap:pretty;font-size:16px;line-height:1.45}.gp-byline{text-align:left;align-items:center;gap:12px;display:flex}.gp-byline img{object-fit:cover;border-radius:2px;flex:none;width:44px;height:44px}.gp-byline p{color:var(--gp-body);font-size:13px;line-height:1.45}.gp-byline a{color:var(--gf-fg);-webkit-text-decoration-color:color-mix(in srgb,var(--gf-fg) calc(35% + 29% * var(--gf-light)),#0000);text-decoration-color:color-mix(in srgb,var(--gf-fg) calc(35% + 29% * var(--gf-light)),#0000)}.gp-byline--center{justify-content:center}.gp-toolbar{border-bottom:1px solid var(--gf-line);gap:22px;padding:28px 40px;display:grid}.gp-toolbar[hidden],.gp-card[hidden],.gp-empty[hidden],.gp-reset[hidden]{display:none}.gp-search{max-width:460px;display:block}.gp-search input,.gp-select select{box-sizing:border-box;background:var(--gf-fg-06);width:100%;height:48px;min-height:48px;box-shadow:inset 0 0 0 1px var(--gf-fg-36);color:var(--gf-fg);font:400 15px/1.4 var(--gf-sans);letter-spacing:-.015em;border:0;border-radius:0;outline:0;padding:0 16px}.gp-search input::placeholder{color:var(--gf-text-50);opacity:1}@media (hover:hover) and (pointer:fine){.gp-search{position:relative}.gp-search:after{content:"/";border:1px solid var(--gf-fg-20);min-width:20px;height:20px;color:var(--gf-text-64);font:400 11px/1 var(--gf-mono);pointer-events:none;transition:opacity .2s var(--gf-ease-hover);place-items:center;padding:0 5px;display:grid;position:absolute;top:14px;right:14px}.gp-search:has(input:focus,input:not(:placeholder-shown)):after{opacity:0}}.gp-search input:is(:focus,:focus-visible),.gp-select select:is(:focus,:focus-visible){box-shadow:inset 0 0 0 2px var(--gf-blue),0 0 0 4px var(--gf-accent-10);outline:0}.gp-search input::-webkit-search-cancel-button{appearance:none;opacity:.64;cursor:pointer;background:currentColor;width:14px;height:14px;margin:0 -2px 0 8px;-webkit-mask:url(/assets/grafit/nav/close.svg) 50%/contain no-repeat;mask:url(/assets/grafit/nav/close.svg) 50%/contain no-repeat}.gp-filters{flex-wrap:wrap;align-items:flex-start;gap:20px 36px;display:flex}.gp-filter{border:0;min-width:0;margin:0;padding:0}.gp-filter legend,.gp-select>.gf-eyebrow{color:var(--gf-muted);margin-bottom:10px;padding:0;display:block}.gp-chips{flex-wrap:wrap;gap:8px;display:flex}.gp-chips button,.gp-reset{border:1px solid var(--gf-line);min-height:32px;color:var(--gf-muted);font:400 11px/1.4 var(--gf-mono);text-transform:uppercase;letter-spacing:.04em;transition:background-color .2s var(--gf-ease-hover),color .2s var(--gf-ease-hover),scale .14s var(--gf-ease-out);background:0 0;border-radius:0;padding:6px 14px}.gp-chips button[aria-pressed=true]{background:var(--gp-accent);border-color:var(--gp-accent);color:var(--gf-bg)}@media (hover:hover) and (pointer:fine){.gp-chips button[aria-pressed=false]:hover,.gp-reset:hover{background:var(--gf-wash-10);color:var(--gf-fg)}}@media (prefers-reduced-motion:no-preference) and (hover:hover) and (pointer:fine){.gp-chips button:active,.gp-reset:active{scale:.97}}@media (prefers-reduced-motion:no-preference){.gp-chips button.gf-is-tapped,.gp-reset.gf-is-tapped{scale:.97}}.gp-card{position:relative}.gp-card:after{content:"";background:var(--gf-fg-02);opacity:0;pointer-events:none;transition:opacity .14s var(--gf-ease-out);position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.gp-card:has(>.gp-card__cover:active,.gp-card__title a:active):after{opacity:1}}.gp-card:has(>.gp-card__cover.gf-is-tapped,.gp-card__title a.gf-is-tapped):after{opacity:1}.gp-select{min-width:220px;display:block}.gp-select select{appearance:none;cursor:pointer;background:var(--gf-fg-06) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23a5ccfd' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 16px center;padding-right:40px}.gp-select option{background:var(--gf-surface);color:var(--gf-fg)}.gp-toolbar__status{flex-wrap:wrap;align-items:center;gap:12px 20px;display:flex}.gp-count{color:var(--gf-muted)}@media (hover:none),(pointer:coarse){.gp-chips button,.gp-reset{min-height:44px}.gp-search input,.gp-select select{font-size:16px}}.gp-grid{grid-template-columns:repeat(3,minmax(0,1fr));display:grid;overflow:hidden}.gp-card{border-right:1px solid var(--gf-line);border-bottom:1px solid var(--gf-line);content-visibility:auto;contain-intrinsic-size:auto none auto 360px;flex-direction:column;gap:12px;min-width:0;margin-right:-1px;padding:32px;display:flex}.gp-card__cover{aspect-ratio:760/442;background:var(--gf-fg-96);border:1px solid var(--gf-fg-08);margin-bottom:8px;display:block;overflow:hidden}.gp-card__cover img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .5s var(--gf-ease-expo-out)}.gp-card:has(.gp-card__title a:focus-visible) .gp-card__cover img{transform:scale(1.025)}@media (hover:hover) and (pointer:fine){.gp-card:hover .gp-card__cover img{transform:scale(1.025)}}.gp-card__meta{color:var(--gp-accent);flex-wrap:wrap;justify-content:space-between;gap:4px 12px;display:flex}.gp-card__meta span+span{color:var(--gf-muted)}.gp-card__title{font:400 24px/1.15 var(--gf-serif);letter-spacing:-.02em;overflow-wrap:anywhere}.gp-card__title a{transition:color .2s var(--gf-ease-hover)}@media (hover:hover) and (pointer:fine){.gp-card__title a:hover{color:var(--gp-accent);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1px}}.gp-card__facts{color:var(--gf-muted);font-size:13px;line-height:1.45}.gp-card .gp-tools{margin-top:auto;padding-top:8px}.gp-empty{border-bottom:1px solid var(--gf-line);color:var(--gp-body);padding:48px 40px;font-size:15px}.gp-empty .gp-reset{margin-left:12px}.gp-tools{flex-wrap:wrap;gap:8px;display:flex}.gp-tag{border:1px solid var(--gf-line);min-height:28px;color:var(--gp-body);font:400 12px/1.2 var(--gf-sans);letter-spacing:-.01em;align-items:center;padding:4px 9px;display:inline-flex}.gp-tag--more{color:var(--gf-muted);border-style:dashed}.gp-tool{border:1px solid var(--gf-line);background:var(--gf-fg-03);min-height:44px;transition:border-color .2s var(--gf-ease-hover),color .2s var(--gf-ease-hover);align-items:center;gap:10px;padding:7px 14px 7px 8px;font-size:14px;line-height:1.3;display:inline-flex}@media (hover:hover) and (pointer:fine){.gp-tool:not(.gp-tool--split):hover{border-color:var(--gf-accent-60);color:var(--gp-accent)}.gp-tool__name:hover{color:var(--gp-accent)}.gp-tools a.tm:hover{outline:1px solid var(--gp-accent);outline-offset:2px}}.gp-tool--split{padding-block:0}.gp-tool__name{color:inherit;align-self:stretch;align-items:center;text-decoration:none;display:inline-flex}.gp-crumbs{border-bottom:1px solid var(--gf-line);padding:18px 40px}.gp-crumbs ol{font:400 12px/1.4 var(--gf-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--gf-muted);flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.gp-crumbs li{align-items:center;gap:10px;display:flex}.gp-crumbs li+li:before{content:"/";color:var(--gf-text-30)}.gp-crumbs a{min-height:44px;color:var(--gp-accent);align-items:center;display:inline-flex}@media (hover:hover) and (pointer:fine){.gp-crumbs a:hover{text-underline-offset:4px;text-decoration:underline}}.gp-play-hero{isolation:isolate;border-bottom:1px solid var(--gf-line);background:radial-gradient(ellipse at 15% 0,var(--gf-haze-20),transparent 60%);padding:72px 40px 0;position:relative;overflow:hidden}.gp-play-hero__inner{flex-direction:column;align-items:flex-start;gap:20px;max-width:860px;padding-bottom:48px;display:flex}.gp-play-hero__eyebrow{color:var(--gf-muted);flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.gp-play-hero__eyebrow .gf-bracket-link{min-height:24px;color:var(--gp-accent);background:0 0;padding:4px 14px;font-size:12px}.gp-play-hero h1{text-wrap:balance;font-size:64px;line-height:1}.gp-play-hero__summary{max-width:740px;color:var(--gp-body);letter-spacing:-.02em;text-wrap:pretty;font-size:19px;line-height:1.5}.gp-facts{border-top:1px solid var(--gf-line);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 -40px;display:grid}.gp-facts>div{min-width:0;padding:20px 40px 22px}.gp-facts>div+div{border-left:1px solid var(--gf-line)}.gp-facts dt{color:var(--gf-text-50);font:400 11px/1.4 var(--gf-mono);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.gp-facts dd{overflow-wrap:break-word;margin:0;font-size:15px;line-height:1.4}.gp-section{border-bottom:1px solid var(--gf-line);padding:80px 40px}.gp-section__title{margin-bottom:32px;font-size:40px;line-height:1.15}.gp-section__lede{max-width:620px;color:var(--gf-muted);font-size:15px;line-height:1.5;margin:-16px 0 24px!important}.gp-workflow__grid{grid-template-columns:minmax(0,620px) minmax(0,1fr);align-items:start;gap:48px;display:grid}.gp-diagram{min-width:0;margin:0}.gp-diagram__link{background:var(--gf-fg-96);outline-offset:var(--gf-focus-offset);display:block;position:relative}.gp-diagram__link:before,.gp-diagram__link:after{content:"";pointer-events:none;background:linear-gradient(var(--gp-accent),var(--gp-accent)) left top/8px 1px no-repeat,linear-gradient(var(--gp-accent),var(--gp-accent)) right top/8px 1px no-repeat,linear-gradient(var(--gp-accent),var(--gp-accent)) left bottom/8px 1px no-repeat,linear-gradient(var(--gp-accent),var(--gp-accent)) right bottom/8px 1px no-repeat;opacity:.7;transition:inset .26s var(--gf-ease-out);position:absolute;inset:-7px}.gp-diagram__link:after{background:linear-gradient(var(--gp-accent),var(--gp-accent)) left top/1px 8px no-repeat,linear-gradient(var(--gp-accent),var(--gp-accent)) right top/1px 8px no-repeat,linear-gradient(var(--gp-accent),var(--gp-accent)) left bottom/1px 8px no-repeat,linear-gradient(var(--gp-accent),var(--gp-accent)) right bottom/1px 8px no-repeat}@media (hover:hover) and (pointer:fine){.gp-diagram__link:hover:before,.gp-diagram__link:hover:after{inset:-11px}}.gp-diagram__link img{width:100%;height:auto}.gp-diagram__hint{background:var(--gf-bg);color:var(--gf-fg);padding:8px 12px;position:absolute;bottom:12px;right:12px}.gp-diagram__hint-touch{display:none}@media (hover:none),(pointer:coarse){.gp-diagram__hint-fine{display:none}.gp-diagram__hint-touch{display:inline}}.gp-diagram figcaption{color:var(--gf-muted);margin-top:18px;font-size:13px;line-height:1.5}.gp-diagram figcaption a{align-items:center;min-height:44px;display:inline-flex}.gp-diagram-text{border-top:1px solid var(--gf-line);border-bottom:1px solid var(--gf-line);min-width:0}.gp-diagram-text summary{cursor:pointer;min-height:56px;font:400 12px/1.4 var(--gf-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--gp-accent);justify-content:space-between;align-items:center;gap:16px;padding:12px 0;list-style:none;display:flex}.gp-diagram-text summary::-webkit-details-marker{display:none}.gp-plus{flex:none;width:10px;height:10px;position:relative}.gp-plus:before,.gp-plus:after{content:"";background:currentColor;width:10px;height:1px;position:absolute;top:4.5px;left:0}.gp-plus:after{transform:rotate(90deg)}.gp-diagram-text[open] .gp-plus:after{transform:none}.gp-diagram-text__body{padding:4px 0 24px}.gp-dt{gap:22px;display:grid}.gp-dt__stage{letter-spacing:-.015em;align-items:baseline;gap:12px;font-size:16px;line-height:1.35;display:flex;margin-bottom:10px!important}.gp-dt__n{background:var(--gp-accent);width:22px;height:22px;color:var(--gf-bg);font:500 11px/1 var(--gf-mono);flex:none;place-items:center;display:inline-grid}.gp-dt__items{gap:8px;display:grid;padding-left:34px!important}.gp-dt__items>li,.gp-dt__rows li,.gp-dt__note{color:var(--gp-body);font-size:14px;line-height:1.55}.gp-dt__items strong,.gp-dt__note strong{color:var(--gf-fg);font-weight:500}.gp-dt__rows{gap:4px;display:grid;margin-top:6px!important}.gp-dt__rows li{padding-left:14px;position:relative}.gp-dt__rows li:before{content:"";background:var(--gp-accent);width:5px;height:1px;position:absolute;top:.7em;left:0}.gp-dt__note{margin-top:18px!important}.gp-steps__list{max-width:860px}.gp-step{border-top:1px solid var(--gf-line);grid-template-columns:44px minmax(0,1fr);gap:24px;padding:32px 0;scroll-margin-top:96px;display:grid}.gp-step:last-child{border-bottom:1px solid var(--gf-line)}.gp-step__number{border:1px solid color-mix(in srgb,var(--gf-accent) 55%,#0000);width:44px;height:44px;color:var(--gp-accent);font:400 13px/1 var(--gf-mono);place-items:center;display:grid}.gp-step__title{font:400 26px/1.2 var(--gf-serif);letter-spacing:-.02em;padding-top:6px}.gp-step__intro{max-width:720px;color:var(--gp-body);letter-spacing:-.015em;font-size:17px;line-height:1.55;margin-top:12px!important}.gp-bullets{gap:8px;max-width:720px;display:grid;margin-top:14px!important}.gp-bullets li{color:var(--gp-body);letter-spacing:-.015em;padding-left:20px;font-size:17px;line-height:1.55;position:relative}.gp-bullets li:before{content:"";background:var(--gp-accent);width:5px;height:5px;position:absolute;top:.66em;left:2px}.gp-bullets .gp-bullets{margin-top:8px!important}.gp-bullets .gp-bullets li{color:var(--gf-text-68);font-size:15px}.gp-bullets .gp-bullets li:before{border:1px solid var(--gf-fg-45);background:0 0}.gp-related .gp-grid{border-top:1px solid var(--gf-line);border-left:1px solid var(--gf-line);overflow:visible}.gp-related .gp-card{margin-right:0}.gp-pager{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:40px;display:grid}.gp-pager a{border:1px solid var(--gf-line);background:var(--gf-fg-03);transition:border-color .2s var(--gf-ease-hover);flex-direction:column;gap:8px;padding:20px 24px;display:flex}.gp-pager a>span:last-child{font:400 20px/1.25 var(--gf-serif);letter-spacing:-.02em}.gp-pager .gf-eyebrow{color:var(--gf-muted)}.gp-pager__next{text-align:right;align-items:flex-end}@media (hover:hover) and (pointer:fine){.gp-pager a:hover{border-color:var(--gf-accent-60)}}.gp-all{text-align:center;margin-top:32px!important}.gp-cta{background:var(--gf-bg);color:var(--gf-fg);isolation:isolate;position:relative;overflow:hidden}.gp-cta__shell{text-align:center;z-index:1;flex-direction:column;align-items:center;min-height:470px;padding:100px 24px;display:flex;position:relative}.gp-cta h2{text-wrap:balance;max-width:646px;font-size:56px;line-height:1}.gp-cta p{max-width:330px;color:var(--gf-text-64);margin:24px auto 32px;font-size:15px;line-height:1.4}.gp-cta__glow{z-index:0;opacity:.2;pointer-events:none;width:calc(min(1061px,120vw) + 408px);height:984px;position:absolute;bottom:-463px;left:50%;transform:translate(-50%)}.gp-cta__glow picture,.gp-cta__glow img{width:100%;max-width:none;height:100%;display:block}.gp-lightbox{border:1px solid var(--gf-line);background:var(--gf-bg);width:min(1360px,100vw - 48px);max-width:none;height:calc(100vh - 48px);max-height:none;color:var(--gf-fg);padding:0}.gp-lightbox::backdrop{background:color-mix(in srgb,var(--gf-bg) 80%,#0000)}.gp-lightbox[open]{flex-direction:column;display:flex}.gp-lightbox__bar{border-bottom:1px solid var(--gf-line);justify-content:space-between;align-items:center;gap:16px;padding:8px 8px 8px 24px;display:flex}.gp-lightbox__bar p{color:var(--gf-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gp-lightbox__close{border:1px solid var(--gf-line);min-height:44px;color:var(--gf-fg);font:400 12px/1 var(--gf-mono);text-transform:uppercase;letter-spacing:.04em;background:0 0;padding:10px 18px}@media (hover:hover) and (pointer:fine){.gp-lightbox__close:hover{border-color:var(--gp-accent);color:var(--gp-accent)}}.gp-lightbox__scroll{color-scheme:light;background:var(--gf-fg-04);flex:1;overflow:auto}.gp-lightbox__scroll img{width:1280px;max-width:none;height:auto;margin:0 auto;display:block}@media (prefers-reduced-motion:reduce){.gp-card__cover img,.gp-card__title a,.gp-chips button,.gp-reset,.gp-tool,.gp-pager a,.gp-diagram__link:before,.gp-diagram__link:after,.gp-link,.gp-byline a{transition:none}.gp-card .gp-card__cover img{transform:none}}@media (max-width:1100px){.gp-card,.gp-toolbar{padding:28px}.gp-section{padding:72px 28px}.gp-play-hero{padding:56px 28px 0}.gp-crumbs{padding:10px 28px}.gp-facts{margin:0 -28px}.gp-facts>div{padding:18px 28px 20px}}@media (max-width:1024px){.gp-workflow__grid{grid-template-columns:minmax(0,1fr);gap:32px}.gp-diagram{max-width:680px}}@media (max-width:900px){.gp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gp-play-hero h1{font-size:52px}.gp-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.gp-facts>div:nth-child(3){border-left:0}.gp-facts>div:nth-child(n+3){border-top:1px solid var(--gf-line)}}@media (max-width:700px){.gp-facts dt{font-size:12px}.gp-hero{min-height:0}.gp-hero__copy{gap:16px;padding:48px 20px}.gp-hero h1{font-size:38px}.gp-hero__lede{font-size:17px}.gp-toolbar{gap:20px;padding:24px 20px}.gp-search{max-width:none}.gp-filters{flex-direction:column;gap:18px}.gp-select{width:100%}.gp-chips button,.gp-reset{padding:6px 12px;font-size:12px}.gp-grid{grid-template-columns:minmax(0,1fr)}.gp-card{padding:24px 20px}.gp-card__title{font-size:24px}.gp-card__facts{font-size:15px}.gp-empty{padding:32px 20px}.gp-crumbs{padding:4px 20px}.gp-crumbs ol{font-size:12px}.gp-play-hero{padding:40px 20px 0}.gp-play-hero__inner{gap:16px;padding-bottom:36px}.gp-play-hero h1{font-size:38px;line-height:1.05}.gp-play-hero__summary{font-size:17px}.gp-byline p{font-size:14px}.gp-facts{margin:0 -20px}.gp-facts>div{padding:16px 20px 18px}.gp-section{padding:56px 20px}.gp-section__title{margin-bottom:24px;font-size:32px}.gp-section__lede{font-size:16px;margin-top:-8px!important}.gp-diagram figcaption{font-size:14px}.gp-dt__items{padding-left:0!important}.gp-dt__items>li,.gp-dt__rows li,.gp-dt__note{font-size:15px}.gp-step{grid-template-columns:minmax(0,1fr);gap:14px;padding:28px 0}.gp-step__number{width:40px;height:40px}.gp-step__title{padding-top:0;font-size:24px}.gp-step__intro{font-size:17px}.gp-bullets li,.gp-bullets .gp-bullets li{font-size:16px}.gp-tool{font-size:15px}.gp-pager{grid-template-columns:minmax(0,1fr);gap:12px}.gp-pager__next{text-align:left;align-items:flex-start}.gp-cta__shell{min-height:440px;padding:96px 20px 104px}.gp-cta h2{max-width:340px;font-size:38px}.gp-cta p{font-size:17px}.gp-cta__glow{opacity:.22;width:1088px}}.gp-cta__glow{filter:opacity(calc(1 - var(--gf-light)))}
