.AsciiBackground_ascii__XJr6k{position:absolute;top:var(--tabbar-height);left:var(--gutter-width);right:0;overflow:hidden;font-family:var(--font-mono);font-size:12px;line-height:var(--line-height);color:var(--ascii);-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;z-index:0}.EditorChrome_frame__MNG0o{position:relative;min-height:100vh;padding-top:var(--tabbar-height);transition:margin-left .5s cubic-bezier(.22,1,.36,1)}[data-sidebar] .EditorChrome_frame__MNG0o{margin-left:var(--sidebar-width)}.EditorChrome_tabbar__UBRLx{position:fixed;top:0;left:0;right:0;height:var(--tabbar-height);display:flex;align-items:stretch;justify-content:space-between;background:var(--bg);border-bottom:1px solid var(--chrome-border);z-index:20;transition:left .5s cubic-bezier(.22,1,.36,1)}[data-sidebar] .EditorChrome_tabbar__UBRLx{left:var(--sidebar-width)}.EditorChrome_controls__Pvusc{display:flex;align-items:center;padding-right:10px}.EditorChrome_tabs__85INX{display:flex;align-items:stretch}.EditorChrome_tab__4WEoe{display:flex;align-items:center;padding:0 14px;color:var(--dim);font-size:11px;letter-spacing:.02em}.EditorChrome_tab__4WEoe.EditorChrome_active__69hhk{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent-strong)}.EditorChrome_content__z58hw{position:relative;z-index:1;margin-left:var(--gutter-width);padding:0 28px 0 24px}.page_screen__BlQW3{display:flex;flex-direction:column;min-height:calc(100vh - var(--tabbar-height))}.page_bottom__dK6lq{margin-top:auto}.page_hero__7KFOs{margin-top:calc(var(--line-height) * 2);margin-left:8px;width:-moz-fit-content;width:fit-content;background:var(--bg);border:1px dashed var(--ascii);padding:calc(var(--line-height) * 1) 24px calc(var(--line-height) * 1.5) 16px}.page_title__po7na{font-family:var(--font-display);font-weight:600;font-size:52px;line-height:calc(var(--line-height) * 4);color:var(--dim);letter-spacing:-.01em}.page_intro__YeqBg span,.page_title__po7na span{display:block;width:-moz-fit-content;width:fit-content;background:var(--bg);padding-right:10px}.page_intro__YeqBg{margin-top:26px;color:var(--text)}.page_display__kuy98{padding-bottom:3vh;padding-right:3vw;font-family:var(--font-display);font-weight:600;font-size:clamp(64px,min(23vw,30vh),360px);line-height:.82;color:var(--dim);text-align:right;letter-spacing:-.03em;white-space:nowrap;overflow:visible}.page_display__kuy98 span{display:block;width:-moz-fit-content;width:fit-content;margin-left:auto;background:var(--bg)}.page_contact__1qlCw{padding-top:22vh;margin-left:30%;max-width:560px}.page_contact__1qlCw>*{background:var(--bg);width:-moz-fit-content;width:fit-content;padding-right:14px}.page_comment__qIwWg{color:var(--faint);margin-bottom:14px}.page_heading__EOSLa{font-family:var(--font-display);font-weight:600;font-size:34px;color:var(--bright);line-height:1.13}.page_text__EKXEq{margin-top:20px;white-space:pre-line}.page_channels__zy3Ox{margin-top:28px;display:flex;flex-direction:column;gap:12px}.page_channelRow__PKYtP{display:block}.page_channelLabel__R8Znx{color:var(--bright);font-weight:700}.page_channelValue__QzDQy{margin:2px 0 0}.page_channelValue__QzDQy a{color:var(--accent);font-weight:500}.page_channelValue__QzDQy a:hover{color:var(--bright)}.page_header__SFxQk{padding-top:34px}.page_title__rhSWn{font-family:var(--font-display);font-weight:600;font-size:34px;line-height:1.13;color:var(--bright);margin-left:40%}.page_title__rhSWn span{display:block;width:-moz-fit-content;width:fit-content;background:var(--bg);padding-right:10px}.page_subtitle__ixb02{margin-top:16px;margin-left:40%;color:var(--dim)}.page_subtitle__ixb02 span{display:inline-block;margin-right:1.4em;background:var(--bg);padding-right:6px}.page_columns__WjXmw{display:flex;justify-content:space-between;gap:40px;margin-top:20vh}.page_main__bg5VR{max-width:620px;margin-left:18%;background:var(--bg);padding:4px 14px 8px 0}.page_clientDesc__3u9Hh{color:var(--text)}.page_role__L4uNC{margin-top:34px}.page_roleHeading__pj5CP{font-size:12px;font-weight:700;color:var(--bright);margin-bottom:10px}.page_roleList__OY0Zl{list-style:none}.page_roleList__OY0Zl li{padding:3px 0}.page_aside__vWggO{min-width:180px;padding-top:4px;background:var(--bg);padding-left:10px;padding-right:10px;height:-moz-fit-content;height:fit-content}.page_next__qQiCF{display:block;text-align:right;background:var(--bg);width:-moz-fit-content;width:fit-content;margin:18vh 0 16vh auto;padding:6px 0 6px 14px}.page_nextLabel__Y_3BF{display:block;color:var(--faint)}.page_nextTitle__T6f11{display:block;margin-top:6px;font-family:var(--font-display);font-weight:600;font-size:26px;color:var(--bright)}.page_next__qQiCF:hover .page_nextTitle__T6f11{color:var(--accent)}.page_header__R9jvq{width:min(100%,620px);margin-inline:auto;padding:34px 14px 0}.page_title__EYZ6s{font-family:var(--font-display);font-weight:600;font-size:34px;line-height:1.13;color:var(--bright)}.page_title__EYZ6s span{display:block;width:-moz-fit-content;width:fit-content;background:var(--bg);padding-right:10px}.page_subtitle__zHJkI{margin-top:16px;color:var(--dim)}.page_subtitle__zHJkI span{display:inline-block;margin-right:1.4em;background:var(--bg);padding-right:6px}.page_lab__Ns06L{margin-top:8px;color:var(--faint);width:-moz-fit-content;width:fit-content;background:var(--bg);padding-right:10px}.page_sections__wL_fY{margin-top:14vh;display:flex;flex-direction:column;gap:12vh;padding-bottom:16vh}.page_section__idzXF{width:min(100%,620px);margin-inline:auto;background:var(--bg);padding:4px 14px 8px}.page_comment__SmF_R{color:var(--faint);margin-bottom:10px}.page_sectionHeading__xINQG{font-family:var(--font-display);font-weight:600;font-size:22px;color:var(--bright);margin-bottom:14px}.page_text__lzkVX{margin-bottom:12px}.page_highlight__8bDOl{margin:16px 0;padding-left:14px;border-left:2px solid var(--accent-strong);color:var(--bright);font-weight:500}.page_bullets__eXiqL{list-style:none;margin-top:4px}.page_bullets__eXiqL li{padding:3px 0}.page_techGrid__ugknW{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:18px;gap:18px}.page_tech__UhXZe{border:1px solid var(--chrome-border);padding:14px}.page_techName__fxESt{font-weight:700;color:var(--bright);margin-bottom:6px}.page_techName__fxESt a{color:var(--accent)}.page_techName__fxESt a:hover{color:var(--bright)}.page_techDescription__VJzDM{color:var(--dim)}.page_affiliation__cvZm7{color:var(--accent)}.page_affiliation__cvZm7:hover{color:var(--bright)}.IntroReveal_reveal__L2EOI{position:relative;-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0);animation:IntroReveal_wipe__E0rWQ .9s steps(14) forwards;animation-delay:var(--reveal-delay,0s)}@keyframes IntroReveal_wipe__E0rWQ{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}.IntroReveal_block__VEX7R{position:absolute;background:var(--dim);opacity:0;pointer-events:none}.IntroReveal_blockA__p8mRq{top:18%;left:34%;width:42px;height:12px;animation:IntroReveal_glitch__6HsJW .7s steps(3) forwards;animation-delay:calc(var(--reveal-delay, 0s) + .12s)}.IntroReveal_blockB__IF6I2{top:58%;left:58%;width:26px;height:22px;animation:IntroReveal_glitch__6HsJW .6s steps(4) forwards;animation-delay:calc(var(--reveal-delay, 0s) + .32s)}.IntroReveal_blockC__iw1L0{top:40%;left:12%;width:60px;height:8px;animation:IntroReveal_glitch__6HsJW .55s steps(3) forwards;animation-delay:calc(var(--reveal-delay, 0s) + .22s)}@keyframes IntroReveal_glitch__6HsJW{0%{opacity:.9}60%{opacity:.5}to{opacity:0}}.LineGutter_gutter__4wjTy{position:absolute;top:var(--tabbar-height);left:0;width:var(--gutter-width);padding:0 6px 0 8px;font-family:var(--font-mono);font-size:10px;line-height:var(--line-height);color:var(--gutter);text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;z-index:2}.ProjectMeta_meta__6CABk{display:flex;flex-direction:column;gap:14px}.ProjectMeta_row___z6xb{display:block}.ProjectMeta_heading__VkmuI{color:var(--bright);font-weight:700}.ProjectMeta_value__a7vHc{margin:2px 0 0}.ProjectMeta_value__a7vHc a{color:var(--accent)}.ProjectMeta_value__a7vHc a:hover{color:var(--bright)}.SidebarPanel_toggle__5C4pt{background:none;border:none;color:var(--dim);cursor:pointer;display:flex;align-items:center;padding:4px}.SidebarPanel_toggle__5C4pt:hover{color:var(--bright)}.SidebarPanel_panel__tpkXQ{position:fixed;top:0;bottom:0;left:0;width:var(--sidebar-width);display:flex;flex-direction:column;background:var(--bg);border-right:1px solid var(--chrome-border);transform:translateX(-100%);transition:transform .5s cubic-bezier(.22,1,.36,1);z-index:30;overflow:hidden}.SidebarPanel_panel__tpkXQ[data-open]{transform:translateX(0)}.SidebarPanel_header__zvSh1{justify-content:space-between;height:var(--tabbar-height);border-bottom:1px solid var(--chrome-border);flex-shrink:0}.SidebarPanel_header__zvSh1,.SidebarPanel_tabs__pbvls{display:flex;align-items:stretch}.SidebarPanel_tab__y5icE{background:none;border:none;cursor:pointer;padding:0 14px;font-family:var(--font-mono);font-size:11px;color:var(--dim)}.SidebarPanel_tabActive__4vk1h{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent-strong)}.SidebarPanel_close__HL6vs{background:none;border:none;color:var(--dim);cursor:pointer;padding:0 10px}.SidebarPanel_close__HL6vs:hover{color:var(--bright)}.SidebarPanel_content__Ce_OE{position:relative;flex:1 1;overflow-y:auto;overflow-x:hidden;padding:10px 12px}.SidebarPanel_ghost__iDdPF{position:absolute;top:0;right:0;height:100%;font-family:var(--font-display);font-weight:600;font-size:110px;line-height:.9;letter-spacing:-.03em;color:var(--ascii);opacity:.55;white-space:nowrap;writing-mode:vertical-rl;transform:rotate(180deg);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.SidebarPanel_code__9F3br{position:relative;z-index:1;font-family:var(--font-mono);font-size:12px;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:var(--text)}.SidebarPanel_comment__M09ij{color:var(--faint)}.SidebarPanel_tag__cp4XZ{color:var(--accent)}.SidebarPanel_attribute__qxGlh{color:var(--dim)}.SidebarPanel_value__UBaL5,[data-theme=light] .SidebarPanel_value__UBaL5{color:var(--accent-strong)}.SidebarPanel_text__gxaEM{color:var(--text)}.SidebarPanel_text__gxaEM a{color:var(--accent);text-decoration:underline}.ThemeToggle_controls__ytfdF{display:flex;align-items:center;padding-right:12px}.ThemeToggle_button__HZO_T{background:none;border:none;color:var(--dim);cursor:pointer;display:flex;align-items:center;padding:4px}.ThemeToggle_button__HZO_T:hover{color:var(--bright)}