.Sculpture-module__JMyNKW__root{isolation:isolate;color:#254c3d;background:#f1eee5;width:100%;min-width:0;height:100%;position:relative;overflow:hidden}.Sculpture-module__JMyNKW__root[data-theme=dark]{color:#deded0;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#151d1a}.Sculpture-module__JMyNKW__canvas{opacity:0;transition:opacity .24s ease-out;position:absolute;inset:0}.Sculpture-module__JMyNKW__canvas canvas{touch-action:pan-y pinch-zoom;outline:none;width:100%;height:100%;display:block}.Sculpture-module__JMyNKW__canvas[data-ready=false]{visibility:hidden;pointer-events:none;transition:none}.Sculpture-module__JMyNKW__canvas[data-ready=true]{opacity:1}.Sculpture-module__JMyNKW__loading{height:var(--sculpture-composition-height,100%);pointer-events:none;opacity:0;place-items:center;display:grid;position:absolute;inset:0}.Sculpture-module__JMyNKW__loading[data-image-state=loaded],.Sculpture-module__JMyNKW__loading[data-image-state=error]{animation:.16s ease-out both Sculpture-module__JMyNKW__loadingReveal}.Sculpture-module__JMyNKW__loading[data-image-state=error] img{visibility:hidden}@keyframes Sculpture-module__JMyNKW__loadingReveal{0%{opacity:0}to{opacity:1}}.Sculpture-module__JMyNKW__loadingOrbit{contain:layout paint;width:128px;height:128px;font:500 13px/1 var(--font-body),sans-serif;position:relative}.Sculpture-module__JMyNKW__loadingOrbit img{will-change:transform;width:72px;height:72px;animation:7.2s linear infinite Sculpture-module__JMyNKW__turn;display:block;position:absolute;inset:28px}.Sculpture-module__JMyNKW__loadingLetter{transform:translateZ(0) rotate(var(--letter-angle));transform-origin:50%;will-change:transform;animation:28.8s linear infinite Sculpture-module__JMyNKW__loadingStretch;position:absolute;inset:0}.Sculpture-module__JMyNKW__loadingLetter svg{fill:currentColor;width:100%;height:100%;display:block;overflow:visible}.Sculpture-module__JMyNKW__loading[data-image-state=pending] .Sculpture-module__JMyNKW__loadingOrbit img,.Sculpture-module__JMyNKW__loading[data-image-state=pending] .Sculpture-module__JMyNKW__loadingLetter{animation-play-state:paused}@keyframes Sculpture-module__JMyNKW__loadingStretch{0%{transform:translateZ(0) rotate(var(--letter-angle))}16.6667%{transform:translateZ(0) rotate(calc(var(--letter-angle) + 120deg + var(--letter-stretch)))}33.3333%{transform:translateZ(0) rotate(calc(var(--letter-angle) + 480deg))}50%{transform:translateZ(0) rotate(calc(var(--letter-angle) + 600deg + var(--letter-stretch)))}66.6667%{transform:translateZ(0) rotate(calc(var(--letter-angle) + 960deg))}83.3333%{transform:translateZ(0) rotate(calc(var(--letter-angle) + 1080deg + var(--letter-stretch)))}to{transform:translateZ(0) rotate(calc(var(--letter-angle) + 1440deg))}}.Sculpture-module__JMyNKW__error{left:50%;top:calc(var(--sculpture-composition-height,100%)/2);width:min(380px,90%);max-height:calc(var(--sculpture-composition-height,100%) - 24px);background:inherit;font:16px/1.5 var(--font-body),sans-serif;border:1px solid #889481;border-radius:12px;padding:24px;position:absolute;overflow:auto;transform:translate(-50%,-50%)}.Sculpture-module__JMyNKW__error button{color:#fff;cursor:pointer;font:inherit;background:#285439;border:0;border-radius:5px;padding:10px 20px}.Sculpture-module__JMyNKW__errorActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.Sculpture-module__JMyNKW__error button.Sculpture-module__JMyNKW__copyError{color:inherit;text-underline-offset:3px;background:0 0;padding:10px 8px;text-decoration:underline}.Sculpture-module__JMyNKW__errorDetails{margin-top:16px;font-size:14px;display:block}.Sculpture-module__JMyNKW__errorDetails textarea{resize:vertical;width:100%;min-height:96px;margin-top:8px;font:12px/1.4 monospace;display:block}@keyframes Sculpture-module__JMyNKW__turn{0%{transform:translateZ(0)rotate(0)}to{transform:translateZ(0)rotate(360deg)}}@media (prefers-reduced-motion:reduce){.Sculpture-module__JMyNKW__loadingOrbit img,.Sculpture-module__JMyNKW__loadingLetter{will-change:auto;animation:none}.Sculpture-module__JMyNKW__loading[data-image-state=loaded],.Sculpture-module__JMyNKW__loading[data-image-state=error]{opacity:1;animation:none}.Sculpture-module__JMyNKW__canvas{transition:none}}
.SceneDebug-module__wMH6zW__panel{z-index:10;top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));border:1px solid var(--card-border);background:var(--card-background);width:212px;color:var(--text-primary);font-variant-numeric:tabular-nums;border-radius:16px;padding:8px 12px 12px;font-size:11px;line-height:1.4;position:fixed;box-shadow:0 3px 16px #0000000d}.SceneDebug-module__wMH6zW__toolbar,.SceneDebug-module__wMH6zW__buttons,.SceneDebug-module__wMH6zW__current,.SceneDebug-module__wMH6zW__details{align-items:center;display:flex}.SceneDebug-module__wMH6zW__toolbar,.SceneDebug-module__wMH6zW__details{justify-content:space-between}.SceneDebug-module__wMH6zW__toolbar{margin-bottom:5px}.SceneDebug-module__wMH6zW__toolbar code{color:var(--text-secondary);font-size:10px}.SceneDebug-module__wMH6zW__buttons{gap:2px;margin-right:-5px}.SceneDebug-module__wMH6zW__buttons button{width:34px;height:34px;color:var(--text-secondary);cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:9px;place-items:center;padding:7px;display:grid}.SceneDebug-module__wMH6zW__buttons button:hover,.SceneDebug-module__wMH6zW__buttons button[aria-pressed=true]{background:var(--icon-background);color:var(--icon-foreground)}.SceneDebug-module__wMH6zW__buttons button:focus-visible{outline-offset:1px}.SceneDebug-module__wMH6zW__buttons svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.SceneDebug-module__wMH6zW__current{gap:7px}.SceneDebug-module__wMH6zW__current strong{font-size:20px;font-weight:500;line-height:1.3}.SceneDebug-module__wMH6zW__current>span:last-child{color:var(--text-secondary);margin-left:auto}.SceneDebug-module__wMH6zW__dot{background:#668958;border-radius:50%;flex:0 0 6px;height:6px}.SceneDebug-module__wMH6zW__timing[data-severity=warm] .SceneDebug-module__wMH6zW__dot{background:#bd792a}.SceneDebug-module__wMH6zW__timing[data-severity=slow] .SceneDebug-module__wMH6zW__dot{background:#bb4f43}.SceneDebug-module__wMH6zW__details{color:var(--text-secondary);gap:12px;margin-top:5px}.SceneDebug-module__wMH6zW__details b{color:var(--text-primary);font-weight:500}
.HomePage-module__JTxRZW__page{--scene-overlap:clamp(72px, 11svh, 104px);--page-offset:max(0px, calc((100svh - 960px) / 2));--scene-lift:clamp(16px, 3svh, 32px);height:min(100svh,960px);margin-block:var(--page-offset);grid-template-rows:minmax(350px,1fr) auto;align-content:start;gap:0;min-height:580px;padding-bottom:clamp(36px,6svh,72px);display:grid}.HomePage-module__JTxRZW__hero{z-index:0;width:100%;margin-inline:auto;margin-top:calc(-1 * (var(--scene-lift) + var(--page-offset)));min-width:0;min-height:0;position:relative}.HomePage-module__JTxRZW__content{z-index:1;margin-top:calc(-1 * var(--scene-overlap));position:relative}.HomePage-module__JTxRZW__hero .HomePage-module__JTxRZW__sculpture{width:100%;height:calc(100% + var(--scene-extension,0px));-webkit-mask-image:var(--scene-mask,none);-webkit-mask-image:var(--scene-mask,none);mask-image:var(--scene-mask,none);background:var(--page-background);color:var(--text-primary);color-scheme:normal;position:absolute;top:0;left:0}@media (max-width:760px){.HomePage-module__JTxRZW__page{--scene-overlap:56px;--page-offset:0px;height:100svh;min-height:780px;padding-bottom:max(34px, env(safe-area-inset-bottom));grid-template-rows:minmax(320px,1fr) auto;margin-block:0}}
.HomeOverview-module__YqY1Ba__grid{--home-card-padding:16px;grid-template-columns:minmax(0,1.4fr) minmax(0,3fr);align-items:stretch;gap:14px;width:min(100% - 96px,1160px);margin-inline:auto;display:grid}.HomeOverview-module__YqY1Ba__bio{padding:calc(var(--home-card-padding) - 4px) var(--home-card-padding);border:1px solid color-mix(in srgb, var(--icon-foreground) 16%, transparent);background:var(--bio-background);color:var(--text-primary);border-radius:16px}.HomeOverview-module__YqY1Ba__bio p{text-wrap:pretty;margin:0;font-size:15px;line-height:1.6}@media (max-width:1000px){.HomeOverview-module__YqY1Ba__grid{grid-template-columns:1fr;width:calc(100% - 64px)}.HomeOverview-module__YqY1Ba__bio p{max-width:70ch}}@media (max-width:760px){.HomeOverview-module__YqY1Ba__grid{gap:10px;width:min(100% - 48px,440px)}}
.Projects-module__ojkyHG__section{min-width:0}.Projects-module__ojkyHG__list{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;height:100%;margin:0;padding:0;list-style:none;display:grid}.Projects-module__ojkyHG__project{height:100%;padding:var(--home-card-padding,16px);border:1px solid var(--card-border);background:var(--card-background);color:inherit;border-radius:16px;text-decoration:none;transition:transform .18s,background-color .18s,border-color .18s,box-shadow .18s;display:block}.Projects-module__ojkyHG__project:focus-visible{outline:2px solid var(--icon-foreground);outline-offset:4px;border-color:var(--icon-foreground)}@media (hover:hover) and (pointer:fine){.Projects-module__ojkyHG__project:hover{background:color-mix(in srgb, var(--card-background) 75%, var(--icon-background));border-color:color-mix(in srgb, var(--card-border) 50%, var(--icon-foreground));box-shadow:0 8px 20px -10px color-mix(in srgb, var(--text-primary) 22%, transparent);transform:translateY(-3px)}}.Projects-module__ojkyHG__project:active{transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){.Projects-module__ojkyHG__project{transition:none}.Projects-module__ojkyHG__project:hover,.Projects-module__ojkyHG__project:active{transform:none}}.Projects-module__ojkyHG__header{align-items:flex-start;gap:8px;display:flex}.Projects-module__ojkyHG__icon{aspect-ratio:1;flex:none;place-items:center;width:32px;height:32px;display:grid}.Projects-module__ojkyHG__icon img{object-fit:contain;width:32px;height:32px;display:block}.Projects-module__ojkyHG__header h3{letter-spacing:-.015em;margin:4px 0 0;font-size:16px;font-weight:500;line-height:1.45}.Projects-module__ojkyHG__project p{color:var(--text-secondary);text-wrap:pretty;margin:6px 0 0;font-size:14px;line-height:22px}@media (max-width:760px){.Projects-module__ojkyHG__list{grid-template-columns:1fr;gap:10px}}
