@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/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(/_astro/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(/_astro/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}@font-face{font-family:Albert Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/albert-sans-latin-ext-wght-normal.BAo4qCk1.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:Albert Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/albert-sans-latin-wght-normal.BJ0ssN8N.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{color-scheme:dark;--bg:oklch(17% .035 298);--surface:oklch(22% .05 298);--line:oklch(36% .07 298);--text:oklch(95% .015 302);--muted:oklch(76% .04 300);--pink:oklch(78% .15 300);--violet:oklch(70% .16 285);--hot:oklch(64% .23 300);--soft:oklch(82% .09 300);--display:"Bricolage Grotesque Variable", system-ui, sans-serif;--body:"Albert Sans Variable", system-ui, sans-serif}*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--text);font:400 1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased}a{color:inherit}:focus-visible{outline:2px solid var(--pink);outline-offset:3px;border-radius:4px}.wrap{width:min(100% - 2rem,70rem);margin-inline:auto}header.top{justify-content:space-between;align-items:center;padding-block:1.5rem;display:flex}.logo{font:700 1.35rem var(--display);letter-spacing:-.02em;text-decoration:none}.logo span{color:var(--pink)}nav a{color:var(--muted);margin-left:1.5rem;padding-block:.75rem;text-decoration:none;display:inline-block}nav a:hover{color:var(--text)}.hero{align-items:center;gap:3rem;padding-block:clamp(4rem,11vw,8rem) clamp(3rem,8vw,6rem);display:grid;position:relative}@media (width>=62rem){.hero{grid-template-columns:1fr 22rem}}h1{font:800 clamp(2.75rem, 8vw, 5.75rem)/.98 var(--display);letter-spacing:-.04em;text-wrap:balance;max-width:14ch}h1 em{color:#0000;background:linear-gradient(100deg,#a45eff,#c4a4fe,#ddcffa,#c4a4fe,#a45eff) 0 0/300% 100%;-webkit-background-clip:text;background-clip:text;font-style:normal;animation:6s linear infinite flow}h1 .line{margin-bottom:-.14em;padding-bottom:.14em;display:block;overflow:hidden}h1 .line>span{animation:.9s cubic-bezier(.22,1,.36,1) both rise;display:inline-block}h1 .line+.line>span{animation-delay:.1s}.lede,.hero-actions{animation:.8s cubic-bezier(.22,1,.36,1) both fade-up}.lede{animation-delay:.3s}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:2.25rem;animation-delay:.42s;display:flex}.hero-actions .btn{margin-top:0}a.btn-ghost{text-decoration:none;display:inline-block}@keyframes rise{0%{transform:translateY(105%)}}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}}.stage{height:27rem;animation:1s cubic-bezier(.22,1,.36,1) .5s both fade-up;display:none;position:relative}@media (width>=62rem){.stage{display:block}}.panel{backdrop-filter:blur(14px);color:var(--muted);translate:calc(var(--px,0) * var(--d) * 40px) calc(var(--py,0) * var(--d) * 40px);background:oklch(24% .05 300/.72);border:1px solid oklch(80% .1 300/.2);border-radius:1rem;padding:1rem 1.1rem;font-size:.9rem;animation:7s ease-in-out infinite alternate float;position:absolute}@keyframes float{0%{transform:translateY(-8px) rotate(var(--r))}to{transform:translateY(8px) rotate(var(--r))}}.p-web{--r:-4deg;--d:.6;width:19rem;top:0;left:-2rem}.p-chat{--r:3deg;--d:1;width:17rem;animation-delay:-2.5s;top:38%;right:-2rem}.p-term{--r:-1.5deg;--d:1.4;width:16rem;font:500 .82rem/1.7 ui-monospace,monospace;animation-delay:-5s;bottom:0;left:0}.bar{align-items:center;gap:.35rem;margin-bottom:.9rem;display:flex}.bar i{background:var(--line);border-radius:50%;width:.55rem;height:.55rem}.bar span{background:oklch(17% .035 298/.7);border-radius:999px;margin-left:.5rem;padding:.1rem .6rem;font-size:.75rem}.sk b{background:oklch(80% .1 300/.25);border-radius:99px;height:.6rem;margin-bottom:.5rem;display:block}.sk b:first-child{background:var(--pink);opacity:.85;height:.9rem}.sk .blk{background:linear-gradient(120deg,oklch(64% .23 300/.55),oklch(70% .16 285/.35));border-radius:.6rem;height:4.5rem;margin-top:.9rem}.who{color:var(--text);align-items:center;gap:.55rem;margin-bottom:.4rem;font-weight:700;display:flex}.who i{background:linear-gradient(135deg,#a45eff,#ddcffa);border-radius:50%;width:1.9rem;height:1.9rem}.who small{background:var(--violet);color:oklch(20% .05 302);border-radius:.25rem;padding:.05rem .35rem;font-size:.65rem;font-weight:700}.p-chat p{color:var(--text);padding-left:2.45rem;line-height:1.45}.p-term .ok{color:oklch(68.837% .15532 63.599)}.p-term .pr{color:oklch(73.713% .22765 333.836)}.p-term .done{color:oklch(87% .14 150)}.lede{color:var(--muted);max-width:34rem;margin-top:1.75rem;font-size:1.25rem}.btn{background:var(--pink);color:oklch(20% .05 302);border-radius:.75rem;margin-top:2.25rem;padding:.9rem 1.6rem;font-weight:700;text-decoration:none;transition:transform .18s,box-shadow .18s;display:inline-block}.btn:hover,.btn:focus-visible{background-image:linear-gradient(100deg,#a45eff,#c4a4fe,#ddcffa,#c4a4fe,#a45eff);background-size:300% 100%;animation:2.6s linear infinite flow;transform:translateY(-2px)scale(1.03);box-shadow:0 10px 22px oklch(64% .23 300/.35)}.btn:active{box-shadow:none;transform:translateY(0)scale(.99)}@keyframes flow{0%{background-position:0%}to{background-position:300%}}.bg{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.blob{filter:blur(70px);will-change:transform;border-radius:50%;position:absolute}.b1{background:oklch(55% .24 300/.4);width:38rem;height:38rem;top:-10rem;right:-8rem}.b2{background:oklch(42% .18 285/.5);width:32rem;height:32rem;top:30vh;left:-12rem}.b3{background:oklch(80% .1 300/.18);width:26rem;height:26rem;top:60vh;right:10vw}.grid{background-image:linear-gradient(oklch(80% .1 300/.09) 1px,#0000 1px),linear-gradient(90deg,oklch(80% .1 300/.09) 1px,#0000 1px);background-size:64px 64px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 70% at 50% 35%,#000 30%,#0000 85%);mask-image:radial-gradient(80% 70% at 50% 35%,#000 30%,#0000 85%)}.waves{width:100%;height:38vh;position:absolute;bottom:0;left:0}.wave{width:200%;height:100%;animation:26s linear infinite drift;position:absolute;bottom:0;left:0}.wave.w2{height:78%;animation-duration:38s;animation-direction:reverse}@keyframes drift{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.btn,.btn:hover,.btn:focus-visible{transition:none;animation:none;transform:none}.wave{animation:none}}section{padding-block:clamp(3rem,7vw,5.5rem)}h2{font:700 clamp(1.75rem, 4vw, 2.5rem)/1.1 var(--display);letter-spacing:-.03em}.sub{color:var(--muted);margin-top:.5rem}.services{border-top:1px solid var(--line);margin-top:2.5rem;padding:0;list-style:none}.services li{border-bottom:1px solid var(--line)}.js .services li{opacity:0;transition:opacity .7s ease calc(var(--i) * 90ms), transform .7s cubic-bezier(.22,1,.36,1) calc(var(--i) * 90ms);transform:translateY(18px)}.js .services li.in{opacity:1;transform:none}.row{isolation:isolate;grid-template-columns:1fr auto;align-items:center;gap:.35rem 1.5rem;margin-inline:-1rem;padding:2rem 1rem;text-decoration:none;display:grid;position:relative;overflow:hidden}.row:before,.row:after{content:"";z-index:-1;pointer-events:none;position:absolute;inset:0}.row:before{transform-origin:0;background:linear-gradient(90deg,oklch(64% .23 300/.24),oklch(70% .16 285/.08));transition:transform .55s cubic-bezier(.22,1,.36,1);transform:scaleX(0)}.row:after{background:radial-gradient(16rem circle at var(--mx,50%) var(--my,50%), oklch(80% .15 300/.2), transparent 65%);opacity:0;transition:opacity .3s}.row:hover:before,.row:focus-visible:before{transform:scaleX(1)}.row:hover:after,.row:focus-visible:after{opacity:1}.row h3{font:700 clamp(1.7rem, 4vw, 2.6rem)/1.1 var(--display);letter-spacing:-.03em;transition:transform .4s cubic-bezier(.22,1,.36,1),color .3s}.row p{color:var(--muted);grid-column:1;max-width:36rem;transition:color .3s,transform .4s cubic-bezier(.22,1,.36,1)}.row .price{color:var(--violet);white-space:nowrap;border:1px solid var(--line);border-radius:999px;grid-area:1/2;justify-self:end;align-items:center;gap:.4rem;padding:.3rem .9rem;font-weight:600;transition:color .3s,border-color .3s,background-color .3s;display:inline-flex;position:relative}.row .price:after{content:"";opacity:.75;background:currentColor;width:.95em;height:.95em;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4M12 8h.01'/%3E%3C/svg%3E") 50%/contain no-repeat}.row .price:before{content:"Prices are in US dollars (USD)";z-index:1;white-space:nowrap;color:var(--text);background:var(--surface);border:1px solid var(--line);opacity:0;pointer-events:none;border-radius:.5rem;padding:.35rem .65rem;font-size:.8rem;font-weight:500;transition:opacity .2s,transform .2s;position:absolute;top:calc(100% + .45rem);right:0;transform:translateY(-4px)}.row .price:hover:before,.row:focus-visible .price:before{opacity:1;transform:none}.row .arrow{color:var(--pink);opacity:0;grid-area:2/2;justify-self:end;font-size:1.6rem;line-height:1;transition:opacity .3s,transform .4s cubic-bezier(.22,1,.36,1);transform:translate(-12px)}.row:hover h3,.row:focus-visible h3{color:var(--pink);transform:translate(.75rem)}.row:hover p,.row:focus-visible p{color:var(--text);transform:translate(.75rem)}.row:hover .price,.row:focus-visible .price{color:oklch(20% .05 302);background:var(--pink);border-color:var(--pink)}.row:hover .arrow,.row:focus-visible .arrow{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.contact,h1 em,h1 .line>span,.lede,.hero-actions,.stage,.panel{animation:none}.js .contact,.js .services li{opacity:1;transition:none;transform:none}.row:before,.row h3,.row p,.row .arrow{transition:none}}.more{color:var(--muted);margin-top:1.5rem}.contact{isolation:isolate;background:linear-gradient(var(--surface), var(--surface)) padding-box, linear-gradient(100deg, #a45eff, #c4a4fe, #ddcffa, #c4a4fe, #a45eff) border-box;background-size:100% 100%,300% 100%;border:2px solid #0000;border-radius:1.5rem;align-items:end;gap:2rem 3rem;padding:clamp(2rem,6vw,4.5rem);animation:8s linear infinite border-flow;display:grid;position:relative;overflow:hidden}@media (width>=52rem){.contact{grid-template-columns:1fr auto}}@keyframes border-flow{to{background-position:0 0,300% 0}}.contact:after{content:"";z-index:-1;pointer-events:none;background:radial-gradient(22rem circle at var(--mx,80%) var(--my,20%), oklch(64% .23 300/.16), transparent 70%);position:absolute;inset:0}.contact h2{letter-spacing:-.04em;font-size:clamp(2.25rem,6vw,4rem);line-height:1}.contact h2 em{color:var(--pink);font-style:normal}.contact .sub{max-width:30rem;margin-top:1rem;font-size:1.125rem}.include{flex-wrap:wrap;gap:.5rem;margin-top:1.5rem;padding:0;list-style:none;display:flex}.include li{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.35rem .9rem;font-size:.95rem}.reach{justify-items:start;gap:1.25rem;display:grid}@media (width>=52rem){.reach{text-align:right;justify-items:end}}a.mail{font:700 clamp(1.5rem, 4vw, 2.5rem) var(--display);letter-spacing:-.03em;color:var(--pink);background:linear-gradient(90deg,#a45eff,#ddcffa) 0 100%/0% 3px no-repeat;padding-bottom:.2rem;text-decoration:none;transition:background-size .45s cubic-bezier(.22,1,.36,1),color .3s}a.mail:hover,a.mail:focus-visible{color:#ddcffa;background-size:100% 3px}.actions{flex-wrap:wrap;gap:.75rem;display:flex}.actions .btn{margin-top:0}.btn-ghost{font:700 1.0625rem/1.6 var(--body);color:var(--text);cursor:pointer;border:1px solid var(--line);background:0 0;border-radius:.75rem;padding:.9rem 1.4rem;transition:border-color .2s,color .2s}.btn-ghost:hover,.btn-ghost:focus-visible{border-color:var(--pink);color:var(--pink)}.js .contact{opacity:0;transition:opacity .8s,transform .8s cubic-bezier(.22,1,.36,1);transform:translateY(24px)}.js .contact.in{opacity:1;transform:none}footer{color:var(--muted);padding-block:3rem;font-size:.95rem}footer a{color:inherit;text-underline-offset:.2em}footer a:hover,footer a:focus-visible{color:var(--pink)}.sr{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.reach-label{color:var(--muted);font-size:.95rem;font-weight:600}.contact .handle{font:700 clamp(1.7rem, 4.5vw, 2.8rem) var(--display);letter-spacing:-.03em;color:var(--pink);cursor:text;user-select:all}.verify{width:100%;max-width:26rem;color:var(--muted);text-align:left;margin-top:.4rem;font-size:.92rem}.verify summary{cursor:pointer;color:var(--text);align-items:center;gap:.4rem;font-weight:600;list-style:none;display:inline-flex}.verify summary:before{content:"✓";color:var(--pink);font-weight:800}.verify summary::-webkit-details-marker{display:none}.verify ol{gap:.45rem;margin:.7rem 0 0;padding-left:1.2rem;line-height:1.5;display:grid}.verify b{color:var(--text)}.verify code{color:var(--pink);word-break:break-all;font-family:ui-monospace,monospace;font-size:.88em}.verify a,.alt a{color:var(--pink)}.alt{color:var(--muted);font-size:.92rem}
