.ProjectDial_dial__SAUo0{display:block;width:100%;height:auto;overflow:visible}.ProjectDial_plinthShadow__ApjSp{filter:drop-shadow(-22px 30px 42px var(--shadow-object))}.ProjectDial_discShadow__cvKVr{filter:drop-shadow(-8px 14px 18px rgba(0,0,0,.42))}.ProjectDial_armShadow__KoVAZ{filter:drop-shadow(-5px 10px 7px rgba(0,0,0,.32))}.ProjectDial_swing__CdgBM,.ProjectDial_turning__9pDyY{transition:transform var(--turn) var(--ease)}.ProjectDial_idle__7mNMp{animation:ProjectDial_sway__zYY_3 6s ease-in-out infinite}@keyframes ProjectDial_sway__zYY_3{0%,to{transform:rotate(-.25deg)}50%{transform:rotate(.25deg)}}.ProjectDial_groove__VnEAl{fill:none;stroke:#fff;stroke-opacity:.09}.ProjectDial_segmentActive__jsBey,.ProjectDial_segment__vxbUs{transition:fill var(--quick) linear}.ProjectDial_segment__vxbUs{fill:var(--segment)}.ProjectDial_segmentActive__jsBey{fill:var(--accent-strong)}.ProjectDial_selectable__ikdP7{cursor:pointer}.ProjectDial_selectable__ikdP7:hover .ProjectDial_segment__vxbUs{fill:#3b3b3b}.ProjectDial_labelActive__bAHht,.ProjectDial_label__Li3bq{font-family:var(--font-mono),monospace;font-size:15px;font-weight:500;dominant-baseline:central;text-anchor:middle;pointer-events:none}.ProjectDial_label__Li3bq{fill:var(--segment-ink)}.ProjectDial_labelActive__bAHht{fill:var(--on-accent)}.ProjectDial_hubNumber__xMq76,.ProjectDial_hubTotal__s9j_q{fill:var(--on-accent);font-family:var(--font-mono),monospace;text-anchor:middle}.ProjectDial_hubNumber__xMq76{font-size:44px;font-weight:500}.ProjectDial_hubTotal__s9j_q{font-size:13px}.ProjectDial_screw__66GMW circle{fill:var(--plinth);stroke:var(--ink-soft)}.ProjectDial_screw__66GMW path{stroke:var(--ink-soft);stroke-width:1.5}.ProjectDial_tick__hj6kI{stroke:var(--plinth-edge);stroke-width:2}.ProjectDial_readout__13gWw rect{fill:var(--device)}.ProjectDial_readout__13gWw text{fill:var(--device-ink);font-family:var(--font-mono),monospace;font-size:16px}.ProjectDial_led__jtjZy{fill:var(--accent-strong);animation:ProjectDial_glow__T_Ers 3s ease-in-out infinite}@keyframes ProjectDial_glow__T_Ers{50%{opacity:.45}}.ProjectHero_hero__CAwX2{--diameter:min(80vh,58vw);position:relative;min-height:100vh;min-height:100svh;overflow:hidden}@supports (height:1svh){.ProjectHero_hero__CAwX2{--diameter:min(80svh,58vw)}}.ProjectHero_line__wQqAa{position:absolute;top:var(--space-5);left:50%;z-index:3;width:min(480px,44vw);font-size:var(--text-sm);line-height:1.3;text-align:center;transform:translateX(-50%)}.ProjectHero_line__wQqAa span,.ProjectHero_line__wQqAa strong{display:block}.ProjectHero_line__wQqAa strong{font-weight:500}.ProjectHero_line__wQqAa span{color:var(--ink-soft)}.ProjectHero_stage__Iq6Ku{position:absolute;top:50%;left:50%;z-index:1;width:var(--diameter);height:var(--diameter);transform:translate(-50%,-50%)}.ProjectHero_circle__fsDvQ{position:absolute;inset:0;border-radius:50%;background:var(--accent)}.ProjectHero_object__DKTJl{position:absolute;top:50%;left:50%;width:84%;transform:translate(-50%,-50%)}.ProjectHero_intro__Vh13K{position:absolute;bottom:var(--space-5);left:var(--gutter);z-index:2;width:min(290px,21vw);font-size:var(--text-sm);line-height:1.4}.ProjectHero_intro__Vh13K h1,.ProjectHero_intro__Vh13K h2{font-size:var(--text-md);font-weight:500;line-height:1.25}.ProjectHero_intro__Vh13K h2,.ProjectHero_intro__Vh13K p{margin-bottom:var(--space-2)}.ProjectHero_intro__Vh13K p{color:var(--ink-soft)}.ProjectHero_intro__Vh13K a,.ProjectHero_scroll__qRKUg{text-underline-offset:3px}.ProjectHero_scroll__qRKUg{left:50%;transform:translateX(-50%)}.ProjectHero_credit__KWdtT,.ProjectHero_scroll__qRKUg{position:absolute;bottom:var(--space-5);z-index:2;font-size:var(--text-sm)}.ProjectHero_credit__KWdtT{right:calc(var(--gutter) + 320px + var(--space-5))}.ProjectHero_device__uj67K{position:absolute;right:var(--gutter);bottom:var(--gutter);z-index:3;width:320px;padding:var(--space-2);border-radius:var(--radius-lg);background:var(--device);box-shadow:var(--shadow-soft);color:var(--device-ink);font-family:var(--font-mono),monospace;font-size:var(--text-xs)}.ProjectHero_device__uj67K :focus-visible{outline-color:var(--device-ink);outline-offset:1px}.ProjectHero_screen__HDRyS{padding:var(--space-3);border-radius:var(--radius-md);background:var(--device-screen)}.ProjectHero_nowLabel__6DNHO{color:var(--device-ink-soft)}.ProjectHero_nowTitle__E_W_3{min-height:2.6em;margin-bottom:var(--space-1);font-size:var(--text-sm);line-height:1.3}.ProjectHero_open__VBvzL{display:inline-block;padding:var(--space-1) 0;text-underline-offset:3px}.ProjectHero_controls__1spIB{display:none}.ProjectHero_list__bxPDB{max-height:44vh;margin-top:var(--space-2);overflow-y:auto}.ProjectHero_list__bxPDB button{display:flex;gap:var(--space-3);width:100%;padding:5px var(--space-3);border-radius:var(--radius-sm);color:var(--device-ink-soft);text-align:left;transition:color var(--quick) linear,background var(--quick) linear}.ProjectHero_list__bxPDB button:hover{color:var(--device-ink)}.ProjectHero_list__bxPDB button[aria-current=true]{background:var(--accent-strong);color:var(--on-accent)}.ProjectHero_itemTitle__L_tto{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.ProjectHero_visuallyHidden__outxP{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}@media (max-width:1100px){.ProjectHero_hero__CAwX2{--diameter:min(94vw,620px);display:flex;flex-direction:column;gap:var(--space-5);padding:84px var(--gutter) var(--space-5);overflow:hidden}.ProjectHero_credit__KWdtT,.ProjectHero_device__uj67K,.ProjectHero_intro__Vh13K,.ProjectHero_line__wQqAa,.ProjectHero_stage__Iq6Ku{position:relative;top:auto;right:auto;bottom:auto;left:auto;transform:none}.ProjectHero_line__wQqAa{width:100%;min-height:3.9em;text-align:left}.ProjectHero_stage__Iq6Ku{flex:none;align-self:center}.ProjectHero_intro__Vh13K{width:auto;max-width:var(--reading)}.ProjectHero_scroll__qRKUg{display:none}.ProjectHero_device__uj67K{width:100%;max-width:520px;align-self:center;font-size:var(--text-sm)}.ProjectHero_controls__1spIB{display:grid;grid-template-columns:44px 44px 1fr;grid-gap:var(--space-2);gap:var(--space-2);margin-top:var(--space-2)}.ProjectHero_controls__1spIB button{min-height:44px;border-radius:var(--radius-sm);background:var(--device-screen)}.ProjectHero_list__bxPDB{display:none;max-height:none}.ProjectHero_list__bxPDB[data-open=true]{display:block}.ProjectHero_list__bxPDB button{min-height:44px;align-items:center}.ProjectHero_open__VBvzL{min-height:44px;padding:var(--space-3) 0 var(--space-2)}.ProjectHero_credit__KWdtT{order:1}}.Chrome_logo__7_zSC{position:fixed;top:var(--space-4);left:var(--gutter);z-index:20;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-size:1.125rem;font-weight:700;line-height:1;text-decoration:none}.Chrome_visuallyHidden__RP4Jf{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}.Chrome_center__zDrgl{position:absolute;top:var(--space-5);left:50%;z-index:3;max-width:44vw;font-size:var(--text-sm);text-align:center;transform:translateX(-50%)}@media (max-width:900px){.Chrome_center__zDrgl{top:28px;left:calc(var(--gutter) + 56px);max-width:none;text-align:left;transform:none}}.Chrome_actions__4HzJs{position:fixed;top:var(--space-4);right:var(--gutter);z-index:20;display:flex;align-items:center;gap:var(--space-2)}.Chrome_menuButton__ZHaVt,.Chrome_resume__FdVOz{height:44px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.Chrome_resume__FdVOz{display:inline-flex;align-items:center;padding:0 var(--space-3);font-size:var(--text-sm);text-decoration:none}.Chrome_menuButton__ZHaVt{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:44px}.Chrome_menuButton__ZHaVt span{width:3px;height:3px;border-radius:50%;background:var(--ink)}.Chrome_overlay__wybS7{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;justify-content:center;gap:var(--space-6);padding:var(--space-7) var(--gutter);overflow-y:auto;background:var(--accent);color:var(--on-accent);-webkit-clip-path:circle(0 at calc(100% - 46px) 38px);clip-path:circle(0 at calc(100% - 46px) 38px);transition:visibility 0s linear .56s,-webkit-clip-path .56s var(--ease);transition:clip-path .56s var(--ease),visibility 0s linear .56s;transition:clip-path .56s var(--ease),visibility 0s linear .56s,-webkit-clip-path .56s var(--ease);visibility:hidden;pointer-events:none}.Chrome_overlay__wybS7[data-open=true]{-webkit-clip-path:circle(150vmax at calc(100% - 46px) 38px);clip-path:circle(150vmax at calc(100% - 46px) 38px);transition:-webkit-clip-path .56s var(--ease);transition:clip-path .56s var(--ease);transition:clip-path .56s var(--ease),-webkit-clip-path .56s var(--ease);visibility:visible;pointer-events:auto}.Chrome_overlay__wybS7 :focus-visible{outline-color:var(--on-accent)}.Chrome_close__DYtVQ{position:absolute;top:var(--space-4);right:var(--gutter);height:44px;padding:0 var(--space-3);border:1px solid;border-radius:var(--radius-md);font-size:var(--text-sm)}.Chrome_sections__R9cgk li{display:flex;align-items:baseline;gap:var(--space-4)}.Chrome_sections__R9cgk span{font-family:var(--font-mono),monospace;font-size:var(--text-sm)}.Chrome_sections__R9cgk a{font-size:var(--text-xl);font-weight:500;letter-spacing:-.03em;line-height:1.12;text-decoration:none}.Chrome_sections__R9cgk a:hover{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:6px}.Chrome_external__Sb0_p{display:flex;flex-wrap:wrap;gap:var(--space-5)}.Chrome_external__Sb0_p a{display:inline-block;padding:var(--space-2) 0;text-underline-offset:3px}.Layout_footer__ci1iK{padding:var(--space-5) var(--gutter);font-size:var(--text-sm)}.Sections_section___xaje{max-width:var(--content);margin:0 auto;padding:var(--space-8) var(--gutter) var(--space-7)}.Sections_title__wRrIq{margin-bottom:var(--space-6);font-size:var(--text-xl);font-weight:500;letter-spacing:-.04em;line-height:1}.Sections_title__wRrIq span{color:var(--accent)}.Sections_columns__Yv2Jf{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-gap:var(--space-7);gap:var(--space-7)}.Sections_prose__p_LvS{max-width:var(--reading)}.Sections_prose__p_LvS p{margin-bottom:1.1em}.Sections_links__TKrst{display:flex;flex-wrap:wrap;gap:var(--space-4);font-size:var(--text-sm)}.Sections_bullets__NJeE2 a,.Sections_links__TKrst a{text-underline-offset:3px}.Sections_skills___uBNN>div{padding:var(--space-3) 0;border-top:1px solid var(--line)}.Sections_skills___uBNN dt{margin-bottom:var(--space-1);font-size:var(--text-sm);font-weight:600}.Sections_skills___uBNN ul{display:flex;flex-wrap:wrap;gap:2px var(--space-3);color:var(--ink-soft);font-family:var(--font-mono),monospace;font-size:var(--text-xs)}.Sections_projects__KXKVE>li{display:grid;grid-template-columns:56px minmax(0,1fr) minmax(0,260px);grid-gap:var(--space-5);gap:var(--space-5);padding:var(--space-5) 0;border-top:1px solid var(--line)}.Sections_mono__1Gy2P,.Sections_number__lgDD9{font-family:var(--font-mono),monospace;font-size:var(--text-xs);line-height:1.7}.Sections_mono__1Gy2P{color:var(--ink-soft)}.Sections_experience__ORnVt h3,.Sections_projects__KXKVE h3{font-size:var(--text-lg);font-weight:500;letter-spacing:-.02em;line-height:1.2}.Sections_projects__KXKVE h3{margin-bottom:var(--space-2)}.Sections_projects__KXKVE h3 a{text-decoration:none}.Sections_projects__KXKVE h3 a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.Sections_projects__KXKVE>li p{max-width:var(--reading)}.Sections_projectLinks__0V7cW{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin-top:var(--space-2);font-size:var(--text-sm)}.Sections_projectLinks__0V7cW a{display:inline-block;padding:var(--space-1) 0;text-underline-offset:3px}.Sections_experience__ORnVt>li{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);grid-gap:var(--space-5);gap:var(--space-5);padding:var(--space-5) 0 var(--space-6);border-top:1px solid var(--line)}.Sections_meta__JiNfs{color:var(--ink-soft);font-family:var(--font-mono),monospace;font-size:var(--text-xs);line-height:1.7}.Sections_position__mnAR5{margin-bottom:var(--space-3);font-weight:500}.Sections_bullets__NJeE2{max-width:var(--reading);margin-bottom:var(--space-4)}.Sections_bullets__NJeE2 li{position:relative;margin-bottom:var(--space-2);padding-left:var(--space-4)}.Sections_bullets__NJeE2 li:before{content:"";position:absolute;top:.62em;left:0;width:7px;height:7px;border-radius:50%;background:var(--accent)}.Sections_contact__LcP0f{position:relative;display:grid;place-items:center;min-height:860px;padding:var(--space-7) var(--gutter);overflow:hidden;color:var(--on-accent)}.Sections_contact__LcP0f:before{content:"";position:absolute;top:50%;left:50%;width:max(760px,62vw);max-width:820px;aspect-ratio:1;border-radius:50%;background:var(--accent);transform:translate(-50%,-50%)}.Sections_contactBody__1_5ve{position:relative;max-width:480px;text-align:center}.Sections_contactBody__1_5ve .Sections_title__wRrIq{margin-bottom:var(--space-5)}.Sections_contactBody__1_5ve .Sections_title__wRrIq span{color:inherit}.Sections_contactBody__1_5ve p{margin-bottom:var(--space-4)}.Sections_contactBody__1_5ve a{text-underline-offset:3px}.Sections_contactBody__1_5ve :focus-visible{outline-color:var(--on-accent)}.Sections_email___Jr9i{display:inline-block;margin-bottom:var(--space-4);font-size:var(--text-lg);font-weight:500;overflow-wrap:anywhere}.Sections_visuallyHidden__yfJ_0{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap}@media (max-width:900px){.Sections_section___xaje{padding-top:var(--space-7)}.Sections_columns__Yv2Jf{grid-template-columns:minmax(0,1fr);gap:var(--space-6)}.Sections_projects__KXKVE>li{grid-template-columns:36px minmax(0,1fr);gap:var(--space-2) var(--space-3)}.Sections_projects__KXKVE>li>.Sections_mono__1Gy2P{grid-column:2}.Sections_experience__ORnVt>li{grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.Sections_contact__LcP0f{min-height:660px}.Sections_contact__LcP0f:before{width:720px}}