{"id":11,"date":"2026-07-13T08:48:40","date_gmt":"2026-07-13T08:48:40","guid":{"rendered":"https:\/\/langga.bearbrandguide.com\/?page_id=11"},"modified":"2026-08-12T09:13:38","modified_gmt":"2026-08-12T09:13:38","slug":"home","status":"publish","type":"page","link":"https:\/\/langga.bearbrandguide.com\/","title":{"rendered":"Home"},"content":{"rendered":"\n<style id=\"langga-preloader-css\">\n\/* While the intro runs the site is hidden behind the preloader. The\n   preloader itself is exempted \u2014 visibility is inherited, so re-declaring\n   it on the overlay keeps it painting inside a hidden ancestor (and it is\n   moved to <body> on boot anyway, see the script below). *\/\nhtml.langga-preloading .wp-site-blocks { visibility: hidden; }\nhtml.langga-preloading #langga-preloader { visibility: visible; }\nhtml.langga-locked, html.langga-locked body { overflow: hidden !important; }\n\n\/* Full-screen stage. White ground: the mark and the crosshatch bars are\n   drawn on white, exactly as in the standalone build. The background is\n   cleared the moment the navy panel takes over, so the page can show\n   through when the panel wipes away. *\/\n#langga-preloader {\n    position: fixed;\n    inset: 0;\n    z-index: 2147483000;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: #ffffff;\n}\n\n\/* overflow:visible is what lets the bars paint past the logo's viewBox. *\/\n#langga-preloader svg { overflow: visible; }\n\n\/* Above the navy panel, so the closing criss-cross paints over it instead of\n   behind it. Only the bars are still showing by then \u2014 the mark is hidden the\n   moment the panel drops in. *\/\n#preloader-main-svg {\n    width: 80vw;\n    height: 100%;\n    position: relative;\n    z-index: 2;\n}\n\n\/* --------------------------------------------------------------\n   Crosshatch bars.\n\n   The four rects already sit on the logo's bounding box edges\n   (x 0 \/ 1118, y 0 \/ 438), which on its own draws a closed box.\n   Overshooting each pair past the other's ends is what turns that\n   box into a #, with the logo in the centre cell.\n\n   Lengths are in viewBox units, not vw\/vh \u2014 these are SVG rects,\n   so they scale with the SVG rather than the viewport. The script\n   then resizes each one down to the actual screen rect, so the\n   0 -> 1 scale reads as an edge-to-edge wipe.\n\n   x\/y\/width\/height need explicit px here; unitless is invalid for\n   width\/height and the rule is silently dropped.\n   -------------------------------------------------------------- *\/\n#langga-preloader #bar-top,\n#langga-preloader #bar-bottom { x: -5000px; width: 11119px; }\n\n#langga-preloader #bar-left,\n#langga-preloader #bar-right { y: -5000px; height: 10439px; }\n\n\/* The navy panel. Full viewport, so the clip-path applied to it in the\n   script is a screen-sized mask rather than a logo-sized one \u2014 opening it\n   up is what reveals the page behind. The logo inside keeps its own\n   transform free for the criss-cross. *\/\n#langga-preloader .preloader-logo-wrap {\n    position: fixed;\n    inset: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100vw;\n    height: 100vh;\n    font-size: 0;\n    pointer-events: none;\n}\n\n\/* The logo's own box \u2014 the halves below are positioned against this. *\/\n#langga-preloader .preloader-logo {\n    position: relative;\n    width: 30vw;\n    aspect-ratio: 505 \/ 177;\n}\n\n\/* Each half clips the same logo, so it can slide as one solid piece.\n   overflow:hidden is what makes it a half \u2014 without it you get two whole\n   logos. Width must match the container so half-height == half the image\n   height. *\/\n#langga-preloader .logo-half {\n    position: absolute;\n    left: 0;\n    width: 100%;\n    height: 51%;\n    overflow: hidden;\n}\n\n#langga-preloader .logo-half img {\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 100%;\n    height: auto;\n    max-width: none;\n    display: block;\n}\n\n#langga-preloader .logo-half--top { top: 0; }\n#langga-preloader .logo-half--bottom { top: 50%; }\n#langga-preloader .logo-half--bottom img { top: -100%; }\n\n@media (max-width: 900px) {\n    #preloader-main-svg { width: 88vw; }\n    #langga-preloader .preloader-logo { width: 62vw; }\n}\n<\/style>\n\n<div id=\"langga-preloader\">\n    <svg\n       width=\"1119\"\n       height=\"439\"\n       viewBox=\"0 0 1119 439\"\n       fill=\"none\"\n       version=\"1.1\"\n       id=\"preloader-main-svg\"\n       aria-hidden=\"true\"\n       xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n      <!-- Same geometry twice: the fill sits underneath so the traced\n           outline always paints on top of it. -->\n      <g id=\"logo-mark\">\n        <path\n           d=\"M 1118.0016,200.96468 821.50467,173.59176 C 727.52766,164.70238 602.12883,99.65432 578.56096,0.99841601 H 557.3389 540.4391 V 143.60876 C 540.4391,143.60876 535.80339,200.31664 483.64464,200.31664 V 200.46795 H 0.99841601 V 238.0353 L 297.4954,265.40821 C 391.46142,274.30854 516.87123,339.34536 540.4391,438.00157 H 561.66117 578.56096 V 295.3046 C 578.56096,295.3046 583.19667,238.59673 635.35543,238.59673 V 238.53202 H 1118.0016 Z\"\n           id=\"logo-fill\"\n           style=\"display:inline;fill:#000000;fill-opacity:1;stroke:none\" \/>\n        <path\n           d=\"M 1117.0075,201.33842 821.04023,174.15314 C 727.23113,165.3247 602.05635,100.72254 578.53059,2.7429308 H 557.34645 540.47686 V 144.37567 C 540.47686,144.37567 535.84942,200.69482 483.78387,200.69482 V 200.84509 H 2 V 238.15491 L 297.96722,265.34018 C 391.76535,274.17948 516.95109,338.77048 540.47686,436.75041 H 561.66099 578.53059 V 295.03162 C 578.53059,295.03162 583.15801,238.7125 635.22358,238.7125 V 238.64823 H 1117.0075 Z\"\n           id=\"logo-outline\"\n           style=\"fill:none;stroke:#000000;stroke-width:0.992522;stroke-opacity:1\" \/>\n      <\/g>\n      <rect style=\"fill:#cbd8e3;fill-opacity:1;stroke:none\" id=\"bar-left\"   width=\"2\"    height=\"439\" x=\"0\"    y=\"0\" \/>\n      <rect style=\"fill:#cbd8e3;fill-opacity:1;stroke:none\" id=\"bar-right\"  width=\"2\"    height=\"439\" x=\"1117\" y=\"0\" \/>\n      <rect style=\"fill:#cbd8e3;fill-opacity:1;stroke:none\" id=\"bar-top\"    width=\"1119\" height=\"2\"   x=\"0\"    y=\"0\" \/>\n      <rect style=\"fill:#cbd8e3;fill-opacity:1;stroke:none\" id=\"bar-bottom\" width=\"1119\" height=\"2\"   x=\"0\"    y=\"437\" \/>\n    <\/svg>\n\n    <div class=\"preloader-logo-wrap\">\n        <div class=\"preloader-logo\">\n            <div class=\"logo-half logo-half--top\"><img decoding=\"async\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/logo.svg\" alt=\"\"><\/div>\n            <div class=\"logo-half logo-half--bottom\"><img decoding=\"async\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/logo.svg\" alt=\"\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script id=\"langga-preloader-js\">\n(function () {\n    var root = document.getElementById(\"langga-preloader\");\n\n    \/\/ The hero wordmark, held back behind a square mask while the preloader\n    \/\/ runs and wiped up as the closing beat \u2014 see the end of the timeline.\n    \/\/ Resolved on DOMContentLoaded, not here: this block sits at the top of\n    \/\/ the page content, so #header-logo has not been parsed yet.\n    var heroLogo = null;\n\n    \/\/ No GSAP (blocked CDN, script error upstream) means no animation and,\n    \/\/ more importantly, no hiding of the site \u2014 bail before anything is\n    \/\/ hidden rather than after. Reduced motion bails the same way, matching\n    \/\/ the homepage's scroll animations, which sit out that setting too.\n    var reduce = window.matchMedia && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n    if (!root || !window.gsap || reduce) {\n        if (root) root.parentNode.removeChild(root);\n        return;\n    }\n\n    \/\/ Out of the content flow and onto <body>: any ancestor with a\n    \/\/ transform\/filter would become the containing block for position:fixed\n    \/\/ and shrink the overlay to that section's box.\n    document.body.appendChild(root);\n\n    var html = document.documentElement;\n    html.classList.add(\"langga-preloading\", \"langga-locked\");\n\n    function unhide() { html.classList.remove(\"langga-preloading\"); }\n    function finish() {\n        unhide();\n        html.classList.remove(\"langga-locked\");\n        \/\/ Never leave the hero wordmark masked out \u2014 this also runs on the\n        \/\/ failsafe and error paths, where the reveal tween may never have.\n        if (heroLogo) heroLogo.style.clipPath = \"\";\n        if (root.parentNode) root.parentNode.removeChild(root);\n    }\n\n    \/\/ Failsafe: if anything below throws, the page must not stay hidden.\n    var failsafe = setTimeout(finish, 15000);\n\n    try {\n\n    var tl = gsap.timeline({\n        onComplete: function () { clearTimeout(failsafe); finish(); }\n    });\n\n\n    \/\/ ---------------------------------------------------------------------\n    \/\/ Outline trace + crosshatch stretch \u2014 the first thing that runs.\n    \/\/\n    \/\/   t=0     fill drops to 0, outline dashed out of sight\n    \/\/   t=0.30  outline traces on; all four bars stretch from their anchors\n    \/\/   t=1.35  trace ends, fill snaps back to 1, mark is solid again\n    \/\/ ---------------------------------------------------------------------\n\n    var svgRoot = root.querySelector(\"#preloader-main-svg\");\n\n    \/\/ The mark is two stacked copies of the same path: #logo-outline is the\n    \/\/ stroked one that traces on, #logo-fill is the solid one that comes back\n    \/\/ after. #logo-mark groups them so transforms move both as one.\n    var logoMark = root.querySelector(\"#logo-mark\");\n    var logoOutline = root.querySelector(\"#logo-outline\");\n    var logoFill = root.querySelector(\"#logo-fill\");\n\n    var barTop = root.querySelector(\"#bar-top\");\n    var barBottom = root.querySelector(\"#bar-bottom\");\n    var barLeft = root.querySelector(\"#bar-left\");\n    var barRight = root.querySelector(\"#bar-right\");\n\n    var logoWrap = root.querySelector(\".preloader-logo-wrap\");\n    var halfTop = root.querySelector(\".logo-half--top\");\n    var halfBottom = root.querySelector(\".logo-half--bottom\");\n\n    \/\/ The bars run \u00b15000 user units so the # bleeds off every viewport, but\n    \/\/ the screen only shows ~1400 of those units. Scaling one from 0 with its\n    \/\/ origin at the far end would therefore spend most of the tween\n    \/\/ off-canvas \u2014 at 1440x813 the visible sweep is barely 13% of the\n    \/\/ duration. Resizing each bar down to exactly what is on screen is what\n    \/\/ makes the 0 -> 1 scale read as an edge-to-edge wipe.\n    \/\/ The screen rect, expressed in the SVG's own user units. Everything the\n    \/\/ bars do is sized off this rather than off the viewBox, because the\n    \/\/ viewBox is only the logo's box \u2014 the bars run well past it.\n    function viewportInUserUnits() {\n        var inv = svgRoot.getScreenCTM().inverse();\n        var corner = svgRoot.createSVGPoint();\n\n        corner.x = 0;\n        corner.y = 0;\n        var near = corner.matrixTransform(inv);\n\n        corner.x = window.innerWidth;\n        corner.y = window.innerHeight;\n        var far = corner.matrixTransform(inv);\n\n        return {\n            left: Math.min(near.x, far.x),\n            right: Math.max(near.x, far.x),\n            top: Math.min(near.y, far.y),\n            bottom: Math.max(near.y, far.y)\n        };\n    }\n\n    function fitBarsToViewport() {\n        var view = viewportInUserUnits();\n\n        var bleed = 2; \/\/ clears the screen edge so no end is left visible\n        var x = view.left - bleed;\n        var w = view.right - view.left + bleed * 2;\n        var y = view.top - bleed;\n        var h = view.bottom - view.top + bleed * 2;\n\n        \/\/ Only the long axis is touched. The short axis is left alone, so each\n        \/\/ bar stays pinned to the logo's bounding box edge.\n        [barTop, barBottom].forEach(function (bar) {\n            bar.style.setProperty(\"x\", x + \"px\");\n            bar.style.setProperty(\"width\", w + \"px\");\n        });\n        [barLeft, barRight].forEach(function (bar) {\n            bar.style.setProperty(\"y\", y + \"px\");\n            bar.style.setProperty(\"height\", h + \"px\");\n        });\n    }\n\n    fitBarsToViewport();\n\n    \/\/ Anchors, per the pinwheel: top grows right, bottom grows left, left\n    \/\/ grows up, right grows down. Set after the resize above so GSAP reads\n    \/\/ the final bounding box.\n    gsap.set(barTop, { transformOrigin: \"0% 50%\" });\n    gsap.set(barBottom, { transformOrigin: \"100% 50%\" });\n    gsap.set(barLeft, { transformOrigin: \"50% 100%\" });\n    gsap.set(barRight, { transformOrigin: \"50% 0%\" });\n\n    gsap.set(logoFill, { clipPath: \"polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%)\" });\n\n    tl.to([logoFill, logoOutline], { transformOrigin: \"50% 50%\" });\n\n    \/\/ One dash the length of the whole path, pushed fully out of view, is\n    \/\/ what lets the stroke draw itself on.\n    var traceLength = logoOutline.getTotalLength();\n\n    gsap.set(logoOutline, {\n        strokeDasharray: traceLength,\n        strokeDashoffset: traceLength\n    });\n\n    var TRACE_DURATION = 2;\n\n    \/\/ A short hold before anything moves.\n    tl.addLabel(\"trace-start\", 0.3);\n\n    tl.to(logoOutline, {\n        strokeDashoffset: 0,\n        duration: TRACE_DURATION,\n        ease: \"none\"\n    }, \"trace-start\");\n\n    tl.from([barTop, barBottom], {\n        scaleX: 0,\n        duration: TRACE_DURATION,\n        ease: \"power1.inOut\"\n    }, \"trace-start\");\n\n    tl.from([barLeft, barRight], {\n        scaleY: 0,\n        duration: TRACE_DURATION,\n        ease: \"power1.inOut\"\n    }, \"trace-start\");\n\n\n    \/\/ ---------------------------------------------------------------------\n    \/\/ Bars criss-cross out.\n    \/\/\n    \/\/ Each bar leaves along its short axis and exits through the *opposite*\n    \/\/ side of the screen \u2014 top goes down, bottom goes up, left goes right,\n    \/\/ right goes left \u2014 so each pair passes through itself on the way out.\n    \/\/\n    \/\/ The distance is measured per bar: travel far enough that the bar's\n    \/\/ trailing edge clears the far screen edge, and no further. Using a flat\n    \/\/ yPercent\/xPercent would not work, since the bars are 11000+ units long\n    \/\/ on their long axis and only a few dozen on their short one.\n    \/\/ ---------------------------------------------------------------------\n\n    var view = viewportInUserUnits();\n    var EXIT_BLEED = 20; \/\/ a little past the edge, so nothing peeks back in\n\n    \/\/ Offsets are relative to where the bar already sits, hence the getBBox\n    \/\/ on each one rather than a single shared number.\n    var exitDown = function (bar) { return view.bottom - bar.getBBox().y + EXIT_BLEED; };\n    var exitUp = function (bar) {\n        var box = bar.getBBox();\n        return view.top - (box.y + box.height) - EXIT_BLEED;\n    };\n    var exitRight = function (bar) { return view.right - bar.getBBox().x + EXIT_BLEED; };\n    var exitLeft = function (bar) {\n        var box = bar.getBBox();\n        return view.left - (box.x + box.width) - EXIT_BLEED;\n    };\n\n    tl.to([barTop, barBottom], {\n        y: function (i, bar) { return bar === barTop ? exitDown(bar) : exitUp(bar); },\n        duration: 1,\n        ease: \"power4.in\"\n    }, \"bar-criss-cross\");\n\n    tl.to([barLeft, barRight], {\n        x: function (i, bar) { return bar === barLeft ? exitRight(bar) : exitLeft(bar); },\n        duration: 1,\n        ease: \"power4.in\"\n    }, \"bar-criss-cross\");\n\n    tl.to([logoFill, logoOutline], {\n        scale: 1.15,\n        clipPath: \"polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)\",\n        duration: 0.2,\n        ease: \"power4.out\"\n    }, \"bar-criss-cross+=0.8\");\n\n\n    gsap.set(logoMark, { transformOrigin: \"50% 50%\" });\n\n    \/\/ Both visibility and the mask live on the wrapper: it is the full-screen\n    \/\/ element, so its clip-path is what wipes the preloader away. The logo inside\n    \/\/ keeps its own transform free for the criss-cross.\n    gsap.set(logoWrap, { autoAlpha: 0 });\n\n    gsap.set(halfTop, { background: \"linear-gradient(90deg, rgba(255, 255, 255, 0) 99.9%, rgba(255, 255, 255, 1) 100%)\" });\n    gsap.set(halfBottom, { background: \"linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 0.1%)\" });\n\n    \/\/ Mask starts wide open \u2014 the full viewport \u2014 so the wipe is a shrink from here.\n    gsap.set(logoWrap, { clipPath: \"polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)\" });\n\n    \/\/ The dark panel drops in the moment the bars have cleared, and the two\n    \/\/ halves criss-cross in from opposite sides to match up in the middle.\n\n    tl.from(halfTop, {\n        xPercent: -20,\n        background: \"linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 0.1%)\",\n        duration: 0.3,\n        delay: 0.2,\n        ease: \"power2.out\",\n        onStart: function () {\n            gsap.set(logoWrap, { backgroundColor: \"#081C2D\" });\n            gsap.set(logoWrap, { autoAlpha: 1 });\n            \/\/ Only the mark goes \u2014 the SVG itself stays up, because the four\n            \/\/ bars still have their closing criss-cross to play over the panel.\n            gsap.set(logoMark, { autoAlpha: 0 });\n            \/\/ The navy panel now covers the screen, so the white stage can\n            \/\/ go \u2014 it is what the final wipe would otherwise leave behind\n            \/\/ over the page.\n            gsap.set(root, { backgroundColor: \"transparent\" });\n        }\n    }, \"criss-cross\");\n\n    tl.from(halfBottom, {\n        xPercent: 20,\n        background: \"linear-gradient(90deg, rgba(255, 255, 255, 1) 99.9%, rgba(255, 255, 255, 0) 100%)\",\n        duration: 0.3,\n        delay: 0.2,\n        ease: \"power2.out\"\n    }, \"criss-cross\");\n\n    tl.set([halfTop, halfBottom], {\n        background: \"none\"\n    }, \"clean-up\");\n\n\n    \/\/ ---------------------------------------------------------------------\n    \/\/ Bars criss-cross back \u2014 the closing beat.\n    \/\/\n    \/\/ Each bar is still parked just past the edge it left through, so this\n    \/\/ simply sends it the other way: top sweeps up and out the top, bottom\n    \/\/ down and out the bottom, left out the left, right out the right. Every\n    \/\/ bar therefore crosses the full viewport and passes through its opposite\n    \/\/ number on the way, mirroring the first criss-cross.\n    \/\/\n    \/\/ Ease is inOut rather than the opening's power4.in: these start off\n    \/\/ screen, so an accelerating-from-rest curve would spend its slow half\n    \/\/ invisible and the on-screen part would be a blur.\n    \/\/\n    \/\/ The bars paint above the navy panel (z-index in the CSS above) and they\n    \/\/ *are* the panel's mask: each one carries one edge of the clip box in\n    \/\/ with it, so the criss-cross reads as the bars closing the panel rather\n    \/\/ than as two things happening at once. The pairs cross at the centre\n    \/\/ halfway through, which is exactly where the box collapses to nothing.\n    \/\/ ---------------------------------------------------------------------\n\n    var CROSS_BACK_DELAY = 0.5;\n    var CROSS_BACK_DURATION = 1.2;\n\n    \/\/ Which bar carries which edge: each one entered from the far side, so it\n    \/\/ sweeps that edge of the panel ahead of itself. barBottom comes down from\n    \/\/ above the screen and drags the top edge with it; barTop comes up from\n    \/\/ below and drags the bottom edge; barRight and barLeft do the same for\n    \/\/ left and right.\n    function barCentre(bar, axis) {\n        var box = bar.getBoundingClientRect();\n        return axis === \"y\"\n            ? (box.top + box.height \/ 2) \/ window.innerHeight * 100\n            : (box.left + box.width \/ 2) \/ window.innerWidth * 100;\n    }\n\n    \/\/ Read off the live bar positions every frame rather than tweened\n    \/\/ separately \u2014 a parallel tween would drift out of step the moment either\n    \/\/ ease or duration changed, and the whole point is that they cannot.\n    function trackPanelToBars() {\n        \/\/ Pinned at 50 so the box collapses exactly on the crossing point and\n        \/\/ stays collapsed, instead of turning inside out as the bars carry on\n        \/\/ outward through each other.\n        var top = Math.min(barCentre(barBottom, \"y\"), 50);\n        var bottom = Math.max(barCentre(barTop, \"y\"), 50);\n        var left = Math.min(barCentre(barRight, \"x\"), 50);\n        var right = Math.max(barCentre(barLeft, \"x\"), 50);\n\n        gsap.set(logoWrap, {\n            clipPath: \"polygon(\" +\n                left + \"% \" + top + \"%, \" +\n                right + \"% \" + top + \"%, \" +\n                right + \"% \" + bottom + \"%, \" +\n                left + \"% \" + bottom + \"%)\"\n        });\n    }\n\n    tl.to([barTop, barBottom], {\n        y: function (i, bar) { return bar === barTop ? exitUp(bar) : exitDown(bar); },\n        duration: CROSS_BACK_DURATION,\n        delay: CROSS_BACK_DELAY,\n        ease: \"power2.inOut\",\n        \/\/ The page has to be there before the bars start cutting into the\n        \/\/ panel, which is from the first frame of this tween.\n        onStart: unhide\n    }, \"bar-criss-cross-back\");\n\n    tl.to([barLeft, barRight], {\n        x: function (i, bar) { return bar === barLeft ? exitLeft(bar) : exitRight(bar); },\n        duration: CROSS_BACK_DURATION,\n        delay: CROSS_BACK_DELAY,\n        ease: \"power2.inOut\"\n    }, \"bar-criss-cross-back\");\n\n    \/\/ Past the crossing point the panel is gone and the bars are travelling\n    \/\/ over the page itself, where #cbd8e3 on the hero's pale blue reads as a\n    \/\/ smudge. Dissolve them on the way out instead.\n    tl.to([barTop, barBottom, barLeft, barRight], {\n        autoAlpha: 0,\n        duration: CROSS_BACK_DURATION \/ 2,\n        delay: CROSS_BACK_DELAY + CROSS_BACK_DURATION \/ 2,\n        ease: \"power2.out\"\n    }, \"bar-criss-cross-back\");\n\n    \/\/ Driven from the timeline rather than from either bar tween's onUpdate:\n    \/\/ a tween's callback runs the moment *that* tween has rendered, so hanging\n    \/\/ it off the vertical pair read the horizontal pair a frame stale and the\n    \/\/ left\/right edges closed late. The timeline's own onUpdate runs once all\n    \/\/ four bars are in place for the frame.\n    var CROSS_BACK_AT = tl.labels[\"bar-criss-cross-back\"] + CROSS_BACK_DELAY;\n\n    tl.eventCallback(\"onUpdate\", function () {\n        if (tl.time() < CROSS_BACK_AT) return;\n        trackPanelToBars();\n    });\n\n\n    \/\/ ---------------------------------------------------------------------\n    \/\/ Hero wordmark reveal \u2014 the closing beat, on the page itself.\n    \/\/\n    \/\/ A square mask that rises: the visible box starts collapsed onto the\n    \/\/ logo's bottom edge and its top edge travels up to full height, so the\n    \/\/ wordmark wipes on from the bottom.\n    \/\/\n    \/\/ Positioned on the crossing point, where the bars have finished closing\n    \/\/ the panel \u2014 not at the timeline's end. The bars run 0.6s past that on\n    \/\/ their way out, and waiting them out would leave the hero sitting there\n    \/\/ logo-less.\n    \/\/ ---------------------------------------------------------------------\n\n    \/\/ An absolute time rather than a label offset, because the tween is added\n    \/\/ later \u2014 once the document has parsed and #header-logo exists.\n    var HERO_REVEAL_AT = tl.labels[\"bar-criss-cross-back\"] + CROSS_BACK_DELAY + CROSS_BACK_DURATION \/ 2;\n\n    function maskHeroLogo() {\n        heroLogo = document.getElementById(\"header-logo\");\n        if (!heroLogo) return;\n\n        \/\/ Parsing ran long and the panel is already opening onto the page:\n        \/\/ masking the wordmark now would read as a blink, so leave it be.\n        if (tl.time() >= HERO_REVEAL_AT - 0.2) {\n            heroLogo = null;\n            return;\n        }\n\n        \/\/ Masked out before the site is unhidden, so the wordmark does not\n        \/\/ simply appear with the rest of the page \u2014 it gets its own reveal\n        \/\/ once the panel has cleared.\n        gsap.set(heroLogo, { clipPath: \"inset(100% 0% 0% 0%)\" });\n\n        tl.to(heroLogo, {\n            clipPath: \"inset(0% 0% 0% 0%)\",\n            duration: 0.9,\n            ease: \"power3.out\"\n        }, HERO_REVEAL_AT);\n    }\n\n    if (document.readyState === \"loading\") {\n        document.addEventListener(\"DOMContentLoaded\", maskHeroLogo);\n    } else {\n        maskHeroLogo();\n    }\n\n    } catch (err) {\n        clearTimeout(failsafe);\n        finish();\n        throw err;\n    }\n})();\n<\/script>\n\n\n\n<div class=\"wp-block-group alignfull section-header is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-68cf8fda wp-block-group-is-layout-flex\" style=\"min-height:100vh;margin-top:0;margin-bottom:0\">\n<figure class=\"wp-block-image alignfull size-full wp-container-content-6f2bc6e9\" id=\"header-logo\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"177\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/logo.svg\" alt=\"\" class=\"wp-image-9\"\/><\/figure>\n\n\n\n<p class=\"expo-20 has-base-color has-text-color has-link-color wp-elements-dae7b2ec464fc9804693a0f2bf1c0a5f wp-block-paragraph\">Fitted for focus<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-cover alignfull has-custom-content-position is-position-top-center\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;min-height:61.7vw;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1580\" class=\"wp-block-cover__image-background wp-image-609 size-full\" alt=\"\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-scaled.webp\" data-object-fit=\"cover\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-scaled.webp 2560w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-300x185.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-1024x632.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-768x474.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-1536x948.webp 1536w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/rugby-2026-2048x1264.webp 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\" style=\"background-color:#3f4443\"><\/span><div class=\"wp-block-cover__inner-container has-global-padding is-layout-constrained wp-container-core-cover-is-layout-1ac35173 wp-block-cover-is-layout-constrained\">\n<p class=\"has-text-align-center alignfull expo-40 has-text-color has-link-color wp-elements-e38942c8b19920b20da97e3940249eaf wp-block-paragraph\" style=\"color:#c8d4df;margin-top:5vw;margin-right:37vw;margin-bottom:5vw;margin-left:37vw\">One bad hit. That&#8217;s all it takes, if your guard wasn&#8217;t built for you.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group alignfull section-boxer is-layout-grid wp-container-core-group-is-layout-fb28b353 wp-block-group-is-layout-grid has-background\" style=\"min-height:74.4vw;margin-top:0;margin-bottom:0;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-bg-1.webp&apos;);background-size:cover;\">\n<figure class=\"wp-block-image alignfull size-full image-background-logo\"><img loading=\"lazy\" decoding=\"async\" width=\"2141\" height=\"869\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred.png\" alt=\"\" class=\"wp-image-617\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred.png 2141w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred-300x122.png 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred-1024x416.png 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred-768x312.png 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred-1536x623.png 1536w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/icon-blurred-2048x831.png 2048w\" sizes=\"(max-width: 2141px) 100vw, 2141px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group has-custom-css is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-e48f659d wp-block-group-is-layout-flex wp-custom-css-bb553707\" style=\"padding-top:1vw;padding-right:1vw;padding-bottom:1vw;padding-left:1vw\">\n<figure class=\"wp-block-image size-large has-custom-css wp-custom-css-4857467c\" style=\"margin-right:37.3vw\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"177\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/logo.svg\" alt=\"\" class=\"wp-image-9\"\/><\/figure>\n\n\n\n<p class=\"expo-40 has-base-color has-text-color has-link-color wp-elements-5ec63d4f9e937b5740d84056f3b0d856 wp-block-paragraph\" style=\"padding-right:13vw\">Precision-fitted at your dentist, made only for you. Stay locked in, stay protected.<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-image alignfull size-full image-boxer\"><img loading=\"lazy\" decoding=\"async\" width=\"1626\" height=\"2254\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1.webp\" alt=\"\" class=\"wp-image-54\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1.webp 1626w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1-216x300.webp 216w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1-739x1024.webp 739w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1-768x1065.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1-1108x1536.webp 1108w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/boxer-1-1477x2048.webp 1477w\" sizes=\"(max-width: 1626px) 100vw, 1626px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull section-theme is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-dc1e0449 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0\">\n<div class=\"wp-block-group wp-container-content-958eb9dc is-layout-flow wp-block-group-is-layout-flow has-background\" style=\"padding-top:9.5vw;padding-right:16.7vw;padding-bottom:9.5vw;padding-left:16.7vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/light-bg.webp&apos;);background-size:cover;\">\n<h5 class=\"wp-block-heading expo-18 has-base-color has-text-color has-link-color wp-elements-0e45f8596bb3ad204f952b00391822fa\" style=\"border-bottom-color:var(--wp--preset--color--base);border-bottom-width:1px;margin-top:0.2vw;margin-right:1vw;margin-bottom:0.4vw;margin-left:0.2vw;padding-bottom:1vw\">Light<\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:0;margin-right:0px;margin-bottom:0;margin-left:0px\"><img loading=\"lazy\" decoding=\"async\" width=\"505\" height=\"177\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/logo.svg\" alt=\"\" class=\"wp-image-9\" style=\"object-fit:cover\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group wp-container-content-958eb9dc is-layout-flow wp-block-group-is-layout-flow\" style=\"padding-top:9.5vw;padding-right:16.7vw;padding-bottom:9.5vw;padding-left:16.7vw\">\n<h5 class=\"wp-block-heading expo-18 has-text-color has-link-color wp-elements-6b0199715a004e7c799e9f930f9426a5\" style=\"border-bottom-color:#b8ccde;border-bottom-width:1px;color:#84a1bb;margin-top:0.2vw;margin-right:1vw;margin-bottom:0.4vw;margin-left:0.2vw;padding-bottom:1vw\">Dark<\/h5>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:0;margin-right:0px;margin-bottom:0;margin-left:0px\"><img loading=\"lazy\" decoding=\"async\" width=\"237\" height=\"83\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/logo-dark.svg\" alt=\"\" class=\"wp-image-74\" style=\"object-fit:cover\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull section-grid-lines is-layout-grid wp-container-core-group-is-layout-86859447 wp-block-group-is-layout-grid\" style=\"margin-top:0;margin-bottom:0\">\n<p class=\"paragraph-grid inter-24 has-text-color has-link-color wp-elements-a6288241f63fadb0168e6e0124f43517 wp-block-paragraph\" style=\"color:#84a1bb;padding-right:12vw\"><strong>The Langga icon,<\/strong> drawn from the bite.<\/p>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large image-grid-logo wp-container-content-b7d18107\"><img loading=\"lazy\" decoding=\"async\" width=\"608\" height=\"247\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/loco-icon.svg\" alt=\"\" class=\"wp-image-599\"\/><\/figure>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full image-grid-jaw\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"746\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/jaw-wireframe-2.webp\" alt=\"\" class=\"wp-image-97\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/jaw-wireframe-2.webp 700w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/jaw-wireframe-2-282x300.webp 282w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n<\/div>\n\n\n\n\n\n<div class=\"wp-block-group alignfull section-colors is-layout-grid wp-container-core-group-is-layout-5fdcfd72 wp-block-group-is-layout-grid\" style=\"margin-top:0;margin-bottom:0;padding-top:1vw;padding-right:1vw;padding-bottom:1vw;padding-left:1vw\">\n<div class=\"wp-block-group wp-container-content-decc3bd9 is-layout-flow wp-block-group-is-layout-flow has-background\" style=\"border-top-left-radius:0.4vw;border-top-right-radius:0.4vw;border-bottom-left-radius:0.4vw;border-bottom-right-radius:0.4vw;min-height:36vw;padding-top:1.4vw;padding-right:1.4vw;padding-bottom:1.4vw;padding-left:1.4vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/frost-gradient-bg.webp&apos;);background-size:cover;\">\n<h5 class=\"wp-block-heading expo-18 has-base-color has-text-color has-link-color wp-elements-be790512ded9f0c66bd6d85effbc9ad2\" style=\"border-bottom-color:var(--wp--preset--color--base);border-bottom-width:1px;margin-top:0.4vw;margin-right:1vw;margin-bottom:0.4vw;margin-left:0.4vw;padding-bottom:1vw\">Colour<\/h5>\n\n\n\n<h3 class=\"wp-block-heading frost-gradient has-base-color has-text-color has-link-color wp-elements-f48089814ef9abf4136d45b0444dcab1\" style=\"margin-right:61.4vw;padding-right:1vw;padding-left:1vw\">Frost&nbsp;&nbsp;&nbsp; Gradient<\/h3>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border wp-container-content-de050443 wp-duotone-unset-1\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"341\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/colors-bg-2.webp\" alt=\"\" class=\"wp-image-123\" style=\"border-top-left-radius:0.4vw;border-top-right-radius:0.4vw;border-bottom-left-radius:0.4vw;border-bottom-right-radius:0.4vw;object-fit:cover\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/colors-bg-2.webp 696w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/colors-bg-2-300x147.webp 300w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border wp-container-content-de050443 wp-duotone-unset-2\"><img loading=\"lazy\" decoding=\"async\" width=\"695\" height=\"341\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/colors-bg-3.webp\" alt=\"\" class=\"wp-image-124\" style=\"border-top-left-radius:0vw;border-top-right-radius:0vw;border-bottom-left-radius:0vw;border-bottom-right-radius:0vw;object-fit:cover\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/colors-bg-3.webp 695w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/colors-bg-3-300x147.webp 300w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><\/figure>\n\n\n\n<h6 class=\"wp-block-heading module-text has-border-color has-base-background-color has-text-color has-background has-link-color wp-elements-142cb79bbfaf7f2240d8dfb4ff350af8 wp-container-content-2005afe5\" style=\"border-color:#c8d4df;border-width:1px;color:#0e304c\">Frosted White<\/h6>\n\n\n\n<h6 class=\"wp-block-heading module-text has-text-color has-background has-link-color wp-elements-1e05fbd837463fff0bbd91069d3cffc8 wp-container-content-2005afe5\" style=\"color:#091c2d;background-color:#c8d4df\">Cool Grey<\/h6>\n\n\n\n<h6 class=\"wp-block-heading module-text has-text-color has-background has-link-color wp-elements-8ea5dfb864c43f3a0c8a18cf712caaa4 wp-container-content-2005afe5\" style=\"color:#c8d4df;background-color:#091e30\">Navy<\/h6>\n\n\n\n<div class=\"wp-block-group wp-container-content-07f1963a is-layout-grid wp-container-core-group-is-layout-3eb8a200 wp-block-group-is-layout-grid\" style=\"min-height:1.4vw\">\n<div class=\"wp-block-group has-background wp-container-content-74b86fc5 has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#f3ae2b;min-height:1.4vw\"><\/div>\n\n\n\n<div class=\"wp-block-group has-background wp-container-content-74b86fc5 has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#bdda00;min-height:1vw\"><\/div>\n\n\n\n<div class=\"wp-block-group has-background wp-container-content-74b86fc5 has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#d96ae9;min-height:1vw\"><\/div>\n\n\n\n<div class=\"wp-block-group has-background wp-container-content-74b86fc5 has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\" style=\"background-color:#661243;min-height:1vw\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group layout-mouthguard wp-container-content-07f1963a is-layout-grid wp-container-core-group-is-layout-c4c21c64 wp-block-group-is-layout-grid\" style=\"padding-top:8vw;padding-right:2vw;padding-bottom:8vw;padding-left:2vw\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"600\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/brown-mouthguard-1024x600.webp\" alt=\"\" class=\"wp-image-134\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/brown-mouthguard-1024x600.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/brown-mouthguard-300x176.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/brown-mouthguard-768x450.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/brown-mouthguard.webp 1033w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"598\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/green-mouthguard-1024x598.webp\" alt=\"\" class=\"wp-image-135\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/green-mouthguard-1024x598.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/green-mouthguard-300x175.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/green-mouthguard-768x449.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/green-mouthguard.webp 1222w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/purple-mouthguard-1024x574.webp\" alt=\"\" class=\"wp-image-136\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/purple-mouthguard-1024x574.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/purple-mouthguard-300x168.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/purple-mouthguard-768x430.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/purple-mouthguard-1536x861.webp 1536w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/purple-mouthguard.webp 1970w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"299\" height=\"168\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/black-mouthguard.webp\" alt=\"\" class=\"wp-image-137\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull section-typography is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-57e91b10 wp-block-group-is-layout-flex has-background\" style=\"padding-top:1.4vw;padding-right:1.4vw;padding-bottom:1.4vw;padding-left:1.4vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/typography-bg.webp&apos;);background-size:cover;\">\n<h5 class=\"wp-block-heading expo-18 has-base-color has-text-color has-link-color wp-elements-29fae88d86e8433d2492a98a40de9249\" style=\"border-bottom-color:var(--wp--preset--color--base);border-bottom-width:1px;padding-bottom:1vw\">Typography<\/h5>\n\n\n\n<div class=\"wp-block-group module-typography is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-cc5b8236 wp-block-group-is-layout-flex\" style=\"margin-top:2.2vw\">\n<p class=\"inter-16 has-base-color has-text-color has-link-color wp-elements-db994d8d1fa6b22e241f66d960b47d92 wp-block-paragraph\"><strong>Primary typeface.<\/strong> For display and headings across all medium.<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-da0ee4f8 wp-block-group-is-layout-flex\" style=\"min-height:0px\">\n<div class=\"wp-block-group wp-container-content-989eb342 is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-0fee5160 wp-block-group-is-layout-flex\" style=\"min-height:0px;padding-right:10.7vw\">\n<h1 class=\"wp-block-heading has-base-color has-text-color has-link-color wp-elements-9a880db26f0480c68280aa2c1d51a3cd\">Expo <br> Serif Pro<\/h1>\n\n\n\n<p class=\"expo-40 has-base-color has-text-color has-link-color wp-elements-b126d5da9f3dd8dca19fbd792b2db1db wp-container-content-e22f47b2 wp-block-paragraph\">Fitted for focus.<\/p>\n<\/div>\n\n\n\n<h4 class=\"wp-block-heading expo-40 has-base-color has-text-color has-link-color wp-elements-eef4330b64da59747a2d9d5fd7c0e3ef\">(Regular, Light)<\/h4>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group module-typography is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-b978d212 wp-block-group-is-layout-flex has-background\" style=\"margin-top:7.4vw;padding-top:1.4vw;padding-right:1.4vw;padding-bottom:2vw;padding-left:1.4vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/typography-2.webp&apos;);background-size:cover;\">\n<p class=\"inter-16 has-text-color has-link-color wp-elements-4498262137f89177863a4d9aa5dbcd19 wp-block-paragraph\" style=\"color:#c8d4df\"><strong>Secondary typeface.<\/strong> For bodycopy across all medium.<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-955da149 wp-block-group-is-layout-flex\" style=\"padding-right:10.7vw\">\n<div class=\"wp-block-group is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-dd7defbe wp-block-group-is-layout-flex\">\n<h1 class=\"wp-block-heading inter has-text-color has-link-color wp-elements-03bceeca05f537255ef900f6a99d899c\" style=\"color:#c8d4df\">Inter <br> Tight<\/h1>\n\n\n\n<p class=\"inter-20 has-text-color has-link-color wp-elements-b7b4c7f7d5ab1b102388ea692d33348c wp-block-paragraph\" style=\"color:#c8d4df\">Precision-fitted at your dentist, made only for you. Stay locked in, stay protected.<\/p>\n<\/div>\n\n\n\n<h4 class=\"wp-block-heading inter-30 has-text-color has-link-color wp-elements-29c240d4f1dff915aaf4bf92b27d2819\" style=\"color:#c8d4df\">(Regular, Medium, <strong>Bold<\/strong>)<\/h4>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\" style=\"margin-top:0;margin-bottom:0\">\n<div class=\"wp-block-group alignfull section-hockey is-content-justification-right is-nowrap is-layout-flex wp-container-core-group-is-layout-a0550767 wp-block-group-is-layout-flex has-background\" style=\"min-height:52vw;margin-top:0;margin-bottom:0;padding-top:1.4vw;padding-right:1vw;padding-bottom:1.4vw;padding-left:1vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/hockey.webp&apos;);background-size:cover;\">\n<div class=\"wp-block-group wp-container-content-8d1725e3 is-layout-flow wp-block-group-is-layout-flow\" style=\"border-top-left-radius:0.4vw;border-top-right-radius:0.4vw;border-bottom-left-radius:0.4vw;border-bottom-right-radius:0.4vw;padding-top:0vw;padding-right:0vw;padding-bottom:0vw;padding-left:0vw\">\n<h5 class=\"wp-block-heading bottom-underline expo-18 has-base-color has-text-color has-link-color wp-elements-f8bf43ade814385b8437326d2106f308\" style=\"border-bottom-color:var(--wp--preset--color--base);border-bottom-width:1px;margin-top:0.4vw;margin-right:1vw;margin-bottom:0.4vw;margin-left:0.4vw;padding-bottom:1vw\">Photography<\/h5>\n\n\n\n<h4 class=\"wp-block-heading has-base-color has-text-color has-link-color wp-elements-793c668341f662ca3111e51b21af0c73\" style=\"margin-top:0;margin-bottom:0;padding-top:1.5vw;padding-right:20vw\">Protection. <br>Precision. <br>Performance.<\/h4>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-grid wp-container-core-group-is-layout-f591878b wp-block-group-is-layout-grid\" style=\"margin-top:0;margin-bottom:0\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"720\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/holding-mouthguard.webp\" alt=\"\" class=\"wp-image-173\" style=\"object-fit:cover\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/holding-mouthguard.webp 712w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/holding-mouthguard-297x300.webp 297w\" sizes=\"(max-width: 712px) 100vw, 712px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"720\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/person-looking-up.webp\" alt=\"\" class=\"wp-image-174\" style=\"object-fit:cover\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/person-looking-up.webp 728w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/person-looking-up-300x297.webp 300w\" sizes=\"(max-width: 728px) 100vw, 728px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full image-boxing wp-container-content-1e520e73\"><img loading=\"lazy\" decoding=\"async\" width=\"1440\" height=\"749\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/woman-boxing.webp\" alt=\"\" class=\"wp-image-175\" style=\"aspect-ratio:1424\/720;object-fit:cover\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/woman-boxing.webp 1440w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/woman-boxing-300x156.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/woman-boxing-1024x533.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/woman-boxing-768x399.webp 768w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull section-precise-fit is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-038404b4 wp-block-group-is-layout-flex has-background\" style=\"min-height:50vw;margin-top:0;margin-bottom:0;padding-top:1.4vw;padding-right:1.4vw;padding-bottom:1.4vw;padding-left:1.4vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/how-langga-bg.webp&apos;);background-size:cover;\">\n<div class=\"wp-block-group module-h5-p is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-3a241e95 wp-block-group-is-layout-flex\" style=\"padding-top:1.4vw;padding-right:1.4vw;padding-bottom:1.4vw;padding-left:1.4vw\">\n<h5 class=\"wp-block-heading bottom-underline expo-18 has-base-color has-text-color has-link-color wp-elements-ad3a345ad92c3e81d83498a262a22494\" style=\"border-bottom-color:#ffffff80;border-bottom-width:1px;padding-bottom:1vw\">How Langga Speaks<\/h5>\n\n\n\n<p class=\"inter-16 has-base-color has-text-color has-link-color wp-elements-62dcb314560085587d657d9ba5e8c480 wp-block-paragraph\" style=\"padding-right:78vw\">Clinical confidence. Just the truth about what Langga does and why it matters.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-ea97d5456b60ee3434246849208633da\" style=\"padding-right:18vw;padding-left:18vw\">&#8220;Precise fit.<br> Locked in. <br>Built to protect.&#8221;<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull section-business-card is-layout-grid wp-container-core-group-is-layout-347c4b73 wp-block-group-is-layout-grid\" style=\"padding-top:15.6vw;padding-right:17vw;padding-bottom:15.6vw;padding-left:17vw\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1791\" height=\"1078\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-back-1.webp\" alt=\"\" class=\"wp-image-210\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-back-1.webp 1791w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-back-1-300x181.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-back-1-1024x616.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-back-1-768x462.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-back-1-1536x925.webp 1536w\" sizes=\"(max-width: 1791px) 100vw, 1791px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-4caa74a6 wp-block-group-is-layout-flex has-background\" style=\"padding-top:0.7vw;padding-right:1vw;padding-bottom:0.7vw;padding-left:1vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/busness-card-front.webp&apos;);background-size:cover;\">\n<div class=\"wp-block-group bottom-underline wp-container-content-9cfa9a5a is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-2088bfd6 wp-block-group-is-layout-flex\" style=\"border-bottom-color:#ffffff80;border-bottom-width:1px\">\n<h5 class=\"wp-block-heading has-text-align-center has-base-color has-text-color has-link-color wp-elements-bf79f66c17cd3a3a36fb10cbfc15b656\">Daniel Chu<\/h5>\n\n\n\n<p class=\"has-text-align-center inter-16 has-base-color has-text-color has-link-color wp-elements-17cc23493d8c52466afe013584b7cc2a wp-block-paragraph\">(Sales Manager)<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-53498d81 wp-block-group-is-layout-flex\" style=\"padding-top:0.7vw\">\n<p class=\"inter-15 has-base-color has-text-color has-link-color wp-elements-af219a3d0296eb32df440f70d70a1771 wp-container-content-958eb9dc wp-block-paragraph\">+60 12 345 6789<\/p>\n\n\n\n<p class=\"inter-15 has-base-color has-text-color has-link-color wp-elements-0e73da554cf65e1921ad43f80b818b79 wp-container-content-958eb9dc wp-block-paragraph\" style=\"border-left-color:#ffffff80;border-left-width:1px;padding-left:0.7vw\">daniel@langga.com.my<\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-grid wp-container-core-group-is-layout-38786713 wp-block-group-is-layout-grid\">\n<figure class=\"wp-block-image size-large wp-container-content-1e520e73\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/mouthguard-case-1024x512.webp\" alt=\"\" class=\"wp-image-216\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/mouthguard-case-1024x512.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/mouthguard-case-300x150.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/mouthguard-case-768x384.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/mouthguard-case-1536x768.webp 1536w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/mouthguard-case-2048x1024.webp 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/certified-1024x1024.webp\" alt=\"\" class=\"wp-image-217\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/certified-1024x1024.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/certified-300x300.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/certified-150x150.webp 150w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/certified-768x769.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/certified.webp 1456w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/insta-2026-1000x1024.webp\" alt=\"\" class=\"wp-image-613\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/insta-2026-1000x1024.webp 1000w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/insta-2026-293x300.webp 293w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/insta-2026-768x786.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/insta-2026.webp 1424w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group wp-container-content-9fdd6bb7 is-layout-grid wp-container-core-group-is-layout-1bf5d5c4 wp-block-group-is-layout-grid has-background\" style=\"padding-top:7.5vw;padding-right:14.2vw;padding-bottom:7.5vw;padding-left:14.2vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-bg-scaled.webp&apos;);background-size:cover;\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"583\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-1-583x1024.webp\" alt=\"\" class=\"wp-image-222\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-1-583x1024.webp 583w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-1-171x300.webp 171w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-1.webp 602w\" sizes=\"(max-width: 583px) 100vw, 583px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/banner-2-2026.webp\" alt=\"\" class=\"wp-image-610\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/banner-2-2026.webp 602w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/banner-2-2026-176x300.webp 176w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-3-577x1024.webp\" alt=\"\" class=\"wp-image-224\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-3-577x1024.webp 577w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-3-169x300.webp 169w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/banner-3.webp 734w\" sizes=\"(max-width: 577px) 100vw, 577px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group facade-banner has-global-padding is-layout-constrained wp-container-core-group-is-layout-bccf2bd6 wp-block-group-is-layout-constrained has-background\" style=\"min-height:55.6vw;padding-top:1.4vw;padding-right:1.4vw;padding-bottom:1.4vw;padding-left:1.4vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/banner-4-2026.webp&apos;);background-size:cover;\">\n<p class=\"has-text-align-center inter-12 has-base-color has-text-color has-link-color wp-elements-05bbad52c3b00a2b233f47f5c911cd24 wp-block-paragraph\">Clinic facade<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group facade-banner has-global-padding is-layout-constrained wp-container-core-group-is-layout-bccf2bd6 wp-block-group-is-layout-constrained has-background\" style=\"min-height:55.6vw;padding-top:1.4vw;padding-right:1.4vw;padding-bottom:1.4vw;padding-left:1.4vw;background-image:url(&apos;https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/banner-5-900.webp&apos;);background-size:cover;\">\n<p class=\"has-text-align-center inter-12 has-base-color has-text-color has-link-color wp-elements-7fcec5b24ee2d8cb72ff30e47f3cba7e wp-block-paragraph\">Gym\/Sport centre facade<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"916\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-bag-2026-916x1024.webp\" alt=\"\" class=\"wp-image-612\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-bag-2026-916x1024.webp 916w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-bag-2026-269x300.webp 269w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-bag-2026-768x858.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-bag-2026-1375x1536.webp 1375w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-bag-2026.webp 1432w\" sizes=\"(max-width: 916px) 100vw, 916px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"918\" height=\"1024\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/langga-box-918x1024.webp\" alt=\"\" class=\"wp-image-234\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/langga-box-918x1024.webp 918w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/langga-box-269x300.webp 269w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/langga-box-768x857.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/langga-box-1377x1536.webp 1377w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/07\/langga-box.webp 1434w\" sizes=\"(max-width: 918px) 100vw, 918px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large image-protect wp-container-content-1e520e73\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"569\" src=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-protect-2026-1024x569.webp\" alt=\"\" class=\"wp-image-614\" srcset=\"https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-protect-2026-1024x569.webp 1024w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-protect-2026-300x167.webp 300w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-protect-2026-768x427.webp 768w, https:\/\/langga.bearbrandguide.com\/wp-content\/uploads\/2026\/08\/langga-protect-2026.webp 1440w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-9f9c2f19 wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:7vw;padding-right:7.2vw;padding-bottom:7vw;padding-left:7.2vw\">\n<div class=\"wp-block-buttons alignfull wp-container-content-9cfa9a5a is-content-justification-space-between is-layout-flex wp-container-core-buttons-is-layout-99545138 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-100 expo-57 big-button\"><a class=\"wp-block-button__link has-text-color has-background has-link-color has-text-align-center wp-element-button\" href=\"https:\/\/langga.bearbrandguide.com\/?guidelines=logo\" style=\"color:#c8d4df;background-color:#05121d;padding-top:5.3vw;padding-bottom:5.3vw\">Behind <br> the design<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<!-- ============================================================\n     LANGGA \u2014 scroll-driven motion layer\n     GSAP ScrollTrigger + SplitType. Self-contained & failsafe.\n     Loads ScrollTrigger (gsap core \/ SplitType \/ Lenis are already\n     enqueued by the theme). Leaves the page fully visible if the\n     libraries fail to load or the visitor prefers reduced motion.\n     ============================================================ -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.15.0\/ScrollTrigger.min.js\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"><\/script>\n\n<style id=\"langga-anim-css\">\n\/* Below-the-fold content is hidden by JS off-screen (no flash); these\n   rules only support the SplitType line masks and foreground parallax frames. *\/\n.langga-anim .st-line-in { display: block; will-change: transform; }\n.langga-anim [data-parallax-fg] { overflow: hidden; }\n.langga-anim [data-parallax-fg] img { will-change: transform; }\n<\/style>\n\n<script>\n(function () {\n  var doc = document, root = doc.documentElement;\n  var reduce = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/\/ Hard guard: no libraries or reduced-motion => leave the page untouched.\n  \/\/ Text splitting uses SplitType (already enqueued by the theme).\n  if (!window.gsap || !window.ScrollTrigger || !window.SplitType || reduce) return;\n\n  \/\/ Set synchronously (this script sits at the top of the body, before the\n  \/\/ hero markup) so the hero's pre-animation CSS applies before first paint.\n  root.classList.add('langga-anim');\n\n  gsap.registerPlugin(ScrollTrigger);\n  gsap.config({ nullTargetWarn: false });\n  ScrollTrigger.config({ ignoreMobileResize: true });\n\n  var EASE = 'power3.out';\n  var q   = function (sel, ctx) { return Array.prototype.slice.call((ctx || doc).querySelectorAll(sel)); };\n  var one = function (sel, ctx) { return (ctx || doc).querySelector(sel); };\n  var tag = function (els) { (els || []).forEach(function (el) { el && el.setAttribute('data-anim', '1'); }); return els; };\n\n  \/\/ -------- reusable motions -------------------------------------------\n  \/\/ Fade \/ rise reveal, batched, fired as elements scroll into view.\n  function reveal(target, opts) {\n    var els = (typeof target === 'string' ? q(target) : (target && target.length != null ? target : [target])).filter(Boolean);\n    if (!els.length) return;\n    opts = opts || {};\n    tag(els);\n    gsap.set(els, { opacity: 0, y: opts.y != null ? opts.y : 42 });\n    ScrollTrigger.batch(els, {\n      start: opts.start || 'top 86%',\n      onEnter: function (b) {\n        gsap.to(b, { opacity: 1, y: 0, duration: opts.duration || 1.05, ease: EASE,\n          stagger: opts.stagger != null ? opts.stagger : 0.12, overwrite: true });\n      }\n    });\n  }\n\n  \/\/ Foreground image depth-parallax (overscaled image inside a clipped frame).\n  function parallaxFg(figure, amount) {\n    if (!figure) return;\n    figure.setAttribute('data-parallax-fg', '');\n    tag([figure]);\n    var img = one('img', figure) || figure;\n    gsap.fromTo(img, { yPercent: -(amount || 8), scale: 1.14 },\n      { yPercent: (amount || 8), ease: 'none',\n        scrollTrigger: { trigger: figure, start: 'top bottom', end: 'bottom top', scrub: true } });\n  }\n\n  \/\/ CSS background-image parallax (repaints the background, no reflow).\n  \/\/ Guards against double-binding so the global sweep can't re-bind a\n  \/\/ section that already got a bespoke range.\n  function parallaxBg(el, from, to) {\n    if (!el || el.getAttribute('data-bgp')) return;\n    el.setAttribute('data-bgp', '1');\n    gsap.fromTo(el, { backgroundPositionY: (from != null ? from : 0) + '%' },\n      { backgroundPositionY: (to != null ? to : 100) + '%', ease: 'none',\n        scrollTrigger: { trigger: el, start: 'top bottom', end: 'bottom top', scrub: true } });\n  }\n\n  \/\/ Masked per-line typeset reveal \u2014 the brand's signature move.\n  function lineReveal(el, opts) {\n    if (!el) return;\n    opts = opts || {};\n    tag([el]);\n    gsap.set(el, { opacity: 1 });\n    \/\/ SplitType splits into .st-line divs (clipped via CSS); wrap each line's\n    \/\/ content in an inner block so the whole line can slide up behind the mask.\n    var split = new SplitType(el, { types: 'lines', lineClass: 'st-line' });\n    var inners = (split.lines || []).map(function (line) {\n      var span = doc.createElement('span');\n      span.className = 'st-line-in';\n      while (line.firstChild) span.appendChild(line.firstChild);\n      line.appendChild(span);\n      return span;\n    });\n    if (!inners.length) return;\n    var st = opts.scrub\n      ? { trigger: el, start: 'top 85%', end: 'top 42%', scrub: opts.scrub }\n      : { trigger: el, start: 'top 82%', toggleActions: 'play none none none' };\n    gsap.from(inners, { yPercent: 115, duration: opts.duration || 1.1,\n      ease: opts.ease || 'power4.out', stagger: opts.stagger != null ? opts.stagger : 0.14, scrollTrigger: st });\n  }\n\n  \/\/ =====================================================================\n  function build() {\n    \/\/ ---- QUESTION COVER (rugby) ---------------------------------------\n    var cover = one('.wp-block-cover.alignfull');\n    if (cover) {\n      var ci = one('.wp-block-cover__image-background', cover);\n      if (ci) gsap.fromTo(ci, { yPercent: -12, scale: 1.12 }, { yPercent: 10, ease: 'none',\n        scrollTrigger: { trigger: cover, start: 'top bottom', end: 'bottom top', scrub: true } });\n      lineReveal(one('.wp-block-cover__inner-container p', cover), { stagger: 0.12 });\n    }\n\n    \/\/ ---- BOXER ---------------------------------------------------------\n    var boxer = one('.section-boxer');\n    if (boxer) {\n      parallaxBg(boxer, 0, 60);\n      var bi = one('.image-boxer', boxer);\n      if (bi) { tag([bi]); gsap.from(bi, { yPercent: 12, opacity: 0, scale: 1.04, duration: 1.3, ease: EASE,\n        scrollTrigger: { trigger: boxer, start: 'top 78%' } }); }\n      var bl = one('.image-background-logo', boxer);\n      if (bl) gsap.fromTo(bl, { yPercent: -6 }, { yPercent: 6, ease: 'none',\n        scrollTrigger: { trigger: boxer, start: 'top bottom', end: 'bottom top', scrub: true } });\n      reveal(one('.section-boxer > .wp-block-group'), { y: 30 });\n    }\n\n    \/\/ ---- THEME (light \/ dark) -----------------------------------------\n    var themeBoxes = q('.section-theme > .wp-block-group');\n    if (themeBoxes.length) {\n      tag(themeBoxes);\n      gsap.from(themeBoxes, { opacity: 0, y: 46, scale: 0.965, duration: 1, ease: EASE, stagger: 0.16,\n        scrollTrigger: { trigger: '.section-theme', start: 'top 82%' } });\n      parallaxBg(themeBoxes.find(function (b) { return \/background-image\/.test(b.getAttribute('style') || ''); }), 20, 80);\n    }\n\n    \/\/ ---- GRID LINES (signature: printed \/ drawn in) -------------------\n    var grid = one('.section-grid-lines');\n    if (grid) {\n      tag([grid]);\n      gsap.from(grid, { clipPath: 'inset(0 0 100% 0)', duration: 1.3, ease: 'power3.inOut',\n        scrollTrigger: { trigger: grid, start: 'top 80%' } });\n      var gl = one('.image-grid-logo', grid);\n      if (gl) { tag([gl]); gsap.from(gl, { opacity: 0, scale: 0.72, duration: 1.1, ease: 'back.out(1.6)',\n        scrollTrigger: { trigger: grid, start: 'top 62%' } }); }\n      var jaw = one('.image-grid-jaw', grid);\n      if (jaw) { tag([jaw]); gsap.from(jaw, { clipPath: 'inset(0 100% 0 0)', opacity: 0.2, duration: 1.4, ease: 'power3.out',\n        scrollTrigger: { trigger: grid, start: 'top 55%' } }); }\n      lineReveal(one('.paragraph-grid', grid), { stagger: 0.1 });\n    }\n\n    \/\/ ---- MOUTHGUARD (product hero gif) --------------------------------\n    var mg = one('.section-mouthguard');\n    if (mg) {\n      var mgf = one('.wp-block-image', mg);\n      if (mgf) { tag([mgf]); gsap.from(mgf, { opacity: 0, scale: 0.88, yPercent: 6, duration: 1.3, ease: EASE,\n        scrollTrigger: { trigger: mg, start: 'top 78%' } }); }\n      gsap.fromTo(mgf || mg, { yPercent: 5 }, { yPercent: -5, ease: 'none',\n        scrollTrigger: { trigger: mg, start: 'top bottom', end: 'bottom top', scrub: true } });\n    }\n\n    \/\/ ---- COLOURS -------------------------------------------------------\n    if (one('.section-colors')) {\n      reveal(one('.section-colors > .wp-block-group:first-child'), { y: 30 });\n      reveal(q('.section-colors > figure'), { stagger: 0.12, y: 34 });\n      reveal(q('.section-colors > .module-text'), { stagger: 0.1, y: 20 });\n      reveal(q('.layout-mouthguard > figure'), { stagger: 0.13, y: 40, duration: 1.15 });\n    }\n\n    \/\/ ---- TYPOGRAPHY (signature: char typesetting) ---------------------\n    var typo = one('.section-typography');\n    if (typo) {\n      parallaxBg(typo, 15, 70);\n      parallaxBg(one('.module-typography[style*=\"background-image\"]', typo), 20, 75);\n      reveal(one('.section-typography > h5'), { y: 18 });\n      q('.section-typography h1').forEach(function (h) {\n        tag([h]); gsap.set(h, { opacity: 1 });\n        \/\/ SplitType => chars nested inside .st-line masks; chars rise into view.\n        var s = new SplitType(h, { types: 'lines, chars', lineClass: 'st-line' });\n        if (!s.chars || !s.chars.length) return;\n        gsap.from(s.chars, { yPercent: 120, opacity: 0, duration: 0.9, ease: 'power4.out', stagger: 0.035,\n          scrollTrigger: { trigger: h, start: 'top 82%' } });\n      });\n      reveal(q('.section-typography .module-typography > p, .section-typography h4, .section-typography p.inter-16, .section-typography p.inter-20, .section-typography p.expo-40'),\n        { stagger: 0.08, y: 22 });\n    }\n\n    \/\/ ---- HOCKEY (signature brand words) -------------------------------\n    if (one('.section-hockey')) {\n      parallaxBg(one('.section-hockey'), 0, 55);\n      reveal(one('.section-hockey h5'), { y: 16 });\n      lineReveal(one('.section-hockey h4'), { stagger: 0.16, duration: 1.15 });\n    }\n\n    \/\/ ---- unclassed alignfull grids: [0] photography 3-up, [1] products -\n    var grids = q('.wp-block-group.alignfull.is-layout-grid').filter(function (g) { return !\/section-\/.test(g.className); });\n    var photoGrid = grids[0], productGrid = grids[1];\n\n    if (photoGrid) {\n      var pf = q(':scope > figure', photoGrid);\n      tag(pf); gsap.set(pf, { opacity: 0, yPercent: 8 });\n      ScrollTrigger.batch(pf, { start: 'top 85%', onEnter: function (b) {\n        gsap.to(b, { opacity: 1, yPercent: 0, duration: 1.2, ease: EASE, stagger: 0.15, overwrite: true }); } });\n      pf.forEach(function (fig, i) { parallaxFg(fig, 6 + i * 3); });\n    }\n\n    \/\/ ---- PRECISE FIT (signature: brand thesis) ------------------------\n    if (one('.section-precise-fit')) {\n      parallaxBg(one('.section-precise-fit'), 10, 65);\n      reveal(one('.module-h5-p'), { y: 24 });\n      lineReveal(one('.section-precise-fit h2'), { scrub: 0.6, stagger: 0.12, duration: 1.2 });\n    }\n\n    \/\/ ---- BUSINESS CARD -------------------------------------------------\n    var card = one('.section-business-card');\n    if (card) {\n      var cb = one(':scope > figure', card);\n      if (cb) { tag([cb]); gsap.from(cb, { opacity: 0, y: 50, rotationY: 8, transformPerspective: 900, duration: 1.2, ease: EASE,\n        scrollTrigger: { trigger: card, start: 'top 80%' } }); }\n      var cf = one(':scope > .wp-block-group', card);\n      if (cf) { parallaxBg(cf, 20, 75); tag([cf]); gsap.from(cf, { opacity: 0, y: 50, rotationY: -8, transformPerspective: 900, duration: 1.2, ease: EASE,\n        scrollTrigger: { trigger: card, start: 'top 76%' } }); }\n      reveal(q('.section-business-card h5, .section-business-card p'), { stagger: 0.08, y: 16, start: 'top 78%' });\n    }\n\n    \/\/ ---- PRODUCT GRID -------------------------------------------------\n    if (productGrid) {\n      var pg = q(':scope > figure', productGrid);\n      tag(pg); gsap.set(pg, { opacity: 0, yPercent: 10 });\n      ScrollTrigger.batch(pg, { start: 'top 88%', onEnter: function (b) {\n        gsap.to(b, { opacity: 1, yPercent: 0, duration: 1.1, ease: EASE, stagger: 0.12, overwrite: true }); } });\n      reveal(q('p.inter-12', productGrid), { y: 12, start: 'top 90%' });\n    }\n\n    \/\/ ---- CTA \"Behind the design\" --------------------------------------\n    var btn = one('.big-button');\n    if (btn) {\n      tag([btn]); gsap.from(btn, { opacity: 0, y: 30, duration: 1, ease: EASE, scrollTrigger: { trigger: btn, start: 'top 90%' } });\n    }\n\n    \/\/ ---- GLOBAL: background parallax for any remaining CSS-bg element --\n    q('[style*=\"background-image\"]').forEach(function (el) { parallaxBg(el, 10, 65); });\n\n    \/\/ ---- GLOBAL: generic safety-net reveal for untouched imagery ------\n    reveal(q('figure.wp-block-image').filter(function (f) {\n      return !f.getAttribute('data-anim') && !f.closest('[data-anim]') && !f.closest('.section-header');\n    }), { stagger: 0.1, y: 34 });\n\n    ScrollTrigger.refresh();\n  }\n\n  function boot() {\n    var ran = false;\n    var go = function () { if (ran) return; ran = true;\n      try { build(); } catch (e) { root.classList.remove('langga-anim'); if (window.console) console.warn('[langga anim]', e); } };\n    if (doc.fonts && doc.fonts.ready) { doc.fonts.ready.then(go); setTimeout(go, 2500); } else go();\n  }\n  if (doc.readyState === 'loading') doc.addEventListener('DOMContentLoaded', boot); else boot();\n\n  \/\/ Re-measure once all imagery has loaded (heights settle triggers).\n  window.addEventListener('load', function () { setTimeout(function () { ScrollTrigger.refresh(); }, 400); });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Fitted for focus Precision-fitted at your dentist, made only for you. Stay locked in, stay protected. Light Dark The Langga icon, drawn from the bite. Colour Frost&nbsp;&nbsp;&nbsp; Gradient Frosted White Cool Grey Navy Typography Primary typeface. For display and headings across all medium. Expo Serif Pro Fitted for focus. (Regular, Light) Secondary typeface. For bodycopy [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"class_list":["post-11","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=\/wp\/v2\/pages\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":277,"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions"}],"predecessor-version":[{"id":637,"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions\/637"}],"wp:attachment":[{"href":"https:\/\/langga.bearbrandguide.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}