:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#101210;--surface:#181a18;--text:#f3f5f2;--muted:#a8b0a9;--line:#2c312e;--accent:#98fbcb;--mint:#98fbcb;--mint-ink:#102117;--shape-mint:#1c2822;--shape-tint:#18211d;--shape-quiet:#141a17;--frame:#1c221e;--hover:#242a26}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--surface:#e6ece7;--text:#161815;--muted:#526157;--line:#c8c8c8;--accent:#0e6b45;--mint:#98fbcb;--mint-ink:#102117;--shape-mint:#e5f6ee;--shape-tint:#eef6f1;--shape-quiet:#f4f6f4;--frame:#e4e8e4;--hover:#dfe3df}*,:before,:after{box-sizing:border-box}*{margin:0}html{scroll-behavior:smooth;overflow-anchor:none;background:var(--bg);color:var(--text);text-rendering:optimizelegibility;font-family:Arial,Helvetica,sans-serif;font-size:100%;line-height:1.5;overflow-y:scroll}body{background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}a{color:inherit}ul,ol{padding:0;list-style:none}::selection{color:#102117;background:#98fbcb}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}:focus:not(:focus-visible){outline:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{z-index:80;background:var(--mint);color:var(--mint-ink);padding:.55rem .8rem;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip:focus{top:.75rem}.wrap{width:min(68rem,100% - 3rem);min-width:0;margin-inline:auto;container-type:inline-size}.shell{z-index:1;min-width:0;position:relative}.theme-toggle{background:var(--surface);min-width:44px;min-height:44px;color:var(--text);cursor:pointer;border:0;border-radius:.35rem;flex:none;justify-content:center;align-items:center;gap:.45rem;padding:0 .85rem;display:inline-flex}.theme-toggle:hover:not(:disabled){background:var(--hover)}.theme-toggle:disabled{cursor:wait}.theme-toggle svg{display:block}.icon-moon,.label-to-dark,:root[data-theme=light] .icon-sun,:root[data-theme=light] .label-to-light{display:none}:root[data-theme=light] .icon-moon,:root[data-theme=light] .label-to-dark{display:inline-flex}.hero{align-items:center;min-height:38rem;padding:4.5rem 0;display:flex}.hero-copy{min-width:0;max-width:100%;container-type:inline-size}.hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,17.5rem);align-items:center;gap:4.5rem;width:100%;display:grid}.hero-enter{animation:.7s both fade-in}.lede.hero-enter{animation-delay:.12s}.hero-meta.hero-enter{animation-delay:.22s}@keyframes fade-in{0%{opacity:0}to{opacity:1}}h1{max-width:100%;font-weight:700}.name{white-space:nowrap;letter-spacing:-.045em;max-width:100%;font-size:clamp(1.35rem,11.2cqi,6.25rem);font-weight:700;line-height:1.02;display:block}.role{letter-spacing:-.03em;max-width:100%;margin-top:.85rem;font-size:clamp(1rem,6.4cqi,2.85rem);font-weight:700;line-height:1.15;display:block}.mark-word{white-space:nowrap;vertical-align:baseline;display:inline-block;position:relative}.mark-text,.mark-sweep{padding:.02em .1em .07em}.mark-sweep{background:var(--mint);color:var(--mint-ink);clip-path:inset(0 100% 0 0);pointer-events:none;-webkit-user-select:none;user-select:none;animation:.85s cubic-bezier(.65,0,.35,1) .4s both mark-select;position:absolute;top:0;left:0}@keyframes mark-select{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}.lede{max-width:34rem;color:var(--muted);margin-top:1.6rem;font-size:1.0625rem}.hero-meta{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin-top:1.15rem;font-size:.95rem;display:flex}.portrait-slot{justify-self:end;width:min(100%,17.5rem);padding:1.35rem 0 0 1.35rem;position:relative}.portrait-offset{z-index:0;background:var(--frame);width:calc(100% - 1.35rem);height:calc(100% - 1.35rem);position:absolute;top:0;left:0}.portrait{z-index:1;color:var(--text);background:var(--bg);padding:1.35rem;position:relative;overflow:hidden}.portrait-cover{background:var(--mint);animation:.9s cubic-bezier(.77,0,.18,1) .35s forwards portrait-cover;position:absolute;inset:0;transform:translate(0,0)}@keyframes portrait-cover{to{transform:translate(100%)}}.portrait-svg{width:100%;height:auto;display:block}.mint-fill{fill:var(--mint)}.section{padding:7.75rem 0}h2{letter-spacing:-.03em;margin-bottom:1.75rem;font-size:clamp(1.7rem,2.4vw,2.15rem);font-weight:700;line-height:1.1}.prose{max-width:42rem;font-size:1.0625rem}.prose p+p{margin-top:.9rem}.note{color:var(--muted)}.work-list{flex-direction:column;gap:.85rem;margin-top:2.25rem;display:flex}.work-item{background:var(--surface);border-radius:.35rem;grid-template-columns:9.5rem minmax(0,1fr);align-items:center;gap:1rem 1.5rem;padding:1.45rem 1.5rem;display:grid}.work-item h3{letter-spacing:-.02em;font-size:1.2rem}.work-item p{color:var(--muted);max-width:38rem}.project-grid{grid-template-columns:minmax(0,40rem);gap:1.25rem;display:grid}.project-grid>li{display:flex}.card{background:var(--surface);border-radius:.35rem;flex-direction:column;gap:.85rem;width:100%;min-height:17rem;padding:1.85rem 1.7rem;display:flex}.card h3{letter-spacing:-.03em;font-size:clamp(1.6rem,2vw,2rem)}.meta{color:var(--muted);font-size:.92rem}.tags{flex-wrap:wrap;gap:.4rem;margin-top:auto;display:flex}.tag{background:var(--bg);color:var(--text);border-radius:.25rem;padding:.28rem .55rem;font-size:.8rem}.contact-block{max-width:42rem}.email{max-width:100%;color:var(--text);letter-spacing:-.03em;overflow-wrap:anywhere;margin-top:.55rem;font-size:clamp(1.15rem,6.8cqi,2.6rem);font-weight:700;line-height:1.2;text-decoration:none;display:inline-block}.email:hover{color:var(--accent)}.socials{flex-wrap:wrap;gap:.35rem 1.25rem;margin-top:1.4rem;display:flex}.socials a{color:var(--accent);align-items:center;min-height:44px;display:inline-flex}[data-reveal=wait]{opacity:0}[data-reveal=in]{opacity:1;transition:opacity .55s}.site-footer{color:var(--muted);padding:3rem 0 3.5rem;font-size:.92rem}.footer-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;display:flex}.stack{color:var(--muted);margin-top:.9rem}.section-lead{margin-bottom:1.35rem}.brand-row{align-items:center;gap:1.6rem;height:4.75rem;margin-bottom:1.35rem;display:flex}.brand-mark{width:auto;height:4.5rem;display:block}.brand-react{color:#61dafb}.brand-mark-wide{height:3.5rem}.brand-tile{background:#1c1c1c;border-radius:.35rem;place-items:center;width:4.75rem;height:4.75rem;display:grid}.brand-tile .brand-mark{height:2.75rem}.not-found{padding:5rem 0 6rem}.not-found h1{margin-bottom:.8rem;font-size:clamp(2.2rem,6vw,3.5rem)}.not-found a{min-height:44px;color:var(--accent);align-items:center;margin-top:1rem;display:inline-flex}.socials a:hover,.email:hover,.theme-toggle:hover:not(:disabled){transition:color .15s,background-color .15s}.curtain{z-index:60;pointer-events:none;visibility:hidden;background:#98fbcb;position:fixed;inset:0}.curtain[data-active=true]{visibility:visible}html[data-curtain]::view-transition{background:#98fbcb}html[data-curtain]::view-transition-group(root){background:#98fbcb;animation:none}html[data-curtain]::view-transition-image-pair(root){animation:none}html[data-curtain]::view-transition-old(root){mix-blend-mode:normal;opacity:1}html[data-curtain]::view-transition-new(root){mix-blend-mode:normal;opacity:1}html[data-curtain=ltr]::view-transition-old(root){z-index:2;animation:.42s cubic-bezier(.77,0,.18,1) both curtain-old-ltr}html[data-curtain=ltr]::view-transition-new(root){z-index:3;animation:.46s cubic-bezier(.77,0,.18,1) .32s both curtain-new-ltr}html[data-curtain=rtl]::view-transition-old(root){z-index:2;animation:.42s cubic-bezier(.77,0,.18,1) both curtain-old-rtl}html[data-curtain=rtl]::view-transition-new(root){z-index:3;animation:.46s cubic-bezier(.77,0,.18,1) .32s both curtain-new-rtl}@keyframes curtain-old-ltr{0%{clip-path:inset(0);opacity:1}to{clip-path:inset(0 0 0 100%);opacity:1}}@keyframes curtain-new-ltr{0%{clip-path:inset(0 100% 0 0);opacity:1}to{clip-path:inset(0);opacity:1}}@keyframes curtain-old-rtl{0%{clip-path:inset(0);opacity:1}to{clip-path:inset(0 100% 0 0);opacity:1}}@keyframes curtain-new-rtl{0%{clip-path:inset(0 0 0 100%);opacity:1}to{clip-path:inset(0);opacity:1}}@media (width<=800px){.wrap{width:min(68rem,100% - 1.25rem)}.label-to-light,.label-to-dark{display:none!important}.theme-toggle{width:44px;padding:0}.hero{align-items:flex-start;min-height:0;padding-top:1.75rem}.hero-grid,.work-item,.project-grid{grid-template-columns:1fr}.portrait-slot{justify-self:start;width:min(100%,15rem)}.flow-node{font-size:.68rem}.brand-row{gap:1.1rem;height:3.8rem}.brand-mark{height:3.5rem}.brand-mark-wide{height:2.7rem}.brand-tile{width:3.8rem;height:3.8rem}.brand-tile .brand-mark{height:2.2rem}.fe-stage{grid-template-columns:8.15rem minmax(0,1fr);gap:.45rem;padding:.55rem}.fe-tool{font-size:.62rem}.db-scene,.db-table{left:10px;right:10px}.section{padding:4.25rem 0}.work-item{align-items:start}}.flow-stage,.db-stage,.fe-stage{background:var(--surface);contain:paint;border-radius:.35rem;width:100%;max-width:100%;overflow:hidden}.flow-stage{height:280px;position:relative;transform:translateZ(0)}.flow-node{z-index:1;background:var(--bg);width:22%;height:52px;color:var(--text);letter-spacing:-.03em;white-space:nowrap;border-radius:.35rem;justify-content:center;align-items:center;padding:0 .4rem;font-size:.92rem;font-weight:700;display:flex;position:absolute;overflow:hidden}.flow-node[data-col="1"]{left:4%}.flow-node[data-col="2"]{left:39%}.flow-node[data-col="3"]{left:74%}.flow-node[data-row="1"]{top:28px}.flow-node[data-row="2"]{top:176px}.flow-node[data-mint=true]{background:var(--mint);color:var(--mint-ink)}.flow-track{z-index:0;position:absolute}.flow-bar{background:var(--muted);position:absolute}.flow-track[data-axis=x] .flow-bar{height:4px;top:2px;left:0;right:0}.flow-track[data-axis=y] .flow-bar{width:4px;top:0;bottom:0;left:2px}.flow-runner{position:absolute;inset:0}.flow-dot{background:#98fbcb;border-radius:50%;width:8px;height:8px;position:absolute}.flow-track[data-axis=x] .flow-dot{top:0;right:0}.flow-track[data-axis=y] .flow-dot{bottom:0;left:0}.db-stage{height:430px;position:relative;transform:translateZ(0)}.db-scene{background:var(--frame);border-radius:.35rem;height:118px;position:absolute;top:12px;left:16px;right:16px;overflow:hidden}.db-scene-fill{position:absolute;inset:0}.db-wire{background:var(--muted);width:4px;height:42px;position:absolute;top:136px;left:calc(50% - 2px)}.db-traveler{z-index:5;width:28px;height:28px;position:absolute;top:78px;left:calc(50% - 14px)}.db-flyer-dots{z-index:5;height:22px;color:var(--text);letter-spacing:.16em;text-align:center;font-size:.78rem;font-weight:700;line-height:22px;position:absolute;top:72px;left:16px;right:16px}.db-dots-fly{display:inline-block}.db-window{background:var(--bg);transform-origin:50% 55%;border-radius:.3rem;height:102px;position:absolute;top:8px;left:11%;right:11%;overflow:hidden}.db-win-bar{background:var(--surface);align-items:center;gap:4px;height:18px;padding:0 8px;display:flex}.db-win-bar i{background:var(--muted);border-radius:50%;width:6px;height:6px}.db-win-body{height:84px;position:relative}.db-win-line{background:var(--frame);border-radius:.15rem;width:42%;height:8px;position:absolute;top:14px;left:12px}.db-win-line-2{width:26%;top:28px}.db-win-hit{background:var(--mint);border-radius:.15rem;width:40px;height:16px;position:absolute;bottom:12px;right:12px}.db-cursor-run{width:100%;height:100%;position:absolute;top:0;left:0}.db-cursor{width:12px;height:16px;color:var(--text);display:block}.db-bug{width:32px;height:32px;color:var(--text);position:absolute;top:22px;left:calc(50% - 16px)}.db-bug svg{width:32px;height:32px;display:block}.db-phone{background:var(--bg);border-radius:.85rem;width:68px;height:106px;position:absolute;top:6px;left:calc(50% - 34px);overflow:hidden}.db-phone-top{background:var(--surface);height:14px}.db-bubble{background:#98fbcb;border-radius:.5rem;width:36px;height:16px;position:absolute;bottom:18px;right:8px}.db-bubble-quiet{background:var(--frame);width:28px;top:26px;bottom:auto;left:8px}.db-form{background:var(--bg);border-radius:.3rem;flex-direction:column;justify-content:center;gap:8px;height:86px;padding:12px 14px;display:flex;position:absolute;top:16px;left:15%;right:15%}.db-field{background:var(--surface);border-radius:.2rem;height:22px}.db-field-pass{color:var(--text);background:var(--frame);letter-spacing:.08em;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}.db-pay{background:var(--bg);border-radius:.35rem;width:140px;height:82px;position:absolute;top:18px;left:calc(50% - 70px);overflow:hidden}.db-pay-band{background:var(--text);height:14px;margin-top:16px;display:block}.db-pay-ok{background:#f0c36a;border-radius:.15rem;width:36px;height:12px;margin:14px 0 0 14px;display:block}.db-pay-check{background:#98fbcb;border-radius:.2rem;width:16px;height:16px;position:absolute;bottom:12px;right:14px}.db-drop{background:var(--bg);border-radius:.35rem;width:156px;height:90px;position:absolute;top:14px;left:calc(50% - 78px)}.db-sheet{background:#c9b6f0;border-radius:.15rem;width:32px;height:40px;position:absolute;top:24px;left:calc(50% - 16px)}.db-sheet i{background:var(--bg);width:10px;height:10px;position:absolute;top:0;right:0}.db-table{height:240px;position:absolute;top:178px;left:16px;right:16px;overflow:hidden}.db-row{background:var(--bg);border-radius:.25rem;grid-template-columns:3.2rem 28px minmax(0,1fr);align-items:center;column-gap:.75rem;height:44px;padding:0 .8rem;display:grid;position:absolute;top:0;left:0;right:0}.db-id{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-weight:700}.db-chip{color:#102117;border-radius:.25rem;place-items:center;width:28px;height:28px;display:grid}.db-chip svg{display:block}.db-dots{color:var(--muted);letter-spacing:.14em}.fe-stage{grid-template-columns:10.6rem minmax(0,1fr);gap:.85rem;height:420px;padding:.9rem;display:grid}.fe-tools{flex-direction:column;justify-content:center;gap:.35rem;min-width:0;display:flex}.fe-tool{height:38px;color:var(--muted);letter-spacing:-.02em;align-items:center;font-size:.78rem;font-weight:700;display:flex;position:relative}.fe-tool-bg{background:var(--mint);opacity:0;border-radius:.25rem;position:absolute;inset:0}.fe-tool[data-on=true]{color:var(--mint-ink)}.fe-tool[data-on=true] .fe-tool-bg{opacity:1}.fe-tool-row{z-index:1;white-space:nowrap;align-items:center;gap:.4rem;width:100%;min-width:0;padding:0 .4rem;display:flex;position:relative}.fe-ico{flex:none;width:16px;height:16px;display:block}.fe-canvas{background:var(--bg);border-radius:.35rem;flex-direction:column;min-width:0;display:flex;overflow:hidden}.fe-chrome{background:var(--frame);flex:none;align-items:center;height:32px;padding:0 .7rem;display:flex}.fe-dots{gap:5px;display:flex}.fe-dots span{background:var(--muted);border-radius:50%;width:7px;height:7px}.fe-url{color:var(--muted);margin-left:.55rem;font-size:.75rem}.fe-screen{flex:1;position:relative;overflow:hidden}.if-layer{position:absolute;inset:0}.if-block{background:var(--frame);border-radius:.3rem;position:absolute}.serp{flex-direction:column;gap:.55rem;padding:.85rem .9rem 0;display:flex}.serp-field{background:var(--frame);border-radius:.7rem;flex:none;align-items:center;gap:.55rem;height:34px;padding:0 .75rem;display:flex}.serp-glass{background:var(--muted);border-radius:50%;flex:none;width:10px;height:10px}.serp-query{background:var(--muted);border-radius:99px;width:38%;height:7px}.serp-hit{align-items:flex-start;gap:.75rem;min-height:0;display:flex}.serp-copy{flex:1;min-width:0}.serp-title{color:var(--text);letter-spacing:-.02em;font-size:.95rem;font-weight:700;line-height:1.2}.serp-url{color:var(--accent);margin-top:.15rem;font-size:.75rem}.serp-snip{color:var(--muted);margin-top:.2rem;font-size:.75rem;line-height:1.35}.serp-quiet{opacity:.55}.serp-thumb{flex:none;grid-template-columns:1fr 1fr;gap:3px;width:46px;height:36px;display:grid}.serp-thumb span{background:var(--frame);border-radius:2px}.serp-thumb span:first-child{background:var(--mint);grid-column:1/-1}.query{grid-template-rows:42% 1fr;grid-template-columns:1fr 1.15fr;gap:.55rem;padding:.75rem;display:grid}.q-card{background:var(--frame);border-radius:.35rem;position:relative;overflow:hidden}.q-chart{grid-area:1/2/span 2}.q-list{grid-area:2/1}.q-fill{background:var(--bg);position:absolute;inset:0}.q-label{z-index:1;color:var(--muted);letter-spacing:-.01em;font-size:.68rem;font-weight:700;position:absolute;top:.45rem;left:.55rem}.q-num{z-index:1;color:var(--text);letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:1.65rem;font-weight:700;position:absolute;bottom:.45rem;right:.7rem}.q-num span{position:absolute;bottom:0;right:0}.q-bars{z-index:1;align-items:flex-end;gap:.45rem;height:62%;display:flex;position:absolute;bottom:.7rem;left:.7rem;right:.7rem}.q-bar{background:var(--mint);border-radius:.2rem .2rem 0 0;flex:1;height:100%}.q-row{z-index:1;align-items:center;gap:.4rem;height:14%;display:flex;position:absolute;left:.55rem;right:.55rem}.q-row i{background:var(--mint);border-radius:50%;flex:none;width:8px;height:8px}.q-row span{background:var(--muted);border-radius:99px;flex:1;height:6px}.q-pulse{z-index:2;background:var(--mint);pointer-events:none;position:absolute;inset:0}.fe-piece{border-radius:.25rem;position:absolute;overflow:hidden}.fe-fill{border-radius:inherit;position:absolute;inset:0}.fe-label{z-index:1;letter-spacing:-.02em;font-size:.78rem;font-weight:700;position:absolute;top:.45rem;left:.55rem}.fe-meter{z-index:2;background:#102117;border-radius:99px;width:42%;height:7px;position:absolute;top:32%;left:32%}.bg-shapes{z-index:0;pointer-events:none;contain:paint;position:fixed;inset:0;overflow:clip}.shape{pointer-events:none;background:var(--shape-tint);display:block;position:absolute}.shape-circle{border-radius:50%}.shape-round{border-radius:1.25rem}.shape-tri{clip-path:polygon(50% 0,100% 100%,0 100%)}.shape-a{background:var(--shape-mint);width:8.5rem;height:8.5rem;animation:34s ease-in-out infinite alternate shape-a;top:6%;right:8%}.shape-b{background:var(--shape-quiet);width:4.5rem;height:4.5rem;animation:28s ease-in-out -9s infinite alternate shape-b;top:38%;left:18%}.shape-c{background:var(--shape-tint);width:7.5rem;height:6.5rem;animation:40s ease-in-out -16s infinite alternate shape-c;bottom:10%;right:14%}.shape-d{background:var(--shape-tint);width:9rem;height:4.25rem;animation:36s ease-in-out -6s infinite alternate shape-d;top:18%;left:28%}.shape-e{background:var(--shape-mint);width:3.25rem;height:3.25rem;animation:30s ease-in-out -12s infinite alternate shape-e;bottom:18%;left:42%}.shape-f{background:var(--shape-quiet);width:5.5rem;height:5.5rem;animation:44s ease-in-out -20s infinite alternate shape-f;top:58%;right:22%}@keyframes shape-a{0%{transform:translate(0,0)rotate(0)}to{transform:translate(-12px,16px)rotate(10deg)}}@keyframes shape-b{0%{transform:translate(0,0)rotate(0)}to{transform:translate(10px,-14px)rotate(-8deg)}}@keyframes shape-c{0%{transform:translate(0,0)rotate(0)}to{transform:translate(-8px,-12px)rotate(14deg)}}@keyframes shape-d{0%{transform:translate(0,0)rotate(0)}to{transform:translate(14px,10px)rotate(-6deg)}}@keyframes shape-e{0%{transform:translate(0,0)rotate(0)}to{transform:translate(-10px,12px)rotate(18deg)}}@keyframes shape-f{0%{transform:translate(0,0)rotate(0)}to{transform:translate(8px,-10px)rotate(-12deg)}}@media (width<=800px){.shape-a{width:6.5rem;height:6.5rem;right:4%}.shape-b{width:2.75rem;height:2.75rem;left:28%}.shape-c{width:4.5rem;height:4rem;right:6%}.shape-d{width:5.5rem;height:2.6rem;left:30%}.shape-e{width:2.25rem;height:2.25rem;left:46%}.shape-f{width:3.25rem;height:3.25rem;right:8%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}h1,[data-reveal],.card,.hero-enter{opacity:1!important;animation:none!important;transform:none!important}.mark-sweep{clip-path:none;animation:none}.portrait-cover{animation:none;transform:translate(100%)}.shape,.flow-runner,.fe-piece,.fe-meter,.db-row,.db-traveler,.db-scene-fill{animation:none!important}html[data-curtain]::view-transition-old(root){animation:none!important}html[data-curtain]::view-transition-new(root){animation:none!important}}
