.concepts.svelte-fxu8r3{position:relative}.concept-list.svelte-fxu8r3{--row:calc(2 * .7rem + .92rem + 2px);--gap:.55rem;gap:var(--gap);max-height:calc(var(--concept-rows,999) * var(--row) + (var(--concept-rows,999) - 1) * var(--gap));scrollbar-width:thin;scrollbar-color:var(--line) transparent;flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.concept.svelte-fxu8r3{border:1px solid var(--line);color:inherit;font:inherit;background:0 0;padding:.7rem 1rem;font-size:.92rem;line-height:1;display:block}button.concept.svelte-fxu8r3{cursor:pointer;transition:color .2s,border-color .2s}button.concept.svelte-fxu8r3:hover,button.concept.open.svelte-fxu8r3{border-color:var(--accent);color:var(--accent)}.tip.svelte-fxu8r3{z-index:2;border:1px solid var(--line);background:var(--background);width:min(22rem,100%);margin-bottom:.65rem;padding:1.1rem 1.25rem;animation:.25s cubic-bezier(.2,.8,.2,1) svelte-fxu8r3-rise;position:absolute;box-shadow:0 1rem 2.5rem #0000002e}@keyframes svelte-fxu8r3-rise{0%{opacity:0;transform:translateY(.35rem)}}@media (prefers-reduced-motion:reduce){.tip.svelte-fxu8r3{animation:none}}.tip.svelte-fxu8r3 p:where(.svelte-fxu8r3){color:var(--muted);margin:0;font-size:.85rem;line-height:1.6}.tip.svelte-fxu8r3 .tip-name:where(.svelte-fxu8r3){color:var(--foreground);font-family:var(--display);letter-spacing:-.02em;margin-bottom:.5rem;font-size:1.15rem;line-height:1.2}.tip-note.svelte-fxu8r3{border-top:1px solid var(--line);padding-top:.9rem;margin-top:.9rem!important}.tip-note.svelte-fxu8r3 span:where(.svelte-fxu8r3){color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.35rem;font-size:.65rem;font-weight:700;display:block}svg.svelte-k6ke7k{width:100%;height:auto;display:block}html:has(dialog.details[open]){overflow:hidden}.details.svelte-1l0n9jp{border:1px solid var(--line);background:var(--background);width:min(100% - 2rem,54rem);max-width:none;max-height:calc(100svh - 4rem);color:var(--foreground);overscroll-behavior:contain;-webkit-user-select:text;user-select:text;padding:0}.details[open].svelte-1l0n9jp{animation:.45s cubic-bezier(.2,.8,.2,1) svelte-1l0n9jp-rise}.details.svelte-1l0n9jp::backdrop{background:color-mix(in srgb, var(--background) 70%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.details[open].svelte-1l0n9jp::backdrop{animation:.45s svelte-1l0n9jp-fade}@keyframes svelte-1l0n9jp-rise{0%{opacity:0;transform:translateY(1.5rem)}}@keyframes svelte-1l0n9jp-fade{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.details[open].svelte-1l0n9jp,.details[open].svelte-1l0n9jp::backdrop{animation:none}}.sheet.svelte-1l0n9jp{padding:clamp(2rem,5vw,4.5rem)}.close.svelte-1l0n9jp{float:right;border:1px solid var(--line);background:var(--background);width:2.75rem;height:2.75rem;color:var(--muted);cursor:pointer;place-items:center;margin:-1rem -1rem 0 0;padding:0;display:grid;position:sticky;top:0}.close.svelte-1l0n9jp:hover{color:var(--accent)}.close.svelte-1l0n9jp svg:where(.svelte-1l0n9jp){fill:none;stroke:currentColor;stroke-width:1.5px;width:1rem;height:1rem}header.svelte-1l0n9jp{border-bottom:1px solid var(--line);padding-bottom:3rem}.category.svelte-1l0n9jp,dt.svelte-1l0n9jp,h3.svelte-1l0n9jp{color:var(--accent);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.7rem;font-weight:700;line-height:1.5}h2.svelte-1l0n9jp{font-family:var(--display);letter-spacing:-.05em;margin:1.25rem 0 1.5rem;font-size:clamp(3rem,7vw,5.5rem);font-weight:400;line-height:.9}.facts.svelte-1l0n9jp{flex-wrap:wrap;gap:1.5rem 3rem;margin:2.5rem 0 0;display:flex}.facts.svelte-1l0n9jp div:where(.svelte-1l0n9jp){gap:.4rem;display:grid}dt.svelte-1l0n9jp{color:var(--muted)}dd.svelte-1l0n9jp{margin:0;font-size:.9rem}.hero.svelte-1l0n9jp{margin:2.5rem 0 0}section.svelte-1l0n9jp{border-bottom:1px solid var(--line);gap:1.5rem;padding:2.5rem 0;display:grid}section.svelte-1l0n9jp:last-child{border-bottom:0;padding-bottom:0}.prose.svelte-1l0n9jp p:where(.svelte-1l0n9jp),.list.svelte-1l0n9jp li:where(.svelte-1l0n9jp){color:var(--muted);font-size:1.05rem;line-height:1.7}.prose.svelte-1l0n9jp p:where(.svelte-1l0n9jp){margin:0 0 1.1rem}.prose.svelte-1l0n9jp p:where(.svelte-1l0n9jp):last-child{margin-bottom:0}.list.svelte-1l0n9jp{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.list.svelte-1l0n9jp li:where(.svelte-1l0n9jp){padding-left:1.5rem;position:relative}.list.svelte-1l0n9jp li:where(.svelte-1l0n9jp):before{content:"—";color:var(--accent);position:absolute;left:0}.decisions.svelte-1l0n9jp{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.decisions.svelte-1l0n9jp li:where(.svelte-1l0n9jp){border:1px solid var(--line);padding:1.75rem}.choice.svelte-1l0n9jp{font-family:var(--display);letter-spacing:-.02em;margin:0 0 1.5rem;font-size:1.35rem;line-height:1.3}.decisions.svelte-1l0n9jp dl:where(.svelte-1l0n9jp){gap:1rem;margin:0;display:grid}.decisions.svelte-1l0n9jp div:where(.svelte-1l0n9jp){gap:.3rem;display:grid}.decisions.svelte-1l0n9jp dd:where(.svelte-1l0n9jp){color:var(--muted);margin:0;font-size:.95rem;line-height:1.6}figure.svelte-1l0n9jp{margin:0}img.svelte-1l0n9jp{background:var(--line);width:100%;display:block}figcaption.svelte-1l0n9jp{color:var(--muted);margin-top:.65rem;font-size:.75rem;line-height:1.5}@media (width<=800px){.details.svelte-1l0n9jp{border:0;width:100%;height:100svh;max-height:100svh}}:root{--background:#f2f1ec;--foreground:#191b17;--muted:#676b61;--line:#c9c9c0;--accent:#476333;--display:Georgia, "Times New Roman", serif}html:not(.ready) .site-shell.svelte-1uha8ag{opacity:0}.site-shell.svelte-1uha8ag{--hero-inset:clamp(4rem, 7vw, 6.5rem);--name-size:clamp(5rem, 9vw, 8.75rem);--below-name:calc(100vh - var(--hero-inset) - 1.6 * var(--name-size));--hero-end:clamp(3rem, 5vw, 4.5rem);width:min(100% - 3rem,90rem);margin:0 auto;transition:opacity .5s}html{scroll-snap-type:y mandatory}html.free-scroll{scroll-snap-type:none}.snap-top.svelte-1uha8ag{scroll-snap-align:start;height:1px;position:absolute;top:0}.projects-end.svelte-1uha8ag{scroll-snap-align:end;height:1px;margin-top:calc(7rem + clamp(2.2rem,4vw,4rem))}.work.svelte-1uha8ag{scroll-snap-align:start;scroll-margin-top:calc(var(--hero-inset) + 1.6 * var(--name-size) + 6rem)}.hero-story.svelte-1uha8ag{position:relative}.hello.svelte-1uha8ag{top:calc(1.6 * var(--name-size) + 6rem);max-width:var(--bio-width);font-family:var(--display);letter-spacing:-.02em;margin-bottom:0;font-size:clamp(1.35rem,2.1vw,1.9rem);line-height:1.3;position:absolute;left:0}.hello.svelte-1uha8ag a:where(.svelte-1uha8ag){color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}.hello.svelte-1uha8ag a:where(.svelte-1uha8ag):hover{color:var(--accent)}.hero.svelte-1uha8ag{--hero-gap:clamp(3rem, 8vw, 9rem);--bio-width:40rem;grid-template-columns:minmax(0, min(var(--bio-width), (100% - var(--hero-gap)) / 2)) minmax(20rem, 1fr);column-gap:var(--hero-gap);padding:var(--hero-inset) 0 var(--hero-end);display:grid;position:relative;overflow-x:clip}.eyebrow.svelte-1uha8ag{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.68rem;font-weight:700;line-height:1}h1.svelte-1uha8ag,h3.svelte-1uha8ag,p.svelte-1uha8ag{margin-top:0}h1.svelte-1uha8ag{font-family:var(--display);font-size:var(--name-size);letter-spacing:-.07em;align-self:start;margin-bottom:-.05em;font-weight:400;line-height:.8}.pinned.svelte-1uha8ag h1:where(.svelte-1uha8ag){top:var(--hero-inset);z-index:1;height:0;margin:0;position:sticky}.name-line.svelte-1uha8ag{white-space:nowrap}.caret.svelte-1uha8ag{opacity:0;background:currentColor;width:.05em;height:.72em;margin-left:.05em;display:inline-block}.caret.typing.svelte-1uha8ag{opacity:1}.hello.svelte-1uha8ag,.hero-bio.svelte-1uha8ag,.work.svelte-1uha8ag{--name-edge:-100vh;-webkit-mask-image:linear-gradient(to bottom, transparent var(--name-edge), #000 calc(var(--name-edge) + 5rem));mask-image:linear-gradient(to bottom, transparent var(--name-edge), #000 calc(var(--name-edge) + 5rem))}.hero-bio.svelte-1uha8ag{margin-top:calc(1.6 * var(--name-size) + var(--below-name) + 25vh)}.hero-bio.svelte-1uha8ag p:where(.svelte-1uha8ag){scroll-snap-align:start;scroll-margin-top:calc(var(--hero-inset) + 1.6 * var(--name-size) + 6rem);max-width:var(--bio-width);margin-bottom:var(--below-name);font-family:var(--display);letter-spacing:-.02em;font-size:clamp(1.35rem,2.1vw,1.9rem);line-height:1.3;transition:color .4s}.hero-bio.svelte-1uha8ag:has([data-active]) p:where(.svelte-1uha8ag):not([data-active]){color:var(--muted)}.hero-portrait.svelte-1uha8ag{top:var(--hero-inset);height:calc(100svh - var(--hero-inset));margin-right:calc(min(100vw - 3rem,90rem)/2 - 50vw);position:sticky}.project.svelte-1uha8ag{border-top:1px solid var(--line)}.project.svelte-1uha8ag:last-child{border-bottom:1px solid var(--line)}.project-header.svelte-1uha8ag{gap:.9rem;padding:2.5rem 0;display:grid}.project-title.svelte-1uha8ag{--title-size:clamp(2.2rem, 4vw, 4rem);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2.5rem;display:flex}.project-title.svelte-1uha8ag .project-actions:where(.svelte-1uha8ag){transform:translateY(calc(.1 * var(--title-size)))}.project-header.svelte-1uha8ag h3:where(.svelte-1uha8ag){font-family:var(--display);font-size:var(--title-size);letter-spacing:-.05em;margin-bottom:0;font-weight:400;line-height:1}.project-category.svelte-1uha8ag,.project-facts.svelte-1uha8ag dt:where(.svelte-1uha8ag){color:var(--accent);letter-spacing:.1em;text-transform:uppercase;font-size:.7rem;font-weight:700;line-height:1.5}.project-stage-label.svelte-1uha8ag{color:var(--muted)}.project-header.svelte-1uha8ag,.project-body.svelte-1uha8ag,.contact.svelte-1uha8ag,.credentials.svelte-1uha8ag{-webkit-user-select:text;user-select:text}.project.svelte-1uha8ag{grid-template-rows:auto 18rem;grid-template-columns:minmax(0,42rem) minmax(0,1fr);column-gap:4rem;padding-bottom:4rem;display:grid}.project-content.svelte-1uha8ag{display:contents}.project-header.svelte-1uha8ag{grid-area:1/1}.project-body.svelte-1uha8ag{scrollbar-width:thin;scrollbar-color:var(--line) transparent;grid-area:2/1;min-height:0;padding-right:1rem;overflow-y:auto}.project-side.svelte-1uha8ag{flex-direction:column;grid-area:1/2/3;min-height:0;padding-top:2.5rem;display:flex}.project-stage.svelte-1uha8ag{flex:1;min-height:0;margin-bottom:1.5rem;position:relative}.logo-source.svelte-1uha8ag{visibility:hidden;position:absolute;inset:0}.logo-source.svelte-1uha8ag svg{height:100%}.project-concepts.svelte-1uha8ag{--concept-rows:3;flex:none}.project-concepts.svelte-1uha8ag>.eyebrow:where(.svelte-1uha8ag){margin-bottom:1rem}.project-description.svelte-1uha8ag+.project-description:where(.svelte-1uha8ag){margin-top:1.1rem}.project-description.svelte-1uha8ag{color:var(--muted);margin-bottom:0;font-size:clamp(1.2rem,1.68vw,1.44rem);line-height:1.65}.project-facts.svelte-1uha8ag{border-top:1px solid var(--line);gap:3rem;margin:2.5rem 0 0;padding-top:1.5rem;display:flex}.project-facts.svelte-1uha8ag div:where(.svelte-1uha8ag){gap:.5rem;display:grid}.project-facts.svelte-1uha8ag dd:where(.svelte-1uha8ag){color:var(--muted);margin:0;font-size:.85rem}.project-section.svelte-1uha8ag{border-top:1px solid var(--line);margin-top:3.5rem;padding-top:2rem}.project-section.svelte-1uha8ag>.eyebrow:where(.svelte-1uha8ag){margin-bottom:1.5rem}.gallery-grid.svelte-1uha8ag{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.gallery.svelte-1uha8ag figure:where(.svelte-1uha8ag){margin:0}.gallery.svelte-1uha8ag img:where(.svelte-1uha8ag){aspect-ratio:4/3;object-fit:cover;background:var(--line);width:100%;display:block}.gallery.svelte-1uha8ag figcaption:where(.svelte-1uha8ag){color:var(--muted);margin-top:.65rem;font-size:.75rem;line-height:1.5}.update.svelte-1uha8ag{border-top:1px solid var(--line);grid-template-columns:7rem 1fr;gap:.5rem 2rem;padding:1.5rem 0;display:grid}.update.svelte-1uha8ag:first-of-type{margin-top:1.5rem}.update.svelte-1uha8ag time:where(.svelte-1uha8ag){color:var(--muted);grid-row:1/3;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.7rem}.update.svelte-1uha8ag h5:where(.svelte-1uha8ag),.update.svelte-1uha8ag p:where(.svelte-1uha8ag){margin:0}.update.svelte-1uha8ag h5:where(.svelte-1uha8ag){font-family:var(--display);font-size:1.2rem;font-weight:400}.update.svelte-1uha8ag p:where(.svelte-1uha8ag){color:var(--muted);font-size:.9rem;line-height:1.6}.project-actions.svelte-1uha8ag{align-items:center;gap:.75rem;display:flex}.project-actions.svelte-1uha8ag a:where(.svelte-1uha8ag),.details-button.svelte-1uha8ag,.demo-soon.svelte-1uha8ag{font:inherit;letter-spacing:.08em;text-transform:uppercase;color:inherit;cursor:pointer;font-size:.75rem;font-weight:700;text-decoration:none}.project-actions.svelte-1uha8ag a:where(.svelte-1uha8ag),.details-button.svelte-1uha8ag{border:1px solid var(--foreground);background:0 0;padding:.85rem 1.2rem;transition:color .2s,border-color .2s}.project-actions.svelte-1uha8ag a:where(.svelte-1uha8ag):hover,.details-button.svelte-1uha8ag:hover{color:var(--accent);border-color:var(--accent)}.demo-soon.svelte-1uha8ag{border:1px dashed var(--line);color:var(--muted);cursor:default;padding:.85rem 1.2rem}.end.svelte-1uha8ag{scroll-snap-align:start;grid-template-rows:100svh auto;justify-items:start;display:grid}.end.svelte-1uha8ag>:where(.svelte-1uha8ag){opacity:0;transition:opacity .7s,transform .7s cubic-bezier(.2,.8,.2,1);transform:translateY(1.5rem)}.end.revealed.svelte-1uha8ag>:where(.svelte-1uha8ag){opacity:1;transform:none}.end.revealed.svelte-1uha8ag>:where(.svelte-1uha8ag):nth-child(2){transition-delay:.2s}.end.landing.svelte-1uha8ag>:where(.svelte-1uha8ag){transition:none}.contact.svelte-1uha8ag{top:var(--hero-inset);margin-top:var(--hero-inset);align-self:start;justify-items:start;gap:1.25rem;display:grid;position:sticky}.location.svelte-1uha8ag{color:var(--muted);margin:0;font-size:.9rem}.email.svelte-1uha8ag{font-family:var(--display);letter-spacing:-.05em;font-size:clamp(2.6rem,6vw,5.5rem);line-height:1;text-decoration:none}.email.svelte-1uha8ag:hover,.credentials.svelte-1uha8ag a:where(.svelte-1uha8ag):hover{color:var(--accent)}.credentials.svelte-1uha8ag{scroll-snap-align:end;width:100%;padding-bottom:clamp(2.5rem,5vw,4rem);display:none}.end.open.svelte-1uha8ag .credentials:where(.svelte-1uha8ag){display:block}.credentials.svelte-1uha8ag .eyebrow:where(.svelte-1uha8ag){margin-bottom:1.1rem}.credentials.svelte-1uha8ag ul:where(.svelte-1uha8ag){grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(2rem,4vw,4rem);margin:0;padding:0;list-style:none;display:grid}.credentials.svelte-1uha8ag li:where(.svelte-1uha8ag){border-top:1px solid var(--line);align-content:start;gap:.6rem;padding-top:1.1rem;display:grid}.credential-name.svelte-1uha8ag{font-family:var(--display);letter-spacing:-.02em;font-size:1.35rem;line-height:1.2}.credential-meta.svelte-1uha8ag{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.55rem .9rem;font-size:.9rem;line-height:1.4;display:flex}.issuer.svelte-1uha8ag{flex-basis:100%}.credential-meta.svelte-1uha8ag a:where(.svelte-1uha8ag){color:inherit;letter-spacing:.1em;text-transform:uppercase;font-size:.7rem;font-weight:700;line-height:1;text-decoration:none}.cedid.svelte-1uha8ag{white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.75rem}.copy.svelte-1uha8ag{border:1px solid var(--line);color:inherit;font:inherit;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;padding:.3rem .55rem;font-size:.62rem;font-weight:700;line-height:1;transition:color .2s,border-color .2s}.copy.svelte-1uha8ag:hover{color:var(--accent);border-color:var(--accent)}@media (prefers-color-scheme:dark){:root{--background:#111310;--foreground:#e9e9e2;--muted:#9b9e94;--line:#34372f;--accent:#a9c98e}}@media (width<=800px){html{scroll-snap-type:none}.site-shell.svelte-1uha8ag{width:min(100% - 2rem,90rem)}.hero.svelte-1uha8ag{grid-template-columns:1fr;padding:0 0 3rem}.hero-stage.svelte-1uha8ag{display:none}.pinned.svelte-1uha8ag h1:where(.svelte-1uha8ag){height:auto;margin-bottom:3.5rem;padding-top:3.5rem;position:static}.hero-bio.svelte-1uha8ag{margin-top:0}.hello.svelte-1uha8ag,.hero-bio.svelte-1uha8ag,.work.svelte-1uha8ag{-webkit-mask-image:none;mask-image:none}.hello.svelte-1uha8ag{margin-bottom:1.75rem;position:static}.hero-bio.svelte-1uha8ag p:where(.svelte-1uha8ag),.hero-bio.svelte-1uha8ag p:where(.svelte-1uha8ag):last-child{margin-bottom:1.75rem}.hero-bio.svelte-1uha8ag:has([data-active]) p:where(.svelte-1uha8ag):not([data-active]){color:inherit}h1.svelte-1uha8ag{margin-bottom:3.5rem;font-size:clamp(4.5rem,22vw,7rem)}.project.svelte-1uha8ag{grid-template-rows:none;grid-template-columns:minmax(0,1fr);row-gap:2.5rem;padding-bottom:3rem}.project-header.svelte-1uha8ag{padding:2rem 0 0}.project-body.svelte-1uha8ag,.project-side.svelte-1uha8ag{grid-area:auto/1}.project-stage.svelte-1uha8ag{display:none}.project-body.svelte-1uha8ag{padding-right:0;overflow:visible}.project-side.svelte-1uha8ag{padding-top:0}.project-concepts.svelte-1uha8ag{--concept-rows:999}.update.svelte-1uha8ag,.credentials.svelte-1uha8ag ul:where(.svelte-1uha8ag){grid-template-columns:1fr}.credentials.svelte-1uha8ag li:where(.svelte-1uha8ag){padding-bottom:1.1rem}.update.svelte-1uha8ag time:where(.svelte-1uha8ag){grid-row:auto}.gallery-grid.svelte-1uha8ag{grid-template-columns:1fr}}@media (width<=420px){h1.svelte-1uha8ag{font-size:22vw}.email.svelte-1uha8ag{font-size:2rem}}
