@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.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}:root{--bg:#fff;--ink:#0d0d0d;--muted:#74716b;--rule:#0d0d0d1f;--blue:#2496ed;--skin:#f3e4d6;--grey:#f4f4f5;--card:#fff;--line:#e6e6e8;--pad:clamp(16px, 4vw, 64px);--ease:cubic-bezier(.7, 0, .2, 1);--sans:"Geist Variable", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-padding-top:80px}html.lenis,html.lenis body{height:auto}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.5;overflow-x:hidden}img,video{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}:focus-visible{outline:2px solid var(--blue);outline-offset:4px}.skip{position:absolute;left:-9999px}.skip:focus{z-index:100;background:var(--ink);color:#fff;border-radius:99px;padding:8px 14px;top:16px;left:16px}h1,h2,h3{letter-spacing:-.03em;font-weight:500;line-height:1.05}h1{letter-spacing:-.055em;line-height:.95}.nav{z-index:60;padding:14px var(--pad);-webkit-backdrop-filter:blur(12px);transition:border-color .3s, translate .5s var(--ease);background:#ffffffdb;border-bottom:1px solid #0000;align-items:center;gap:24px;display:flex;position:fixed;inset:0 0 auto}.nav.scrolled{border-color:var(--line)}.nav.away{translate:0 -110%}.nav-links{gap:4px;margin-left:auto;display:flex}.nav-links a{color:#3d3d40;border-radius:999px;padding:8px 14px;font-size:15px;transition:background .2s,color .2s}.nav-links a:hover{background:var(--grey);color:var(--ink)}.menu-btn{display:none}.brand{letter-spacing:-.05em;font-weight:700;line-height:.86;display:inline-grid}.brand-top{font-size:30px}.brand-bottom{letter-spacing:.02em;margin-top:3px;font-size:12.5px;font-weight:600}.brand sup{vertical-align:.35em;margin-left:1px;font-size:.75em;font-weight:500}.menu-btn{z-index:2;align-items:center;gap:12px;margin-left:auto;padding:10px 0 10px 12px;font-weight:500;position:relative}.menu-btn[aria-expanded=true]{color:#fff}.menu-lines{gap:6px;width:26px;display:grid}.menu-lines i{height:2px;transition:transform .45s var(--ease);background:currentColor;display:block}.menu-btn[aria-expanded=true] .menu-lines i:first-child{transform:translateY(4px)rotate(45deg)}.menu-btn[aria-expanded=true] .menu-lines i:last-child{transform:translateY(-4px)rotate(-45deg)}.menu{z-index:55;padding:120px var(--pad) 40px;background:var(--ink);color:#fff;clip-path:circle(0 at calc(100% - var(--pad) - 20px) 40px);transition:clip-path .8s var(--ease);flex-direction:column;justify-content:space-between;display:flex;position:fixed;inset:0}.menu.open{clip-path:circle(150vmax at calc(100% - var(--pad) - 20px) 40px)}.menu ul{list-style:none}.menu li a{letter-spacing:-.04em;font-size:clamp(40px,9vw,72px);font-weight:500;line-height:1.15;display:inline-block}.menu-foot{color:#fff9;flex-wrap:wrap;gap:12px 32px;display:flex}.menu-foot a:hover{color:#fff}.btn{white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:54px;padding:0 28px;font-weight:500;transition:background .2s,transform .2s;display:inline-flex}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover{background:#2b2b2e}.btn-dark:active{transform:scale(.98)}.btn-dark:disabled{cursor:not-allowed;background:#c9c9cd}.btn-sm{min-height:42px;padding:0 18px;font-size:15px}.hero{--fs:clamp(40px, min(7.6vw, 11.5svh), 136px);min-height:100svh;padding:clamp(84px, 12svh, 110px) var(--pad) clamp(24px, 4svh, 48px);flex-direction:column;justify-content:center;gap:clamp(20px,3.5svh,48px);display:flex}.hero-title{font-size:var(--fs);letter-spacing:-.055em;line-height:.95}.line{margin-bottom:-.06em;padding-bottom:.06em;display:block;overflow:hidden}.line>span{animation:line-up 1.1s var(--ease) forwards;display:inline-block;translate:0 105%}.line:nth-child(2)>span{animation-delay:80ms}.line:nth-child(3)>span{animation-delay:.16s}@keyframes line-up{to{translate:0}}.hero-title em{color:var(--blue);font-style:normal;transition:opacity .3s,translate .3s;display:inline-block}.hero-title em.out{opacity:0;translate:0 -.2em}.typed{color:var(--blue)}.caret{vertical-align:-.06em;background:var(--blue);width:.07em;height:.78em;margin-left:.04em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.kb-stage{width:min(1080px, 100%, calc((100svh - 2 * .95 * var(--fs) - clamp(84px, 12svh, 110px) - clamp(24px, 4svh, 48px) - 2 * clamp(20px, 3.5svh, 48px) - clamp(8px, 2vw, 24px) - 16px) * 2.85));perspective:1400px;opacity:0;animation:kb-in 1.2s .35s var(--ease) forwards;justify-content:center;margin:clamp(8px,2vw,24px) auto 0;display:flex;container-type:inline-size}@keyframes kb-in{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}.kb{--g:.65cqw;width:100%;padding:calc(var(--g) * 2.2);gap:var(--g);transform-origin:50% 100%;touch-action:pan-y;-webkit-user-select:none;user-select:none;background:linear-gradient(#e3e4e6,#c9cbce);border-radius:clamp(10px,1.6vw,22px);display:grid;transform:rotateX(24deg);box-shadow:inset 0 1px #fff,inset 0 -2px 6px #0000001f,0 30px 60px -20px #00000059,0 2px #a9abaf}.kb-row{gap:var(--g);height:5.9cqw;display:flex}.kb-fn{height:3.3cqw}.key{color:#e9e9ea;letter-spacing:0;cursor:default;background:linear-gradient(#2b2b2e,#18181a);border-radius:.65cqw;flex-basis:0;justify-content:center;align-items:center;min-width:0;min-height:0;font-size:max(8px,1.6cqw);font-weight:500;transition:transform 90ms ease-out,box-shadow 90ms ease-out,background .2s;display:flex;position:relative;overflow:hidden;box-shadow:0 .37cqw #050505,inset 0 1px #ffffff14}.key b{font-weight:500}.key.small{font-size:max(5px,1cqw)}.key.left{justify-content:flex-start;align-items:flex-end;padding:0 0 .45em .8em}.key.right{justify-content:flex-end;align-items:flex-end;padding:0 .8em .45em 0}.key.logo .logo-mark{aspect-ratio:1;background:#e9e9ea;width:40%;transition:background .2s;-webkit-mask:url(/logo-mask.svg) 50%/contain no-repeat;mask:url(/logo-mask.svg) 50%/contain no-repeat}.key.logo.down .logo-mark{background:#9fd6ff}.key.down{background:linear-gradient(#212124,#141416);transform:translateY(.37cqw);box-shadow:0 0 #050505,inset 0 1px #ffffff0a}.key.down b{color:#9fd6ff;text-shadow:0 0 10px #9fd6ffb3}.kb-arrows{gap:var(--g);flex-basis:0;align-items:flex-end;min-width:0;display:flex}.kb-arrows>.key{height:50%}.kb-arrows-mid{flex:1;grid-template-rows:1fr 1fr;gap:2px;height:100%;display:grid}.kb-arrows-mid .key{height:100%}.kb-arrows .key{flex:1}@keyframes fade{to{opacity:1}}.grey{background:var(--grey);border-top:1px solid var(--line);padding:clamp(72px, 9vw, 120px) var(--pad)}.block{max-width:1120px;margin:0 auto}.block+.block{margin-top:clamp(96px,11vw,150px)}.block-head{text-align:center;max-width:640px;margin:0 auto clamp(32px,4vw,48px)}.badge{background:var(--card);box-shadow:inset 0 0 0 1px var(--line);color:#3d3d40;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:500;display:inline-block}.block-head h2,.about h2,.contact h2{margin-top:14px;font-size:clamp(30px,3.6vw,44px)}.block-head p{color:var(--muted);margin-top:12px}.cards{gap:14px;display:grid}.cards-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cards-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);min-width:0;box-shadow:0 0 0 1px var(--line), 0 1px 2px #00000008;border-radius:20px;padding:24px;position:relative;overflow:hidden}.card h3{letter-spacing:-.02em;font-size:20px}.card p{color:var(--muted);margin-top:6px;font-size:16px}.step{background:var(--grey);color:#3d3d40;border-radius:8px;place-items:center;min-width:34px;height:26px;margin-bottom:16px;padding:0 8px;font-size:13px;font-weight:500;display:inline-grid}.journey{row-gap:clamp(40px,6vw,72px);display:grid;position:relative}.journey .stop{z-index:1;opacity:.35;width:min(500px,44%);transition:opacity .6s,translate .6s cubic-bezier(.2,.8,.2,1),box-shadow .6s;position:relative;translate:0 24px}.journey .stop:nth-of-type(2n){justify-self:end;margin-top:-120px}.journey .stop.on{opacity:1;box-shadow:0 0 0 1px var(--line), 0 20px 50px -24px #2496ed59;translate:0}.journey .stop .step{transition:background .4s,color .4s,scale .4s cubic-bezier(.3,1.6,.5,1)}.journey .stop.on .step{background:var(--blue);color:#fff;scale:1.08}.journey-svg{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.journey-track{fill:none;stroke:#dcdfe8;stroke-width:3px;stroke-dasharray:2 10;stroke-linecap:round}.journey-line{fill:none;stroke:var(--blue);stroke-width:4px;stroke-linecap:round}.journey-dot{fill:var(--blue);stroke:#fff;stroke-width:4px;filter:drop-shadow(0 4px 8px #2496ed73)}.journey .stop .bubble{opacity:0;transition:opacity .4s,translate .4s cubic-bezier(.2,.8,.2,1);translate:0 10px}.journey .stop.on .bubble.them{opacity:1;transition-delay:.25s;translate:0}.journey .stop.on .bubble.me{opacity:1;transition-delay:.9s;translate:0}@media (width<=900px){.journey{row-gap:32px;padding-left:40px}.journey .stop,.journey .stop:nth-of-type(2n){justify-self:stretch;width:100%;margin-top:0}}@media (prefers-reduced-motion:reduce){.journey .stop,.journey .stop .bubble{opacity:1;transition:none;translate:none}}.viz{background:var(--grey);border-radius:14px;min-height:170px;margin-top:22px;position:relative;overflow:hidden}.viz-chat{align-content:center;gap:10px;padding:18px;display:grid}.bubble{border-radius:16px;max-width:85%;padding:10px 14px;line-height:1.4;margin:0!important;font-size:14px!important}.bubble.them{background:var(--card);box-shadow:0 0 0 1px var(--line);border-bottom-left-radius:4px;color:var(--ink)!important}.bubble.me{background:var(--blue);border-bottom-right-radius:4px;justify-self:end;color:#fff!important}.viz-shot{flex-direction:column;justify-content:center;padding:18px;display:flex}.browser{background:var(--card);box-shadow:0 0 0 1px var(--line);border-radius:10px 10px 0 0;gap:5px;padding:8px 10px;display:flex}.browser i{background:#dcdcdf;border-radius:50%;width:8px;height:8px}.viz-shot img{width:100%;height:auto;box-shadow:0 0 0 1px var(--line);border-radius:0 0 10px 10px}.viz-panel{align-content:center;gap:8px;padding:20px;display:grid}.field-label{color:var(--muted);font-size:13px}.field{background:var(--card);white-space:nowrap;border-radius:10px;align-items:center;height:42px;padding:0 12px;font-size:14px;display:flex;overflow:hidden;box-shadow:inset 0 0 0 1px #cfd3dc,0 0 0 3px #2496ed1f}.field-caret{background:var(--blue);width:1.5px;height:18px;margin-left:2px;animation:1s step-end infinite blink}.photo-row{background:var(--card);box-shadow:0 0 0 1px var(--line);color:var(--muted);border-radius:10px;align-items:center;gap:10px;min-width:0;padding:8px;font-size:13px;display:flex}.photo-row img{object-fit:cover;border-radius:6px;flex:none;width:44px;height:32px}.photo-row span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.photo-btn{background:var(--grey);color:var(--ink);border-radius:8px;flex:none;padding:5px 10px;font-weight:500}.save-btn{background:var(--ink);color:#fff;border-radius:99px;justify-self:end;margin-top:4px;padding:8px 14px;font-size:13px;font-weight:500}.toggle-row{background:var(--card);box-shadow:0 0 0 1px var(--line);border-radius:10px;justify-content:space-between;align-items:center;margin-top:6px;padding:10px 12px;font-size:14px;display:flex}.toggle{background:#d4d4d8;border-radius:99px;width:36px;height:20px;position:relative}.toggle.on{background:#22a35a}.toggle:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:translate .3s;position:absolute;top:2px;left:2px}.toggle.on:after{translate:16px}.card-wide{grid-template-rows:auto 1fr;display:grid}.price{font-weight:500;color:var(--ink)!important;margin-top:14px!important;font-size:18px!important}.price small{color:var(--muted);font-size:14px;font-weight:400}.card-wide .viz{height:250px;min-height:0}.viz-crop-right img{width:150%;top:8%;left:auto;right:-40%}.viz-crop img{width:135%;max-width:none;box-shadow:0 0 0 1px var(--line), 0 8px 24px #0000000f;border-radius:10px;position:absolute;top:18px;left:18px}.viz-phone{justify-content:center;display:flex}.viz-phone img{object-fit:cover;object-position:top;aspect-ratio:9/16;border-radius:18px 18px 0 0;width:38%;max-width:190px;margin-top:20px;box-shadow:0 0 0 6px #1b1b1d,0 12px 30px #00000026}.viz-cart img{object-fit:cover;object-position:100% 0;width:calc(100% - 36px);height:calc(100% - 18px);box-shadow:0 0 0 1px var(--line), 0 8px 24px #0000000f;border-radius:10px 10px 0 0;position:absolute;inset:18px 18px auto}.dev-desk{width:78%;box-shadow:0 0 0 1px var(--line), 0 12px 30px #00000014;border-radius:10px;transition:translate .4s cubic-bezier(.2,.8,.2,1);position:absolute;top:18px;left:18px;overflow:hidden}.dev-desk img{width:100%;height:auto}.dev-phone{aspect-ratio:9/19;background:#1b1b1d;border:4px solid #1b1b1d;border-radius:16px;width:23%;transition:translate .4s cubic-bezier(.2,.8,.2,1);position:absolute;top:44px;right:22px;overflow:hidden;box-shadow:0 16px 34px #00000038}.dev-phone img{object-fit:cover;object-position:top;border-radius:11px;width:100%;height:100%}.card:hover .dev-desk{translate:-4px -4px}.card:hover .dev-phone{translate:4px -8px}.viz-pdf{overflow:hidden}.pdf-page{width:68%;box-shadow:0 0 0 1px var(--line), 0 18px 40px #00000024;border-radius:6px;transition:rotate .4s,translate .4s;position:absolute;top:18px;left:50%;translate:-50%;rotate:-3deg}.card:hover .pdf-page{translate:-50% -6px;rotate:0deg}.pdf-notif{max-width:calc(100% - 28px);position:absolute;bottom:14px;right:14px}.viz-mail{align-content:center;gap:10px;padding:18px;display:grid}.notif{background:var(--card);box-shadow:0 0 0 1px var(--line), 0 6px 18px #0000000d;border-radius:12px;align-items:center;gap:12px;padding:12px 14px;font-size:14px;display:flex}.notif b{font-weight:500;display:block}.notif span:not(.notif-dot):not(.notif-file){color:var(--muted);font-size:13px}.notif-dot{background:var(--blue);border-radius:50%;flex:none;width:10px;height:10px}.notif-file{color:#c0392b;background:#fdecec;border-radius:6px;flex:none;place-items:center;width:34px;height:40px;font-size:11px;font-weight:600;display:grid}.more-title{text-align:center;margin:clamp(56px,6vw,80px) 0 20px;font-size:clamp(22px,2.4vw,28px)}.tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;list-style:none;display:grid}.tiles li{background:var(--card);box-shadow:0 0 0 1px var(--line);border-radius:18px;align-content:start;justify-items:start;gap:4px;padding:22px;transition:translate .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s;display:grid}.tiles li:hover{translate:0 -4px;box-shadow:0 0 0 1px #c4e2fb,0 14px 30px #2496ed1f}.tiles b{margin-top:14px;font-size:16px;font-weight:500}.tile-sub{color:var(--muted);font-size:14px;line-height:1.4}.tiles .tile-ico{background:var(--blue);color:#fff;border-radius:14px;width:46px;height:46px;box-shadow:0 6px 14px #2496ed47}.tiles li:nth-child(2n) .tile-ico{color:var(--blue);box-shadow:none;background:#e2f1fd}.tiles li:hover .tile-ico{animation:.6s cubic-bezier(.3,1.6,.5,1) ico-hop}@keyframes ico-hop{30%{transform:translateY(-6px)rotate(-8deg)}60%{transform:translateY(0)rotate(4deg)}}@media (prefers-reduced-motion:reduce){.tiles li:hover .tile-ico{animation:none}}[data-icon]{place-items:center;display:inline-grid}[data-icon] svg{stroke-width:1.8px;width:20px;height:20px}.project{padding:10px;transition:box-shadow .25s,translate .25s;display:block}a.project:hover{translate:0 -2px;box-shadow:0 0 0 1px #d6d6da,0 12px 30px #00000012}.project-img{aspect-ratio:16/10;background:var(--grey);border-radius:12px;overflow:hidden}.project-img img,.project-img video{object-fit:cover;object-position:top;width:100%;height:100%}.project-meta{justify-content:space-between;align-items:center;gap:16px;padding:14px 10px 6px;display:flex}.project-meta p{margin-top:2px!important;font-size:15px!important}.go{background:var(--grey);border-radius:50%;flex:none;width:38px;height:38px;transition:background .2s,color .2s}a.project:hover .go{background:var(--ink);color:#fff}.group-title{letter-spacing:-.02em;margin:40px 0 16px;font-size:20px}.block-head+.group-title{margin-top:0}.project-wide{grid-column:1/-1}.project-wide .project-img{aspect-ratio:16/7.2}.pond-wrap{touch-action:pan-y;cursor:crosshair;isolation:isolate;position:relative}.pond-gl,.pond-top{width:100%;height:100%;display:block;position:absolute;inset:0}.pond-top{pointer-events:none}.mock-site{z-index:2;pointer-events:none;color:#fff;font-family:"Bricolage Grotesque Variable", var(--sans);background:radial-gradient(55% 60% at 50% 52%,#0000006b,#0000 70%);grid-template-rows:auto 1fr auto;justify-items:center;padding:clamp(14px,2.2vw,26px) clamp(16px,3vw,34px);display:grid;position:absolute;inset:0}.mock-nav{width:100%;font-size:clamp(11px,1.05vw,14px);font-family:var(--sans);grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.mock-links{opacity:.85;gap:18px;display:flex}.mock-links i{font-style:normal}.mock-logo{font-family:"Bricolage Grotesque Variable", var(--sans);letter-spacing:-.04em;font-variation-settings:"wdth" 85;font-size:clamp(20px,2.2vw,30px);font-weight:800}.mock-cart{color:#111;background:#fff;border-radius:99px;justify-self:end;padding:6px 14px;font-weight:500}.mock-hero{text-align:center;align-self:center;justify-items:center;display:grid}.mock-title{letter-spacing:-.045em;font-variation-settings:"wdth" 80, "opsz" 96;text-shadow:0 4px 30px #00000059;font-weight:700;line-height:.92;color:#fff!important;margin:0!important;font-size:clamp(30px,5.6vw,76px)!important}.mock-lead{max-width:28em;font-family:var(--sans);color:#ffffffd9!important;margin-top:12px!important;font-size:clamp(12px,1.25vw,16px)!important}.mock-chips{font-family:var(--sans);flex-wrap:wrap;justify-content:center;gap:8px;margin-top:clamp(12px,1.8vw,22px);display:flex}.mock-chips i{color:#111;background:#fff;border-radius:99px;padding:7px 16px;font-size:clamp(11px,1.05vw,14px);font-style:normal;font-weight:500}.mock-chips i:first-child{color:#fff;background:#e2351d}.mock-foot{font-family:var(--sans);color:#ffffffa6;letter-spacing:.02em;font-size:clamp(10px,.95vw,13px)}.pond-hint{z-index:3;pointer-events:none;white-space:nowrap;background:#ffffffe6;border-radius:999px;padding:7px 14px;font-size:14px;font-weight:500;transition:opacity .6s;position:absolute;bottom:14px;right:16px}.pond-hint.gone{opacity:0}@media (width<=680px){.project-wide .project-img{aspect-ratio:4/5}.mock-links{visibility:hidden}.mock-site{background:radial-gradient(80% 50%,#00000073,#0000 75%)}.pond-hint{inset:64px auto auto 50%;translate:-50%}}.about{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:center;gap:clamp(24px,4vw,56px);padding:14px;display:grid}.about-img{aspect-ratio:4/5;background:#e9e4dc;border-radius:14px;margin:0;position:relative;overflow:hidden}.about-img img{object-fit:cover;object-position:50% 30%;width:100%;height:100%}.about-text{padding:12px 12px 12px 0}.about-text p{margin-top:14px;font-size:17px}.facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:24px;list-style:none;display:grid}.facts li{background:var(--grey);border-radius:12px;min-width:0;padding:14px}.facts b{letter-spacing:-.02em;font-size:20px;font-weight:500;display:block}.facts span{color:var(--muted);font-size:14px}.idcard-wrap{perspective:1400px;align-content:start;justify-items:center;min-height:560px;margin:-14px -14px 0;padding:0 14px 30px;display:grid;position:relative;overflow:hidden}.idcard-swing{transform-origin:50% 0;will-change:transform;justify-items:center;display:grid;position:relative}.lanyard{background:repeating-linear-gradient(180deg, var(--blue) 0 18px, #1c86d8 18px 20px);clip-path:polygon(0 0,100% 0,70% 100%,30% 100%);width:34px;height:120px}.clip{z-index:2;background:linear-gradient(#e6e8ec,#a7acb4);border-radius:6px 6px 10px 10px;width:44px;height:26px;margin-top:-4px;position:relative;box-shadow:inset 0 -2px 3px #0003,0 2px 4px #0003}.idcard{all:unset;aspect-ratio:5.4/8.6;cursor:pointer;width:min(300px,78vw);margin-top:-8px;display:block;position:relative}.idcard:focus-visible{outline:2px solid var(--blue);outline-offset:6px;border-radius:18px}.idcard-inner{transform-style:preserve-3d;transition:transform .8s cubic-bezier(.3,1.4,.5,1);position:absolute;inset:0}.idcard.flipped .idcard-inner{transform:rotateY(180deg)}@media (hover:hover) and (pointer:fine){.idcard:hover .idcard-inner{transform:rotateY(180deg)}}.idface{backface-visibility:hidden;box-shadow:0 0 0 1px var(--line), 0 24px 50px -18px #00000059;background:#fff;border-radius:18px;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.idface:before{content:"";background:var(--grey);border-radius:8px;width:46px;height:8px;position:absolute;top:10px;left:50%;translate:-50%;box-shadow:inset 0 1px 2px #0003}.idback{background:var(--blue);color:#fff;transform:rotateY(180deg)}.idback:before{background:#0000002e}.idhead{letter-spacing:.08em;align-items:center;gap:8px;margin:30px 18px 0;font-size:12px;font-weight:700;display:flex}.idhead img{width:22px;height:22px}.idback .idhead img{content:url(/logo-mask.svg)}.idphoto{aspect-ratio:1;background:var(--grey);border-radius:12px;margin:14px 18px 0;overflow:hidden}.idphoto img{object-fit:cover;object-position:40% 18%;width:100%;height:100%}.idname{letter-spacing:-.02em;margin:14px 18px 0;font-size:24px;font-weight:600}.idrole{color:var(--muted);margin:2px 18px 0;font-size:14px}.idfoot{border-top:1px solid var(--line);background:var(--blue);color:#fff;justify-content:space-between;align-items:center;gap:12px;margin-top:auto;padding:14px 18px;display:flex}.idback .idfoot{background:#0000001f;border-top-color:#fff3}.idbar{background:repeating-linear-gradient(90deg,#fff 0 2px,#0000 2px 4px,#fff 4px 5px,#0000 5px 8px,#fff 8px 11px,#0000 11px 12px);width:96px;height:22px}.idno{letter-spacing:.06em;font-size:12px;font-weight:600}.idfacts{gap:12px;margin:18px 18px 0;display:grid}.idfacts span{color:#ffffffd9;font-size:13px;line-height:1.35;display:grid}.idfacts b{color:#fff;font-size:17px;font-weight:600}@media (prefers-reduced-motion:reduce){.idcard-inner{transition:none}}.faq{max-width:760px;margin:0 auto;padding:6px 24px}.faq details+details{border-top:1px solid var(--line)}.faq summary{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;font-size:17px;font-weight:500;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";background:var(--grey);border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-weight:400;transition:rotate .25s;display:grid}.faq details[open] summary:after{rotate:45deg}.faq details p{max-width:60ch;margin:-6px 0 20px}.contact{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);padding:clamp(24px,4vw,44px);display:grid}.contact-text p{margin-top:12px}.contact-list{gap:10px;margin-top:24px;list-style:none;display:grid}.contact-list li{align-items:center;gap:12px;min-width:0;display:flex}.contact-list [data-icon]{background:var(--grey);border-radius:50%;flex:none;width:38px;height:38px}.contact-list a{overflow-wrap:anywhere;font-weight:500}.contact-list a:hover{color:var(--blue)}.form{align-content:start;gap:14px;display:grid}.form label{gap:6px;font-size:14px;font-weight:500;display:grid}.form input,.form textarea{width:100%;font:inherit;background:var(--grey);box-shadow:inset 0 0 0 1px var(--line);color:var(--ink);resize:vertical;border:0;border-radius:12px;padding:12px 14px;font-size:16px;transition:box-shadow .2s,background .2s}.form input:focus,.form textarea:focus{background:#fff;outline:none;box-shadow:inset 0 0 0 1px #8cc8f5,0 0 0 3px #2496ed26}.form .btn{width:100%;margin-top:4px}.form-note{color:var(--muted);text-align:center;font-size:13px}.card.contact{background:var(--blue);color:#fff;box-shadow:0 20px 50px -20px #2496ed8c}.card.contact h2{color:#fff}.card.contact p{color:#ffffffd1}.card.contact .badge{color:#fff;background:#ffffff24;box-shadow:inset 0 0 0 1px #ffffff4d}.card.contact .contact-list [data-icon]{color:#fff;background:#ffffff24}.card.contact .contact-list a{color:#fff}.card.contact .contact-list a:hover{color:#fff;text-underline-offset:4px;text-decoration:underline}.card.contact .form label{color:#fff}.card.contact .form input,.card.contact .form textarea{box-shadow:none;background:#fff}.card.contact .form input:focus,.card.contact .form textarea:focus{box-shadow:0 0 0 3px #ffffff73}.card.contact .form .btn{color:var(--blue);background:#fff}.card.contact .form .btn:hover{background:#e9f5fe}.card.contact .form .btn:disabled{color:#ffffffd9;background:#ffffff59}.card.contact .form-note{color:#ffffffb3}.footer{padding:28px var(--pad);background:var(--grey);border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:10px 24px;font-size:14px;display:flex}.footer-links{gap:20px;display:flex}.footer a:hover{color:var(--ink)}@media (prefers-reduced-motion:reduce){.line>span{animation:none;translate:none}.kb-stage{opacity:1;animation:none}.caret,.field-caret{animation:none}}@media (width<=960px){.nav-links,.nav-cta{display:none}.menu-btn{display:flex}.cards-3{grid-template-columns:minmax(0,1fr)}.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.about,.contact{grid-template-columns:minmax(0,1fr)}.about-img{max-width:360px}.idcard-wrap{min-height:0;padding-bottom:8px}.about-text{padding:0 8px 8px}}@media (width<=680px){.hero{justify-content:flex-start;min-height:auto;padding-top:130px;padding-bottom:40px}.hero-title{font-size:clamp(38px,11vw,72px)}.kb{transform:rotateX(16deg)}.cards-2{grid-template-columns:minmax(0,1fr)}.card{padding:20px}.facts{grid-template-columns:minmax(0,1fr)}.faq{padding:4px 18px}}.btn [data-icon] svg,.btn [data-icon]{width:18px;height:18px}.btn [data-icon]{margin-right:8px}.btn-light{background:var(--grey);color:var(--ink)}.btn-light:hover{background:#e7e7ea}.about-actions{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.job .step{min-width:0}.job h3{font-size:24px}.job-role{flex-wrap:wrap;justify-content:space-between;gap:2px 12px;font-weight:500;display:flex;color:var(--ink)!important;margin-top:6px!important;font-size:15px!important}.job-role span{color:var(--muted);font-weight:400}.job-list{color:var(--muted);gap:7px;margin:14px 0 0;padding-left:18px;font-size:15px;display:grid}.job-list b{color:var(--ink);font-weight:500}.chips{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.chips i{background:var(--grey);color:#3d3d40;white-space:nowrap;border-radius:99px;padding:4px 10px;font-size:13px;font-style:normal}.skill-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}.skill-tiles .chips{margin-top:8px}.edu .tile-ico{background:var(--blue);color:#fff;border-radius:14px;width:46px;height:46px;margin-bottom:18px;display:inline-grid}.edu .tile-ico svg{width:20px;height:20px}.edu-date{font-weight:500;color:var(--blue)!important;margin-top:10px!important;font-size:14px!important}.edu-list{color:var(--muted);gap:6px;margin:10px 0 0;padding-left:18px;font-size:15px;display:grid}.contact-actions{align-content:center;gap:12px;display:grid}.btn-white{color:var(--blue);background:#fff}.btn-white:hover{background:#eaf4fe}.btn-ghost{color:#fff;background:0 0;box-shadow:inset 0 0 0 1.5px #fff9}.btn-ghost:hover{background:#ffffff1f}.contact-actions .btn{width:100%}@media (width<=1000px){.skill-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.skill-tiles{grid-template-columns:minmax(0,1fr)}.about-actions .btn{flex:auto}}.cv-pages{height:300px;margin-bottom:8px;display:block;position:relative}.cv-page{border-radius:6px;width:170px;height:auto;transition:translate .45s cubic-bezier(.2,.8,.2,1),rotate .45s cubic-bezier(.2,.8,.2,1);position:absolute;top:10px;left:50%;box-shadow:0 18px 40px -12px #00000073}.cv-page-1{translate:-82%;rotate:-6deg}.cv-page-2{translate:-18% 14px;rotate:6deg}.cv-pages:hover .cv-page-1{translate:-96% -10px;rotate:-9deg}.cv-pages:hover .cv-page-2{translate:-4% 4px;rotate:9deg}@media (width<=680px){.cv-pages{height:250px}.cv-page{width:140px}}.cv-pill{z-index:2;background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:54px;height:54px;transition:translate .45s cubic-bezier(.2,.8,.2,1),top .45s cubic-bezier(.2,.8,.2,1),scale .3s cubic-bezier(.3,1.6,.5,1);display:grid;position:absolute;top:246px;left:50%;translate:99px;box-shadow:0 8px 18px -6px #00000073}.cv-pill [data-icon],.cv-pill svg{width:22px;height:22px}.cv-pages:hover .cv-pill{top:239px;translate:116px;scale:1.22}@media (width<=680px){.cv-pill{width:46px;height:46px;top:206px;translate:81px}.cv-pages:hover .cv-pill{top:199px;translate:95px}}.viz-plan{align-content:center;justify-items:center;gap:0;padding:20px 14px;display:grid}.plan-node{background:var(--card);box-shadow:0 0 0 1px var(--line);white-space:nowrap;border-radius:10px;padding:7px 12px;font-size:13px;font-weight:500;display:inline-block}.plan-root{background:var(--ink);color:#fff;box-shadow:none;position:relative}.plan-root:after{content:"";background:#cfd3dc;width:1.5px;height:16px;position:absolute;top:100%;left:50%}.plan-branches{border-top:1.5px solid #cfd3dc;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;padding-top:14px;display:flex;position:relative}.plan-hot{background:var(--blue);color:#fff;box-shadow:none}.plan-goal{color:var(--muted);text-align:center;margin-top:16px;font-size:13px}.viz-checks{align-content:center;gap:8px;padding:18px;display:grid}.check-row{background:var(--card);box-shadow:0 0 0 1px var(--line);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:14px;display:flex}.check{color:#fff;background:#22a35a;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.check svg{stroke-width:3px;width:13px;height:13px}.journey .stop .check-row{opacity:0;transition:opacity .35s,translate .35s cubic-bezier(.2,.8,.2,1);translate:-8px}.journey .stop.on .check-row{opacity:1;translate:0}.journey .stop.on .check-row:nth-child(2){transition-delay:.15s}.journey .stop.on .check-row:nth-child(3){transition-delay:.3s}.journey .stop.on .check-row:nth-child(4){transition-delay:.45s}.url-bar{background:var(--card);box-shadow:0 0 0 1px var(--line);border-radius:99px;align-items:center;gap:8px;margin-bottom:6px;padding:9px 12px;font-size:14px;font-weight:500;display:flex}.live-dot{background:#22a35a;border-radius:50%;width:9px;height:9px;animation:1.8s infinite live;box-shadow:0 0 #22a35a80}@keyframes live{70%{box-shadow:0 0 0 7px #22a35a00}to{box-shadow:0 0 #22a35a00}}.url-status{color:#17803f;background:#e5f6ec;border-radius:99px;margin-left:auto;padding:2px 9px;font-size:12px;font-weight:600}@media (prefers-reduced-motion:reduce){.journey .stop .check-row{opacity:1;translate:none}.live-dot{animation:none}}.card-main{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:28px;padding:32px;display:grid}.card-main h3{margin-top:14px;font-size:clamp(26px,2.6vw,34px)}.card-main p{max-width:42ch;font-size:17px}.card-main .viz{height:300px;margin-top:0}.badge-blue{background:var(--blue);color:#fff;box-shadow:none}@media (width<=900px){.card-main{grid-template-columns:minmax(0,1fr);padding:22px}.card-main .viz{height:250px}}
