Landing Soon

F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial F-Balm Electrolyte Waterfacial

Hi!

Think of this mask as an electrolyte-charged nightcap. Top off your normal nighttime routine with a surge of replenishing vitamin F beads that burst onto skin upon application.

It’s calming, cooling and soothing – what everyone wants at the end of the day.

You can even use it nightly if you want. Dive in and wake up looking dewy and rejuvenated!

image description

What it does

F-Balm’s unique formula of barrier-replenishing ingredients, including niacinamide, sodium PCA, plant squalane, five forms of ceramides, omega fatty acids, and powerful antioxidants, effectively rehydrates hungover, overly-parched skin,making it soft and supple. Tiny beads loaded with vitamin F burst during application to deliver extra emollience and soothing hydration. F-Balm is 100% free of essential oils, silicones, fragrance, and PEGs. It’s irritant-free, vegan, and cruelty-free.

T.L.C. loves F-Balm

Use T.L.C. Framboos for a gentle chemical exfoliation that clears the way for maximum absorption of F-Balm.

TOP IT OFF Add F-Balm as the last step of your nighttime routine.

Check out some of our favorite routines (aka smoothies) here.

Moisture vs. Hydration

HYDRATIONMOISTURE

Moisture is about the barrier lipids and oils (think ceramides, and amino acids). Without a protective layer of hydration, skin’s barrier becomes compromised and loses the ability to hold on to its critical vitamins, antioxidants and other natural moisturizing elements.

Hydration is about the concentration of water in the surface layers of your skin. It plays a vital role in protecting the lipids and oils that make up its protective barrier.

F-Balm helps to restore the balance of hydration and moisture in skin, which makes other ingredients in your skincare routine even more effective at their job - keeping skin soft and supple.

F-Balm
Electrolyte Waterfacial
vs.
B-Hydra
Intensive Hydration Serum

a quenching electrolyte mask for a surge of overnight hydration

a cool drink of water for your thirsty skin

F-Balm is a quenching electrolyte mask for a surge of overnight hydration

  • Intense hydration mask
  • Can improve signs of damage, uneven tone and texture.
  • Texture: water-break balm
  • pH: 5.75
  • Usage: Top it off with F-Balm as the last step in your nighttime routine.

B-Hydra is a cool drink of water for your thirsty skin

  • Daily water maintenance
  • Helps diminish drabness, dryness and the appearance of fine lines.
  • Texture: lightweight gel
  • pH: 5.7
  • Usage: Mix with any Drunk Elephant serum, oil or cream daily, morning and/or night.
F-Balm Water Hydration
Roll over to reveal

Boost your daily hydration routine

Think of F-Balm as an intense treatment for dehydrated skin, and B-Hydra as your daily water maintenance. Use both every day to restore hydration and moisture levels and support your acid mantle.

Ingredients

image description
  • 4-electrolyte blend

    contains powerful humectant ingredients, and is key in helping to maintain the balance of hydration and moisture.

  • Vitamin F

    biodegradable microbeads burst during application and help improve skin texture and suppleness, while strengthening the skin’s acid mantle.

  • Niacinamide

    helps strengthen a stressed, compromised skin barrier to improve the appearance of fine lines, wrinkles and loss of firmness.

  • 5-ceramide complex

    helps fill in the spaces between skin cells, giving them elasticity, and play a critical role in strengthening the skin barrier.

varying vec2 v_uv; void main() { v_uv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); }
uniform vec2 u_mouse; uniform vec2 u_res; uniform sampler2D u_image; uniform sampler2D u_imagehover; uniform float u_time; varying vec2 v_uv; float circle(in vec2 _st, in float _radius, in float blurriness){ vec2 dist = _st; return 1.-smoothstep(_radius-(_radius*blurriness), _radius+(_radius*blurriness), dot(dist,dist)*4.0); } vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } vec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); } vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; } float snoise3(vec3 v) { const vec2 C = vec2(1.0/6.0, 1.0/3.0) ; const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); // First corner vec3 i = floor(v + dot(v, C.yyy) ); vec3 x0 = v - i + dot(i, C.xxx) ; // Other corners vec3 g = step(x0.yzx, x0.xyz); vec3 l = 1.0 - g; vec3 i1 = min( g.xyz, l.zxy ); vec3 i2 = max( g.xyz, l.zxy ); // x0 = x0 - 0.0 + 0.0 * C.xxx; // x1 = x0 - i1 + 1.0 * C.xxx; // x2 = x0 - i2 + 2.0 * C.xxx; // x3 = x0 - 1.0 + 3.0 * C.xxx; vec3 x1 = x0 - i1 + C.xxx; vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y // Permutations i = mod289(i); vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); // Gradients: 7x7 points over a square, mapped onto an octahedron. // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) float n_ = 0.142857142857; // 1.0/7.0 vec3 ns = n_ * D.wyz - D.xzx; vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) vec4 x_ = floor(j * ns.z); vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) vec4 x = x_ *ns.x + ns.yyyy; vec4 y = y_ *ns.x + ns.yyyy; vec4 h = 1.0 - abs(x) - abs(y); vec4 b0 = vec4( x.xy, y.xy ); vec4 b1 = vec4( x.zw, y.zw ); //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; vec4 s0 = floor(b0)*2.0 + 1.0; vec4 s1 = floor(b1)*2.0 + 1.0; vec4 sh = -step(h, vec4(0.0)); vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; vec3 p0 = vec3(a0.xy,h.x); vec3 p1 = vec3(a0.zw,h.y); vec3 p2 = vec3(a1.xy,h.z); vec3 p3 = vec3(a1.zw,h.w); //Normalise gradients vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); p0 *= norm.x; p1 *= norm.y; p2 *= norm.z; p3 *= norm.w; // Mix final noise value vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); m = m * m; return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); } void main() { // We manage the device ratio by passing PR constant vec2 res = u_res * PR; vec2 st = gl_FragCoord.xy / res.xy - vec2(0.37); // tip: use the following formula to keep the good ratio of your coordinates st.y *= u_res.y / u_res.x; // We readjust the mouse coordinates vec2 mouse = u_mouse * -0.5; vec2 circlePos = st + mouse; float c = circle(circlePos, 0.08, 1.5) * 2.1; float offx = v_uv.x + sin(v_uv.y + u_time * .1); float offy = v_uv.y - u_time * 0.1 - cos(u_time * .001) * .01; float n = snoise3(vec3(offx, offy, u_time * .1) * 8.) - 1.; float finalMask = smoothstep(0.4, 0.5, n + pow(c, 2.)); vec4 image = texture2D(u_image, v_uv); vec4 hover = texture2D(u_imagehover, v_uv); vec4 finalImage = mix(image, hover, finalMask); gl_FragColor = finalImage; }
added!

Shopping bag

Subtotal RM0.00