.k3v6nW_trigger{cursor:pointer;font-family:inherit}.k3v6nW_dialog{border:1px solid var(--line);border-top:3px solid var(--brand-purple);background:var(--page);width:min(1200px,100vw - 64px);max-width:none;max-height:calc(100dvh - 48px);color:var(--ink);border-radius:4px;margin:auto;padding:0;overflow:auto}.k3v6nW_dialog::backdrop{background:#000000c7}.k3v6nW_panel{padding:16px 24px 20px}.k3v6nW_header,.k3v6nW_controls{justify-content:space-between;align-items:center;gap:16px;display:flex}.k3v6nW_header{margin-bottom:16px}.k3v6nW_header h2{margin:0;font-size:17px;font-weight:700;line-height:1.5}.k3v6nW_header h2 span{color:var(--muted);margin-left:12px;font-size:13px;font-weight:400}.k3v6nW_close,.k3v6nW_navigation button{border:1px solid var(--line);width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.k3v6nW_close:hover,.k3v6nW_navigation button:hover{background:var(--band);border-color:var(--muted)}.k3v6nW_close svg,.k3v6nW_navigation svg{width:20px;height:20px}.k3v6nW_stage{background:var(--band);touch-action:pan-y pinch-zoom;justify-content:center;align-items:center;height:min(68dvh,760px);min-height:160px;display:flex}.k3v6nW_image{object-fit:contain;width:100%;height:100%}.k3v6nW_controls{margin-top:16px}.k3v6nW_caption{flex-wrap:wrap;align-items:baseline;gap:4px 16px;display:flex}.k3v6nW_caption span{color:var(--muted);font-family:var(--font-secondary), monospace;font-size:11px}.k3v6nW_caption p{margin:0;font-size:14px}.k3v6nW_navigation{gap:8px;display:flex}.k3v6nW_fullSize{min-height:44px;color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.k3v6nW_fullSize:hover{color:var(--ink)}@media (max-width:640px){.k3v6nW_dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 24px)}.k3v6nW_panel{padding:12px}.k3v6nW_header h2 span{margin-left:0;display:block}.k3v6nW_stage{height:58dvh}.k3v6nW_caption{flex-direction:column}}
._hJY4q_section{padding-block:48px 80px}._hJY4q_grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:28px;display:grid}._hJY4q_card{grid-template-rows:subgrid;grid-row:span 3;align-items:start;min-width:0;display:grid}._hJY4q_preview{aspect-ratio:16/10;border:1px solid var(--line);background:var(--band);width:100%;color:var(--ink);cursor:zoom-in;margin:0 0 24px;padding:10px;display:block;position:relative;overflow:hidden}._hJY4q_screenshot,._hJY4q_croppedScreenshot{display:block;overflow:hidden}._hJY4q_preview>._hJY4q_screenshot,._hJY4q_preview>._hJY4q_croppedScreenshot{width:100%;height:100%}._hJY4q_screenshot img{object-fit:cover;object-position:top left;width:100%;height:100%;display:block}._hJY4q_croppedScreenshot{aspect-ratio:1366/644;background:#101012}._hJY4q_croppedScreenshot img{width:100%;height:auto;display:block;transform:translateY(-10.6796%)}._hJY4q_preview>._hJY4q_croppedScreenshot{height:auto;margin-block:auto}._hJY4q_previewLabel{color:#f5f5f3;opacity:0;background:#17181b;border:1px solid #ffffff2e;border-radius:4px;align-items:center;gap:6px;padding:7px 9px;font-size:13px;line-height:1.4;transition:opacity .16s;display:inline-flex;position:absolute;bottom:16px;right:16px}._hJY4q_previewLabel svg{width:12px;height:12px}._hJY4q_preview:hover ._hJY4q_previewLabel,._hJY4q_preview:focus-visible ._hJY4q_previewLabel{opacity:1}._hJY4q_preview:focus-visible{outline:2px solid var(--ink);outline-offset:4px}._hJY4q_heading{flex-wrap:wrap;align-items:center;gap:12px 18px;margin-bottom:12px;display:flex}._hJY4q_heading h3{letter-spacing:-.045em;margin:0;font-size:28px;font-weight:590;line-height:1.1}._hJY4q_githubStats,._hJY4q_githubStats span{align-items:center;gap:6px;display:inline-flex}._hJY4q_heading h3 a{align-items:center;gap:8px;display:inline-flex}._hJY4q_heading h3 a svg{width:17px;height:17px}._hJY4q_heading h3 a:hover{color:var(--accent)}._hJY4q_githubStats{gap:12px;font-size:12px}._hJY4q_githubStats svg{width:14px;height:14px}._hJY4q_description{color:var(--body-copy);margin:0 0 20px;font-size:16px;line-height:1.65}._hJY4q_links{flex-wrap:wrap;align-items:center;gap:0 18px;display:flex}._hJY4q_links a{text-underline-offset:4px;min-height:44px;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);align-items:center;gap:5px;font-size:15px;display:inline-flex}._hJY4q_links a:hover,._hJY4q_githubStats:hover{color:var(--accent)}._hJY4q_links svg{width:14px;height:14px}._hJY4q_galleryCrop{width:min(100%,144.2dvh)}._hJY4q_galleryImage{width:100%;height:100%}._hJY4q_galleryImage img{object-fit:contain;width:100%;height:100%}@media (max-width:820px){._hJY4q_section{padding-block:32px 64px}._hJY4q_grid{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;gap:20px;padding-bottom:12px;display:flex;overflow-x:auto}._hJY4q_card{scroll-snap-align:start;flex-direction:column;flex:0 0 88%;align-items:flex-start;display:flex}._hJY4q_preview{aspect-ratio:16/9;margin-bottom:22px}}@media (max-width:640px){._hJY4q_galleryCrop{width:min(100%,123dvh)}}@media (hover:none),(pointer:coarse){._hJY4q_previewLabel{opacity:1}}
main .hero{padding-block:76px 88px}main .hero h1{letter-spacing:-.057em;text-wrap:balance;max-width:690px;margin-bottom:28px;font-size:clamp(46px,5.25vw,72px);font-weight:760;line-height:1.015}main .hero-intro{max-width:575px;color:var(--body-copy);font-size:16px;line-height:1.75}main .hero-actions{margin-top:32px}main .hero-actions .hero-contact{background:var(--ink);min-height:54px;color:var(--page);border-radius:3px;gap:24px;padding:12px 18px;font-weight:620;box-shadow:4px 4px #6244a1}main .hero-contact:after{content:none}main .hero-actions .hero-contact>.site-icon{background:0 0;border-radius:0;width:21px;height:21px;padding:0}main .hero-actions .hero-contact:hover{background:var(--ink);color:var(--page);transform:translate(-2px,-2px);box-shadow:6px 6px #6244a1}main .hero-actions .hero-contact:active{transform:translate(2px,2px);box-shadow:1px 1px #6244a1}main .work-section{padding-top:0}main .section-heading{padding-block:28px 30px}main .section-heading-description{display:block}main .section-heading-description p{max-width:650px;color:var(--body-copy);margin:12px 0 0;font-size:15px;line-height:1.7}main .section-heading h2,main .about-grid h2,main #capabilities-title{color:var(--ink);letter-spacing:-.04em;text-transform:none;font-family:inherit;font-size:25px;font-weight:700;line-height:1.15}main .work-section>.section-heading{border-top:2px solid var(--ink)}main .work-section>.project{padding-block:28px 64px}main .work-section>.project+.project{border-top:1px solid var(--line);padding-top:48px}main .work-section>.project .project-details h3{letter-spacing:-.045em;margin-bottom:16px;font-size:clamp(30px,3.25vw,40px);font-weight:720}main .project-lede{max-width:450px;font-size:18px;line-height:1.5}main .project-image{border:0;padding:12px}main .project-actions{opacity:1;pointer-events:auto;background:0 0;justify-content:flex-start;gap:12px 24px;margin-top:8px;padding:0;position:static}main .project-action{color:var(--ink);box-shadow:none;pointer-events:auto;background:0 0;border:0;border-radius:0;padding:8px 0;font-size:13px;font-weight:650}main .project-action:hover{color:var(--accent);background:0 0}main .project-action:focus-visible{outline-color:var(--focus)}main .project-feedback{border-left:3px solid #7047c9;margin-top:20px;padding-left:18px}main #independent-projects{padding-block:12px 88px}main #independent-projects h3{font-weight:700}main .notes-section{padding-block:44px 58px}main .note-copy h3{font-weight:680;line-height:1.2}main .note-date{font-family:inherit;font-size:13px}main .about-section{background:var(--page);padding-block:80px}main #services{background:var(--band)}main #services h3{font-size:23px;font-weight:650;line-height:1.35}@media (max-width:1000px) and (min-width:821px){main .hero h1{max-width:550px;font-size:54px}}@media (max-width:820px){main .hero{padding-block:32px 56px}main .hero h1{max-width:650px;font-size:clamp(40px,7vw,58px)}main .hero-intro{max-width:610px}}@media (max-width:640px){main .hero{padding-block:24px 52px}main .hero h1{text-wrap:pretty;margin-bottom:24px;font-size:clamp(36px,10.6vw,54px);line-height:1.04}main .hero-intro{font-size:15px;line-height:1.7}main .hero-actions .hero-contact{gap:16px;padding-inline:15px;font-size:14px}main .section-heading{padding-block:24px}main .section-heading h2,main .about-grid h2,main #capabilities-title{font-size:23px}main .work-section>.project{row-gap:24px;padding-block:12px 40px}main .work-section>.project+.project{padding-top:32px}main .project-lede{font-size:17px}main .project-feedback{grid-row:4;margin:0}main #independent-projects{padding-bottom:48px}main .notes-section{padding-block:28px 36px}main .about-section{padding-block:48px}}
.Wwk3ya_portrait{isolation:isolate;grid-column:9/-1;justify-self:end;width:min(100% - 16px,340px);margin:10px 12px 12px 0;position:relative}.Wwk3ya_backing{background:#6244a1;position:absolute;inset:5px -9px -9px 5px;transform:rotate(1deg)}.Wwk3ya_print{background:#eeeee7;border:1px solid #d7d7d0;margin:0;padding:9px 9px 0;transition:transform .25s;position:relative;transform:rotate(-2deg);box-shadow:0 12px 24px #00000018}.Wwk3ya_tape{z-index:2;clip-path:polygon(2% 0,100% 0,98% 28%,100% 52%,98% 78%,100% 100%,0 100%,2% 72%,0 48%,2% 24%);background:#24272a;width:78px;height:25px;position:absolute;top:-12px;left:50%;transform:translate(-50%)rotate(3deg)}.Wwk3ya_photo{aspect-ratio:1/1.1;background:#c9cdcb;position:relative;overflow:hidden}.Wwk3ya_photo img{object-fit:cover;object-position:50% 63%;transform:scale(1.16)}.Wwk3ya_caption{color:#303438;letter-spacing:-.025em;padding:16px 7px 17px;font-size:14px;font-weight:550;line-height:1.3}@media (hover:hover){.Wwk3ya_portrait:hover .Wwk3ya_print{transform:rotate(0)translateY(-3px)}}@media (max-width:820px){.Wwk3ya_portrait{grid-area:1/1/auto/-1;justify-self:start;width:160px;margin:10px 0 34px 4px}.Wwk3ya_print{padding:5px 5px 0}.Wwk3ya_tape{width:52px;height:17px;top:-8px}.Wwk3ya_caption{padding:11px 5px 12px;font-size:12px}}@media (prefers-reduced-motion:reduce){.Wwk3ya_print{transition:none}}
.bz1OQG_graphic{aspect-ratio:1/1.14;-webkit-user-select:none;user-select:none;border-radius:16px;grid-column:9/-1;justify-self:end;width:100%;max-width:360px;position:relative;transform:translateY(-16px);container-type:inline-size}.bz1OQG_sources{pointer-events:none;position:absolute;inset:0 -50px}.bz1OQG_sourceRoutes{width:100%;height:100%;position:absolute;overflow:visible}.bz1OQG_sourceRoute{stroke:color-mix(in srgb, var(--accent) 24%, transparent);stroke-width:1px;vector-effect:non-scaling-stroke}.bz1OQG_sourcePulse{stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-dasharray:2 98;vector-effect:non-scaling-stroke;animation:4.4s linear infinite bz1OQG_incoming-data}.bz1OQG_sourcePulse[data-flow=two-way]{animation-direction:alternate}.bz1OQG_money{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linecap:round;animation:4.4s linear infinite bz1OQG_money-transfer}.bz1OQG_money path{vector-effect:non-scaling-stroke}@keyframes bz1OQG_money-transfer{0%{opacity:0}12%,to{opacity:.8}}.bz1OQG_sourceNode{border:1px solid color-mix(in srgb, var(--accent) 22%, transparent);background:var(--page);width:36px;height:36px;box-shadow:0 2px 5px color-mix(in srgb, var(--accent) 5%, transparent);color:color-mix(in srgb, var(--accent) 78%, var(--muted));border-radius:5px;place-items:center;display:grid;position:absolute;transform:translate(-50%,-50%)}.bz1OQG_sourceAnchor{width:0;height:0;position:absolute}.bz1OQG_sourceAnchor[data-corner="0"]{top:2px;left:2px}.bz1OQG_sourceAnchor[data-corner="1"]{top:2px;right:2px}.bz1OQG_sourceAnchor[data-corner="2"]{bottom:2px;right:2px}.bz1OQG_sourceAnchor[data-corner="3"]{bottom:2px;left:2px}.bz1OQG_sourceNode svg{width:21px;height:21px}@keyframes bz1OQG_incoming-data{0%{stroke-dashoffset:100px;opacity:0}12%,80%{opacity:.8}to{stroke-dashoffset:0;opacity:0}}.bz1OQG_scene{perspective:900px;pointer-events:none;position:absolute;inset:0}.bz1OQG_assembly{width:54cqw;height:54cqw;transform-style:preserve-3d;position:absolute;top:28%;left:23%;transform:rotateX(58deg)rotate(45deg)}.bz1OQG_connectors{transform-style:preserve-3d;position:absolute;inset:12px}.bz1OQG_connectors i{background:repeating-linear-gradient(to bottom, color-mix(in srgb, var(--accent) 55%, transparent) 0 3px, transparent 3px 7px);transform-origin:top;width:1px;height:24cqw;animation:10s ease-in-out infinite bz1OQG_connector-stretch;position:absolute;top:0;left:0;transform:translateZ(-12cqw)rotateX(90deg)}.bz1OQG_connectors i:nth-child(2){left:100%}.bz1OQG_connectors i:nth-child(3){top:100%}.bz1OQG_connectors i:nth-child(4){top:100%;left:100%}.bz1OQG_foundation,.bz1OQG_middle,.bz1OQG_surface,.bz1OQG_edge,.bz1OQG_face{transform-style:preserve-3d;border-radius:5px;position:absolute;inset:0}.bz1OQG_foundation{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);background:var(--page);animation:10s ease-in-out infinite bz1OQG_foundation-drift;transform:translateZ(-12cqw)}.bz1OQG_foundation:after,.bz1OQG_middle:after{content:"";border:1px solid color-mix(in srgb, var(--accent) 28%, transparent);border-radius:inherit;position:absolute;inset:-1px;transform:translateZ(-5px)}.bz1OQG_grid{border-radius:inherit;background:linear-gradient(90deg, transparent calc(100% - 1px), color-mix(in srgb, var(--accent) 15%, transparent) 0), linear-gradient(transparent calc(100% - 1px), color-mix(in srgb, var(--accent) 15%, transparent) 0);background-size:25% 25%;position:absolute;inset:0}.bz1OQG_middle{border:1px solid color-mix(in srgb, var(--accent) 65%, transparent);background:var(--page);animation:10s ease-in-out infinite bz1OQG_middle-drift;transform:translateZ(0)}.bz1OQG_inset{border:1px dashed color-mix(in srgb, var(--accent) 40%, transparent);border-radius:4px;position:absolute;inset:13px}.bz1OQG_signal{background:var(--accent);width:4px;height:4px;box-shadow:0 0 7px color-mix(in srgb, var(--accent) 50%, transparent);border-radius:50%;animation:10s linear infinite bz1OQG_signal-travel;position:absolute;top:12px;left:12px}.bz1OQG_surface{animation:10s ease-in-out infinite bz1OQG_surface-drift;transform:translateZ(12cqw)}.bz1OQG_edge{background:#4d318a;border:1px solid #6244a1}.bz1OQG_face{backface-visibility:hidden;background:linear-gradient(135deg,#8969c6,#7047c9 65%,#5b3ba2);border:1px solid #a78cd5;overflow:hidden}.bz1OQG_face svg{width:100%;height:100%;display:block}.bz1OQG_sweep{background:linear-gradient(110deg,#0000 32%,#ffffff05 42%,#ffffff2b 50%,#ffffff05 58%,#0000 68%);animation:10s ease-in-out infinite bz1OQG_light-sweep;position:absolute;inset:0;transform:translate(-120%)}@keyframes bz1OQG_connector-stretch{0%,to{height:24cqw;transform:translateZ(-12cqw)rotateX(90deg)}45%,55%{height:37cqw;transform:translateZ(-17cqw)rotateX(90deg)}}@keyframes bz1OQG_surface-drift{0%,to{transform:translateZ(12cqw)}45%,55%{transform:translateZ(20cqw)}}@keyframes bz1OQG_middle-drift{0%,to{transform:translateZ(0)}45%,55%{transform:translateZ(2cqw)}}@keyframes bz1OQG_foundation-drift{0%,to{transform:translateZ(-12cqw)}45%,55%{transform:translateZ(-17cqw)}}@keyframes bz1OQG_light-sweep{0%,22%{transform:translate(-120%)}60%,to{transform:translate(120%)}}@keyframes bz1OQG_signal-travel{0%,to{opacity:.4;top:12px;left:12px}25%{opacity:1;top:12px;left:calc(100% - 16px)}50%{opacity:.4;top:calc(100% - 16px);left:calc(100% - 16px)}75%{opacity:1;top:calc(100% - 16px);left:12px}}@media (prefers-reduced-motion:reduce){.bz1OQG_assembly,.bz1OQG_foundation,.bz1OQG_middle,.bz1OQG_surface,.bz1OQG_signal,.bz1OQG_sweep,.bz1OQG_connectors i{animation:none}.bz1OQG_sweep,.bz1OQG_signal,.bz1OQG_sourcePulse,.bz1OQG_money{animation:none;display:none}}@media (max-width:820px){.bz1OQG_graphic{aspect-ratio:1/.82;grid-area:1/1/auto/-1;justify-self:center;width:clamp(180px,56vw,230px);margin-block:12px 48px;transform:none}.bz1OQG_assembly{top:20%}.bz1OQG_sources{inset:0 -64px}.bz1OQG_sourceNode{border-radius:4px;width:30px;height:30px}.bz1OQG_sourceNode svg{width:18px;height:18px}}@media (max-width:640px) and (max-height:700px){.bz1OQG_graphic{width:180px;margin-block:8px 28px}}.bz1OQG_graphic[data-variant=article]{aspect-ratio:1/1.05;grid-area:auto;justify-self:center;width:100%;max-width:300px;margin:0;transform:none}.bz1OQG_graphic[data-variant=article] .bz1OQG_sources{inset:0 -26px}.bz1OQG_graphic[data-variant=article] .bz1OQG_assembly{top:28%}@media (max-width:1000px){.bz1OQG_graphic[data-variant=article]{aspect-ratio:1/.88;width:260px}.bz1OQG_graphic[data-variant=article] .bz1OQG_sources{inset:0 -48px}.bz1OQG_graphic[data-variant=article] .bz1OQG_assembly{top:23%}}@media (max-width:760px){.bz1OQG_graphic[data-variant=article]{aspect-ratio:1/.92;width:clamp(180px,52vw,230px)}.bz1OQG_graphic[data-variant=article] .bz1OQG_sources{inset:0 -40px}}@media (max-width:640px) and (max-height:700px){.bz1OQG_graphic[data-variant=article]{width:180px}}
.TIyMGq_greeting{vertical-align:baseline;width:fit-content;color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:12px;align-items:center;gap:4px;margin:0;padding:0;display:inline-flex}.TIyMGq_greeting:focus-visible{outline:2px solid var(--focus);outline-offset:6px}.TIyMGq_word{font:inherit}.TIyMGq_gesture{place-items:center;width:30px;height:1em;display:grid;position:relative;top:-1px}.TIyMGq_hand{transform-origin:72% 82%;font-size:23px;line-height:1;animation:1.3s both TIyMGq_hello-wave;display:block}.TIyMGq_marks{stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;opacity:0;width:100%;height:100%;animation:1.3s ease-out both TIyMGq_hello-marks;position:absolute;inset:0;overflow:visible}@keyframes TIyMGq_hello-wave{0%,to{transform:rotate(0)}12%{transform:rotate(-16deg)}27%{transform:rotate(22deg)}42%{transform:rotate(-13deg)}57%{transform:rotate(18deg)}72%{transform:rotate(-7deg)}86%{transform:rotate(5deg)}}@keyframes TIyMGq_hello-marks{0%,to{opacity:0;transform:translate(-2px,3px)scale(.9)}25%,55%{opacity:.8;transform:translate(0)scale(1)}80%{opacity:0;transform:translate(2px,-2px)scale(1.04)}}@media (prefers-reduced-motion:reduce){.TIyMGq_hand,.TIyMGq_marks{animation:none}}
.Nz5UKG_section{padding-block:88px 96px}.Nz5UKG_conversation{grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;display:grid}.Nz5UKG_label{color:var(--muted);font-family:var(--font-secondary), monospace;letter-spacing:.1em;text-transform:uppercase;grid-column:span 3;margin:0;padding-top:8px;font-size:14px;font-weight:400;line-height:1.4}.Nz5UKG_conversationBody{grid-column:4/span 8;gap:32px;max-width:640px;display:grid}.Nz5UKG_conversationBody h3{color:var(--ink);letter-spacing:-.025em;margin:0 0 10px;font-size:21px;font-weight:450;line-height:1.5}.Nz5UKG_conversationBody p{color:var(--muted);margin:0;font-size:15px;line-height:1.85}@media (max-width:760px){.Nz5UKG_section{padding-block:60px 64px}.Nz5UKG_conversation{grid-template-columns:1fr;gap:28px}.Nz5UKG_label,.Nz5UKG_conversationBody{grid-column:1}.Nz5UKG_label{padding-top:0}}
