@font-face{font-family:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/raleway-cyrillic-ext-wght-normal-Dc5xu4We.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/raleway-cyrillic-wght-normal-B0Yo_ULV.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/raleway-vietnamese-wght-normal-wikBsL6_.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/raleway-latin-ext-wght-normal-CwtNDoQR.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Raleway Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/raleway-latin-wght-normal-CSF1BaNN.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-vietnamese-400-normal-BNOj0Qhp.woff2)format("woff2"),url(/assets/space-mono-vietnamese-400-normal-B0PMp_xB.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-ext-400-normal-DTLbW2xa.woff2)format("woff2"),url(/assets/space-mono-latin-ext-400-normal-D4cJI_B-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2)format("woff2"),url(/assets/space-mono-latin-400-normal-_3DlpgIW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-vietnamese-700-normal-DWQgDHuA.woff2)format("woff2"),url(/assets/space-mono-vietnamese-700-normal-D-KrLuLr.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-ext-700-normal-B2s3bDs2.woff2)format("woff2"),url(/assets/space-mono-latin-ext-700-normal-B_E7P90g.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-700-normal-mWgeinG7.woff2)format("woff2"),url(/assets/space-mono-latin-700-normal-D7A851RN.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--black:#0a0a0a;--bar:#1a1a1a;--card-line:#262626;--white:#fff;--text-on-dark:#a8a8a8;--text-on-light:#6b6b6b;--ink:#111;--green:#45a012;--green-hover:#3b8b0e;--orange:#f5a01a;--orange-hover:#e08f0c;--blue:#1f2bff;--blue-hover:#1621d9;--teal:#16a38a;--teal-hover:#118a74;--heading:"Raleway Variable", "Raleway", "Helvetica Neue", Arial, sans-serif;--mono:"Space Mono", ui-monospace, Menlo, Consolas, monospace;--container:1080px;--pad:clamp(1.25rem, 4vw, 2rem);--section:clamp(4.5rem, 10vw, 7rem);--radius:8px;--ease:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:90px}body{background:var(--black);color:var(--white);font-family:var(--mono);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.7}img{max-width:100%;display:block}a{color:inherit}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}ul,ol{list-style:none}h1,h2,h3{font-family:var(--heading);text-wrap:balance}:focus-visible{outline:2px solid var(--green);outline-offset:3px}.container{width:100%;max-width:calc(var(--container) + 2 * var(--pad));padding-inline:var(--pad);margin-inline:auto}.section{padding-block:var(--section)}.dark{background:var(--black);color:var(--white)}.light{background:var(--white);color:var(--ink)}.muted{color:var(--ink);background:#f4f5f3}.muted .section-head p{color:var(--text-on-light)}.section-head{text-align:center;max-width:600px;margin:0 auto clamp(2.75rem,6vw,4rem)}.section-head h2{letter-spacing:-.01em;font-size:clamp(2rem,1.5rem + 1.8vw,2.75rem);font-weight:800;line-height:1.15}.section-head p{margin-top:.85rem;font-size:14px}.dark .section-head p{color:var(--text-on-dark)}.light .section-head p{color:var(--text-on-light)}.btn{min-height:46px;color:var(--white);font-family:var(--mono);border-radius:4px;justify-content:center;align-items:center;gap:.6rem;padding:0 1.6rem;font-size:14px;font-weight:700;text-decoration:none;transition:background-color .18s,box-shadow .18s,transform .14s;display:inline-flex}.btn svg{font-size:.7em;transition:transform .2s}.btn:hover svg,.btn:focus-visible svg{transform:translate(3px)}.btn:active{transform:scale(.97)}.btn-green{background:var(--green);box-shadow:0 0 22px #45a01273}.btn-green:hover{background:var(--green-hover);box-shadow:0 0 30px #45a01299}.btn-orange{background:var(--orange);color:var(--ink)}.btn-orange:hover{background:var(--orange-hover)}.btn-blue{background:var(--blue)}.btn-blue:hover{background:var(--blue-hover)}.btn-teal{background:var(--teal)}.btn-teal:hover{background:var(--teal-hover)}.btn-green.btn-flat,.btn-green.btn-flat:hover{box-shadow:none}.btn-small{min-height:38px;padding:0 1.1rem;font-size:13px}.btn-block{width:100%}.mono-link{text-underline-offset:.25em;font-size:13px;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;transition:color .18s}.light .mono-link:hover,.muted .mono-link:hover{color:var(--green-hover)}.dark .mono-link:hover{color:#7fd34a}.nav-wrap{z-index:40;height:0;padding-inline:var(--pad);position:sticky;top:0}.nav-wrap .nav{transform:translateY(14px)}.nav{background:var(--bar);border-radius:6px;justify-content:space-between;align-items:center;gap:1.5rem;max-width:920px;margin-inline:auto;padding:.7rem 1.5rem;display:flex}.nav-links{gap:clamp(1rem,3vw,2.75rem);font-size:13px;display:flex}.nav-links a,.nav-socials a{color:#d4d4d4;text-decoration:none;transition:color .18s}.nav-links a:hover,.nav-socials a:hover,.nav-links a:focus-visible,.nav-socials a:focus-visible{color:var(--white)}.nav-socials{gap:1.1rem;font-size:15px;display:flex}.nav-socials a{place-items:center;width:28px;height:28px;display:grid}.nav-toggle{color:#d4d4d4;align-items:center;gap:.5rem;font-size:13px;display:none}.hero{padding-block:calc(66px + clamp(3rem,7vw,5rem)) clamp(3.5rem,7vw,5rem)}.hero-grid{grid-template-columns:1.15fr .85fr;align-items:center;gap:3rem;display:grid}.hero-text h1{letter-spacing:-.015em;font-size:clamp(2.6rem,1.6rem + 3.4vw,4.25rem);font-weight:800;line-height:1.08}.hero-role{font-family:var(--heading);color:#dedede;margin-top:.6rem;font-size:clamp(1.25rem,1rem + .9vw,1.6rem);font-weight:600}.hero-intro{max-width:48ch;color:var(--text-on-dark);margin:1rem 0 2rem;font-size:14.5px}.hero-photo{aspect-ratio:1;background:#2a2a2a;border-radius:50%;justify-self:center;width:min(100%,380px);overflow:hidden}.hero-photo img{object-fit:cover;width:100%;height:100%}.worked-with{margin-top:clamp(3.5rem,8vw,5.5rem);margin-bottom:1rem;font-size:13px}.tech-row{grid-template-columns:repeat(8,minmax(0,1fr));gap:.75rem;display:grid}.tech-row li{border:1px solid var(--card-line);color:#8f8f8f;border-radius:6px;justify-content:center;align-items:center;gap:.5rem;min-height:54px;padding:.5rem;font-size:13px;font-weight:700;transition:color .18s,border-color .18s;display:flex}.tech-row li:hover{color:var(--white);border-color:#3a3a3a}.tech-row svg{flex:none;font-size:18px}.jobs{max-width:920px;margin-inline:auto}.job{background:var(--white);border-radius:var(--radius);border:1px solid #e4e6e2;grid-template-columns:240px 1fr;gap:2rem 3rem;padding:clamp(1.5rem,4vw,2.5rem);display:grid}.job-logo{margin-bottom:1.25rem;display:inline-block}.job-logo img{width:auto;height:30px}.job-period{font-size:13px;font-weight:700}.job-location{color:var(--text-on-light);margin-top:.2rem;font-size:12.5px}.job-title-row{flex-wrap:wrap;align-items:center;gap:.5rem .85rem;display:flex}.job-title-row h3{font-size:clamp(1.4rem,1.15rem + .8vw,1.85rem);font-weight:800;line-height:1.2}.job-company{color:var(--text-on-light);margin-top:.25rem;font-size:13px}.job-work{color:#3f3f3f;flex-direction:column;gap:.6rem;margin-top:1.25rem;font-size:14px;display:flex}.job-work li{padding-left:1.25rem;position:relative}.job-work li:before{content:"";background:var(--green);width:8px;height:2px;position:absolute;top:.75em;left:0}.job-stack{flex-wrap:wrap;gap:.4rem;margin-top:1.25rem;display:flex}.job-stack li{color:#4a4a4a;border:1px solid #dcdfd9;border-radius:4px;padding:.15rem .6rem;font-size:12px;font-weight:700}.job-link{align-items:center;gap:.4rem;margin-top:1.5rem;display:inline-flex}.job-link svg{font-size:.7em}.tag--green{color:#2f6e0b;background:#e3f5d8}.cases{flex-direction:column;gap:clamp(4rem,9vw,6rem);display:flex}.case{grid-template-columns:1fr 1.15fr;align-items:center;gap:clamp(2rem,5vw,4rem);display:grid}.case--flip .case-text{order:2}.tag{border-radius:4px;padding:.15rem .6rem;font-size:11px;font-weight:700;display:inline-block}.tag--orange{color:#9a5b00;background:#fff1d6}.tag--blue{color:#1a22c9;background:#e3e5ff}.tag--teal{color:#0b6e5c;background:#d9f4ee}.case-text h3{margin-top:.85rem;font-size:clamp(1.5rem,1.2rem + 1vw,2rem);font-weight:800;line-height:1.2}.case-when{color:var(--text-on-light);margin-top:.2rem;font-size:12.5px}.case-desc{color:#4d4d4d;margin-top:1rem;font-size:14px}.case-stack{color:var(--text-on-light);margin-top:.75rem;font-size:12.5px}.case-actions{flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:1.75rem;display:flex}.case-visual{min-width:0;position:relative}.gallery-stage{border-radius:var(--radius);background:var(--shot-bg);border:1px solid #e3e3e3;flex-direction:column;display:flex;overflow:hidden}.window-bar{background:#ececec;border-bottom:1px solid #e0e0e0;flex:none;align-items:center;gap:.9rem;height:34px;padding:0 .85rem;display:flex}.window-bar .dots{gap:6px;display:flex}.window-bar .dots i{background:#ff5f57;border-radius:50%;width:10px;height:10px}.window-bar .dots i:nth-child(2){background:#febc2e}.window-bar .dots i:nth-child(3){background:#28c840}.window-url{color:#6b6b6b;white-space:nowrap;text-overflow:ellipsis;background:#fff;border-radius:999px;flex:1;max-width:320px;padding:.15rem .7rem;font-size:11.5px;overflow:hidden}.gallery-view{flex:1;min-height:0;animation:.32s both shot-in;position:relative}.gallery-view>img{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.gallery-view>img.is-cover{object-fit:cover}.gallery-tabs{flex-wrap:wrap;gap:.4rem;margin-top:.85rem;display:flex}.gallery-tabs button{color:#444;border:1px solid #d6d6d6;border-radius:4px;min-height:32px;padding:0 .75rem;font-size:12px;font-weight:700;transition:background-color .18s,border-color .18s,color .18s}.gallery-tabs button:hover{border-color:var(--ink);color:var(--ink)}.gallery-tabs button[aria-selected=true]{background:var(--ink);border-color:var(--ink);color:var(--white)}@keyframes shot-in{0%{opacity:0}}.cert-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;max-width:880px;margin-inline:auto;display:grid}.cert-card{border:1px solid var(--card-line);border-radius:6px;flex-direction:column;padding:1.5rem;display:flex}.cert-mark{color:var(--white);margin-bottom:1rem;font-size:18px}.cert-thumb{aspect-ratio:16/10;cursor:zoom-in;background:#161616;border-radius:4px;place-items:center;display:grid;overflow:hidden}.cert-thumb img{object-fit:contain;max-width:calc(100% - 2rem);max-height:calc(100% - 2rem);transition:transform .4s}.cert-thumb img.badge{max-width:46%;max-height:62%}.cert-thumb:hover img{transform:scale(1.03)}.cert-card h3{margin-top:1.25rem;font-size:1.15rem;font-weight:700;line-height:1.3}.cert-note{color:var(--text-on-dark);word-break:break-word;margin-top:.4rem;font-size:13px}.cert-foot{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin-top:auto;padding-top:1.25rem;display:flex}.cert-issuer{font-size:13px;font-weight:700}.modal-backdrop{z-index:60;padding:var(--pad);background:#000000d9;place-items:center;animation:.2s both fade;display:grid;position:fixed;inset:0}.modal{width:min(960px,100%);max-height:calc(100svh - 2 * var(--pad));background:var(--bar);border-radius:var(--radius);flex-direction:column;animation:.28s ease-out both pop;display:flex;position:relative;overflow:hidden}.modal img{object-fit:contain;flex:1;min-height:0;margin-inline:auto;padding:clamp(1rem,3vw,2rem)}.modal img.badge{max-width:300px}.modal-info{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:0 clamp(1rem,3vw,2rem) 1.5rem;font-size:14px;display:flex}.modal-close{background:#2a2a2a;border-radius:50%;place-items:center;width:40px;height:40px;transition:background-color .18s;display:grid;position:absolute;top:.6rem;right:.6rem}.modal-close:hover{background:#3a3a3a}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.98)}}#more-work .container{max-width:calc(1440px + 2 * var(--pad))}@media (width>=1700px){#more-work .carousel-track{grid-auto-columns:calc(25% - 1.125rem)}}.carousel{grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;display:grid}.carousel-track{scroll-snap-type:x mandatory;scrollbar-width:none;grid-auto-columns:calc(33.3333% - 1rem);grid-auto-flow:column;column-gap:1.5rem;padding-block:.5rem 1.5rem;display:grid;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.work-card{scroll-snap-align:start;flex-direction:column;display:flex}.work-visual{border-radius:var(--radius);background:#fff;border:1px solid #ececec;height:300px;position:relative;overflow:hidden;container-type:inline-size}.work-visual>img{object-fit:contain;width:100%;height:100%}@container (width<=380px){.work-visual .ui-flow{grid-template-columns:repeat(3,minmax(0,1fr));align-content:center}.work-visual .ui-flow .node{min-height:0}.work-visual .ui-files li{padding-block:.22rem}}.work-card h3{margin-top:1.25rem;font-size:1.2rem;font-weight:800}.work-card p{color:var(--text-on-light);margin:.5rem 0 1.25rem;font-size:13px}.work-card .btn{align-self:flex-start;margin-top:auto}.carousel-arrow{color:#6b6b6b;border:1px solid #cfcfcf;border-radius:50%;place-items:center;width:36px;height:36px;font-size:12px;transition:border-color .18s,color .18s,opacity .18s;display:grid}.carousel-arrow:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.carousel-arrow:disabled{opacity:.35;cursor:default}.filters{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-bottom:2rem;display:flex}.filters button{color:#444;border:1px solid #d6d6d6;border-radius:4px;align-items:center;gap:.5rem;min-height:36px;padding:0 .9rem;font-size:12.5px;font-weight:700;transition:background-color .18s,border-color .18s,color .18s;display:inline-flex}.filters button span{color:#8a8a8a;font-weight:400}.filters button:hover{border-color:var(--ink);color:var(--ink)}.filters button[aria-pressed=true]{background:var(--green);border-color:var(--green);color:var(--white)}.filters button[aria-pressed=true] span{color:#e2f5d6}.work-meta{color:var(--text-on-light);margin-top:1.1rem;font-size:12px}.work-meta+h3{margin-top:.2rem}.ui-files{color:#e6edf3;background:#0d1117;flex-direction:column;font-size:13px;display:flex}.files-head{background:#161b22;padding:.75rem 1rem;font-size:13.5px}.files-owner{color:#8d96a0}.ui-files ul{flex-direction:column;flex:1;justify-content:center;padding:.5rem 1rem .75rem;display:flex}.ui-files li{align-items:center;gap:.6rem;min-width:0;padding:.3rem 0;display:flex}.file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-dot{background:#8d96a0;border-radius:50%;flex:none;width:10px;height:10px}.file-dot--ipynb{background:#da5b0b}.file-dot--py{background:#3572a5}.file-dot--go{background:#00add8}.file-dot--rs{background:#dea584}.file-dot--html{background:#e34c26}.file-dot--css{background:#639}.file-dot--js{background:#f1e05a}.file-dot--dir{background:#54aeff;border-radius:2px}.ui-files .files-more{color:#8d96a0;padding-left:1.05rem}.contact{text-align:center}.contact h2{font-size:clamp(2rem,1.5rem + 1.8vw,2.75rem);font-weight:800;line-height:1.15}.contact-lede{color:var(--text-on-dark);margin-top:.85rem;font-size:15px}.contact-email{font-family:var(--heading);color:var(--white);text-decoration:underline;-webkit-text-decoration-color:var(--green);text-decoration-color:var(--green);text-underline-offset:.3em;overflow-wrap:anywhere;margin-top:2rem;font-size:clamp(1.25rem,.9rem + 2vw,2.25rem);font-weight:700;text-decoration-thickness:3px;transition:color .18s,text-underline-offset .18s;display:inline-block}.contact-email:hover,.contact-email:focus-visible{color:#7fd34a;text-underline-offset:.4em}.footer{padding:1.25rem var(--pad);background:var(--bar);color:#cfcfcf;text-align:center;font-size:13px}[data-ui]{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.45;position:absolute;inset:0}.ui-chat{color:#e6e6e6;background:#0e1117;flex-direction:column;gap:.75rem;padding:1.25rem;display:flex}.ui-chat header{text-align:center}.ui-chat header strong{font-size:19px;display:block}.ui-chat header span{color:#a7abb2;font-size:12.5px}.chat-log{overscroll-behavior:contain;scrollbar-width:thin;flex-direction:column;flex:1;gap:.6rem;min-height:0;display:flex;overflow-y:auto}.msg{border-radius:6px;gap:.6rem;padding:.55rem .7rem;display:flex}.msg.user{background:#262730}.msg .avatar{background:#ff4b4b;border-radius:5px;flex:none;width:22px;height:22px}.msg.bot .avatar{background:#ffa421}.msg .menu{color:#cfcfcf;grid-template-columns:max-content max-content;column-gap:2rem;margin-top:.3rem;display:grid}.menu-row{display:contents}.typing{color:#a7abb2}.token{color:#ffd27a}.chips{flex-wrap:wrap;gap:.45rem;display:flex}.chips button{color:#f0f0f0;background:#262730;border-radius:999px;padding:.45rem .75rem;font-size:13px;transition:background-color .18s}.chips button span{color:#a7abb2;margin-left:.2rem}.chips button:hover:not(:disabled){background:#3a3c48}.chips button:disabled{opacity:.55;cursor:progress}.ui-notes{color:#e8eaed;background:#202124;flex-direction:column;gap:.9rem;padding:1.25rem;display:flex}.ui-notes .bar{justify-content:space-between;align-items:center;gap:1rem;display:flex}.ui-notes .bar strong{font-size:17px}.ui-notes .search{color:#9aa0a6;background:#303134;border-radius:8px;flex:1;max-width:220px;padding:.45rem .8rem;font-size:13px}.ui-notes .label{color:#9aa0a6;font-size:12.5px}.ui-notes .notes{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;display:grid}.ui-notes .note{border:1px solid #5f6368;border-radius:8px;min-height:84px;padding:.65rem .75rem}.ui-notes .note strong{margin-bottom:.2rem;font-size:13.5px;display:block}.ui-notes .note p{color:#bdc1c6;font-size:12.5px}.ui-term{color:#d4d4d4;font-family:var(--mono);white-space:pre;background:#101010;margin:0;padding:1.5rem;font-size:13px;line-height:1.65;display:flex;overflow:auto}.ui-term code{margin-block:auto;font-family:inherit}.ui-term .prompt{color:#8c8c8c}.ui-term .ok{color:#7ec699}.ui-term .key{color:#9cdcfe}.ui-logs{color:#ededed;background:#151515;flex-direction:column;justify-content:center;gap:.9rem;padding:1.25rem;display:flex}.ui-logs .stage{flex-direction:column;gap:.3rem;display:flex}.ui-logs .stage-name{color:#b5b5b5;font-size:12.5px}.ui-logs code{font-family:var(--mono);text-overflow:ellipsis;white-space:nowrap;background:#232323;border-radius:4px;padding:.5rem .7rem;font-size:12.5px;display:block;overflow:hidden}.ui-logs .result{font-size:13px}.ui-flow{color:#ededed;background:#151515;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;gap:.4rem;padding:1.25rem;display:grid}.ui-flow .node{background:#232323;border-radius:6px;flex-direction:column;gap:.3rem;min-height:110px;padding:.75rem .6rem;display:flex}.ui-flow .node strong{font-size:14px}.ui-flow .node span{color:#b5b5b5;font-size:12px}.ui-flow .node.route{background:#234d12}.cert-card,.work-visual{transition:transform .26s var(--ease), border-color .26s ease, box-shadow .26s ease}.cert-card:hover{border-color:#3a3a3a;transform:translateY(-4px)}.work-card:hover .work-visual{transform:translateY(-4px);box-shadow:0 14px 30px #00000014}@media (prefers-reduced-motion:no-preference){.js [data-reveal]{opacity:0;transition:opacity .65s var(--ease) var(--d,0s), transform .75s var(--ease) var(--d,0s);transform:translateY(18px)}.js [data-reveal=left]{transform:translate(-24px)}.js [data-reveal=right]{transform:translate(24px)}.js [data-reveal=zoom]{transform:scale(.94)}.js [data-reveal].is-in{opacity:1;transform:none}.js .cert-card[data-reveal].is-in{transition:opacity .65s var(--ease) var(--d,0s), transform .26s var(--ease), border-color .26s ease}.js .cert-card[data-reveal].is-in:hover{transform:translateY(-4px)}}@media (width<=960px){.carousel-track{grid-auto-columns:calc(50% - .75rem)}.tech-row{grid-template-columns:repeat(4,minmax(0,1fr))}.case,.case--flip{grid-template-columns:1fr}.case--flip .case-text{order:0}.case-text{max-width:620px}}@media (width<=720px){.nav{flex-wrap:wrap;padding:.6rem 1rem}.nav-toggle{display:inline-flex}.nav-links{flex-direction:column;order:3;gap:0;width:100%;padding-top:.5rem;display:none}.nav.is-open .nav-links{display:flex}.nav-links a{padding:.65rem 0;display:block}.hero-grid{grid-template-columns:1fr;gap:2.5rem}.job{grid-template-columns:1fr;gap:1.5rem}.hero-photo{order:-1;width:min(70%,280px)}.hero-text{text-align:center}.hero-intro{margin-inline:auto}.worked-with{text-align:center}.tech-row{grid-template-columns:repeat(2,minmax(0,1fr))}.cert-grid{grid-template-columns:1fr}.gallery-stage:has(.ui-chat){height:520px;aspect-ratio:auto!important}.carousel{grid-template-columns:1fr}.carousel-arrow{display:none}.carousel-track{grid-auto-columns:85%}.work-visual{height:auto;min-height:220px}.work-visual>img{height:auto}.work-visual [data-ui]{position:static}.ui-notes .notes{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-notes .note:nth-child(n+5){display:none}.ui-flow{grid-template-columns:1fr}.ui-flow .node{min-height:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}
