.crosshair[data-astro-cid-ecag5wrs]{pointer-events:none;--crosshair-ink:color-mix(in srgb, var(--color-redline) 45%, transparent);position:absolute;inset:0;overflow:hidden}.crosshair__line[data-astro-cid-ecag5wrs]{position:absolute;top:0;left:0}.crosshair__line--h[data-astro-cid-ecag5wrs]{border-top:1px dashed var(--crosshair-ink);transform:translateY(var(--crosshair-y,0));right:0}.crosshair__line--v[data-astro-cid-ecag5wrs]{border-left:1px dashed var(--crosshair-ink);transform:translateX(var(--crosshair-x,0));bottom:0}.crosshair__readout[data-astro-cid-ecag5wrs]{color:var(--color-redline);font-family:var(--font-mono);font-size:var(--size-micro);letter-spacing:.06em;white-space:nowrap;transform:translate(var(--crosshair-x,0), var(--crosshair-y,0));position:absolute;top:8px;left:10px}.crosshair[data-astro-cid-ecag5wrs][hidden]{display:none}@media not ((hover:hover) and (pointer:fine)){.crosshair[data-astro-cid-ecag5wrs]{display:none!important}}@media (prefers-reduced-motion:reduce){.crosshair[data-astro-cid-ecag5wrs]{display:none!important}}.desk[data-astro-cid-caw4wax3]{padding:var(--sheet-outer-padding)}.sheet[data-astro-cid-caw4wax3]{max-width:var(--sheet-max-width);padding:var(--sheet-frame-gap);border:var(--sheet-frame-outer) solid var(--color-ink);background-color:var(--color-paper);background-image:linear-gradient(var(--color-grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--color-grid-major) 1px, transparent 1px), linear-gradient(var(--color-grid-minor) 1px, transparent 1px), linear-gradient(90deg, var(--color-grid-minor) 1px, transparent 1px);background-size:var(--sheet-grid-major) var(--sheet-grid-major), var(--sheet-grid-major) var(--sheet-grid-major), var(--sheet-grid-minor) var(--sheet-grid-minor), var(--sheet-grid-minor) var(--sheet-grid-minor);margin:0 auto;position:relative}.sheet__plot[data-astro-cid-caw4wax3]{display:none}.sheet__inner[data-astro-cid-caw4wax3]{border:var(--sheet-frame-inner) solid var(--color-ink);position:relative}.sheet__zones[data-astro-cid-caw4wax3]{border-bottom:var(--border-thin);color:var(--color-muted);font-family:var(--font-mono);font-size:var(--size-micro);justify-content:space-around;padding:3px 0;line-height:normal;display:none}@media (width<=767px){.desk[data-astro-cid-caw4wax3]{padding:var(--sheet-outer-padding-phone)}}@media (width>=1024px){.sheet__zones[data-astro-cid-caw4wax3]{display:flex}}.sheet-header[data-astro-cid-cnj7jhfe]{border-bottom:var(--border-thin);font-family:var(--font-mono);flex-wrap:wrap;align-items:stretch;display:flex}.sheet-header[data-astro-cid-cnj7jhfe] a[data-astro-cid-cnj7jhfe]{color:var(--color-ink);text-decoration:none}.sheet-header__mark[data-astro-cid-cnj7jhfe]{padding:var(--space-4) var(--space-5);border-right:var(--border-thin);flex:none;align-items:center;gap:14px;display:flex}.sheet-header__monogram[data-astro-cid-cnj7jhfe]{border:var(--border-strong);width:38px;height:38px;font-family:var(--font-display);flex:none;justify-content:center;align-items:center;font-size:15px;font-weight:800;font-stretch:112%;display:flex}.sheet-header__set[data-astro-cid-cnj7jhfe]{letter-spacing:.08em;flex-direction:column;gap:2px;font-size:11px;display:flex}.sheet-header__set-name[data-astro-cid-cnj7jhfe]{font-weight:600}.sheet-header__domain[data-astro-cid-cnj7jhfe]{color:var(--color-muted)}.sheet-header__tabs[data-astro-cid-cnj7jhfe]{font-size:var(--size-label);letter-spacing:.04em;flex:700px;display:flex}.sheet-tab[data-astro-cid-cnj7jhfe]{min-width:0;padding:var(--space-3) 18px;border-right:var(--border-thin);flex-direction:column;flex:140px;justify-content:center;gap:3px;display:flex}.sheet-tab__number[data-astro-cid-cnj7jhfe]{color:var(--color-muted);font-size:var(--size-micro)}.sheet-tab__name[data-astro-cid-cnj7jhfe]{overflow-wrap:anywhere;align-self:flex-start;position:relative}.sheet-tab__name[data-astro-cid-cnj7jhfe]:after{content:"";transform-origin:0;height:1px;transition:transform var(--motion-fast) var(--motion-ease-plot);background:currentColor;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.sheet-tab[data-astro-cid-cnj7jhfe]:is(:hover,:focus-visible) .sheet-tab__name[data-astro-cid-cnj7jhfe]:after{transform:scaleX(1)}.sheet-header[data-astro-cid-cnj7jhfe] .sheet-tab[data-astro-cid-cnj7jhfe][aria-current=page]{isolation:isolate;color:var(--color-ink-on-fill);position:relative}.sheet-tab__fill[data-astro-cid-cnj7jhfe]{z-index:-1;background:var(--color-ink);position:absolute;inset:0}.sheet-tab[data-astro-cid-cnj7jhfe][aria-current=page] .sheet-tab__number[data-astro-cid-cnj7jhfe]{color:inherit;opacity:.7}.sheet-tab[data-astro-cid-cnj7jhfe][aria-current=page] .sheet-tab__name[data-astro-cid-cnj7jhfe]:after{display:none}.sheet-header__utils[data-astro-cid-cnj7jhfe]{justify-content:flex-end;align-items:center;gap:var(--space-1) var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--size-label);letter-spacing:.04em;flex-wrap:wrap;flex:none;display:flex}.sheet-header__langs[data-astro-cid-cnj7jhfe]{display:flex}.sheet-header__util[data-astro-cid-cnj7jhfe]{justify-content:center;align-items:center;gap:var(--space-2);min-width:44px;min-height:44px;padding:0 var(--space-2);color:var(--color-ink);font:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;display:inline-flex}.sheet-header[data-astro-cid-cnj7jhfe] .sheet-header__lang[data-astro-cid-cnj7jhfe]{color:var(--color-muted)}.sheet-header[data-astro-cid-cnj7jhfe] .sheet-header__lang[data-astro-cid-cnj7jhfe][aria-current=true]{color:var(--color-ink);text-underline-offset:4px;text-decoration:underline}.sheet-header__swatch[data-astro-cid-cnj7jhfe]{border:var(--border-thin);background:var(--color-paper);width:10px;height:10px}.sheet-header__theme-state[data-astro-cid-cnj7jhfe][data-when=blueprint],[data-theme=blueprint] .sheet-header__theme-state[data-astro-cid-cnj7jhfe][data-when=paper]{display:none}[data-theme=blueprint] .sheet-header__theme-state[data-astro-cid-cnj7jhfe][data-when=blueprint]{display:inline}@media (prefers-color-scheme:dark){:root:not([data-theme=paper]) .sheet-header__theme-state[data-astro-cid-cnj7jhfe][data-when=paper]{display:none}:root:not([data-theme=paper]) .sheet-header__theme-state[data-astro-cid-cnj7jhfe][data-when=blueprint]{display:inline}}@media (prefers-reduced-motion:reduce){.sheet-tab__name[data-astro-cid-cnj7jhfe]:after{transition:none}}@media (width<=1279px){.sheet-header__utils[data-astro-cid-cnj7jhfe]{margin-left:auto}.sheet-header__tabs[data-astro-cid-cnj7jhfe]{border-top:var(--border-thin);flex-basis:100%;order:1}.sheet-tab[data-astro-cid-cnj7jhfe]:last-child{border-right:0}}@media (width<=1023px){.sheet-tab[data-astro-cid-cnj7jhfe]{padding-inline:var(--space-3);flex-basis:0}}.sheet-header__current[data-astro-cid-cnj7jhfe],.sheet-index[data-astro-cid-cnj7jhfe],.sheet-header[data-astro-cid-cnj7jhfe] [data-astro-cid-cnj7jhfe][hidden]{display:none}.sheet-index__toggle[data-astro-cid-cnj7jhfe]{list-style:none}.sheet-index__toggle[data-astro-cid-cnj7jhfe]::-webkit-details-marker{display:none}.sheet-index__panel[data-astro-cid-cnj7jhfe]{z-index:5;border-top:var(--border-thin);border-bottom:var(--border-thin);background:var(--color-paper);transition:clip-path var(--motion-normal) var(--motion-ease-plot);position:absolute;top:100%;left:0;right:0}.sheet-index__panel[data-astro-cid-cnj7jhfe][data-state=closed]{clip-path:inset(0 0 100%)}.sheet-index__sheet[data-astro-cid-cnj7jhfe]{align-items:center;gap:var(--space-4);min-height:56px;padding:0 var(--space-4);border-bottom:var(--border-thin);font-size:var(--size-label);letter-spacing:.04em;display:flex}.sheet-index__number[data-astro-cid-cnj7jhfe]{color:var(--color-muted);font-size:var(--size-micro)}.sheet-header[data-astro-cid-cnj7jhfe] .sheet-index__sheet[data-astro-cid-cnj7jhfe][aria-current=page]{background:var(--color-ink);color:var(--color-ink-on-fill)}.sheet-index__sheet[data-astro-cid-cnj7jhfe][aria-current=page] .sheet-index__number[data-astro-cid-cnj7jhfe]{color:inherit;opacity:.7}.sheet-index__utils[data-astro-cid-cnj7jhfe]{font-size:var(--size-label);letter-spacing:.04em;flex-wrap:wrap;display:flex}.sheet-index__cell[data-astro-cid-cnj7jhfe]{min-height:56px;padding:0 var(--space-2);flex:auto;justify-content:center;align-items:center;display:flex}.sheet-index__cell[data-astro-cid-cnj7jhfe]+.sheet-index__cell[data-astro-cid-cnj7jhfe]{border-left:var(--border-thin)}@media (prefers-reduced-motion:reduce){.sheet-index__panel[data-astro-cid-cnj7jhfe]{transition:none}}@media (width<=767px){.sheet-header[data-astro-cid-cnj7jhfe]{flex-wrap:nowrap;position:relative}.sheet-header__mark[data-astro-cid-cnj7jhfe]{padding:var(--space-3)}.sheet-header__set[data-astro-cid-cnj7jhfe]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sheet-header__current[data-astro-cid-cnj7jhfe]{min-width:0;padding:var(--space-2) var(--space-3);font-size:var(--size-label);letter-spacing:.04em;flex-direction:column;flex:auto;justify-content:center;gap:3px;margin:0;display:flex}.sheet-header__current[data-astro-cid-cnj7jhfe]>span[data-astro-cid-cnj7jhfe]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sheet-index[data-astro-cid-cnj7jhfe]{padding:0 var(--space-2);border-left:var(--border-thin);font-size:var(--size-label);letter-spacing:.04em;flex:none;align-items:center;margin-left:auto;display:flex}.sheet-header__tabs[data-astro-cid-cnj7jhfe],.sheet-header__utils[data-astro-cid-cnj7jhfe]{display:none}}.title-block[data-astro-cid-5kyhikxs]{border-top:var(--border-thin);font-family:var(--font-mono);justify-content:flex-end;font-size:11px;display:flex}.title-block__grid[data-astro-cid-5kyhikxs]{grid-template-columns:repeat(4,minmax(0,1fr));width:calc(100% + 1px);max-width:761px;margin:-1px 0 0 -1px;display:grid}.title-block__cell[data-astro-cid-5kyhikxs]{gap:var(--space-1);border-top:var(--border-thin);border-left:var(--border-thin);flex-direction:column;padding:10px 14px;display:flex}.title-block__cell--project[data-astro-cid-5kyhikxs]{grid-column:span 2}dt[data-astro-cid-5kyhikxs]{color:var(--color-muted);letter-spacing:.1em;font-size:9px}dd[data-astro-cid-5kyhikxs]{color:var(--color-ink);margin:0}.title-block__project[data-astro-cid-5kyhikxs]{font-family:var(--font-display);font-size:16px;font-weight:var(--font-display-weight);font-stretch:112%}.title-block__links[data-astro-cid-5kyhikxs]{column-gap:var(--space-3);flex-wrap:wrap;display:flex}.title-block__links[data-astro-cid-5kyhikxs] a[data-astro-cid-5kyhikxs]{min-height:24px;color:var(--color-line);align-items:center;gap:.4ch;text-decoration:none;display:inline-flex}.title-block__links[data-astro-cid-5kyhikxs] a[data-astro-cid-5kyhikxs]:hover{color:var(--color-redline)}@media (width<=767px){.title-block__grid[data-astro-cid-5kyhikxs]{grid-template-columns:repeat(2,minmax(0,1fr))}}:root{color-scheme:light;--color-desk:#e9e5da;--color-paper:#f4f1e8;--color-paper-raised:#f4f1e8eb;--color-ink:#18233a;--color-ink-on-fill:#f4f1e8;--color-text-2:#3a4458;--color-muted:#5b6372;--color-line:#1f3f86;--color-rule:#18233a40;--color-grid-major:#1f3f860f;--color-grid-minor:#1f3f8609;--color-fill-1:#e4e9f3;--color-fill-2:#c9d5ec;--color-fill-3:#dce4f2;--color-redline:#b63a26;--color-redline-tint:#c8402a0a;--color-focus:#18233a;--font-display:Archivo, "Arial Narrow", sans-serif;--font-display-weight:850;--font-display-stretch:118%;--font-display-letter-spacing:-.03em;--font-display-transform:uppercase;--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--size-display-xl:clamp(56px, 9vw, 112px);--size-display-l:clamp(44px, 6vw, 72px);--size-display-m:clamp(26px, 3vw, 34px);--size-display-s:clamp(20px, 2vw, 28px);--size-lead:17px;--size-body:16px;--size-body-line-height:1.65;--size-small:14px;--size-label:12px;--size-label-letter-spacing:.12em;--size-label-transform:uppercase;--size-code:12px;--size-micro:10px;--size-micro-letter-spacing:.1em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--space-8:48px;--space-9:56px;--space-10:72px;--sheet-max-width:1320px;--sheet-outer-padding:32px 24px;--sheet-outer-padding-phone:12px 8px;--sheet-frame-outer:2px;--sheet-frame-gap:10px;--sheet-frame-inner:1px;--sheet-content-padding:56px;--sheet-content-padding-phone:24px;--sheet-grid-minor:16px;--sheet-grid-major:80px;--border-strong:2px solid var(--color-ink);--border-normal:1.5px solid var(--color-ink);--border-thin:1px solid var(--color-ink);--border-dashed-note:1.5px dashed var(--color-redline);--border-box:1.5px solid var(--color-line);--radius-all:0;--shadow-lift:6px 6px 0 var(--color-ink);--shadow-plate:7px 7px 0 var(--color-ink);--motion-ease-plot:cubic-bezier(.7, 0, .2, 1);--motion-ease-out:cubic-bezier(.2, .7, .1, 1);--motion-ease-pop:cubic-bezier(.34, 1.7, .5, 1);--motion-fast:.15s;--motion-normal:.25s;--motion-draw:.6s;--motion-wipe:.8s;--breakpoint-phone-max:767px;--breakpoint-tablet-min:768px;--breakpoint-tablet-max:1023px;--breakpoint-desktop-min:1024px}[data-theme=blueprint]{color-scheme:dark;--color-desk:#0a1428;--color-paper:#10264a;--color-paper-raised:#10264aeb;--color-ink:#e6eefa;--color-ink-on-fill:#10264a;--color-text-2:#c2d0e6;--color-muted:#93a7c7;--color-line:#9dc1f5;--color-rule:#e6eefa38;--color-grid-major:#9dc1f51a;--color-grid-minor:#9dc1f50d;--color-fill-1:#1a3563;--color-fill-2:#24467e;--color-fill-3:#1e3c6e;--color-redline:#ff8a6b;--color-redline-tint:#ff8a6b14;--color-focus:#e6eefa}[data-theme=paper]{color-scheme:light;--color-desk:#e9e5da;--color-paper:#f4f1e8;--color-paper-raised:#f4f1e8eb;--color-ink:#18233a;--color-ink-on-fill:#f4f1e8;--color-text-2:#3a4458;--color-muted:#5b6372;--color-line:#1f3f86;--color-rule:#18233a40;--color-grid-major:#1f3f860f;--color-grid-minor:#1f3f8609;--color-fill-1:#e4e9f3;--color-fill-2:#c9d5ec;--color-fill-3:#dce4f2;--color-redline:#b63a26;--color-redline-tint:#c8402a0a;--color-focus:#18233a}[data-theme]{--border-strong:2px solid var(--color-ink);--border-normal:1.5px solid var(--color-ink);--border-thin:1px solid var(--color-ink);--border-dashed-note:1.5px dashed var(--color-redline);--border-box:1.5px solid var(--color-line);--shadow-lift:6px 6px 0 var(--color-ink);--shadow-plate:7px 7px 0 var(--color-ink)}@media (prefers-color-scheme:dark){:root:not([data-theme=paper]){color-scheme:dark;--color-desk:#0a1428;--color-paper:#10264a;--color-paper-raised:#10264aeb;--color-ink:#e6eefa;--color-ink-on-fill:#10264a;--color-text-2:#c2d0e6;--color-muted:#93a7c7;--color-line:#9dc1f5;--color-rule:#e6eefa38;--color-grid-major:#9dc1f51a;--color-grid-minor:#9dc1f50d;--color-fill-1:#1a3563;--color-fill-2:#24467e;--color-fill-3:#1e3c6e;--color-redline:#ff8a6b;--color-redline-tint:#ff8a6b14;--color-focus:#e6eefa}}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/fonts/archivo-latin-wdth-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-600-normal.woff2)format("woff2")}@property --reveal-delay{syntax:"*";inherits:false}@property --reveal-duration{syntax:"*";inherits:false}@media (prefers-reduced-motion:no-preference){.js [data-reveal]:not([data-reveal=cards],[data-reveal=route],.is-revealed),.js [data-reveal=cards]:not(.is-revealed)>*{opacity:0}.js [data-reveal].is-revealed:not([data-reveal=cards]),.js [data-reveal=cards].is-revealed>*{animation-delay:var(--reveal-delay,0s);animation-fill-mode:backwards}.js span[data-reveal]{display:inline-block}.js :is([data-reveal=ink],[data-reveal=row]).is-revealed{animation-name:reveal-ink;animation-duration:var(--reveal-duration,.5s);animation-timing-function:var(--motion-ease-out)}html.js [data-reveal=row]:not(:last-child){border-bottom-color:#0000;position:relative}html.js [data-reveal=row]:not(:last-child):after{background:var(--color-rule);content:"";height:1px;position:absolute;inset:auto 0 -1px}.js [data-reveal=row].is-revealed:after{animation:.85s linear backwards reveal-rule;animation-delay:inherit}.js [data-reveal=rise].is-revealed{animation-name:reveal-rise;animation-duration:var(--reveal-duration,.7s);animation-timing-function:var(--motion-ease-out)}.js [data-reveal=wipe].is-revealed{animation-name:reveal-wipe;animation-duration:var(--reveal-duration,var(--motion-wipe));animation-timing-function:var(--motion-ease-plot)}.js [data-reveal=stamp].is-revealed{animation-name:reveal-stamp;animation-duration:var(--reveal-duration,.38s);animation-timing-function:cubic-bezier(.2,.9,.25,1.15)}.js [data-reveal=draw].is-revealed{animation-name:reveal-draw;animation-duration:var(--reveal-duration,var(--motion-draw));animation-timing-function:var(--motion-ease-plot)}.js :is(path,line,polyline,polygon,circle,ellipse,rect)[data-reveal=draw].is-revealed{animation-name:reveal-stroke}.js [data-reveal=figure].is-revealed{animation-name:reveal-fade;animation-duration:var(--reveal-duration,.4s);animation-timing-function:var(--motion-ease-out)}.js [data-reveal=figure].is-revealed [data-flow]{animation:reveal-wipe .3s var(--motion-ease-plot) var(--reveal-delay,0s) backwards}.js [data-reveal=route].is-revealed:after{animation:route-travel .9s linear var(--reveal-delay,0s)}.js [data-reveal=cards].is-revealed>*{animation-name:reveal-card;animation-duration:var(--reveal-duration,.7s);animation-timing-function:var(--motion-ease-out)}}@keyframes reveal-fade{0%{opacity:0}}@keyframes reveal-ink{0%{opacity:0;transform:translateY(8px)}}@keyframes reveal-rise{0%{opacity:0;transform:translateY(14px)}}@keyframes reveal-card{0%{opacity:0;transform:translateY(16px)}}@keyframes reveal-wipe{0%{clip-path:var(--reveal-clip,inset(0 100% 0 0))}to{clip-path:inset(0)}}@keyframes reveal-stamp{0%{opacity:0;transform:rotate(-6deg)scale(1.25)}}@keyframes reveal-draw{0%{transform:var(--reveal-from,scaleX(0));transform-origin:var(--reveal-origin,left center)}to{transform-origin:var(--reveal-origin,left center)}}@keyframes route-travel{0%{opacity:1;transform:translate(0)}to{opacity:1;transform:translate(100%)}}@keyframes reveal-rule{0%,29%{transform-origin:0;animation-timing-function:var(--motion-ease-plot);transform:scaleX(0)}to{transform-origin:0}}@keyframes reveal-stroke{0%{stroke-dasharray:1;stroke-dashoffset:1px}to{stroke-dasharray:1;stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}@media (prefers-reduced-motion:no-preference){.js.first-view .sheet{background-image:none;border-color:#0000}.js.first-view .sheet__plot{inset:calc(-1 * var(--sheet-frame-outer));pointer-events:none;display:block;position:absolute}.js.first-view .sheet__plot-grid{inset:var(--sheet-frame-outer);background-image:linear-gradient(var(--color-grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--color-grid-major) 1px, transparent 1px), linear-gradient(var(--color-grid-minor) 1px, transparent 1px), linear-gradient(90deg, var(--color-grid-minor) 1px, transparent 1px);background-size:var(--sheet-grid-major) var(--sheet-grid-major), var(--sheet-grid-major) var(--sheet-grid-major), var(--sheet-grid-minor) var(--sheet-grid-minor), var(--sheet-grid-minor) var(--sheet-grid-minor);animation:.9s .15s backwards reveal-fade;position:absolute}.js.first-view .sheet__plot-edge{background:var(--color-ink);animation-name:reveal-draw;animation-timing-function:var(--motion-ease-plot);animation-fill-mode:backwards;position:absolute}.js.first-view .sheet__plot-edge--top{height:var(--sheet-frame-outer);animation-duration:.7s;inset:0 0 auto}.js.first-view .sheet__plot-edge--bottom{height:var(--sheet-frame-outer);--reveal-origin:right center;animation-duration:.7s;animation-delay:.2s;inset:auto 0 0}.js.first-view .sheet__plot-edge--right{width:var(--sheet-frame-outer);--reveal-from:scaleY(0);--reveal-origin:center top;animation-duration:.5s;animation-delay:.55s;inset:0 0 0 auto}.js.first-view .sheet__plot-edge--left{width:var(--sheet-frame-outer);--reveal-from:scaleY(0);--reveal-origin:center bottom;animation-duration:.5s;animation-delay:.75s;inset:0 auto 0 0}.js.first-view .sheet-header__mark{animation:plot-drop .45s var(--motion-ease-out) calc(.5s + var(--plot-cell,0) * 60ms) backwards}@media (width>=768px){.js.first-view :is(.sheet-tab,.sheet-header__utils){animation:plot-drop .45s var(--motion-ease-out) calc(.5s + var(--plot-cell,0) * 60ms) backwards}.js.first-view .sheet-tab:first-child{--plot-cell:1}.js.first-view .sheet-tab:nth-child(2){--plot-cell:2}.js.first-view .sheet-tab:nth-child(3){--plot-cell:3}.js.first-view .sheet-tab:nth-child(4){--plot-cell:4}.js.first-view .sheet-tab:nth-child(5){--plot-cell:5}.js.first-view .sheet-header__utils{--plot-cell:6}}@media (width<=767px){.js.first-view :is(.sheet-header__current,.sheet-index){animation:plot-drop .45s var(--motion-ease-out) calc(.5s + var(--plot-cell,0) * 60ms) backwards}.js.first-view .sheet-header__current{--plot-cell:1}.js.first-view .sheet-index{--plot-cell:2}}.js.first-view .sheet-tab__fill{animation:reveal-draw .5s var(--motion-ease-plot) .9s backwards}.js.first-view [data-plot=label]{animation:reveal-rise .5s var(--motion-ease-out) .35s backwards}.js.first-view [data-plot=heading]{animation:reveal-wipe var(--motion-wipe) var(--motion-ease-plot) .4s backwards}.js.first-view [data-plot=hero]{animation:reveal-rise .6s var(--motion-ease-out) .6s backwards}.js.first-view [data-plot=note]{animation:.38s cubic-bezier(.2,.9,.25,1.15) .8s backwards reveal-stamp}}@keyframes plot-drop{0%{opacity:0;transform:translateY(-8px)}}@keyframes plot-pop{0%{transform:scale(0)}}@keyframes plot-slide{0%{opacity:0;transform:translate(-6px)}}.sheet{view-transition-name:sheet}.sheet-header{z-index:1;view-transition-name:sheet-header;position:relative}.sheet-tab__fill{view-transition-name:active-tab}#main{view-transition-name:sheet-content}.title-block{view-transition-name:title-block}[data-swap=scrolled] :is(.sheet,.sheet-header,.sheet-tab__fill,#main,.title-block){view-transition-name:none}::view-transition-group(sheet),::view-transition-group(sheet-header),::view-transition-group(sheet-content),::view-transition-group(title-block){animation:none}::view-transition-old(sheet){opacity:0;animation:none}::view-transition-new(sheet){animation:none}::view-transition-group(sheet-header){z-index:1}::view-transition-old(sheet-header),::view-transition-old(title-block){animation:sheet-fade-out .32s var(--motion-ease-out) both}::view-transition-new(sheet-header),::view-transition-new(title-block),::view-transition-new(sheet):only-child,::view-transition-new(active-tab):only-child{animation:sheet-fade-in .32s var(--motion-ease-out) both}::view-transition-group(active-tab){animation-duration:.32s;animation-timing-function:var(--motion-ease-plot)}::view-transition-old(sheet-content),::view-transition-old(*.project-morph):only-child{animation:sheet-content-leave .18s var(--motion-ease-plot) both}::view-transition-new(sheet-content),::view-transition-new(*.project-morph):only-child{animation:sheet-content-enter .32s var(--motion-ease-out) both}::view-transition-group(*.project-morph){animation-duration:.32s;animation-timing-function:var(--motion-ease-out)}@keyframes sheet-fade-out{to{opacity:0}}@keyframes sheet-fade-in{0%{opacity:0}}@keyframes sheet-content-leave{to{opacity:0;transform:translateY(-24px)}}@keyframes sheet-content-enter{0%{opacity:0;transform:translateY(24px)}}[data-theme-switching] *{view-transition-name:none!important}html[data-theme-switching]::view-transition-old(root){mix-blend-mode:normal;animation:none}html[data-theme-switching]::view-transition-new(root){animation:theme-reveal .5s var(--motion-ease-plot) both;mix-blend-mode:normal}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--theme-x) var(--theme-y))}to{clip-path:circle(var(--theme-r) at var(--theme-x) var(--theme-y))}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--color-desk);color:var(--color-ink);font-family:var(--font-body);font-size:var(--size-body);line-height:var(--size-body-line-height);margin:0}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sheet-panel{padding:var(--sheet-content-padding)}.sheet-panel+.sheet-panel{border-top:var(--border-thin)}@media (width<=767px){.sheet-panel{padding:var(--sheet-content-padding-phone)}}.skip-link[data-astro-cid-yabvvobi]{top:var(--space-2);left:var(--space-2);z-index:10;min-height:44px;padding:var(--space-3) var(--space-5);background:var(--color-ink);color:var(--color-ink-on-fill);font-family:var(--font-mono);font-size:var(--size-small);letter-spacing:.04em;transform:translateY(calc(-100% - var(--space-4)));align-items:center;text-decoration:none;display:inline-flex;position:absolute}.skip-link[data-astro-cid-yabvvobi]:focus{transform:none}main[data-astro-cid-yabvvobi]:focus{outline:none}.display-heading[data-astro-cid-3ts63mlb]{font-family:var(--font-display);font-weight:var(--font-display-weight);font-stretch:var(--font-display-stretch);letter-spacing:var(--font-display-letter-spacing);text-transform:var(--font-display-transform);overflow-wrap:break-word;margin:0;line-height:.92}.display-heading--xl[data-astro-cid-3ts63mlb]{font-size:var(--size-display-xl);line-height:.88}.display-heading--l[data-astro-cid-3ts63mlb]{font-size:var(--size-display-l);line-height:.9}.display-heading--m[data-astro-cid-3ts63mlb]{font-size:var(--size-display-m)}.display-heading--s[data-astro-cid-3ts63mlb]{font-size:var(--size-display-s)}.sheet-label[data-astro-cid-i6v3435d]{--reveal-duration:.4s;color:var(--color-line);font-family:var(--font-mono);font-size:var(--size-label);letter-spacing:var(--size-label-letter-spacing);text-transform:var(--size-label-transform);margin:0}
